Требовать пароль sudo для завершения работы на один сеанс

Требовать пароль sudo для завершения работы на один сеанс

У меня есть компьютер с 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". Он спросит пароль, если вы хотите выключить компьютер.

Связанный контент