ActiveDirectory/CheckPasswordAgeNotify

Материал из ALT Linux Wiki

В настоящее время отсутствуют более-менее привычные инструменты уведомления пользователя об истечении пользовательского пароля. Это отдано на откуп локальным администраторам. Я предлагаю свое видение решения проблемы.

Описание проблемы

Доменный пользователь, у которого через N дней заканчивается пароль. Если он пропустит этот срок (болезнь, командировка, праздники, что угодно), зайти в систему без помощи администратора будет проблематично. Хотелось бы, чтобы за M дней до окончания срока пользователю было уведомление о скором истечении срока жизни пароля. Чтобы пользователь не забыл и заблаговременно поменял пароль

Реализация

В разное время я шёл разными путями для уведомления пользователя об этом событии. Предлагаю последний вариант. Небольшой скрипт, который имеет конфиг, где настраивается время за какое нужно уведомлять, адрес (контроллера домена), и вариант использования внутреннего уведомления (просто окно с текстом), либо внешний скрипт где вы сами решите в какой форме и как уведомить пользователя (письмо, сообщение в мессенджер и т.п.)

Установим скрипт

$ su -
# apt-get update
# apt-get install http://altrepo.ru/local-p10/noarch/RPMS.local-p10/checkpasswordage-2.0-alt1.noarch.rpm

Конфигурационный файл просто и понятен

$ cat /etc/checkPasswordAge.conf
[ldap]
dchost = dc.test.alt
ldap_base = dc=test,dc=alt

[time]
days = 10

[gui]
engine = internal

;engine = external
;external_cmd = /usr/share/doc/checkPasswordAge-2.0/examples/ext_demo_script.sh 

;Если указано engine = external
;то требуется указание external_cmd = /path/to/script

Если в домашней папки пользователя есть персональный конфиг т.е. $HOME/checkPasswordAge.conf то будет использоваться он

Любым способом нужно добавить запуск скрипта в автозагрузку, к примеру в /etc/xdg/autostart/

# cp /usr/share/applications/checkPasswordAge.desktop /etc/xdg/autostart/

Теперь при входе доменным пользователем, к которого пароль имеет конечную дату жизни, скрипт будет обращаться к LDAP используя текущий билет Kerberos, получать необходимые данные и выводить сообщение.

Checkpasswordage 1.png

При использовании внешнего уведомления вам нужно в конфигурационном файле указать engine=external и путь до вашего скрипта

engine = external
external_cmd = /usr/share/doc/checkpasswordage-2.0/examples/ext_demo_script.sh 

В скрипт, первым параметром будет передано число дней до окончания срока жизни пароля. Вы можете самостоятельно написать свой обработчик этого события. В пакете есть демонстрационный скрипт для вывода через zenity.

Checkpasswordage ext 2.png

Либо сразу предложить его сменить (при external_cmd = /usr/share/doc/checkpasswordage-2.0/examples/ext_demo_script_adv.sh)

Checkpasswordage ext 3.png

Замечания

  • Дата окончания пароля вычисляется из действующей парольной политики для этого пользователя. Это не дата срока действия УЗ