A intenção desta dica é ajudar a entender algumas formas de utilização do
sudo através de permissões específicas dadas aos usuários pelo
sudoers.
Passo I: Criar o arquivo onde será escrito o log do sudoers. Em meu caso, preferi criá-lo em "/var/log":
sudo touch /var/log/sudo.log
$ sudo chown root.root /var/log/sudo.log
Passo II: Entre no diretório /etc:
cd /etc
Edite o sudoers, preferencialmente, através do comando
visudo, mas pode ser usado qualquer editor limpo. Digite:
sudo visudo
Ou:
sudo gedit /etc/sudoers
Será aberto um arquivo semelhante ao que virá a seguir. Exemplo:
# /etc/sudoers
# This file MUST be edited with the 'visudo' command as root.
# See the man page for details on how to write a sudoers file.
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#includedir /etc/sudoers.d
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
Passo III: Editando o sudoers:
Abaixo, algumas mudanças de exemplo e o comentário no código para ajudar a entender.
Exemplo:
# /etc/sudoers
# This file MUST be edited with the 'visudo' command as root. See the man page for details on how to write a sudoers file.
Defaults env_reset
# User alias specification: cria apelido para usar as regras de permissões para vários usuários sem ter que repetir a regra para todos
User_alias ADM = operacao, suporte01
# Cmnd alias specification: cria um apelido para determinado que usuário possa usar um grupo de comandos.
Cmnd_Alias COMANDO = /sbin/ifconfig, /bin/df, /bin/ps
# Usuários e seus privilégios
# sintaxe: usuário - host onde o usuário tem permissão para executar o comando – (com quais usuários pode operacionalizar o comando) – quais comando pode tem permissão de usar.
#usuario root e wesley terão permissão total
root ALL=(ALL) ALL
wesley ALL=(ALL) ALL
# os usuários operação e suporte01 poderão utilizar o mount
ADM ALL=(ALL) /sbin/mount
#usuário estagiários poderão apenas desligar a máquina, mas não será necessário digitar a senha por causa NOPASSWD
estagiarios ALL=(ALL) NOPASSWD: /sbin/shutdown
# o usuário alfa poderá usar os comandos criados no Alias COMANDO
alfa ALL=(ALL) COMANDO
# Allow members of group sudo to execute any command after they have provided their password (Note that later entries override this, so you might need to move it further down)
%sudo ALL=(ALL) ALL
# Definir o arquivo de Log: a linha abaixo escreve os logs de tudo que foi utilizado com o comando sudo
Defaults logfile=/var/log/sudo.log
###FIM DO ARQUIVO
Exemplo do Log gerado
sudo more /var/log/sudo.log
Exemplo:
Jul 10 17:56:34 : wesley : TTY=pts/1 ; PWD=/var/log ; USER=root ;
COMMAND=/usr/bin/apt-get update -y
Jul 10 18:00:49 : wesley : TTY=unknown ; PWD=/home/wesley ; USER=root ;
COMMAND=/usr/sbin/synaptic --hide-main-window --non-interactive
--parent-window-id 75497511 -o Synaptic::closeZvt=true --progress-str Please
wait, this can take some time. --finish-str Update is complete
--set-selections-file /tmp/tmpgEdgGm
Jul 10 18:36:12 : wesley : TTY=unknown ; PWD=/home/wesley ; USER=root ;
COMMAND=/usr/sbin/synaptic --hide-main-window --non-interactive
--parent-window-id 75497511 --update-at-startup
Jul 10 19:34:48 : wesley : TTY=pts/1 ; PWD=/etc ; USER=root ;
COMMAND=/usr/bin/vi sudoers
Jul 10 19:35:26 : wesley : TTY=pts/1 ; PWD=/etc ; USER=root ; COMMAND=/usr/sbin/visudo
Jul 10 19:44:39 : wesley : TTY=pts/1 ; PWD=/etc ; USER=root ; COMMAND=/usr/sbin/visudo
Jul 10 20:20:51 : wesley : TTY=pts/1 ; PWD=/etc ; USER=root ; COMMAND=/usr/bin/clear
Jul 10 20:21:04 : wesley : TTY=pts/1 ; PWD=/etc ; USER=root ; COMMAND=/bin/more /var/log/sudo.log