Можно ли изменить файл базы данных паролей (/etc/passwd) в Linux?

Можно ли изменить файл базы данных паролей (/etc/passwd) в Linux?

Можно ли изменить файл базы данных паролей( /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модули ldapPAM/NSS: они предоставляютдополнительный(не заменяющий) источник учетных данных и информации о пользователе/группе.

Идем еще дальше: вы можете вернуться к PAM и NSS и полностью отключить поиск в базе данных unix. Оставьте файлы там для старого ПО (естественно, их представления о базах данных пользователей/групп будут неточными, но, по крайней мере, они не сломаются).

решение2

То, что вы ищете, — это pam_pwdfileмодуль. В Debian/Ubuntu пакет есть libpam-pwdfile(не уверен насчет дистрибутивов, производных от RedHat).

В комплект поставки входит READMEинструкция, объясняющая, как им пользоваться.

решение3

Я не уверен, возможно ли это из коробки, но это определенно возможно с некоторыми хаками. Для того, чтобы сделать это, вам нужно:

  1. Настройте/хакерски измените библиотеку nsswitch (/lib/libnss_files.so или libnss_db.so — проверьте ваш /etc/nsswitch.conf), чтобы она читала какой-то другой файл.
  2. Настройте/взломайте модуль pam_unix так, чтобы он мог читать некоторые другие файлы.

решение4

Используйте NIS или LDAP для аутентификации пользователей. Их пароли не будут храниться в файле(ах) /etc/{password/shadow}.

Связанный контент