Como desativar o desligamento / reinicialização / suspensão / hibernação?

11

Eu tenho um PC Desktop Ubuntu 10.04 LTS com o GNOME.

Como posso desabilitar totalmente as funções reboot / shutdown / suspend / hibernate no GNOME ou até mesmo com o root? Para que a raiz forneça o comando "reboot" ou "pm-suspend", ela não faz nada e a máquina continua. Como posso desativar totalmente esses "recursos" básicos?

    
por LanceBaynes 07.01.2012 / 13:56

3 respostas

12

O acesso do usuário a essas ações é controlado pelo polkit. Em particular, eles correspondem às seguintes ações:

  • org.freedesktop.consolekit.system.stop
  • org.freedesktop.consolekit.system.restart
  • org.freedesktop.upower.suspend
  • org.freedesktop.upower.hibernate

Todas essas ações são permitidas por padrão para usuários locais ativos (embora consolekit restrinja ainda mais as duas primeiras permissões para trabalhar somente quando há um único usuário logado no sistema).

Se você quiser desabilitar essas ações, crie um arquivo /etc/polkit-1/50-local.d/disable-shutdown.pkla contendo algo como:

[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no

Isso deve impedir que essas ações sejam concluídas. Mais informações sobre esses arquivos de políticas podem ser encontradas executando man pklocalauthority .

Se você está tentando restringir root , isso será apenas um pequeno inconveniente. Por definição, root é uma conta irrestrita de acordo com o tradicional sistema de controle de acesso discricionário do UNIX. Se você não pode confiar nos usuários para os quais você concedeu o root total de acesso, então você tem problemas maiores do que eles simplesmente desligando o sistema.

Note que em versões posteriores do Ubuntu alguém decidiu quebrar a compatibilidade. Como respondido em Como desabilitar o desligamento / reinicialização do lightdm em 14.04? a ação parece ter mudado para "org.freedesktop. login1 .reboot" (e semelhantes).

Por exemplo, em 14.04, adicionando as seguintes linhas como /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pkla works:

[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

Além disso, note que este método bloqueia somente os comandos reboot / etc emitidos a partir da GUI. Para bloquear os comandos reboot / etc a partir da linha de comando, pode-se usar o molly-guard - como explicado em Desativando o comando de desligamento para todos os usuários, mesmo as conseqüências raiz?

    
por James Henstridge 09.01.2012 / 02:43
4

Considere instalar o molly-guard .

sudo apt-get install molly-guard

Este pacote impedirá o desligamento / reinicialização / suspensão / hibernação não intencional, solicitando interativamente que você insira o nome do host do sistema.

No entanto, é trivial configurar o molly-guard para desativar completamente o shutdown / reboot / suspend / hibernate. Basta criar um arquivo executável em /etc/molly-guard/run.d/99-prevent-all que tenha isto:

#!/bin/sh
exit 1

Observe que ele protege apenas contra comandos emitidos a partir da linha de comando, shutdown / reboot / suspend / hibernate emitido pela GUI está ignorando-o. Para bloquear também a GUI usando a reinicialização, pode-se usar regras do polkit .

    
por Dustin Kirkland 21.11.2012 / 17:14
4
  

AVISO! Os comandos listados aqui são perigosos a serem usados. Não os use, exceto por sua conta e risco!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown
    
por LanceBaynes 08.01.2012 / 11:03

Tags