Requer senha sudo para desligamento de uma sessão

2

Eu tenho um computador rodando Ubuntu que é usado por várias pessoas. Gasta muito tempo desligado. Na ocasião, eu gostaria de iniciar usando o Wake-On-Lan, conectar via ssh e iniciar um trabalho em segundo plano. Não quero que o PC seja desligado enquanto esse trabalho estiver em execução.

No entanto, uma vez que existem várias pessoas que podem usar este PC, alguém pode ir até a máquina, fazer o login, verificar seu e-mail ou qualquer outra coisa e, em seguida, desligar o PC. Como alternativa, alguém pode perceber que está ligado e mostrando a tela de login do GDM e decide desligá-lo.

Existe uma maneira de evitar que isso aconteça? Ele não precisa torná-lo completamente impossível: basta fazer o computador abrir uma janela dizendo "Você tem certeza (os trabalhos estão sendo executados em segundo plano)?" faria perfeitamente bem. No entanto, ele deve funcionar tanto no menu do Gnome após o login como na tela do GDM.

    
por DrAl 16.12.2010 / 11:08

2 respostas

2

Você pode desativá-lo tanto no GDM quanto no menu quando estiver logado.

Edite /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy e onde quer que esteja escrito

<allow_active>yes</allow_active>

mude isso para

<allow_active>auth_admin_keep</allow_active>

O arquivo será assim:

<?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>
  

Nota: Você não tem para alterar as últimas duas seções (elas afetam a reinicialização) , mas eu estou supondo que você não quero que alguém desligue o computador, você não quer que ele reinicie também.

Para fazer isso mais rápido, você pode criar duas versões deste arquivo (uma que permite que usuários normais desliguem o computador, e um que não o faça) em algum lugar do seu diretório pessoal e tenha um roteiro que copia um deles para /usr/share/polkit-1/actions/ .

    
por Isaiah 17.12.2010 / 02:05
0

Para o gdm, acho que existe uma maneira de desativar os controles do sistema, mas não sei como. Para o gnome, você pode fazer um launcher com o comando "gksudo halt". Ele pedirá a senha se você quiser desligar o computador.

    
por Shakipu 16.12.2010 / 12:53