У меня настольный ПК Ubuntu 10.04 LTS с GNOME.
Как я могу полностью отключить функции перезагрузки / выключения / приостановки / гибернации в GNOME или даже с root? Так что root выдает команду «reboot» или «pm-suspend», он ничего не делает, и машина продолжает работать. Как я могу полностью отключить эти основные «функции»?
Рассмотрите возможность установки molly-guard .
sudo apt-get install molly-guard
Этот пакет предотвратит непреднамеренное выключение / перезагрузку / приостановку / спящий режим, предлагая ввести имя хоста системы в интерактивном режиме.
Тем не менее, очень просто настроить molly-guard для полного отключения shutdown / reboot / suspend / hibernate. Просто создайте исполняемый файл в /etc/molly-guard/run.d/99-prevent-all, в котором есть это:
#!/bin/sh
exit 1
Обратите внимание, что он защищает только от команд, выданных из командной строки, shutdown / перезагрузка / приостановка / спящий режим, выпущенный от GUI, обходит это. Для блокировки также GUI с использованием перезагрузки можно использовать правила polkit .
ВНИМАНИЕ! Перечисленные здесь команды являются опасными для использования. Не используйте их, кроме как на свой страх и риск!
blockquote>chmod -x /usr/sbin/pm-suspend chmod -x /sbin/reboot chmod -x /sbin/shutdown
Доступ пользователей к этим действиям контролируется polkit. В частности, они соответствуют следующим действиям:
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.restart
org.freedesktop.upower.suspend
org.freedesktop.upower.hibernate
[ 1118] Все эти действия разрешены по умолчанию для активных локальных пользователей (хотя 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» (и тому подобное). [ 1124]
Например, в 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, выданные из GUI. Чтобы заблокировать команды перезагрузки / etc из командной строки, можно использовать molly-guard - как объяснено в Отключение команды выключения для всех пользователей, даже root - последствия?
Основываясь на ответе OP, можно сделать
for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
mv $file $file.bak && touch $file
done
Это переименовывает символьные ссылки и заменяет их пустыми файлами. Это предотвратит завершение работы командной строки, я не знаю, называют ли команды GUI его или делают их собственную вещь, таким образом, Вам, возможно, придется сделать принятый ответ также.