Comando sudo - instalação e configuração [Artigo]
O sudo permite um usuário em particular execute vários comandos
como super usuário sem que possua sua senha, ou seja sem a senha do
root.
Há uma descrição completa do pacote em:
Primeiramente devemos instalar o sudo para poder configurá-lo. Têm-se três possÃveis maneira de instalar o sudo, pelos: fonte, binários e instaladores. Dependências: A instalação do sudo depende de outros módulos e bibliotecas que deverão ser instaladas anteriormente:
Instalação através de pacote fonte: O fonte do sudo pode ser obtido na URL abaixo. No pacote há os seguintes arquivos: Sudo-0.21/, Sudo-0.21/Changes, Sudo-0.21/lib/, Sudo-0.21/lib/Sudo.pm, Sudo-0.21/Makefile.PL, Sudo-0.21/MANIFEST, Sudo-0.21/README, Sudo-0.21/t/, Sudo-0.21/t/Sudo.t. Como superusuário execute os passos seguintes: passo 1: baixar o pacote # wget http://search.cpan.org/CPAN/authors/id/L/LA/LANDMAN/Sudo-0.21.tar.gz passo 2: desempacotar # tar -xvzf Sudo-0.21.tar.gz -C /tmp passo 3: compilar # perl Makefile.PL # make # make test passo 4: instalar # make install Instalação através de pacote binário: Localize o binário referente a distro (FC6,Debian, ubuntu, slack, e outras) e plataforma (i386, amd64 e outras) utilizada. Fedora: # rpm -Uvh sudo-1.6.8p12-10.i386.rpm Debian: # dpkg -i sudo_1.6.8p7-1.4_i386.deb Instalação através dos instaladores ou utilitários: Dentre os diversos instaladores, que sua função principal é calcular as dependências automaticamente, temos synaptic (fedora, mandriva, debian), aptitude (debian, ubuntu), yast (suse), apt (fedora, debian, e outros), yum (fedora). Existem inúmeras particularidades, iremos demonstrar os mais comuns. APT: # apt-get install sudo YUM: # yum install sudo |
O arquivo de configuração do sudo é o /etc/sudoers, onde se encontra as permissões e usuários que poderam executar algum comando.
Geralmente, em algumas distros, este arquivo é protegido conta edição, existindo um comando exclusivo para manipulação, o comando visudo. O qual deve-se utilizar para edição do sudo. Com o comando sudo pode-se delegar autoridade para execução de comandos ou coleção de comandos exclusivos a um usuário especifico ou a um grupo de usuários. OBS: O arquivo de configuração /etc/sudoers deve ser editado unicamente pelo comando *'visudo'.* Com o sudo o administrador pode especificar que um determinado usuário só poderá executar um comando com status administrativo de um host especÃfico. Host Aliases: Pode definir alias para grupos de máquinas ou para host especÃfico. Exemplos: |
Host_Alias FILESERVERS = fs1, fs2 # com dns local
Host_Alias MAILSERVERS = 10.0.0.1, 10.1.1.1
Host_Alias SERVERS = 10.0.0.2, dns, firewall, dhcp, www
|
User Aliases: Pode definir alias para grupos de usuários ou para um usuário especÃfico. Inclusive com informações oriundas de LDAP, NIS, AD e arquivos de configuração do Linux. Exemplos: |
User_Alias ADM = %groupname %administradores User_Alias ADMINS = ricardobn, ricardo.brito User_Alias WEBMASTERS = pedro, rodrigo, eliana |
Command Aliases: Pode definir alias para grupos de comandos ou para um comando especÃfico. |
Cmnd_Alias DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\ /usr/sbin/restore, /usr/sbin/rrestore Cmnd_Alias KILL = /usr/bin/kill Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown Cmnd_Alias HALT = /usr/sbin/halt Cmnd_Alias REBOOT = /usr/sbin/reboot Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \ /usr/local/bin/tcsh, /usr/bin/rsh, \ /usr/local/bin/zsh Cmnd_Alias SU = /usr/bin/su |
Subgrupo para administração de rede: |
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool |
Subgrupo para Instalação e gerenciamento de software: |
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum |
Subgrupo para administração de serviços: |
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig |
Subgrupo para administração de atualização da base de dados local: |
Cmnd_Alias LOCATE = /usr/sbin/updatedb |
Subgrupo para administração dos dispositivos de bloco: |
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount |
Subgrupo para administração para Delegação de permissões: |
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp |
Subgrupo para administração de Processos: |
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall |
Subgrupo para administração de Drivers: |
Cmnd_Alias DRIVERS = /sbin/modprobe |
Delegação de autoridade:
É aconselhável desabilitar o *"ssh hostname sudo <cmd>"*, porque
executando o ssh desta maneira será apresentado a senha em claro. Em vez
disto execute *"ssh -t hostname sudo <cmd>"*
Esta é a parte principal, que habilita o que o usuário pode executar e em que máquina. O arquivo /etc/sudoers pode ser compartilhado entre múltiplos sistemas para que se tenha efeito. Sintaxe: user MACHINE=COMMANDS Seção de Comandos: Permite ao usuário root executar qualquer comando de qualquer lugar; root ALL=(ALL) ALL Permite aos membros do grupo 'sys' executarem todos os comandos especificados neste alias: %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS Permite aos membros do grupos wheel executarem todos os comandos: %wheel ALL=(ALL) ALL Permite aos membros do grupos wheel executarem todos os comandos sem a necessidade de senhas: %wheel ALL=(ALL) NOPASSWD: ALL Permite a todos os membros do grupo 'users' executarem os comandos mount e umount sobre o cdrom como superusuário: %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom Permite a todos os membros do grupo 'users' executar o comando 'shutdown': %users localhost=/sbin/shutdown -h now Permite a todos os usuários listados no alias 'ADMINS' executem comandos como superusuários sem a necessidade de senhas. ADMINS ALL=(ALL) NOPASSWD: ALL Permite as usuários listados no alias 'ADM' executarem os comandos listados em 'STORAGE' nos host de 'FILESERVERS' sem a necessidade de senhas: ADM FILESERVERS=NOPASSWD: STORAGE Permite ao usuário 'ricardo.brito' executar os comandos kill e iptables na máquina 10.1.1.1, entretanto o comando iptables ele pode executar sem senha: ricardo.brito 10.1.1.1 = NOPASSWD:/bin/iptables , PASSWD: /bin/kill Permite ao usuário 'ricardo.brito' executar o comando 'passwd' para modificar a senha dos usuários nos servidores de email 'MAILSERVERS', exceto a senha do root: ricardo.brito MAILSERVERS = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root ProÃbe ao usuário 'john' executar o comando 'su -', 'su - root' ou 'su root' na máquina 'penta': john penta = /usr/bin/su [!-]*, !/usr/bin/su *root* Para qualquer máquina no Host_Alias SERVERS o usuário jill pode executar qualquer comando do diretórios /usr/bin/ exceto os comandos descritos nos Cmnd_Aliases 'SU' e 'SHELLS': jill SERVERS = /usr/bin/, !SU, !SHELLS No host www, qualquer usuário do User_Alias WEBMASTERS, pode qualquer comando como usuário (www) ou apenas o 'su www'. WEBMASTERS www = (www) ALL, (root) /usr/bin/su www Os usuários do grupo de rede secretaries podem gerenciar as impressoras bem como adicionar e remover usuários em todos os hosts. +secretaries ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser O usuário 'jen' pode executar qualquer comando, exceto nos servidores do Host_Alias SERVERS: jen ALL, !SERVERS = ALL # O usuários do grupo 'users' podem executar os comandos 'STORAGE' nos hosts 'FILESERVERS': %users FILESERVERS=STORAGE |
Para que se tenha um bom resultado o diretório dos executáveis devem
estar disponÃveis no PATH, para os usuários que poderam executar os
comando somente de root, os securetty. Geralmente são todos os
diretórios que começam com 's'
(/usr/kerberos/sbin:/usr/local/sbin:/sbin:
/usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin).
Se não for configurado o path, tem a necessidade de digitar o caminho absoluto do comando para conseguir executá-lo. ex: /sbin/iptables -L A configuração volátil é perdida sempre que o usuário finaliza a seção, desliga a máquina ou algo parecido. Em um terminal execute: # PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin:\ /usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin Para configurar de maneira permanente, deve editar o arquivo '~/.bash_profile' para adicionar os diretórios no PATH como exemplo abaixo, a linha sublinhada, esta modificação é realizada para cada usuário que terá acesso aos comandos de root, indicada se forem poucos usuários. |
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs _PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin_ PATH=$PATH:$HOME/bin export PATH |
Esta solução não é indicada para poucos usuários, e para máquinas que não são servidores*, pois dos os comandos de root ficaram disponÃveis para todos os usuários do sistema, embora quem não tenha permissão de execução não possa fazer muita coisa não é aconselhável devido a prováveis bugs de alguns pacotes, que poderão ser acidentalmente executados. Em um terminal execute: # echo 'PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin:\ /usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin' >> /etc/profile Para se ter mais segurança do que se esta fazendo você pode usar o seu editor de texto predileto (vim, vi, nano, etc), e adicionar 'PATH=$PATH:/usr/kerberos/sbin:/usr/local/sbin:/sbin: /usr/sbin/usr/kerberos/sbin:/usr/local/sbin:/sbin:/usr/sbin' este trecho na última linha. Ponto!
|
Nenhum comentário:
Postar um comentário