Навіщо / etc / passwd використовуватись щоразу, коли хтось виконує команду `ls -l`?


28

Читайте з APUE , просто відчувайте цікавість:

Файл пароля використовується щоразу, коли користувач входить у систему UNIX та кожного разу, коли хтось виконує ls -lкоманду.


3
FYI Я намагаюся strace ls -lпізніше, я бачу openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 4твердження.
Рік

7
Звичайно, реальність сьогодні є більш складною. Це не /etc/passwdна BSD. Активний nscdзмінить речі; як і НСС. Тож зауважте, що це питання ґрунтується на світогляді 7-го видання.
JdeBP

4
@JdeBP Давнє програмування в середовищі Unix , тоді?
Ендрю Генле

@JdeBP Це не так? Я дуже здивувався, коли ти сказав, що тому, що я думаю, що багато програм (скриптів і двійкових файлів) будуть порушені, які залежать (можливо, неправильно, але все-таки) на наявності / etc / passwd.
Пітер - Відновіть Моніку

Це не так, як правильно прочитати цю сторінку керівництва, включаючи її розділ ФАЙЛИ. (-:
JdeBP

Відповіді:


50

Файлова система безпосередньо асоціює числові значення UID (User ID) та GID (ID групи) з файлом, а не ім'я користувача та ім'я групи (що є рядками). Тож ls -lкоманді (та будь-якій іншій команді, яка відображає користувача та власника групи файлу) потрібно десь отримати ім’я користувача та групи. /etc/passwdФайл є одним з таких джерел (ймовірно , оригінальний і найпоширеніший джерело). Посібник містить це з PASSWD (5) (тобто довідкова сторінка для /etc/passwdфайлу):

багато утиліт, як-от ls (1), використовують його для зіставлення ідентифікаторів користувачів на імена користувачів


17
Для доповнення відповіді: POSIX вказує опцію -nдля ls. Це запобігає перекладенню UID та GID в імена користувачів та групи. Я перевірив ls -nосновні утиліти GNU, lsі цей параметр заборонив доступ до обох /etc/passwdі /etc/groupяк очікувалося.
пабук
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.