Подробный гайд: Автоблокировка экрана по PIN-коду Рутокен в РЕД ОС (MATE) через pkcs11 - Часть 3

Подробный гайд по настройке автоблокировки экрана и аутентификации по PIN-коду Рутокен в РЕД ОС (MATE) через pkcs11_eventmgr и PAM.

2026.11.02                  


Подробный гайд: Автоблокировка экрана по PIN-коду Рутокен в РЕД ОС (MATE) через pkcs11 - Часть 3Подробный гайд: Автоблокировка экрана по 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. Проверка разблокировки экрана

Порядок проверки:

  1. Вставьте Рутокен.
  2. Заблокируйте экран командой:
   mate-screensaver-command --lock
  1. Попробуйте разблокировать.
  2. Если окно пишет «Пароль», попробуйте ввести PIN-код Рутокена.
  3. Если разблокировалось — PAM уже работает, просто интерфейс может называть поле паролем.
  4. Если не разблокировалось — смотрите /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";
}

После этого:

  1. Запустите сессию заново или перезагрузитесь.
  2. Извлеките Рутокен.
  3. Проверьте:
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

Тогда аналогичные строки нужно добавить туда.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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