отключить выключение / приостановить, если есть другой пользователь, вошедший через ssh

15

Я помню, что в версиях Ubuntu около 9.04 было возможно отключить пользователя, чтобы выключить (и, возможно, тоже приостановить) систему, если в нее вошел другой пользователь. Что-то вроде policykit или аналогичного.

Можно ли это сделать в 11.04?

Благодарность

редактировать:

если кому-то нужно (на свой страх и риск), небольшое изменение в / usr / lib / pm-utils / bin / pm-action позволит пользователю приостановить работу компьютера, если он только вошел в систему или когда пользователь запустит sudo pm-suspend. Вероятно, не лучший кусок кода, но пока работает.

diff -r 805887c5c0f6 pm-action
--- a/pm-action Wed Jun 29 23:32:01 2011 +0200
+++ b/pm-action Wed Jun 29 23:37:23 2011 +0200
@@ -47,6 +47,14 @@
    exit 1
 fi

+if [ "$(id -u )" == 0 -o `w -h | cut -f 1 -d " " | sort | uniq | wc -l` -eq 1 ]; then
+                echo "either youre root or root isnt here and youre only user, continuing" 1>&2
+                else
+                echo "Not suspending, root is here or there is more users" 1>&2
+                exit 2
+                fi
+
+
 remove_suspend_lock()
 {
    release_lock "${STASHNAME}.lock"

Вопрос все еще стоит, возможно ли запретить выключение или приостановку, когда в систему вошли более одного пользователя (без переписывания pm-suspend или halt (или другого хака))?

Denwerko
источник

Ответы:

1

Обновление (спасибо энзотибу):

Файлы, которые я перечислил в исходном ответе , редактировать не следует, так как обновление пакета может перезаписать ваши изменения.

Вместо этого PolicyKit должен быть настроен с использованием конфигурационных файлов /var/lib/polkit-1/localauthority/, как описано на pklocalauthorityстранице руководства.

Оригинальный ответ:

С осуждением HAL, это теперь контролируется в /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy

Установите allow_activeв двух разделах действия, показанных ниже, no(они установлены auth_admin_keepпо умолчанию):

  <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-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>no</allow_active>
    </defaults>
  </action>
scottl
источник
1
Вы должны установить файл политики в одном из ваших /var/lib/polkit-1/localauthority/*.dкаталогов, как описано на pklocalauthorityстранице руководства. Старайтесь не изменять файлы, установленные пакетами (как /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy), кроме файлов конфигурации /etc/.
энзотиб
@scottl Можете ли вы отредактировать свой ответ, чтобы прочитать правильно? Как сейчас читается, это совершенно сбивает с толку.
Хорхе Кастро