У меня есть компьютер под управлением Ubuntu, который используется несколькими людьми. Он тратит много времени на выключение. Иногда я хотел бы запустить его с помощью Wake-On-Lan, подключиться через ssh и запустить задание в фоновом режиме. Я не хочу, чтобы компьютер выключался во время выполнения этой работы.
Однако, поскольку есть несколько человек, которые могут использовать этот компьютер, кто-то может подойти к машине, войти в систему, проверить свою электронную почту или что-то еще, а затем выключить компьютер. Кроме того, кто-то может заметить, что он включен и показывает экран входа в систему GDM, и принять решение о его выключении.
Есть ли способ предотвратить это? Это не обязательно делает его абсолютно невозможным: просто заставляет компьютер всплывать в окне с надписью «Вы действительно уверены (задания выполняются в фоновом режиме)?» будет отлично Однако он должен работать как из меню Gnome после входа, так и с экрана GDM.
Можно отключить его и для GDM и из меню при входе в систему.
Править /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
и где когда-либо это говорит
<allow_active>yes</allow_active>
изменение это к
<allow_active>auth_admin_keep</allow_active>
Таким образом, файл будет похож на это:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<!--
Policy definitions for ConsoleKit
-->
<policyconfig>
<action id="org.freedesktop.consolekit.system.stop">
<description>Stop the system</description>
<message>System policy prevents stopping the system</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>no</allow_active>
</defaults>
</action>
<action id="org.freedesktop.consolekit.system.stop-multiple-users">
<description>Stop the system when multiple users are logged in</description>
<message>System policy prevents stopping the system when other users are logged in</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>no</allow_active>
</defaults>
</action>
<action id="org.freedesktop.consolekit.system.restart">
<description>Restart the system</description>
<message>System policy prevents restarting the system</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
<action id="org.freedesktop.consolekit.system.restart-multiple-users">
<description>Restart the system when multiple users are logged in</description>
<message>System policy prevents restarting the system when other users are logged in</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
</policyconfig>
Примечание: Вы не должны изменять последние два раздела (они влияют на перезапуск), но я принимаю, не хотите ли Вы кого-то закрывающего компьютер, Вы не хотите их перезапускающий его также.
Чтобы сделать это быстрее, Вы могли создать две версии этого файла (тот, который позволяет обычным пользователям закрывать компьютер, и тот, который не делает) где-нибудь в Вашем корневом каталоге и имеют сценарий, который копирует один из них к /usr/share/polkit-1/actions/
.
Для gdm я думаю, что есть способ отключить управление системой, но я не знаю как. Для гнома вы можете сделать лаунчер с коммандой "gksudo halt". Он спросит пароль, если вы хотите выключить компьютер.