Доступ користувачів до цих дій контролюється polkit. Зокрема, вони відповідають наступним діям:
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.restart
org.freedesktop.upower.suspend
org.freedesktop.upower.hibernate
Усі ці дії за замовчуванням дозволені для активних місцевих користувачів (хоча consolekitнадалі обмежує перші два дозволи працювати лише тоді, коли в систему входить один користувач).
Якщо ви хочете відключити ці дії, створіть файл, /etc/polkit-1/50-local.d/disable-shutdown.pklaщо містить щось на зразок:
[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no
Це повинно запобігти завершенню цих дій. Більше інформації про ці файли політики можна знайти, запустивши man pklocalauthority.
Якщо ви намагаєтесь обмежити root, це буде лише незначною незручністю. За визначенням, rootце необмежений обліковий запис відповідно до традиційної дискреційної системи контролю доступу UNIX. Якщо ви не можете довіряти користувачам, яким ви отримали повний rootдоступ, то у вас виникають більші проблеми, ніж їх просто вимкнення системи.
Зауважте, що в пізніших версіях Ubuntu хтось вирішив порушити сумісність. Як відповів у розділі Як відключити відключення / перезавантаження з lightdm у 14.04? дія, схоже, змінилася на "org.freedesktop. login1 .reboot" (і подібне).
Наприклад, у 14.04 додавання наступних рядків як /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pklaробіт:
[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
Крім того, зауважте, що цей метод блокує виключно перезавантаження / тощо команди, видані з GUI. Для блокування команд перезавантаження / тощо з командного рядка можна використовувати molly-guard - як пояснено в команді "Відключення команди відключення" для всіх користувачів, навіть root - наслідки?
shutdownіpm-suspendз/sbin/і/bin/