Можно ли изменить файл базы данных паролей( /etc/passwd
) на какой-то другой файл. Как этот механизм аутентификации работает внутри? Зависит ли он от pam ?
решение1
Вы правы: /etc/passwd
и /etc/shadow
консультируются с pam_unix.so
, которые являются частью PAM. По крайней мере, в современных Linux. Вы можете изменить это, пропатчив pam_unix.so
. Если верить man-странице, вы не можете изменить расположение системных баз данных.
И вы действительно не хотите этого. /etc/passwd
используется не только для аутентификации, но и для (обратного) разрешения имен и поиска таких вещей, как полное имя пользователя, оболочка и т. д. Имя и местоположение настолько стандартизированы, что их перемещение почти наверняка сломает что-то за пределами PAM. Вам придется патчить гораздо больше, чем вы рассчитывали.
Обновлять:Если вы пытаетесь скрыть /etc/{passwd,shadow,group}
файлы в целях безопасности, не беспокойтесь об этом. Безопасность через неизвестность редко помогает как политика. Оставьте их там, где они есть, и ужесточите остальные политики.
Обновление: возможное решение
Если у вас есть пользовательское программное обеспечение, которому необходимо получить доступ к другому набору баз данных пользователей/групп, вы можете сделать копию соответствующих модулей PAM и NSS и применить исправления.ихдля использования ваших пользовательских баз данных. Исходные базы данных unix остаются там, где они есть, чтобы программное обеспечение не путалось, но вы можете настроить PAM и NSS на использование ваших пользовательских модулей там, где вам нужно, и использовать любую политику, которая имеет для вас смысл.
Сохраняйте базы данных unix в чистоте, и у вас будет то, что вы просили. Это то, что делают radius
модули ldap
PAM/NSS: они предоставляютдополнительный(не заменяющий) источник учетных данных и информации о пользователе/группе.
Идем еще дальше: вы можете вернуться к PAM и NSS и полностью отключить поиск в базе данных unix. Оставьте файлы там для старого ПО (естественно, их представления о базах данных пользователей/групп будут неточными, но, по крайней мере, они не сломаются).
решение2
То, что вы ищете, — это pam_pwdfile
модуль. В Debian/Ubuntu пакет есть libpam-pwdfile
(не уверен насчет дистрибутивов, производных от RedHat).
В комплект поставки входит README
инструкция, объясняющая, как им пользоваться.
решение3
Я не уверен, возможно ли это из коробки, но это определенно возможно с некоторыми хаками. Для того, чтобы сделать это, вам нужно:
- Настройте/хакерски измените библиотеку nsswitch (/lib/libnss_files.so или libnss_db.so — проверьте ваш /etc/nsswitch.conf), чтобы она читала какой-то другой файл.
- Настройте/взломайте модуль pam_unix так, чтобы он мог читать некоторые другие файлы.
решение4
Используйте NIS или LDAP для аутентификации пользователей. Их пароли не будут храниться в файле(ах) /etc/{password/shadow}.