Почему / etc / passwd будет использоваться каждый раз, когда кто-то выполняет команду `ls -l`?


28

Читай из APUE , просто любопытно

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


3
К вашему сведению, я попробую 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 (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.