Nos sistemas operacionais baseados no Linux ou no UNIX (MacOS, FreeBSD etc) há tarefas administrativas, que só podem ser executadas com privilégios de superusuário (root).
O comando sudo nasceu da necessidade do sysadmin delegar algumas destas tarefas a outros usuários do sistema — sem precisar expôr a própria senha.
Usuários pertencentes ao grupo “sudo”, podem assumir privilégios superiores com o uso da própria senha — sem ter conhecimento da senha do root, portanto.
Quem usa o computador sozinho, pode fazer tudo como usuário comum. Eventualmente, pode “se investir de poderes especiais”, com o uso do sudo — e voltar à segurança de um usuário comum, logo em seguida.
Uma, dentre muitas tarefas comuns a todo usuário, por exemplo, é atualizar o sistema. O comando permite fazer isso, sem exigir que se autentique como root.
Na configuração padrão do sudo, usuários com acesso ao comando podem realizar as seguintes tarefas (entre outras):
- Acessar dispositivos restritos do hardware.
- Formatar e alterar sistemas de arquivos.
- Instalar novos aplicativos e configurar áreas sensíveis do sistema.
Como configurar o comportamento do sudo no meu sistema
O arquivo de configuração do sudo é o /etc/sudoers. Contudo, as boas práticas de segurança, recomendam sempre usar o programa visudo para alterar este arquivo:
sudo visudo
Dentro do arquivo de configuração, há uma sessão com várias linhas. Cada uma delas começa com uma entrada Defaults.
Você pode alterar o comportamento do sudo:
- editando uma destas linhas — removendo ou editando algum parâmetro ou, ainda, acrescentando um novo.
Para acrescentar, vá até o final da linha e acrescente uma vírgula seguida do novo parâmetro desejado; - adicionando uma nova linha
Defaults
, seguida da tabulação e dos parâmetros de configuração que você deseja acrescentar.
Por ser muito usado no Linux, já escrevi alguns artigos sobre o sudo (veja a lista no final deste texto). Não esqueça também de dar uma olhada nas tags visudo e sudo, para obter mais informações sobre o uso da ferramenta.
Algumas pessoas, por questão de organização, preferem ter uma linha Defaults
exclusiva para cada parâmetro de configuração.
Acompanhe as dicas, para entender melhor.
Edite corretamente o /etc/sudoers
Trata-se de uma dica de segurança.
O UNIX e o Linux são sistemas operacionais projetados para atender uma grande quantidade de demandas e usuários simultâneos.
O visudo bloqueia o acesso de outros usuários ao /etc/sudoers, enquanto você o estiver editando.
Portanto, use sempre o visudo para ajustar o sudo no seu sistema. Não edite o /etc/sudoers diretamente.
Além disso, o visudo faz uma análise do sudoers, logo depois da edição.
Se houver erros, ele avisa e permite que você volte para alterar e corrigir o arquivo.
Organize os Defaults
Como já disse, você pode adicionar vários parâmetros e valores por linha ou abrigar um único parâmetro por linha.
A escolha é sua.
A configuração, abaixo
Defaults env_reset,timestamp_timeout=5,pwfeedback
tem o mesmo efeito desta
Defaults env_reset
Defaults timestamp_timeout=5
Defaults pwfeedback
Eu gosto do segundo método de organizar os ajustes, pois ele permite adicionar um comentário (com ‘#’) ao final de cada linha.
A forma mais comum de usar a palavra-chave é assim: Defaults
. Mas em sistemas mais complexos, com um grande número de usuários, em que o sysadmin deseja delegar especificamente e com abrangência, há outras formas de uso. Veja:
- Defaults parameter, parameter_list — # os parâmetros desta configuração afetam todos os usuários autenticados no host.
- Defaults@Host_List parameter, parameter_list # afeta todos os usuários logados no especificado em
@Host_List
. - Defaults:User_List parameter, parameter_list #afeta todos os usuários especificados na lista
:User_List
. - Defaults!Cmnd_List parameter, parameter_list #afeta os comandos especificados na lista
!Cmnd_List
. - Defaults>Runas_List parameter, parameter_list #afeta comandos listados, desde que executados por um usuário específico.
Como criar um arquivo de log do sudo
Como comportamento padrão, o sudo envia o log ou relatório sobre o que ocorreu durante o seu uso para o syslog(3).
Opcionalmente, você pode criar um arquivo para receber este relatório.
Adicione a seguinte linha:
Defaults logfile="/var/log/sudo.log"
Se quiser que o seu arquivo de log contenha informações sobre o host e o ano relacionados às ações relatadas, use assim:
Defaults log_host,log_year,logfile="/var/log/sudo.log"
Para poder ver o conteúdo do seu novo arquivo de log, use o sudo e o cat:
sudo cat /var/log/sudo.log
Jun 12 15:32:09 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
PWD=/home/justincase ; USER=root ; COMMAND=/bin/ls
Jun 12 15:32:43 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
PWD=/home/justincase ; USER=root ; COMMAND=/usr/sbin/visudo
Jun 12 15:34:46 2017 : justincase : HOST=s5ultra : TTY=pts/0 ;
PWD=/home/justincase ; USER=root ; COMMAND=/bin/cat /var/log/sudo.log
Leia mais dicas e truques para usar com o sudo:
- Como personalizar a mensagem de senha errada do sudo.
- Como fazer o sudo exibir piadas (insultos) quando alguém erra a senha.
- Como fazer o sudo exibir estrelinhas ou asteriscos durante a digitação da senha.
- Como alterar o tempo máximo de cada sessão do sudo
- Como rodar múltiplos comandos usando o sudo.
- Como instalar e configurar o sudo no FreeBSD.
[blog_subscription_form]
Referências
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux_OpenStack_Platform/2/html/Getting_Started_Guide/ch02s03.html.
https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/.