हर बार जब कोई `ls -l` कमांड निष्पादित करता है तो / etc / passwd का उपयोग क्यों किया जाएगा?


28

APUE से पढ़ें , बस उत्सुकता महसूस करें:

पासवर्ड फ़ाइल का उपयोग हर बार उपयोगकर्ता द्वारा UNIX सिस्टम में लॉग इन करने के लिए किया जाता है और हर बार कोई व्यक्ति किसी ls -lकमांड को निष्पादित करता है ।


3
FYI करें मैं strace ls -lबाद में कोशिश करता हूं , मैं एक openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 4बयान देखता हूं ।
रिक

7
बेशक, वास्तविकता आजकल अधिक जटिल है। यह /etc/passwdबीएसडी पर नहीं है । एक सक्रिय nscdचीजों को बदल देगा; जैसा कि एन.एस.एस. तो ध्यान दें कि यह प्रश्न 7 वें संस्करण के विश्वदृष्टि पर आधारित है।
JdeBP

4
@JdeBP यूनिक्स पर्यावरण में प्राचीन प्रोग्रामिंग , तब?
एंड्रयू हेनले

@JdeBP यह नहीं है? मुझे आश्चर्य हुआ जब आपने कहा कि क्योंकि मुझे लगता है कि बहुत सारे कार्यक्रम (स्क्रिप्ट और बायनेरिज़) टूटेंगे, जो / आदि / पासवार्ड की उपस्थिति पर भरोसा करते हैं (शायद गलत तरीके से, लेकिन अभी भी)।
पीटर -

यह नहीं है, क्योंकि इसके FILES अनुभाग सहित उस मैनुअल पृष्ठ को ठीक से पढ़ने से पता चलेगा। (-:
JdeBP

जवाबों:


50

फ़ाइल-सिस्टम सीधे संख्यात्मक UID (उपयोगकर्ता आईडी) और GID (समूह आईडी) को फ़ाइल के साथ जोड़ता है, न कि उपयोगकर्ता नाम और समूह नाम (जो तार हैं)। तो ls -lकमांड (और किसी भी अन्य कमांड जो उपयोगकर्ता और फ़ाइल के समूह के मालिक को प्रदर्शित करता है) को उपयोगकर्ता और समूह के नाम कहीं से प्राप्त करने की आवश्यकता है। /etc/passwdफ़ाइल ऐसे ही एक स्रोत (शायद मूल और सबसे सामान्य स्रोत) है। मैनुअल इसे बाहर निकालता है - PASSWD (5) (यानी /etc/passwdफ़ाइल के लिए मैन पेज ) से:

कई उपयोगिताओं, जैसे ls (1) इसका उपयोग उपयोगकर्ता IDs को उपयोगकर्ता नाम में मैप करने के लिए करते हैं


17
उत्तर को पूरक करने के लिए: POSIX के -nलिए विकल्प निर्दिष्ट करता है ls। यह यूएनआईडी और जीआईडी ​​के उपयोगकर्ता नाम और समूह के नामों के अनुवाद को रोकता है। मैंने ls -nजीएनयू कोर के बर्तनों के साथ परीक्षण किया है ' lsऔर विकल्प ने दोनों को एक्सेस करने से रोका /etc/passwdऔर /etc/groupउम्मीद के मुताबिक ।
पाबौक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.