Esta dica tem como objetivo auxiliar usuários que necessitam de uma configuração mais ajustada do comando sudo. As configurações aqui servem tanto para usuários iniciantes como também para os mais avançados.
O comando sudo, como o leitor deve saber, serve para dar privilégios de outros usuários. Normalmente ele é usado para obter privilégios do super usuário ou o usuário root.
Todos os procedimentos foram testados no Debian, mas acredito que esta dica é válida para qualquer distribuição, desde que tenha o sudo instalado no sistema.
O arquivo de configuração do sudo é o
/etc/sudoers. Primeiramente, para podermos editar este arquivo, devemos dar permissão de leitura e escrita com o comando chmod.
# chmod 640 /etc/sudoers
# ls -l /etc/sudoers
-rw-r----- 1 root root 698 Fev 3 16:39 /etc/sudoers
Pronto. Assim temos permissão para editar o arquivo. Abra o arquivo com seu editor favorito e vamos lá!
DICA: Para uma melhor organização, procure no arquivo o local correto para o texto.
Vamos adicionar um usuário para executar os comandos com super-poderes, por exemplo:
Genérico:
User_Alias XXX = usuário1, usuário2, usuárioN
No meu caso:
User_Alias USER = guizzitus
Agora vamos adicionar um comando ou programa, para exemplo vou usar o comando halt, que serve para desligar o computador e o comando locate, que serve para pesquisar arquivos no sistema.
Genérico:
Cmnd_Alias YYY = /caminho/comando1, /caminho/comando2, /caminho/comandoN
Em nosso caso:
Cmnd_Alias HALT = /sbin/halt
Cmnd_Alias LOCATE = /usr/bin/locate
DICA: É necessário o caminho completo do comando. Para saber sua localização, digite num terminal:
# type comando1
Para completar a configuração:
Genérico: (lembre das configurações feitas)
XXX ALL=YYY
ALL é equivalente a todos os hosts. Uma configuração mais ajustada pode ser feita assim:
XXX host1=YYY
Em nosso caso:
USER ALL=NOPASSWD: HALT
USER ALL=LOCATE
É possível também definir no arquivo
/etc/group os usuários que pertencem ao grupo sudo. Assim podemos fazer uma configuração usando nomes de grupos, por exemplo:
%sudo ALL=NOPASSWD: HALT, LOCATE
Para que este método funcione é necessário adicionar a seguinte linha ao arquivo /etc/group:
sudo:x:27:usuário1:usuario2:usuárioN
Observe que é possível definir senha, assim quando fomos executar algum comando com o sudo vai ser pedido, ou não, a senha do usuário.
Obs.: cuidado ao permitir que qualquer usuário possa executar comandos sem a confirmação da senha.
Para finalizar devemos tirar a permissão de escrita do arquivo e adicionar a variável PATH do usuário a localização dos comandos.
Execute num terminal:
# chmod 440 /etc/sudoers
# ls -l /etc/sudoers
-r--r----- 1 root root 698 Fev 3 16:39 /etc/sudoers
Para ajustar a variável PATH com o diretório /sbin:
# echo PATH=PATH=`echo $PATH`:/sbin >> .bashrc
ou:
# export PATH=$PATH:/sbin
Tudo pronto. Para testar execute num shell:
sudo halt (hahahaha Brincadeira hein... =])
Para testar, vamos pesquisar um arquivo usando o comando locate:
sudo locate fstab
Se você configurou tudo certinho, vai ser pedido a senha do usuário e vai ser mostrado onde foram encontrados arquivos com nome fstab.
Espero ter contribuído com a comunidade com esta simples dica. Vou ficar feliz em responder qualquer dúvida e criticas são bem vindas também!
Um abraço a todos.