Так уж сложилось, что в моей жизни Linux стало больше: сегодня на работе поставил Debian "Jessie", есть такая необходимость. Хотя обычно я предпочитаю и использую fluxbox, на этот раз было нужно окружение Mate. После запуска Mate я обнаружил, что среда запрашивает пароль root всякий раз, когда я пытаюсь выключить или перезагрузить компьютер. Хочу поделиться простым рецептом, как от этого избавиться, и включить возможность перезагрузки и выключения компьютера под обычным пользователем.
Сначала стоит убедиться, что у нас установлены следующие пакеты:
# apt-get install policykit-1 mate-polkit consolekit
После этого необходимо подправить соответствующую политику polkit. В любимом редакторе (мой любимый - mcedit) откройте файл org.freedesktop.login1.policy, вот так
# mcedit /usr/share/polkit-1/actions/org.freedesktop.login1.policy
Он имеет структуру XML. Найдите в нем блок <action id="org.freedesktop.login1.power-off">
Измените содержимое секции <defaults>, чтобы получилось что-то такое:
<action id="org.freedesktop.login1.power-off"> <description>Power off the system</description> <message>Authentication is required for powering off the system.</message> <defaults> <allow_any>yes</allow_any> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults> </action>
Таким же образом измените содержимое блоков defaults в следующих секциях:
<action id="org.freedesktop.login1.power-off-multiple-sessions"> <action id="org.freedesktop.login1.reboot"> <action id="org.freedesktop.login1.reboot-multiple-sessions"> <action id="org.freedesktop.login1.suspend"> <action id="org.freedesktop.login1.suspend-multiple-sessions"> <action id="org.freedesktop.login1.hibernate"> <action id="org.freedesktop.login1.hibernate-multiple-sessions">
Завершите сеанс Mate, если он у вас был запущен, и запустите снова. Теперь вы сможете выключить, перезагрузить или загнать в сон Debian, работая под обычным пользователем.
💡Узнавайте о новых статьях быстрее. Подпишитесь на наши каналы в Telegram и Twitter.
Эти правила же будут действовать только до первого обновления polkit. Что нужно сделать для того, чтобы они не были перезаписаны правилами из обновлённого пакета?
Полагаю, в этом случае надо писать правила в /etc/polkit-1/rules.d
Что-нибудь типа:
/etc/polkit-1/rules.d/99-shutdown.rules
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
action.id == "org.freedesktop.login1.reboot" ||
action.id == "org.freedesktop.login1.reboot-multiple-sessions") {
return polkit.Result.YES;
}
});
Должно прокатить.