|
Facilidades do sudo na administracao do sistema
Autor: AAA (Anderson Alves de Albuquerque)
E-Mail: a.alves@montreal.com.br
Coluna: BSD
1. Introdução:
Através deste pequeno artigo tentarei mostrar as vantagens e facilidades de se utilizar o software sudo. Existem outros que podem ser usados para realizar as mesmas tarefas, estes serão descritos abaixo.
O sudo permite que um grupo de sysadmin efetue comandos pré-determinados pelo root sem a necessidade de acesso completo de root. O sudo facilita muito auditoria dos comandos executados por cada sysadmin indevidualmente.
Lista de algumas vantagens do sudo:
- Limitar acesso de root;
- Não necessita que todos os sysadmins tenham acesso a senha de root;
- Controlar os comandos usados pelos sysadmin (auditar);
- Possibilidade de criação de users para trabalhos específicos, como: user de backup, user de contas e etc... .
2. Onde encontrar o software:
Informações oficiais: http://www.courtesan.com/sudo/
Download FTP:
ftp://ftp.courtesan.com/pub/sudo/
O sudo também é encontrado por default em distribuições *BSD, mas sempre é recomendado instalar a última versão.
2.1. Outros softwares existentes:
3. Instalação e configuração
3.1. Instalação:
Este software foi testado em um S.O. Freebsd e a versão do sudo testada e a 1.6.3p6 .
|
$ tar -xvzf sudo-1.6.3p6.tar.gz
$ ./configure
$ make
$ make install |
Arquivos instalados:
/usr/local/bin/sudo
/usr/local/etc/sudoers
/usr/local/sbin/visudo
|
(perm 4111)
(perm 440)
(perm 111)
|
3.2. Máscaras usadas no arquivo de configuração:
O arquivo de configuração /usr/local/etc/sudoers possui algumas máscaras que serao apresentadas abaixo.
|
Máscara |
Significado |
|
% |
Palavra iniciada com este caracter se refere a um grupo de usuários do unix/linux. |
|
* |
Ex: ls /etc/p* (Todo o comando iniciado com < ls /etc/p > e válido). |
|
? |
Ex: ls /etc/p? (Todo o comando iniciado com < ls /etc/p > mais um caracter e válido). |
|
[... - ...] |
Delimita intervalo. |
|
![... - ... ] |
Delimita exclusão de um intervalo. |
|
: |
Palavra iniciada com este caracter se refere a um usuário do unix/linux. |
3.3. Arquivo de configuração /usr/local/etc/sudoers :
Este arquivo de configuração descreve quais os comandos e quais que cada user (sysadmin) pode executar, e com qual uid cada user executará esse comando. Por isso a configuração deste deve ser bem planejada, abaixo colocaremos alguns exemplos simples.
Exemplo1:
anderson 192.168.100.1=(root) /bin/ls , /bin/pwd
user ip
id
comandos
Exemplo2:
anderson ALL = /bin/ls , /bin/passwd, !/bin/passwd *root*
user
ip
comando executado como root
Exemplo3:
anderson 192.168.100.1 = NOPASSWD: /bin/reboot , /bin/halt
user
ip
nao requer password
comandos
(O user anderson pode executar os comandos listados sem a requisicao da sua senha)
Exemplo4:
aaa ALL = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root
(Permite o user aaa mudar a senha de qualquer user cujo o login esteja no intervalo de A a Z exceto o root).
Nestes exemplos iniciais é importante a dicisão de incluir o ip de onde o user (sysadmin) executará o comando em vez de ALL. Com a adição do ip em vez de ALL podemos evitar a execução de comandos remotos (R*), apesar que a maioria não utiliza mais isso porém é sempre bom evitar transtornos e surpresas.
Exemplo5:
aaa
ALL =
/bin/passwd ?* , !/bin/passwd *root*
user ip
comando permitido
comando nao permitido
(O user aaa pode mudar a senha de todos os users exceto a do root, desde que este user tenha pelo menos um caracter válido)
Exemplo6:
anderson 192.168.168.1 = (webmaster) vi /www/index.html
user
ip
uid que executara o comando
comando usado
Neste caso basta o user anderson executar:
|
$ /usr/su/bin/sudo vi webmaster vi /www/index.html |
(Permite o user anderson executar o comando vi /www/index.html com os poderes do user webmaster).
Exemplo7:
Defaults@ALL log_year, logfile=/var/adm/sudolog
(Concentrando os logs /var/adm/sudolog)
Defaults:anderson log_year, logfile=/var/adm/anderson.sudolog
(Permite desviar os logs do user anderson para o arquivo /var/adm/anderson.sudolog )
Defaults@ALL mailto=root,admin,webmaster
(Envia emails de notificações para root,admin,webmaster)
Também podemos usar o visudo em /usr/local/sbin/ para edição do arquivo de configuração, este binário tem função parecida com o vipw do freebsd. Ele automaticamente verifica se a sintaxe esta correta ou não, em caso de erro de sintaxe ele automaticamente avisa ao root se deseja gravar ou não o arquivo /usr/local/etc/sudoers. Ao usar o visudo o sudo e locado em /etc/sudoers.tmp ou em /usr/local/etc/sudoers.tmp , impedindo edições conflitantes.
Para obter mais informações: man sudoers
3.4. Uso do sudo:
Apos a configuração em /usr/local/etc/sudoers basta executar o sudo com as seguintes sintaxe:
$ sudo
$ sudo -u
$ sudo -l
Password: *******
User anderson may run the following commands on this host:
(root) /bin/adduser
(webmast) vi /www/index.html
(aaa) /bin/pwd
(Lista as possibilidades de comandos que o user pode afetuar atraves do sudo)
Para obter mais informações: man sudo
3.5. Exemplos de logs do sudo:
Por default os logs são registrados em /var/log/messages, podendo ser modificados conforme o exemplo7 do item 3.3 .
- Exemplo de comando bem sucedido:
Feb 2 11:03:00 server /usr/bin/sudo: anderson : TTY=ttyp1 ; PWD=/usr/home/anderson ; USER=root ; COMMAND=/usr/bin/add
Feb 2 11:03:03 server /usr/bin/sudo: anderson : TTY=ttyp1 ; PWD=/usr/home/anderson ; USER=root ; COMMAND=/usr/bin/adduser
- Exemplo de user que executa comando não permitido, mas esta liberado a usar algum comando com sudo:
Feb 2 11:05:17 server /usr/bin/sudo: anderson : command not allowed ; TTY=ttyp1 ; PWD=/etc ; USER=root ; COMMAND=/bin/passwd
Out no display:
|
$ /usr/bin/sudo /usr/su/ls
Sorry, user anderson is not allowed to execute ' /bin/passwd' as root on server. |
- Exemplo de user que não e permitido usar o sudo:
Feb 2 11:07:38 server /usr/bin/sudo: anderson : user NOT in sudoers ; TTY=ttyp1 ; PWD=/usr/home/anderson ; USER=root ; COMMAND=/bin/ls
Out no display:
|
bash$ /usr/su/bin/sudo /bin/ls
anderson is not in the sudoers file. This incident will be reported. |
- Exemplo de password incorreto:
Feb 2 12:19:53 server /usr/bin/sudo: anderson : 1 incorrect password attempt ; TTY=ttyp1 ; PWD=/etc ; USER=root ; COMMAND=/bin/ls
4. Bibliografia:
Site oficial:
http://www.courtesan.com/sudo/
Freebsd: http://www.freebsd.org
Espero que este artigo ajude a outras pessoas, qualquer dúvida ou sugestão mailme ....
|