Что означает ошибка Polkit permission denied
Ошибка Polkit permission denied возникает, когда подсистема PolicyKit (polkit) отклоняет запрос на выполнение привилегированного действия. Это может происходить в терминале, системных службах или графических утилитах администрирования. Типичные сообщения включают:
Failed to start: Polkit permission deniedError registering authentication agent: Polkit permission deniedpolkit.error-quark: Not authorized
Ошибка появляется, когда polkit не может сопоставить пользователя с разрешающим правилом или обнаруживает конфликт, отсутствие файлов правил или некорректные права доступа.
Причины возникновения
- Отсутствуют или повреждены
.rulesфайлы в/etc/polkit-1/rules.d/или/usr/share/polkit-1/rules.d/ - Некорректный JavaScript-синтаксис в пользовательских правилах polkit
- Неверные права доступа или владелец на каталоги и файлы polkit
- Конфликт между локальными и дистрибутивными политиками (локальные правила переопределяют или блокируют системные)
- Отключённая или неактивная служба
polkitd(илиsystemd-logindв связке с polkit) - Попытка выполнения действия без соответствующего действия (action ID) в
/usr/share/polkit-1/actions/
Способы решения
Способ 1: Проверка и восстановление правил Polkit
Убедитесь, что правила существуют и содержат корректный синтаксис. Создайте или исправьте файл в /etc/polkit-1/rules.d/, если его нет:
sudo nano /etc/polkit-1/rules.d/10-fix-permissions.rules
Добавьте простое разрешающее правило для группы sudo (подстройте под нужную группу или пользователя):
polkit.addRule(function(action, subject) {
if (subject.isInGroup("sudo")) {
return polkit.Result.YES;
}
});
Сохраните файл и проверьте, что он не содержит синтаксических ошибок.
Способ 2: Исправление прав доступа к файлам и каталогам
Некорректные права могут приводить к игнорированию правил. Восстановите стандартные:
sudo chown -R root:root /etc/polkit-1/
sudo chmod -R 755 /etc/polkit-1/
sudo find /etc/polkit-1/ -name "*.rules" -exec chmod 644 {} \;
Повторите для системных каталогов, если в них есть локальные изменения:
sudo chown -R root:root /usr/share/polkit-1/
sudo chmod -R 755 /usr/share/polkit-1/
Способ 3: Перезапуск служб и проверка через pkexec
Перезапустите связанные службы, чтобы polkit перечитал правила:
sudo systemctl restart polkit
sudo systemctl restart systemd-logind
Проверьте, разрешено ли действие, с помощью pkexec:
pkexec --user root systemctl status NetworkManager
Если команда выполняется без ошибки доступа, проблема решена.
Способ 4: Устранение конфликтов между правилами
Если ошибка сохраняется, сравните локальные и дистрибутивные правила. Удалите или переименуйте конфликтующие файлы:
sudo mv /etc/polkit-1/rules.d/10-custom.rules /etc/polkit-1/rules.d/10-custom.rules.bak
Проверьте, не дублируются ли действия в /usr/share/polkit-1/actions/. При необходимости создайте минимальный локальный .rules файл с явным разрешением нужного действия:
polkit.addRule(function(action, subject) {
if (action.id === "org.freedesktop.systemd1.manage-units" &&
subject.isInGroup("sudo")) {
return polkit.Result.YES;
}
});
Профилактика
Чтобы избежать повторения ошибки Polkit permission denied, соблюдайте несколько простых правил:
- Всегда создавайте локальные правила в
/etc/polkit-1/rules.d/, а не изменяйте файлы в/usr/share/ - Перед сохранением
.rulesфайлов проверяйте JavaScript-синтаксис (можно использоватьnode -cдля проверки) - Следите за правами доступа: каталоги должны быть
755, файлы.rules—644, владелец —root:root - Избегайте дублирования action ID в разных файлах правил — используйте один приоритетный файл
- После редактирования правил перезапускайте
polkitdилиsystemd-logind, чтобы изменения вступили в силу
⚠️ Важно: не отключайте polkit или не заменяйте его вызовы на прямое использование
sudoв системных службах и графических утилитах — это снижает безопасность и может привести к непредсказуемым отказам в работе системы.