ls -l /etc/passwd
дает
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd
Таким образом, обычный пользователь может прочитать файл. Это дыра в безопасности?
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
. Использование BSD /etc/master.passwd
. Солярис использует /etc/security/passwd
. HP-UX использует, /.secure/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
программы и один единственный файл, содержащий все хешированные пароли в вашей системе, вы можете заменить его модулем PAM Openwall TCB . Это предоставляет каждому пользователю свой собственный файл для хранения своего хешированного пароля - в результате количество setuid root
программ в системе может быть значительно сокращено.
Пароли не были сохранены в /etc/passwd
течение многих лет; имя унаследовано, функция локальной базы данных пользователя остается, и она должна быть доступна для чтения всем для этой цели.
В некоторой степени это так, как вы можете идентифицировать пользователей. В прошлом вы также могли подобрать их пароли. Однако действительно стоит взломать один идентификатор пользователя, root
который хорошо известен без файла паролей.
Полезность того, чтобы файл паролей читался как мир, обычно намного перевешивает риск. Даже если бы она не была доступна для чтения во всем мире, действующая getent passwd
команда сделала бы усиление безопасности недействительным.
Возможность для пользователей без полномочий root идентифицировать файлы, принадлежащие другим, исчезнет. Возможность идентифицировать собственные (пользователь в файле passwd) и неизвестные файлы (пользователь не в файле passwd) может быть полезна при просмотре содержимого файловой системы. Хотя можно было бы решить эту проблему с помощью соответствующих setuid
программ, это добавило бы огромный вектор атаки через эти программы.
В конце концов, это вопрос баланса, и в этом случае я бы сказал, что баланс заключается в том, чтобы мир паролей читался.