Вы говорите, что знаете, как применять политику паролей в масштабе всей системы, но я повторю, что делать для тех, кто этого не делает. Вы можете использовать модуль 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
подобной pam_unix.so
конфигурации Ubuntu по умолчанию, с установленным 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