Gostaria de desativar o shutdown
comando para todos os usuários, mesmo root, em uma instalação do Ubuntu Server.
A razão pela qual eu quero fazer isso é garantir que eu não tenha o hábito de desligar a máquina dessa maneira, pois eu SSH em muitas máquinas de produção ao mesmo tempo que esta, e eu não deseja desligar acidentalmente uma das outras máquinas digitando o comando na janela errada.
O servidor que eu quero desativar o desligamento é executado apenas dentro do VirtualBox na área de trabalho do Windows, e eu o uso apenas para testes locais, para que não seja um problema se não puder desligá-lo na linha de comando.
Eu já atenuei um pouco o problema, garantindo uma senha diferente na imagem do VirtualBox, mas, obviamente, se eu estiver dentro da sudo
'janela' de uma das máquinas de produção, eu ainda poderia desligá-lo acidentalmente.
Minhas perguntas são:
- Como desabilito o comando shutdown?
- Se eu desabilitar o comando shutdown, há alguma conseqüência que eu deva tomar conhecimento? Mais especificamente, desabilitará o suporte ao desligamento da ACPI equivalente a pressionar o botão liga / desliga em uma máquina física? Isso poderia afetar outros aplicativos genéricos?
Para obter informações, eu apenas uso essa imagem do VirtualBox para experimentar scripts de shell, executar Tomcat e Java, e esse tipo de coisa.
Respostas:
Se você geralmente executa o comando como
sudo shutdown
, em vez desudo /sbin/shutdown
, pode configurar um alias de shell global para "shutdown" para ecoar apenas uma mensagem no terminal. O executável real ainda estará lá para todos os outros fins.fonte
alias shutdown=sl
) não terá nenhum efeito nos argumentos do sudo. No zsh, você pode definir aliases que correspondem a argumentos, mas acho que não no bash. Você pode usarsudo
um alias para um script de shell que se recusa a fazer qualquer coisa se o primeiro argumento forshutdown
.Uma abordagem muito melhor para este problema é instalar o Molly-guarda programa sobre as caixas que você não quer desligar, ao invés de tentar treinar-se para não correr o desligamento.
A configuração típica é que ele solicita que você digite o nome do host da máquina para confirmar que você está realmente certo.
É possível adicionar novos scripts
/etc/molly-guard/run.d
(conforme documentado na página de manual , os arquivos de script devem seguir os nomes esperados porrun-parts
.Se você realmente deseja desativar
shutdown
(e essa é uma idéia tão bizarra), bastaentão, se você precisar usá-lo, faça o chmod de volta para 0755.
fonte
Para desativar o comando shutdown, apenas torne o binário não executável, ou seja,
sudo chmod a-x /sbin/shutdown
também não acho que ele afetará qualquer outro método de desligamento, porque, como diz a entrada manportanto, qualquer outro comando / script pode fazer isso mesmo depois de desativar o comando shutdown, por exemplo, ainda posso desligar meu sistema usando o shutdown no menu GNOME. Além disso, você ainda pode reiniciar o computador a partir da linha de comando usando o comando reboot
fonte
O
shutdown
comando está em/sbin/shutdown
. Você pode desativá-lo fazendo o seguinte:Mas : isso significa que quase nenhum dos métodos usuais de desligamento do sistema funcionará mais. Desligar o gnome na minha máquina de teste para obter esta resposta faz com que você saia do sistema e o retorne ao GDM.
Se você deseja desligar o sistema posteriormente, precisará fazer
"Desativar" o desligamento afetará todos os aplicativos que usam o comando para qualquer coisa. Como
init 0
não é a maneira recomendada de desligar um sistema, todos os programas que precisam desligar o sistema o utilizamshutdown
, o que não funcionará mais.Os aplicativos também podem gerar exceções devido ao arquivo ausente ou ao arquivo não ser executável , potencialmente causando a falha, mesmo que o desligamento não seja necessário. Este é um caso em que você pode contornar movendo algum arquivo binário, idealmente executável (não um script de shell - que não funcionará) em seu lugar. Por exemplo:
Isso ocorre depois que você removeu o original do caminho com segurança.
Agora, tudo isso é bastante hacky, e eu recomendo , pelas razões descritas no comentário de João Pinto. Mas não vou impedi-lo de fazê-lo. :-)
Não faça apenas backup de / sbin / shutdown, também tenha um plano de recuperação em vigor, caso isso cause algum problema. Não faça isso em um servidor que você não pode acessar, por exemplo. E testar seu plano de recuperação de antemão, assumindo que o sistema não inicializar em tudo (ele será inicializado, é claro - Eu testei isso - mas por favor estar no lado seguro).
fonte
Eu acho que deve ser uma outra solução, os servidores devem ter uma política ssh para desativar o desligamento e o init 0 sobre o ssh, ou deve haver uma caixa de diálogo especial exibida no console, como no Windows, para inserir a senha de desligamento "por que" e a "senha de desligamento especial" . Para isso, o botão liga / desliga deve ser protegido por senha no uso do servidor.
No momento, usamos um "interruptor físico de chave = 4Euros" em vez de um botão.
fonte
Eu você deseja desativar o
shutdown
comando.Isso ocorre porque, se alguém tentar usar esse comando com força, ele também não poderá
agora ninguém será capaz de usar o comando shutdown.
ele exibirá um comando de mensagem não encontrado, instale-o.
Adicione uma linha no último bash.bashrc
se você quiser de volta (ativado). apenas copie de volta
fonte