मैंने कुछ समय पहले देखा था कि curl
कमांड लाइन तर्क के रूप में दिए गए उपयोगकर्ता नाम और पासवर्ड ps
आउटपुट में दिखाई नहीं देते हैं (हालाँकि वे आपके बैश इतिहास में दिखाई दे सकते हैं)।
वे इसी तरह से प्रकट नहीं होते हैं /proc/PID/cmdline
।
(संयुक्त उपयोगकर्ता नाम / पासवर्ड तर्क की लंबाई, हालांकि प्राप्त की जा सकती है।)
नीचे प्रदर्शन:
[root@localhost ~]# nc -l 80 &
[1] 3342
[root@localhost ~]# curl -u iamsam:samiam localhost &
[2] 3343
[root@localhost ~]# GET / HTTP/1.1
Authorization: Basic aWFtc2FtOnNhbWlhbQ==
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: localhost
Accept: */*
[1]+ Stopped nc -l 80
[root@localhost ~]# jobs
[1]+ Stopped nc -l 80
[2]- Running curl -u iamsam:samiam localhost &
[root@localhost ~]# ps -ef | grep curl
root 3343 3258 0 22:37 pts/1 00:00:00 curl -u localhost
root 3347 3258 0 22:38 pts/1 00:00:00 grep curl
[root@localhost ~]# od -xa /proc/3343/cmdline
0000000 7563 6c72 2d00 0075 2020 2020 2020 2020
c u r l nul - u nul sp sp sp sp sp sp sp sp
0000020 2020 2020 0020 6f6c 6163 686c 736f 0074
sp sp sp sp sp nul l o c a l h o s t nul
0000040
[root@localhost ~]#
यह प्रभाव कैसे प्राप्त होता है? क्या यह कहीं स्रोत कोड में है curl
? (मुझे लगता है कि यह एक curl
विशेषता है, एक विशेषता नहीं है ps
? या क्या यह किसी प्रकार की एक कर्नेल विशेषता है?)
इसके अलावा: क्या यह बाइनरी एक्ज़ीक्यूटेबल के स्रोत कोड के बाहर से प्राप्त किया जा सकता है? उदाहरण के लिए शेल कमांड का उपयोग करके, संभवतः रूट अनुमतियों के साथ संयुक्त?
दूसरे शब्दों में, मैं किसी भी तरह से /proc
या ps
आउटपुट में दिखने से एक तर्क को नाकाम कर सकता हूं (एक ही बात, मुझे लगता है) कि मैं कुछ मनमाना खोल कमान में पारित कर दिया ? (मुझे लगता है कि इसका उत्तर "नहीं" है, लेकिन यह इस अतिरिक्त आधे-अधूरे प्रश्न के लायक है।)
environ
करने के लिए किसी को भी सीधे उपयोग करता है? - निचला रेखा: पर्यावरण चर की सूची की तरह तर्क सूची, उपयोगकर्ता प्रक्रिया मेमोरी में पढ़ने / लिखने के लिए है, और इसे उपयोगकर्ता प्रक्रिया द्वारा संशोधित किया जा सकता है।
grep
पैटर्न के पहले चरित्र को चरित्र वर्ग बनाएं । जैसेps -ef | grep '[c]url'
curl
मेल खाता है, curl
लेकिन [c]url
मेल नहीं खाता [c]url
। यदि आपको अधिक विस्तार की आवश्यकता है तो एक नया प्रश्न पूछें और मुझे उत्तर देने में खुशी होगी।