* "Alexander S. Kharitonov" <a...@askh.ru> [Sun, 05 Jul 2009 21:48:35 +0400]:
> Привет!

В http://wiki.debian.org/LDAP/PAM предлагается, чтобы настроить
авторизацию используя LDAP, в частности написать в файле
/etc/pam.d/common-account следующее:

account required pam_unix.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so

Не совсем понятно, как это должно работать - ведь если пользователь
отсутствует в /etc/passwd, то разве pam_unix.so не должен вернуть
неудачу, соответственно общий результат (раз там required) разве не
будет неудачей, независимо от того, есть ли пользователь в базе LDAP
или
нет?

С уважением Александр



Если пользователь отсутствует в базе passwd, процесс входа в систему закончится на секции "auth". Так как PAM-модуль pam_unix.so первым делом проверяет наличие пользователя в этой базе. Но так как контролирующий флаг PAM-модуля pam_unix.so равен required, следующий в цепочке будет выполнен PAM-модуль pam_succeed_if.so uid < 1000 quiet - на нем все и закончится, так

флаг sufficient будет выполнен только тогда, когда pam_unix.so вернет PAM_SUCCESS.

Конечно, могу ошибаться, pam_succeed_if.so uid < 1000 трактуется как разрешать авторизироваться пользователям чей uid меньше чем 1000. Обычно, пользователи в системе
принято присваивать  uid как раз начиная с 1000.

--
С уважением Андрей Ржавсков,
rj...@rambler.ru

Ответить