Criação do usuário para desligar
Aqui demonstro como exemplo o usuário "desliga" com a senha "123456", que é claro deve ser alterada.
(Pode-se utilizar o comando useradd afim de definir diretamente o caminho do bash e então pular a etapa 5 abaixo)
# adduser desliga
Criação do script para desligar a máquina
Este script tem por objetivo única e exclusivamente desligar a máquina. Ele pode ser salvo dentro do home do novo usuário ou outro local que o administrador julgar viável. Assim, no meu exemplo em /home/desliga/desligando.sh tenho o script:
#!/bin/bash
echo ""
echo "===> ATENCAO: DESLIGANDO O COMPUTADOR <===="
echo "Em caso de problemas contate o administrador: (xx)xxxx-xxxx"
echo ""
/sbin/shutdown -t1 -a -h now
Definição das permissões e grupo do script
O script deve ter permissão apenas de execução para usuários, evitando brechas na segurança, pois um potencial invasor pode aproveitar-se da permissão de escrita por parte deste usuário junto ao script, incrementando-o com comandos estratégicos para invasão ou coleta de informações. Assim, primeiramente altere o grupo do usuário para "desliga":
# chown root:desliga /home/desliga/desligando.sh
Em seguida atribua a permissão 750 para que apenas usuário root e grupo "desliga" consigam executar o script, além de só o root poder alterá-lo:
# chmod 750 /home/desliga/desligando.sh
Definição das permissões e grupo do shutdown
É necessário ser superusuário (id 0) para executar o comando shutdown. Desta forma precisaremos do auxílio da técnica de
suid bit, que a meu ver pode ser um ponto negativo na segurança. Porém com o auxilio de ferramentas de monitoramento o uso de suid bit é tolerável.
A ativação do suid bit permitirá a execução do shutdown por qualquer usuário como se fosse root, assim como é feito o comando passwd que nativamente tem o suid bit ativo.
Primeiro é necessário alterar o grupo do comando shutdown para o grupo "desliga". Faz-se isso através do comando:
# chgrp desliga /sbin/shutdown
Em seguida, ativa-se o suid bit:
# chmod 4754 /sbin/shutdown
Caso queira uma garantia de que os comandos funcionaram, observe se o arquivo ficará da seguinte forma:
# ls /sbin/shutdown -l
-rwsr-xr-- 1 root desliga 18572 2006-05-23 07:39 /sbin/shutdown
Facilitando a vida do usuário
Até este momento já resolvemos nosso problema, pois o usuário poderá logar-se no terminal ou remotamente e executando o script, desligar a máquina. Porém, pode-se facilitar as coisas ainda mais.
Edite o arquivo
/etc/passwd e altere o caminho do comando de shell do usuário para que o mesmo seja o script. Desta forma basta que o usuário digite o login e senha para que o script entre em funcionamento, sem liberar shell para o usuário, fechando assim a segurança no que tange a criação de usuários desnecessários e consequentemente possíveis de se utilizar para invasão.
Linha alterada no /etc/passwd:
Antes:
desliga:x:1001:1002:Usuário para desligar,,,:/home/desliga:/bin/bash
Depois:
desliga:x:1001:1002:Usuário para desligar,,,:/home/desliga:/home/desliga/desligando.sh
Obs.: Tentei informar como bash diretamente o comando shutdown, mas o sistema não reconhece as opções para execução devido ao espaço entre palavras. Isso pode ser tratado futuramente.