Как отключить shutdown / reboot / suspend / hibernate?

У меня есть настольный ПК Ubuntu 10.04 LTS с GNOME.

Как полностью отключить функции перезагрузки / выключения / приостановки / спящего режима в GNOME или даже с помощью root? Чтобы корень выдавал команду «reboot» или «pm-suspend», она ничего не делает, и машина продолжает работу. Как я могу полностью отключить эти основные «функции»?

12
задан 7 January 2012 в 18:56

3 ответа

Пользовательский доступ к этим действиям контролируется 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 кто-то решил сломать совместимость. Как указано в разделе Как отключить shutdown / reboot from 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

Кроме того, обратите внимание, что этот метод блокирует исключительно перезагрузку / etc команд, выпущенных из графического интерфейса. Чтобы заблокировать команды перезагрузки / etc из командной строки, вы можете использовать molly-guard - как объяснено в . Как отключить shutdown / reboot из lightdm в 14.04?

12
ответ дан 25 May 2018 в 15:23
  • 1
    Остановился, работая здесь с Ubuntu 13.10 !!! – GabrieleV 29 January 2014 в 03:03
  • 2
    @GabrieleV Может быть, версия с login1 работает в 13.10? Я протестировал его в 14.04 - и, надеюсь, никто из Canonical не нарушает совместимость в полките в каждом выпуске для удовольствия. – Mateusz Konieczny 16 April 2016 в 18:04

Рассмотрим установку моль-предохранителя.

sudo apt-get install molly-guard

Этот пакет предотвратит непреднамеренное выключение / перезагрузку / приостановку / спящий режим, интерактивно предложив вам ввести имя хоста системы.

Тем не менее, тривиально настроить molly-guard, чтобы полностью отключить shutdown / reboot / suspend / hibernate. Просто создайте исполняемый файл на /etc/molly-guard/run.d/99-prevent-all, который имеет это в нем:

#!/bin/sh
exit 1

Обратите внимание, что он защищает только от команд, выпущенных из командной строки, выключения / reboot / suspend / hibernate, выпущенный из GUI, обходит его. Чтобы заблокировать GUI с помощью перезагрузки, вы можете использовать molly-guard .

4
ответ дан 25 May 2018 в 15:23
  • 1
    Это хорошее решение для многопользовательского компьютера, где администратор должен выполнять работу и не позволяет остальным пользователям отключиться на некоторое время. – Alexis Wilke 4 January 2013 в 11:51
  • 2
    Работает с консоли, но даже с молли-охранником на месте (и устанавливается «всегда спрашивать»), то остановка продолжается, не спрашивая при ее запуске из GNOME (3.4). – Jan 13 October 2014 в 21:22
  • 3
    Да, это больше не работает ... С 13.10, может быть, 13.04. – Alexis Wilke 17 October 2014 в 08:42
ВНИМАНИЕ! Команды, перечисленные здесь, опасны для использования. Не используйте их, кроме как на свой страх и риск!
chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown
4
ответ дан 25 May 2018 в 15:23
  • 1
    Можете ли вы обосновать свой ответ? Я, конечно же, не думаю, что он хотел исключить возможности перезагрузки и закрытия. – viyyer 10 January 2012 в 09:43
  • 2
    Как можно снова включить спящий режим? – Gabriel Fair 6 February 2012 в 01:49
  • 3
    использовать "chmod + x" не "chmod -x" – LanceBaynes 6 February 2012 в 23:58
  • 4
    Внимание! Не делайте этого Эти команды символически связаны с /bin/systemctl и удаляют из него исполняемый бит. Это критический исполняемый файл, который также управляет service SERVICE_NAME [stop|start|restart]. Ваша система, вероятно, больше не загружается (если вы вообще можете ее отключить). – Daniel F 24 February 2017 в 14:42
  • 5
    Я выполнил эти команды на VPS ubuntu. Выключение VPS с хоста, завершение работы завершено. Он убил демона SSH. Сила остановилась и началась, может SSH в порядке. После перезапуска /bin/systemctl устанавливается только чтение-запись -rw-r--r-- 1 root root – kryo 14 July 2017 в 00:22

Другие вопросы по тегам:

Похожие вопросы: