O comando sudo é o que permite a um usuário normal ou ao sysadmin administrar o sistema, sem precisar autenticar como root.
Com o sudo, você executa rapidamente uma tarefa – investido de superpoderes – e volta ao prompt de seu usuário normal em seguida.
Dar acesso a este recurso, pode ser uma forma mais segura de conceder poderes administrativos a usuários normais do seu sistema — sem revelar a senha do root.
Como comportamento padrão, uma sessão do sudo dura 15 minutos. Durante este período de tempo, não é pedido qualquer senha ao usuário.
Se você acredita que este tempo é muito curto ou muito longo, é fácil alterá-lo.
No meu caso, acredito que um tempo de sessão entre 1 e 5 minutos é o suficiente para realizar a maioria das pequenas tarefas administrativas do nosso dia a dia.
Quando é necessário executar vários comandos com privilégios administrativos (e que irão demorar mais do que 5 minutos para serem executados), prefiro digitar a minha senha algumas vezes a mais — sem problemas.
Por outro lado, este post ensina a executar vários comandos, em fila, usando o sudo, sem precisar se preocupar com a expiração do tempo. Recomendo a leitura.
Como configurar o tempo de expiração da sessão do sudo
A maneira adequada de ajustar os parâmetros do sudo é através do visudo.
O visudo edita o arquivo sudoers de maneira segura — protegendo-o contra alterações simultâneas e fazendo verificação básica de erros.
Nas grandes distribuições, como Debian e no Ubuntu, o programa irá abrir, por padrão, o editor de textos Nano.
Neste caso, quando terminar a edição, use as combinações de teclas ‘Ctrl-o’ e ‘Ctrl-x’, para gravar e sair do editor.
Se, na sua distro, o editor padrão for o vi ou o vim, tecle ‘Esc’ e, em seguida, ‘:wq’ e ‘Enter’, quando terminar de alterar o sudoers.
Você pode rodar o visudo com o próprio sudo:
sudo visudo
Em seguida, localize a linha (que deve estar no começo):
Defaults env_reset
e altere-a para
Defaults env_reset,timestamp_timeout=5
Como eu já disse, prefiro que o valor da minha variável timestamp_timeout
seja menor ou igual a 5 (minutos). Você deve usar o valor que considerar mais adequado às suas necessidades.
Como evitar que a sessão do sudo expire
Se você precisa que a sua sessão fique ativa indefinidamente (ou pelo menos até você se desautenticar do sistema), use o sudo combinado com as seguintes opções:
sudo -s
[sudo] senha para justincase:
Outros usuários preferem usar o sudo para logar-se diretamente como root:
sudo su
Em qualquer um dos casos, quando terminar, use ‘exit’ para sair:
root@inspiration:/home/justincase# exit
exit
Se você precisa executar uma sequencia de comandos e não deseja ter que ficar voltando para digitar a senha, siga esta dica.
Como tornar o sudo mais seguro
Há alguns riscos em potencial, a considerar, quando estiver usando o comando sudo.
Podem ser evitados com algumas configurações no sudoers.
Como padrão, o sudo manterá sua senha por 5 minutos.
Dentro desta janela de tempo, caso você se ausente fisicamente da máquina, alguém pode adquirir o controle dela usando o sudo.
Para isto, bastaria abrir uma nova shell, ainda antes de expirar a validade da sessão aberta:
sudo /bin/bash
Reduzir o tempo de cada sessão é uma medida eficaz. Mas é mais seguro ajustar o sudo para expirar logo após o comando dado. Desta forma, o usuário será obrigado a fornecer sua senha a cada comando administrativo.
Para isto, basta reduzir a zero o tempo de espera do timestamp:
Defaults timestamp_timeout=0
Desta forma, você se mantém do lado mais seguro.