Вы говорите, что знаете, как применять политику паролей в масштабе всей системы, но я повторю, что делать для тех, кто этого не делает. Вы можете использовать модуль PAM, pam_cracklib.so
, который проверяет, чтобы убедиться, что пароль соответствует определенным критериям, прежде чем разрешить применять пароль к учетной записи. В Ubuntu пакет libpam-cracklib
устанавливает этот модуль и применяет следующую строку в верхней части /etc/pam.d/common-password
, файла, который имеет дело с изменением пароля пользователя:
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
Различные параметры могут быть переданы в pam_cracklib.so
, и в этом случае указывается минимальная длина 8 с требованием 3-х символьных изменений старого пароля. Смотрите http://linux.die.net/man/8/pam_cracklib для подробного списка всех доступных опций.
Чтобы ограничить одну политику для определенной группы пользователей, можно использовать модуль pam_succeed_if.so
, который успешно выполняется только в том случае, если пользователь соответствует различным критериям. Например, чтобы применить политику паролей, подобную приведенной выше, но оставить пользователей в группе «sudo» освобожденными, используйте:
password [success=1 default=ignore] pam_succeed_if.so user ingroup sudo
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
Это говорит PAM проверить, соответствует ли пользователь группе 'sudo', а затем пропустить следующий модуль, если это удастся. В противном случае перейдите к следующему модулю, который применяет политику паролей.
Однако, если использовать модуль PAM с опцией use_authtok
такой как конфигурация Ubuntu pam_unix.so
по умолчанию с установленным pam_cracklib.so, это не будет работать правильно. Так как pam_unix.so
зависит от модуля, ранее установившего текущий пароль пользователя и желаемый пароль, в случае успеха модуля pam_succeed_if.so
passwd
выдаст ошибку passwd: Authentication token manipulation error
. Я нашел способ использовать вторую строку pam_unix.so
:
password [success=2 default=ignore] pam_succeed_if.so user ingroup sudo
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512
password [success=1 default=ignore] pam_unix.so obscure sha512
В этом примере, если пользователь находится в группе 'sudo', элемент управления пропускает 2 модуля до последней строки pam_unix.so
которая не включает use_authtok
. Однако в случае сбоя управление переходит к pam_cracklib.so
, а затем к зависимому pam_unix.so