Aula #1 - Configurando o Sudo

Configurando o sistema para usar o sudo



E muito perigoso usar o shell como root, e apenas em casos raros isso é necessário.  Erros podem ser fatais.


O comando sudo permite a usuários comuns obter privilégios de outro usuário, geralmente do root, para executar tarefas específicas dentro do sistema de maneira segura e controlável pelo administrador.
 O nome é uma forma abreviada de se referir a super user do (fazer como super usuário).



Normalmente configurações importantes são feitas com privilégios do super usuário (root) através do sudo. Outra vantagem e que o usuário só precisa saber a sua própria senha e não a senha do root.

Se você esta usando uma distribuição como Ubuntu você provavelmente não precisa fazer muita coisa, na instalação ele já é aplicado e configurado. Já em outras distros, você precisa instalar o pacote e configurar posteriormente os usuários e grupos.

Para saber se o seu sistema funciona com o sudo, tente rodar um comando simples como:

$ sudo ls

Você deve ter que digitar a sua senha e o comando deve executar.  
Mas se a execução falhar, você terá que instalar.

Mude para o shell do root com o comando:

su

E em seguida digite a senha do root. 
Em distribuições Linux recentes você pode simplesmente criar um arquivo na pasta /etc/sudoers.d.
O normal e que o nome do arquivo seja o nome do usuário, mas o nome do arquivo não e importante para o sudo, já que todos os arquivos serão lidos. 



Dependendo do seu ambiente, no geral o sudo é aplicado da seguinte forma:

  • São criados arquivos com nomes dos usuários, para que possa ser feito os controles e regras de cada um;
  • Pode-se criar arquivos para controlar grupos de usuários;
  • Pode-se criar apenas 1 arquivo e fazer tudo nele (caso seja um teste, um desktop com poucos usuários, ambientes pequenos,...);
  • Por fim dentro de ambientes de grande empresa, é sempre melhor manter uma configuração específica baseada em aplicações, além de configurações locais, por exemplo, se você quiser incluir o mesmo conjunto de diretrizes para o gerenciamento de Apache e MySQL, você pode quebrar isso arquivos separados, criando um arquivo chamado 'sudo.webservice'.


Linux e sudo: Como ser educado ao dizer "não, você não pode amiguinho". O user "teste" continuará sem permissões kkkk


 Editando o arquivo sudoers

 O arquivo deve conter:
usuario1 ALL=(ALL) ALL

para a conta de usuário (criativamente) chamado de 'usuario1'.


A forma anterior de fazer o mesmo, que ainda é valida, e através do comando 'visudo' que edita o conteúdo do arquivo /etc/sudoers.

Para editar, deve estar logado como root e utilize o comando 'visudo' para editar (questão de certificação hein! nada de 'vim /etc/sudoers' que, sim, irá funcionar, mas não é o correto).

O 'visudo' verifica  as  suas  alterações  e  te informa se existem problemas de sintaxe, o que não acontece se o arquivo for editado diretamente com o vi/vim, joe, nano, etc...

Não se esqueça de alterar as permissoes do arquivo. 

O comando para definir a permissão correta do arquivo criado é:

$ chmod 440 /etc/sudoers.d/*

(Algumas distribuições Linux podem exigir permissão 400 ao invés de 440.)

Depois de fazer estes passos, saia do shell do root digitando exit e tente rodar o 'sudo ls' novamente.





 Configurações do sudo

Existem varias outras formas que um administrador pode configurar o sudo, como por exemplo limitar o que usuários específicos podem executar.  

Sugiro que você veja o conteudo do arquivo /etc/sudoers que e bem documentado.

No entanto existe uma configuração que e recomendada, mesmo se o seu sistema já venha com o sudo configurado.  


Algumas práticas a serem consideradas no uso/configuração do sudo:
  • Não dê acesso ilimitado aos usuários com sudo. Se você sabe o que o usuário vai fazer e/ou precisa, para que colocar um "ALL", liberando tudo sem senha?
Você pode liberar no arquivo, os comandos que o usuário terá permissão para executar...

Por exemplo, o usuário (chamado usuario1) quer fazer uma instalação usando o apt-get (Debian) ou rpm (RedHat), pode-se liberar a execução como root pelo sudo apenas destes binários. 

A linha abaixo permite ele executar o apt-get e rpm sem solicitar sua senha, mas para demais comandos a senha dele deverá ser informada.

usuario1 ALL =(ALL) PASSWD: /usr/bin/apt-get, /bin/rpm

Outro exemplo de configuração é quando damos acesso ao path onde está determinados binários/executáveis para o usuário, no exemplo abaixo não será solicitado a senha do usuário para os binários dentro de /sbin e /usr/sbin, e também pela execução do producao.py dentro de /opt/sistema/:

usuario1 ALL=(ALL) PASSWD: /sbin/, /usr/sbin, /opt/sistema/producao.py
 


  • Você pode configurar o sudo para solicitar a senha do usuário todas as vezes:
usuario1 ALL=(ALL) PASSWD:ALL


Como também pode fazer para o sudo não pedir senha quando o usuário usar o comando sudo (este não é uma boa prática, muito menos recomendado que se faça isto):
usuario1 ALL=(ALL) NOPASSWD: ALL
 


  • Permissões para grupo de usuários:
%desenv ALL = (ALL) ALL
Isso permitirá que as pessoas no grupo 'desenv' executem todos os comandos.

  • Definir um limite de tempo para 'confiar' na senha inserida:
O sudo usa um recurso de timestamp para saber quando foi o último comando sudo executado pelo usuário.
Durante este período de tempo, o usuário pode re-executar o comando sem ter a senha solicitada novamente. Por padrão sudo se lembra de sua senha por 15 minutos. 


Uma vez que está expirado, será solicitado a senha novamente para re-executar o comando.
Se você desejar alterar o valor padrão, basta colocar uma entrada no arquivo sudoers para definir o valor de tempo limite para todos os usuários e em todos os comandos.

Por exemplo, para alterar o valor para 10 minutos, insira:

Defaults timestamp_timeout=10

Se você especificar 0 (zero), sempre será solicitado a senha. Se você especificar um valor negativo, o tempo limite nunca expirará.


Se você precisa configurar para um usuário específico, basta inserir o nome do usuário em seguida:

Defaults: eslih timestamp_timeout = 30

Neste caso, o tempo para o usuário 'eslih' será de 30 minutos. Obviamente, este recurso não funcionará se tiver colocado NOPASSWD na entrada do usuário no arquivo sudoers.




  • Bloqueie o caminho para binários usando a diretiva secure_path em sudo:
Uma boa prática é bloquear usuários para áreas específicas, garantindo assim que os usuários não podem executar comandos fora do secure_path. Utilize a seguinte diretiva no sudoers, especificando o secure_path:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

  • Log cada atividade sudo para um arquivo separado
Por padrão, os logs do comando sudo vão para um arquivo de log apenas, juntamente com outras mensagens do sistema. Isto não é interessante para servidores com muitos acessos ou até mesmo maquinas com vários usuários (mesmo que não estejam em ambientes de missão critica). Para isto basta adicionar a linha abaixo, indicando onde deverá ser o arquivo de log:

Defaults logfile=/var/log/sudo.log





Mais vistos no mês:

As melhores distribuições Linux para 2017

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

Teste de Performance de Rede com Iperf

DHCP - Guia Completo

OPNsense - Firewall Open Source

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

Ophcrack: Descubra todas as senhas do Windows

SSD no linux

Oracle Linux 7.0 Server com Xfce - Instalação e configurações iniciais