
У меня есть компьютер с Ubuntu, который используется несколькими людьми. Он проводит много времени выключенным. Иногда я хотел бы запустить его с помощью Wake-On-Lan, подключиться через ssh и запустить задание в фоновом режиме. Я не хочу, чтобы ПК выключался во время выполнения этого задания.
Однако, поскольку есть несколько людей, которые могут использовать этот ПК, кто-то может подойти к машине, войти в систему, проверить свою электронную почту или что-то еще, а затем выключить ПК. Или же кто-то может заметить, что он включен и показывает экран входа в GDM, и решить выключить его.
Есть ли способ предотвратить это? Это не обязательно должно быть полностью невозможным: достаточно просто заставить компьютер вывести окно с вопросом «Вы действительно уверены (задания выполняются в фоновом режиме)?». Однако это должно работать как из меню Gnome после входа в систему, так и с экрана GDM.
решение1
Вы можете отключить его как для 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/
.
решение2
Для gdm, я думаю, есть способ отключить системные элементы управления, но я не знаю как. Для gnome, вы можете сделать лаунчер с командой "gksudo halt". Он спросит пароль, если вы хотите выключить компьютер.