desativar o desligamento / suspensão se houver outro usuário conectado via ssh

15

Eu lembro que nas versões do ubuntu por volta do 9.04 era possível desativar o usuário para desligar (e talvez suspender também) o sistema se houvesse outro usuário logado.

É possível fazer no 11.04?

obrigado

editar:

se alguém precisar (por risco próprio), pouca alteração em / usr / lib / pm-utils / bin / pm-action permitirá ao usuário suspender a máquina se ele for apenas um usuário logado ou quando o usuário executará o sudo pm-suspend. Provavelmente não é o melhor pedaço de código, mas por enquanto funciona.

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"

A pergunta ainda permanece: é possível proibir o desligamento ou a suspensão quando houver mais de um usuário conectado (sem reescrever pm-suspend ou halt (ou outro hack))?

Denwerko
fonte

Respostas:

1

Atualização (graças ao enzotib):

Os arquivos listados na resposta original não devem ser editados, pois uma atualização de pacote pode substituir suas alterações.

Em vez disso, o PolicyKit deve ser configurado usando os arquivos de configuração inseridos /var/lib/polkit-1/localauthority/, conforme detalhado na pklocalauthoritypágina de manual.

Resposta original:

Com a descontinuação do HAL, isso agora é controlado em /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy

Defina allow_activenas duas seções de ação mostradas abaixo como no(elas são definidas auth_admin_keeppor padrão):

  <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
fonte
1
Você deve definir seu arquivo de políticas em um de seus /var/lib/polkit-1/localauthority/*.ddiretórios, conforme explicado na pklocalauthoritypágina de manual. Evite modificar os arquivos instalados pelos pacotes (as /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy), exceto os arquivos de configuração /etc/.
enzotib
@scottl Você pode editar sua resposta para ler corretamente? Como se lê agora, é totalmente confuso.
Jorge Castro