Em qualquer operação que use sudo, é preciso digitar a senha de usuário. Aprenderemos agora a usar o sudo sem ter que digitar senha.
Este artigo foi revisado em 03/06/2023.
Atualmente, a forma correta de se fazer isso é criar um arquivo dentro da pasta /etc/sudoers.d/
, isso porque o arquivo /etc/sudoers
inclui uma linha que reconhece e adiciona ao sudoers os arquivos que estejam naquela pasta:
# See sudoers(5) for more information on "@include" directives: @includedir /etc/sudoers.d
Todos os usuários
A ideia é nunca alterar esse arquivo para envitar problemas. No entanto, se você quiser que TODOS os usuários do seu sistema possa usar o sudo sem senha, então não há opção, você terá que editar o arquivo /etc/sudoers
diretamente:
$ sudo visudo
Procure pelas linhas:
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Altere para:
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) NOPASSWD:ALL
Salve e saia. Nem precisa reiniciar.
Apenas um usuário específico (ou grupo)
No entanto, se você quiser que apenas um usuário possa usar sudo sem password, geralmente você mesmo, crie um arquivo com seu nome em /etc/sudoers.d/
:
$ sudo nano /etc/sudoers.d/usuario
Onde "usuario" é seu nome de usuário. No arquivo escreva:
# Permite ao "usuario" executar qualquer comando sem digitar a senha usuario ALL=(ALL:ALL) NOPASSWD:ALL
Você pode desejar opções menos "livres", já que digitar senha pra sudo é uma questão de segurança que visa evitar que outros usuários "destruam" o seu sistema. Por exemplo, pode ser útil atualizar o sistema sem ter que entrar a senha, mas ainda exigindo que, para qualquer outra coisa que precise de permissões de superusuário, a senha continue sendo necessária:
# Permite ao "usuario" atualizar o sistema sem digitar a senha usuario ALL=NOPASSWD:/usr/bin/apt-get
Para um grupo de usuários, basta adicionar o "%" na frente do nome. Por exemplo, se seu sistema possui um grupo de usuários chamado "visitantes", você colocaria:
# Permite aos "visitantes" atualizarem o sistema sem digitar a senha %visitantes ALL=NOPASSWD:/usr/bin/apt-get
Pequenos esclarecimentos
Mas o que significam todos esses "ALL"?
ALL=(ALL:ALL) | | | | | `> grupos | | | `> usuários | `> host (máquina, aquele nome depois de @ no terminal)
Traduzindo: o "usuario", em "todas as máquinas" tem permissão para executar comandos como "todos os usuários" do sistema, e como "todos os grupos".
Perceba que, no segundo caso, do apt apenas, eu omiti o (ALL:ALL)
, isso porque quem atualiza um sistema pode fazê-lo como si mesmo, não precisa logar como outro usuário.
A página de manual do sudoers (man sudoers
) descreve isso em grande detalhe. O formato geral é:
user_spec host_spec=(runas_spec) NOPASSWD:cmd_spec
- user_spec identifica quais usuários podem usar a regra.
- host_spec identifica em quais hosts as regras se aplicam. É opcional, e quando omitido o padrão é ALL.
- runas_spec identifica como quais usuários os comandos podem ser executados.
- NOPASSWD: ou PASSWD: tag que especifica se uma senha é necessária. É opcional, e quando omitido o padrão é PASSWD, a não ser que o padrão tenha sido alterado nas configurações do sudoers.
- cmd_spec identifica para quais comandos a regra pode ser executada.
É comum usar aliases para várias especificações. Cada especificação tem uma alias predefinida ALL, que é autoexplicativa ("all" = "todos" em inglês).
Nenhum comentário:
Postar um comentário