Interactive authentication required при управлении службой
Сообщение об необходимости интерактивной аутентификации приходит от polkit: непривилегированный пользователь пытается управлять системной службой. В неинтерактивном сеансе спросить пароль негде, и команда завершается отказом.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Команда выполняется без прав и без возможности спросить пароль
В скрипте, задании по расписанию или по ssh без терминала polkit не может запросить пароль и отказывает.
-
Нужно разрешить конкретную операцию конкретной группе
polkit позволяет описать правило: кто и какими unit может управлять. Это точнее, чем выдавать полный доступ через sudo.
-
Служба пользователя управляется как системная
Для служб пользователя нужен ключ пользователя: тогда аутентификация не требуется вовсе.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
От кого выполняется команда.
idЗаписи polkit о запросах и отказах.
journalctl -u polkit -n 20 --no-pagerДействующие правила.
sudo ls -l /etc/polkit-1/rules.d/Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- В скрипте, задании по расписанию или по ssh без терминала polkit не может запросить пароль и отказывает.
- Как проверить
-
Посмотрите, от кого выполняется команда.
id systemctl status myapp.service 2>&1 | tail -3
- Как исправить
- Выполняйте управление службами от root или через sudo с настроенным правилом. Для автоматизации это надёжнее интерактивного пути.
- Почему происходит
- polkit позволяет описать правило: кто и какими unit может управлять. Это точнее, чем выдавать полный доступ через sudo.
- Как проверить
-
Посмотрите существующие правила.
sudo ls -l /etc/polkit-1/rules.d/ 2>/dev/null
- Как исправить
- Добавьте правило, разрешающее нужной группе управлять конкретной службой. Правило пишется на языке правил polkit и проверяется без перезагрузки.
- Почему происходит
- Для служб пользователя нужен ключ пользователя: тогда аутентификация не требуется вовсе.
- Как проверить
-
Посмотрите, где находится unit.
systemctl --user list-unit-files "myapp*" 2>/dev/null systemctl list-unit-files "myapp*"
- Как исправить
- Используйте команды с ключом пользователя для своих служб: они не требуют прав root.
Пример вывода
Непривилегированный пользователь пытается перезапустить службу. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
$ systemctl restart nginx
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
Authentication is required to restart 'nginx.service'.
Failed to restart nginx.service: Interactive authentication required.
Связанные ошибки
- Failed to connect to bus: подключение к шине недоступно Команды systemctl не работают: нет подключения к шине. Разбор для контейнеров, сеансов по ssh и служб пользователя.
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- MongoDB: Unable to lock file mongod.lock mongod не запускается: остался файл блокировки после аварийного завершения или каталог принадлежит не тому пользователю.
- MySQL: Can't open the mysql.plugin table и повреждение системных таблиц MySQL не запускается: недоступны или повреждены системные таблицы. Права на каталог данных, версия схемы, восстановление.
- Node-служба не может занять порт 80 Приложение на Node падает при привязке к привилегированному порту: как дать возможность вместо запуска от root.
Источники
-
polkit(8)
Правила и авторизация действий. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено перезапуском службы от непривилегированного пользователя без терминала.