Impedir que o PC seja desligado no botão Liga / Desliga

9

Estou construindo um PC e um ARM BeagleBords incorporado para uso público. Eles executam o Ubuntu 13.04 e o Linux montado manualmente, respectivamente. Existe uma maneira de impedir que eles sejam desligados pressionando o botão Shutdown (no caso, não no teclado)? Claro, eu posso fazer isso em hardware. Eu apenas prefiro soluções de software. Se alguém puder dizer com certeza "isso é impossível", também seria uma resposta útil.

Resultado: Ok, eu entendi. Pode-se impedir o desligamento por pressão, mas não por pressão longa. Terei que fazer a troca do hardware para desligar o botão Liga / Desliga quando necessário.

Barafu Albino
fonte
Você precisa impedir o pressionamento deliberado ou acidental das teclas? Observe que geralmente existem outras maneiras de reiniciar / desligar um sistema, incluindo o Magic SysReq (pode ser desativado) e alternar para o TTY e, em seguida, reinicie com Ctrl-Alt-Delete.
Lekensteyn
user173876 mencionou algo (em uma resposta não respondida que excluímos ) que pode merecer consideração: várias vezes encontrei situações (no meu caso durante uma operação do GIMP) quando todos os ativadores de tela E o teclado ficaram sem resposta, incluindo Ctl-Alt- T, Alt-F1 ... F6, Ctl-Alt-Del, Ctl-Alt-BkSp e o único recurso era usar o botão liga / desliga para desligar / reiniciar. A remoção dessa capacidade pode causar a necessidade de remover a bateria e / ou puxar o cabo de alimentação. Ou esmagando-o com um martelo.
Eliah Kagan

Respostas:

3

Você pode usar o próximo comando no terminal :

sudo chmod -x /sbin/shutdown

Se você quiser reativar, utilize +xvez -xno mesmo comando.

De qualquer forma, mantendo o botão liga / desliga pressionado por alguns segundos, a solução acima não funcionará e eu não acho que você encontrará uma solução de software para este caso.

Radu Rădeanu
fonte
Você deve usar o dpkg-statoverride para manter as permissões persistentes por meio de uma upstartatualização. Exemplo: sudo dpkg-statoverride --add root root 0644 /sbin/shutdown. Deve-se observar, porém, que a remoção das permissões de execução interrompe a opção de desligamento para todos os usuários deste programa (incluindo poweroffe halt).
21713 Lekensteyn
3

É impossível. Você precisa manter o público longe do interruptor de energia, assim como impedir que ele puxe o cabo de força da parede ou pegue a máquina inteira e saia com ela.

psusi
fonte
Não estou convencido de que seja impossível. O software é responsável por iniciar o desligamento. Como sua área de trabalho teria a chance de mostrar o menu de desligamento ou encerrar programas com facilidade?
21413 Lekensteyn
@Lekensteyn, não é quando você pressiona o botão por 4 segundos.
Pssi
Cinco segundos, não é? Na verdade, é um comutador que não pode ser substituído, mas pressionando (... e solte-o imediatamente) o botão de desligamento é manipulado pela ACPI, o que significa que pode ser interceptado e ignorado. Você está correto, porém, é provável que o OP esteja considerando tentativas deliberadas de desligar o sistema.
21713 Lekensteyn
2

Você precisa alterar ...

/etc/acpi/powerbtn.sh

e comente esta linha (eu já adicionei o #) ...

#/sbin/shutdown -h now "Power button pressed"
  • Isso afeta apenas o botão liga / desliga e não o desligamento do menu.
  • Mas observe também o bug 1124149 que afirma que, devido a uma mudança de / usr / bin / qdbus para / usr / lib / i386-linux-gnu / qt4 / bin / qdbus, talvez nem sempre funcione (o bug também afeta o Ubuntu).
Rinzwind
fonte
Esta solução não tem nenhum efeito no meu sistema.
Radu Rădeanu 15/07/2013
Esse será o bug @ RaduRădeanu :) Ele funciona às 12h10 no trabalho; e também não na minha máquina em casa (que tem 13.04). Portanto, por enquanto, use o método de Radu, mas isso provavelmente também afeta outros botões do teclado.
Rinzwind
Isso não vai parar segurando o botão de energia por 4 segundos;)
psusi