Início
» LINUX
»
Como executar o comando sudo sem senha no Linux
Como executar o comando sudo sem senha no Linux
Você pode executar o comando sudo sem senha adicionando uma NOPASSWDregra à política sudoers. A abordagem mais segura é permitir apenas o comando administrativo exato que você precisa, em vez de desabilitar a solicitação de senha para todos os comandos sudo.
Antes de alterar qualquer coisa, lembre-se do que essa configuração faz: qualquer pessoa ou coisa que obtenha controle da sua conta conectada poderá executar o comando permitido como root sem uma etapa adicional de autenticação. O manual do sudoers documenta NOPASSWDessa configuração como a tag que remove a autenticação para os comandos correspondentes.
Por que sudo -s não é um método sudo sem senha?
A recomendação antiga de executar o comando sudo -snão configura o sudo sem senha. A -sopção inicia um shell com privilégios de administrador (sudo), mas a política do sudo ainda pode exigir autenticação prévia. Você também pode ver vários comandos sendo executados sem um novo prompt, porque o sudo normalmente armazena em cache a autenticação bem-sucedida por um curto período. Isso é diferente de uma NOPASSWDregra permanente.
Execute um comando sudo específico sem senha.
Este exemplo permite que o usuário alexreinicie o Nginx sem senha. Substitua o nome de usuário, o comando e os argumentos pelos valores correspondentes ao seu sistema.
1. Confirme seu nome de usuário e o caminho do comando.
Execute os seguintes comandos como seu usuário normal:
whoami
command -v systemctl
O segundo comando pode retornar /usr/bin/systemctl. Use o caminho que seu próprio sistema reporta. As regras do sudoers devem identificar os comandos pelo seu caminho completo.
Verifique o nome da conta e o caminho completo do comando antes de escrever a regra sudoers.
2. Crie um arquivo de configuração dedicado para o sudoers.
Em vez de editar /etc/sudoersdiretamente, use visudocom um arquivo em /etc/sudoers.d:
sudo visudo -f /etc/sudoers.d/alex-nopasswd
Normalmente, você precisará inserir sua senha nesta etapa de configuração. O comando visudo`sudo` é preferível porque verifica a sintaxe antes de aceitar as alterações. O manual do visudo no Ubuntu também observa que ele visudobloqueia o arquivo durante a edição e verifica erros de análise sintática.
visudoEm vez de editar o arquivo de política principal com um editor de texto comum, abra um arquivo sudoers separado .
3. Adicione a regra NOPASSWD mais restritiva possível.
Para o exemplo de reinicialização do Nginx, adicione:
alex ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
Esta regra permite que apenas o comando com esses argumentos seja executado como root sem autenticação. Para permitir vários comandos específicos, separe as especificações dos comandos com vírgulas.
Se você deseja deliberadamente que todos os comandos sudo de um determinado usuário ignorem a autenticação, a regra geral é:
alex ALL=(ALL:ALL) NOPASSWD: ALL
Isso é muito menos seguro e raramente é a melhor opção em uma estação de trabalho ou sistema compartilhado. Uma sessão de usuário comprometida teria acesso direto a privilégios de root irrestritos.
Uma regra específica para um comando é mais segura do que conceder permissão NOPASSWD: ALL.
4. Valide e teste a regra
Após salvar e sair do editor, verifique a política completa do sudoers:
sudo visudo -c
Não ignore esta verificação. A visudodocumentação explica que a política do sudoers é avaliada como um todo, portanto, verificar a configuração completa detecta problemas que podem envolver arquivos incluídos.
Em seguida, invalide quaisquer credenciais sudo armazenadas em cache e teste de forma não interativa:
sudo -k
sudo -n /usr/bin/systemctl restart nginx
A -nopção instrui o sudo a não solicitar senha. Se a regra corresponder, o comando será executado sem pedir senha. Se a autenticação ainda for necessária, o sudo será encerrado com um erro em vez de aguardar a entrada. Isso é sudo -nespecialmente útil para scripts que não podem ficar travados na solicitação de senha.
Valide a política, limpe as credenciais em cache e use-as sudo -npara confirmar que o comando realmente não precisa mais de uma senha.
Solução de problemas de sudo sem senha
O comando ainda solicita uma senha: confirme se o nome de usuário, o caminho do comando e os argumentos correspondem exatamente à entrada do sudoers.
O comando não é permitido: execute sudo -lpara revisar os privilégios atribuídos à sua conta.
A sugestão parece estar sendo ignorada: use um nome de arquivo simples, como alex-nopasswd. Algumas configurações do sudoers ignoram arquivos /etc/sudoers.dcujos nomes contêm um ponto ou terminam com sufixos no estilo de backup.
Você precisa desfazer a alteração: reabra o drop-in com sudo visudo -f /etc/sudoers.d/alex-nopasswd, remova ou restrinja a regra, salve e execute sudo visudo -cnovamente.
Boas práticas
Use o sudo sem senha somente quando houver uma necessidade concreta, como uma ação de serviço rigorosamente controlada ou uma tarefa de automação. Prefira um caminho de comando e argumentos exatos, evite-os NOPASSWD: ALLsempre que possível e mantenha a regra sudoers o mais restrita possível, de acordo com o que a tarefa permitir. Isso preserva a maior parte da proteção do sudo, ao mesmo tempo que remove a solicitação de senha quando ela for realmente necessária.