Для подгруппы моих пользователей в /etc/passwd
, Я хотел бы настроить PAM (в Linux) для выполнения части проверки пароля при входе на сервер LDAP, игнорируя, что эти пользователи фактически указаны как отключенные в /etc/passwd
. Специально, /etc/passwd
и /etc/group
следует использовать во всех случаях для UID и GID, чтобы такие свойства, как uidnumber
и gidnumber
не нужно добавлять в каталог (здесь Active Directory), в отличие от того, что обычно показано в документации, например HOWTO по реализации LDAP.
Возможно ли это (без разработки собственного модуля PAM)? Невозможно добавить свойства в каталог LDAP. Я не являюсь администратором домена Active Directory, и расширение участия до этого уровня выходит за рамки этого проекта. Это случай, когда система работает в среде, состоящей в основном из серверов Windows; Было бы неплохо, если бы назначенные пользователи Windows могли использовать свои пароли AD в рассматриваемой системе.
В зависимости от пользователя, пользователь должен быть проверен с помощью авторизации UNIX или авторизации LDAP, но не обоих одновременно. Я не могу добавлять атрибуты пользователям в Active Directory, но могу добавлять их в группы безопасности (и на самом деле хотел бы дополнительно потребовать, чтобы пользователи LDAP входили в определенную группу безопасности LDAP).
Спасибо, что обновили свой вопрос, этот совет часто принимают неверно.
Ваши требования, как я их понимаю:
UID
/GID
поиск для всех пользователей должен выполняться по локальным файлам.Вкратце, да, это возможно, но для этого нужно действительно понимать, как работают эти подсистемы, а не полагаться на онлайн-HOWTO. Я собираюсь отослать вас к существующему моему ответу в качестве учебника. https://serverfault.com/a/538503/152073
NSS
это система, которая выполняет поиск по UID и GID. Если вы не измените /etc/nsswitch.conf
и скажи ему использовать ldap
или sssd
, ваши системные вызовы будут полагаться на локальные файлы. Большинство плагинов PAM для LDAP используют файл конфигурации совместно с плагином NSS для LDAP, но это не имеет значения, если плагин NSS не используется NSS.
Ваше требование делать это только для определенных пользователей сложнее. Настройте PAM, чтобы попробовать pam_ldap.so
(или pam_krb5.so
, или pam_winbind.so
... зависит от того, что вы используете) как auth sufficient
, непосредственно перед auth required pam_unix.so
. sufficient
означает «достаточно хорошо, остановись здесь». required
означает «если мы зашли так далеко и этот тест не удался, аутентификация не удалась».
Это самый простой способ, но есть проблемы:
Дайте мне знать, если вам действительно, действительно, действительно нужно пройти аутентификацию по LDAP только для определенного списка пользователей. Это определенно возможно, но это увеличит сложность конфигурации PAM, и я уже бросаю вам довольно много информации.
Расширяя ответ по запросу:
Моя рекомендация для жесткого контроля над тем, кто проходит аутентификацию по AD, - использовать pam_access.so
. Чтобы это работало, модули PAM AD и Unix должен быть смежными и именно в таком порядке. Поместите перед ними следующую строку:
auth [success=ignore default=1] pam_access.so accessfile=/etc/security/somefile.conf noaudit
success=ignore
означает «если этот тест завершится успешно, игнорируйте эту строку и продолжайте как обычно». default=1
означает «во всех остальных случаях пропустить следующую строку». Вам нужно будет создать somefile.conf
и определите список пользователей, которым разрешено использовать AD auth. Проверьте страницу руководства для access.conf
Больше подробностей. Вы должны либо определить список всех пользователей в этом файле, либо создать локальную группу и проверить ее членство. Во всех случаях третье поле должно быть ALL
. (т.е. + : whatever : ALL
)
Ваше необязательное требование (контролируйте это с помощью группы безопасности AD) можно реализовать одним из двух способов:
auth
проверки, которые нужно пропустить на основе членства в группе, используйте это. Это не то же самое, что отказать пользователю через account
если пароль удастся!passwd
поиски указывают на ldap
в /etc/nsswitch.conf
, но ты бы добавить ldap
линия к group
. Объект группы безопасности должен быть настроен так, чтобы его можно было распознать как группу Unix, либо путем применения соответствующего объектного класса (т. Е. posixGroup
) или настройте плагин NSS для распознавания его как одного. Если у вас нет сильного опыта в LDAP, вы можете просто передать это.После того, как вы успешно настроили все до такой степени, что getent group
показывает группу AD, вы можете изменить свой файл доступа, чтобы добиться успеха в зависимости от членства в этой группе.