Подробный гайд: Автоблокировка экрана по PIN-коду Рутокен в РЕД ОС (MATE) через pkcs11 - Часть 3
10. Перезапуск mate-screensaver
После изменения PAM проще всего выйти из сеанса и зайти заново. Но можно попробовать перезапустить процесс блокировщика.
Найти процесс:
pgrep -a mate-screensaver
Перезапустить для текущего пользователя:
pkill -u "$USER" -x mate-screensaver
nohup /usr/bin/mate-screensaver >/dev/null 2>&1 &
Если команда запускается из терминала без графической сессии, лучше просто завершить сеанс и войти снова.
11. Проверка разблокировки экрана
Порядок проверки:
- Вставьте Рутокен.
- Заблокируйте экран командой:
mate-screensaver-command --lock
- Попробуйте разблокировать.
- Если окно пишет «Пароль», попробуйте ввести PIN-код Рутокена.
- Если разблокировалось — PAM уже работает, просто интерфейс может называть поле паролем.
- Если не разблокировалось — смотрите
/var/log/secure.
Иногда экран блокировки визуально пишет «Пароль», но фактически принимает PIN, если PAM-модуль уже обрабатывает токен.
12. Настройка автоблокировки через pkcs11_eventmgr
Ваш конфиг в целом правильный, но лучше использовать полные пути к командам.
Откройте:
sudo nano /etc/pam_pkcs11/pkcs11_eventmgr.conf
Пример для отладки:
pkcs11_eventmgr
{
# Для первой диагностики лучше оставить процесс в переднем плане
# и включить отладку.
daemon = false;
debug = true;
# Время опроса в секундах
polling_time = 1;
# Тайм-аут после извлечения карты.
# 0 - реагировать сразу.
expire_time = 0;
# PKCS#11-библиотека Рутокен
pkcs11_module = /usr/lib64/librtpkcs11ecp.so;
# Карта вставлена
event card_insert {
on_error = ignore;
action = "/usr/bin/true";
}
# Карта извлечена
event card_remove {
on_error = ignore;
action = "/usr/bin/mate-screensaver-command --lock";
}
# Карта долгое время извлечена
event expire_time {
on_error = ignore;
action = "/usr/bin/true";
}
}
После проверки можно сделать рабочий вариант:
pkcs11_eventmgr
{
daemon = true;
debug = false;
polling_time = 1;
expire_time = 0;
pkcs11_module = /usr/lib64/librtpkcs11ecp.so;
event card_insert {
on_error = ignore;
action = "/usr/bin/true";
}
event card_remove {
on_error = ignore;
action = "/usr/bin/mate-screensaver-command --lock";
}
event expire_time {
on_error = ignore;
action = "/usr/bin/true";
}
}
Почему лучше использовать полный путь
Вместо:
action = "mate-screensaver-command --lock";
лучше:
action = "/usr/bin/mate-screensaver-command --lock";
Потому что демон может не иметь того же PATH, что и ваш терминал.
Проверить путь можно так:
command -v mate-screensaver-command
Если вывод, например:
/usr/bin/mate-screensaver-command
используйте его.
13. Если mate-screensaver-command --lock не срабатывает из pkcs11_eventmgr
Иногда проблема в переменных окружения DISPLAY, XAUTHORITY или DBUS_SESSION_BUS_ADDRESS.
Попробуйте более универсальный вариант через DBus:
action = "/usr/bin/dbus-send --session --type=method_call --dest=org.mate.ScreenSaver /org/mate/ScreenSaver org.mate.ScreenSaver.Lock";
Или через loginctl:
action = "/usr/bin/loginctl lock-session";
В некоторых системах loginctl lock-session работает надёжнее.
Пример рабочего конфига с loginctl
pkcs11_eventmgr
{
daemon = true;
debug = false;
polling_time = 1;
expire_time = 0;
pkcs11_module = /usr/lib64/librtpkcs11ecp.so;
event card_insert {
on_error = ignore;
action = "/usr/bin/true";
}
event card_remove {
on_error = ignore;
action = "/usr/bin/loginctl lock-session";
}
event expire_time {
on_error = ignore;
action = "/usr/bin/true";
}
}
14. Диагностика действия блокировки
Если не уверены, что pkcs11_eventmgr вообще видит извлечение токена, сделайте временный тест.
Замените действие на запись файла:
event card_remove {
on_error = ignore;
action = "/usr/bin/touch /tmp/rutoken_removed";
}
После этого:
- Запустите сессию заново или перезагрузитесь.
- Извлеките Рутокен.
- Проверьте:
ls -l /tmp/rutoken_removed
Если файл появился — событие извлечения обрабатывается нормально.
Тогда возвращайте реальную блокировку:
action = "/usr/bin/mate-screensaver-command --lock";
или:
action = "/usr/bin/loginctl lock-session";
15. Автозапуск pkcs11_eventmgr
У вас уже создан файл:
/etc/xdg/autostart/smartcard-screensaver.desktop
Рекомендуемый вариант:
[Desktop Entry]
Type=Application
Name=Smart Card Screensaver
Comment=Lock screen on Rutoken removal
Exec=/usr/bin/pkcs11_eventmgr daemon
Terminal=false
NoDisplay=true
Hidden=false
X-GNOME-Autostart-enabled=true
OnlyShowIn=MATE;
Проверить путь к бинарному файлу:
command -v pkcs11_eventmgr
Если он находится не в /usr/bin, укажите правильный путь.
Права на файл:
sudo chown root:root /etc/xdg/autostart/smartcard-screensaver.desktop
sudo chmod 644 /etc/xdg/autostart/smartcard-screensaver.desktop
После добавления или изменения файла автозапуска нужно выйти из сеанса и зайти снова.
Проверить, что процесс запущен:
pgrep -af pkcs11_eventmgr
Если процесса нет, значит автозапуск не сработал или pkcs11_eventmgr завершился из-за ошибки.
16. Проверить, что mate-screensaver действительно включён
Иногда сам блокировщик отключён в настройках.
Проверьте:
gsettings get org.mate.screensaver lock-enabled
gsettings get org.mate.screensaver idle-activation-enabled
Желательно, чтобы было:
true
Если нет, включите:
gsettings set org.mate.screensaver lock-enabled true
Также можно проверить через графический интерфейс:
Параметры → Защита экрана
или:
Меню → Параметры → Защита экрана
Там должна быть включена блокировка экрана при активации заставки.
17. Как понять, какой PAM-сервис реально используется
Если после всех правок всё равно запрашивается пароль, нужно смотреть лог.
Откройте второй терминал или перейдите в TTY:
sudo tail -f /var/log/secure
Затем заблокируйте экран и попробуйте разблокировать его по Рутокену.
Если в логе есть строки вида:
pam_pkcs11(mate-screensaver:auth): ...
значит модуль вызывается.
Если есть только:
pam_unix(mate-screensaver:auth): ...
и нет pam_pkcs11, значит PAM-файл не читается или указан неверный сервис.
В этом случае проверьте файлы:
ls -l /etc/pam.d/mate-screensaver /etc/pam.d/screensaver
Иногда может использоваться файл:
/etc/pam.d/screensaver
Тогда аналогичные строки нужно добавить туда.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.