Configuração do sudo


O arquivo /etc/sudoers é o arquivo de configuração principal para o comando sudo. Para evitar problemas se vários administradores tentarem editar o arquivo ao mesmo tempo, você só poderá editá-lo com o comando especial visudo. O editor visudo também valida o arquivo para garantir que não haja erros de sintaxe.

Por exemplo, a linha a seguir do arquivo /etc/sudoers permite acesso sudo aos membros do grupo wheel.

%wheel        ALL=(ALL:ALL)       ALL
  • A string %wheel é o usuário ou grupo ao qual a regra se aplica. O símbolo % antes da palavra wheel especifica um grupo.

  • O comando ALL=(ALL:ALL) especifica que em qualquer host com esse arquivo (o primeiro ALL), os usuários no grupo wheel podem executar comandos como qualquer outro usuário (o segundo ALL) e qualquer outro grupo (o terceiro ALL) no sistema.

  • O comando final ALL especifica que os usuários no grupo wheel podem executar qualquer comando.

Por padrão, o arquivo /etc/sudoers também inclui o conteúdo de qualquer arquivo no diretório /etc/sudoers.d como parte do arquivo de configuração. Com essa hierarquia, você pode adicionar o acesso sudo para um usuário colocando um arquivo apropriado nesse diretório.

Nota

É conveniente colocar os arquivos de configuração no diretório /etc/sudoers.d. Você pode ativar ou desativar o acesso a sudo copiando um arquivo para o diretório ou removendo-o do diretório..

Para permitir acesso sudo total para o usuário user01, você pode criar o arquivo /etc/sudoers.d/user01 com o seguinte conteúdo:

user01        ALL=(ALL)       ALL

Para permitir acesso sudo total para o grupo group01, você pode criar o arquivo /etc/sudoers.d/group01 com o seguinte conteúdo:

%group01        ALL=(ALL)       ALL

Para permitir que os usuários no grupo games executem o comando id como o usuário operator, você pode criar o arquivo /etc/sudoers.d/games com o seguinte conteúdo:

%games ALL=(operator) /bin/id

Você também pode configurar sudo para permitir que um usuário execute comandos como outro usuário sem digitar sua senha, usando o comando NOPASSWD: ALL:

ansible        ALL=(ALL)       NOPASSWD: ALL

Embora haja riscos óbvios de segurança para a concessão desse nível de acesso a um usuário ou grupo, os administradores de sistema frequentemente usam essa abordagem com instâncias de nuvem, máquinas virtuais e sistemas de provisionamento para ajudar a configurar os servidores. Você deve proteger a conta com cuidado com esse acesso e exigir a autenticação de chave pública SSH para que um usuário em um sistema remoto possa acessá-la.

Por exemplo, o Amazon Machine Image (AMI) oficial para o Red Hat Enterprise Linux no Amazon Web Services Marketplace é fornecido com o root e as senhas dos usuários ec2-user bloqueadas. A conta ec2-user é configurada para permitir acesso remoto interativo através da autenticação de chave pública SSH. O usuário ec2-user também pode executar qualquer comando como root sem uma senha porque a última linha do arquivo /etc/sudoers do AMI é configurado da seguinte forma:

ec2-user        ALL=(ALL)       NOPASSWD: ALL

Você pode reabilitar o requisito para digitar uma senha para sudo ou introduzir outras alterações para aumentar a segurança como parte do processo de configuração do sistema.

Referências