लिनक्स "आईडी" और "हूमी" निर्भरता (चेरोट पर्यावरण के लिए) को आदेश देता है


1

मेरे पास फेडोरा कोर 18 में एक नया ओपनश (ओपनश-सर्वर-6.1p1-4.fc18.i686) चिरोट वातावरण है और एक (बैश) शेल के साथ चेरोट निर्देशिका संरचना में उपयोगकर्ताओं को डालता है। समस्या निवारण के दौरान समस्याओं के कारण के रूप में इसे नियंत्रित करने के लिए SELinux परमिशन मोड में रहा है।

लॉगऑन उपयोगकर्ताओं पर निम्न देखें:

Using username "testuser".

Authenticating with public key "rsa-key-xxxxxxx" from agent
id: cannot find name for group ID 1002
id: cannot find name for user ID 1001
id: cannot find name for group ID 1002
id: cannot find name for user ID 1001
[I have no name!@fc18test ~]$

हूमी इसी तरह से फैशन में विफल रहता है।

इस चेरोट वातावरण में आईडी कमांड के ठीक से काम करने के लिए क्या निर्भरताएं हैं? यह OpenSSH के पुराने संस्करणों का उपयोग करके फेडोरा के पिछले संस्करण में ठीक काम करता था।

चेरोट वातावरण में / etc निर्देशिका को पासवार्ड और amp के साथ फिर से बनाया गया है; पासव्ड-, समूह & amp; समूह-, और nsswitch.conf। nsswitch.conf में "पासवार्ड" और "समूह" के लिए प्रविष्टियां "फाइलें" के रूप में परिभाषित की गई हैं और उपयोगकर्ता आईडी और समूह आईडी दोनों उपयुक्त फाइलों में मौजूद हैं। फ़ाइल अनुमतियाँ मानक / etc निर्देशिका में उन्हीं फ़ाइलों को मिरर करती हैं। SELinux संदर्भों से मेल खाता है, भले ही यह आवश्यक नहीं होना चाहिए क्योंकि समस्या निवारण करते समय SELinux अनुमेय मोड में है।

मुझे लगता है कि आईडी कॉल या तो getuid() या geteuid()। क्या यह संभव है कि मैं चुरोट में एक पुस्तकालय को याद कर रहा हूं /lib निर्देशिका?

क्या किसी ने कुछ प्रकाश डाला है क्या गलत हो रहा है?


दौड़ने की कोशिश करो objdump -R /usr/bin/id या nm -D /usr/bin/id प्रतीकों को खोजने के लिए और इसे संबंधित लाइब्रेरी में वापस ट्रेस करने के बाद, इसे प्राप्त करने के बाद, इसे प्रतीकों में जोड़ें /lib विकृत वातावरण के भीतर ... संभावना है कि आप मानक सी लाइब्रेरी को कॉपी करना भूल गए होंगे libc या इसी के समान...
t0mm13b

जवाबों:


2

उपयोग ldd लिंक्ड लाइब्रेरी के लिए जाँच करने के लिए, उदा .:

 $ ldd $(which  whoami)
    linux-vdso.so.1 =>  (0x00007fff00bfe000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa25f48e000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fa25f871000)

चिंता मत करो अगर आप अपने सिस्टम पर linux-vdso नहीं पा सकते हैं, उदा। :

लाइब्रेरी जिसे आप linux-vdso.so.1 के रूप में देखते हैं, एक वर्चुअल लाइब्रेरी या वर्चुअल डायनेमिक शेयर्ड ऑब्जेक्ट है, जो केवल प्रत्येक प्रोग्राम के एड्रेस स्पेस में रहता है। पुराने सिस्टम ने इसे linux-gate.so.1 कहा है। यह वर्चुअल लाइब्रेरी उपयोगकर्ता के कार्यक्रमों को विशेष प्रोसेसर पर उपलब्ध सबसे तेज़ साधनों के माध्यम से सिस्टम फ़ंक्शंस तक पहुंचने की अनुमति देने के लिए आवश्यक तर्क प्रदान करता है, या तो सबसे नए प्रोसेसर के साथ, फास्ट सिस्टम कॉल।


दिलचस्प बात यह है कि लापता लाइब्रेरी फाइलें "ldd $ (कौन सी id)" या "ldd $ (जो whoami)" से लौटी सूची में नहीं थीं, लेकिन यह जानकारी मुझे सही रास्ते पर मिली। मैं चिरोट के वातावरण में / lib (/ usr / lib) निर्देशिका के सबसेट का उपयोग करता हूं ताकि समस्या निवारण के लिए मैंने चेरोट के वातावरण में संपूर्ण / परिवादात्मक निर्देशिका की प्रतिलिपि बनाई और फिर फ़ाइलों को हटाकर गायब हो गए। लापता लीबी फाइलें "libnss_files *" थीं। मुझे लगता है कि अपराधी ldd (?) द्वारा लौटी लाइब्रेरी फ़ाइलों की निर्भरता हैं। धन्यवाद।
user1783979

"libnss_files *" बल्कि।
user1783979

5

संकेत के लिए धन्यवाद :)

इसका कारण यह है whoami पर निर्भरता nss उपयोगकर्ताओं और समूहों को खोजने के लिए।

मैंने जो हल इस्तेमाल किया वो था इस् वरमी कॉल को स्ट्रेस करना:

/ # strace /bin/whoami
....
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/bin/whoami: cannot find name fo"..., 44/bin/whoami: cannot find name for user ID 0) = 44
close(1)                                = 0
close(2)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++

जो लापता लाइब्रेरी फ़ाइलों को कॉपी करके हल किया गया था।


आप फ़िल्टर करने के लिए -e विकल्प भी जोड़ सकते हैं strace -e trace=open /bin/whoami
Christian
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.