ls -l /etc/passwd
дает
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd
Так что обычный пользователь может прочитать файл. Это дыра в безопасности?
Фактические хэши паролей хранятся в /etc/shadow
, который не читается обычными пользователями. /etc/passwd
содержит другую информацию об идентификаторах пользователей и оболочках, которые должны быть доступны для чтения всем пользователям для функционирования системы.
Обычно хешированный пароли хранятся в /etc/shadow
в большинстве систем Linux:
-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow
(Они хранятся в /etc/master.passwd
на Системы BSD.)
Программы, которым требуется выполнить аутентификацию, по-прежнему необходимо запускать с root
привилегии:
-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd
Если вам не нравится setuid root
программ и один файл, содержащий все хешированные пароли в вашей системе, вы можете заменить его на Модуль Openwall TCB PAM. Это обеспечивает каждый пользователь со своим собственным файлом для хранения их хешированного пароля - в результате количество setuid root
количество программ в системе может быть значительно сокращено.
Пароли не хранились в /etc/passwd
уже много лет; имя унаследовано, функция локальной базы данных пользователей остается и должен быть доступным для чтения всем для этой цели.
В некоторой степени это так, поскольку вы можете идентифицировать пользователей. Раньше вы также могли подбирать их пароли. Однако действительно стоит взломать один ИД пользователя: root
который хорошо известен без файла паролей.
Как правило, полезность доступа к файлу паролей во всем мире намного перевешивает риск. Даже если бы он не был доступен для чтения, работающий getent passwd
команда сделает усиление безопасности недействительным.
Возможность для пользователей без полномочий root определять файлы, принадлежащие другим, исчезнет. Возможность идентифицировать принадлежащие (пользователь в файле passwd) и незарегистрированные файлы (пользователь не в файле passwd) может быть полезна при просмотре содержимого файловой системы. Хотя это можно было бы решить с помощью соответствующих setuid
программы, которые добавили бы огромный вектор атаки через эти программы.
В конце концов, это вопрос баланса, и в этом случае я бы сказал, что баланс твердо стоит на том, чтобы мир паролей был читаемым.