
Eu tenho um computador rodando Ubuntu que é usado por várias pessoas. Ele passa muito tempo desligado. Ocasionalmente, gostaria de iniciá-lo usando Wake-On-Lan, conectar via ssh e iniciar um trabalho em segundo plano. Não quero que o PC desligue enquanto este trabalho estiver em execução.
No entanto, como existem várias pessoas que podem usar este PC, alguém pode ir até a máquina, fazer login, verificar seu e-mail ou qualquer outra coisa e desligar o PC. Alternativamente, alguém pode perceber que ele está ligado e mostrando a tela de login do GDM e decidir desligá-lo.
Tem algum jeito de prevenir que isso aconteça? Não precisa tornar isso completamente impossível: basta fazer o computador abrir uma janela dizendo "Tem certeza (os trabalhos estão sendo executados em segundo plano)?" faria perfeitamente bem. Porém, deve funcionar tanto no menu Gnome após o login quanto na tela do GDM.
Responder1
Você pode desativá-lo tanto para o GDM quanto no menu quando estiver logado.
Edite /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
e onde quer que diga
<allow_active>yes</allow_active>
mude isso para
<allow_active>auth_admin_keep</allow_active>
Então o arquivo ficará 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>
Observação:Você nãoterpara alterar as duas últimas seções(eles afetam a reinicialização), mas presumo que se você não deseja que alguém desligue o computador, também não deseja que ele o reinicie.
Para fazer isso mais rápido, você pode criar duas versões deste arquivo(um que permite que usuários normais desliguem o computador e outro que não)em algum lugar do seu diretório inicial e tenha um script que copie um deles para o arquivo
/usr/share/polkit-1/actions/
.
Responder2
Para o gdm, acho que existe uma maneira de desabilitar 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ê deseja desligar o computador.