Como configurar o `sudo` sem senha no Linux?

156

Como o sudoacesso sem senha pode ser configurado nas distribuições RHEL (Fedora, CentOS, etc) ou Ubuntu? (Se é o mesmo nas distribuições, é ainda melhor!)

Configuração: equipamento pessoal e / ou de laboratório / treinamento sem preocupação com acesso não autorizado (ou seja, os dispositivos estão em redes não públicas, e todos / todos os usuários são totalmente confiáveis ​​e o conteúdo dos dispositivos é "simples") .

Warren
fonte
1
A resposta de @Richipal é atualmente a que funciona melhor com o mínimo de esforço: parece que as regras dos invasores se aplicam na ordem inversa.
a1an
2
As regras @ a1an são aplicadas na mesma ordem listada no arquivo sudoers e, à medida que são aplicadas, meio que se anulam. Portanto, se eu não quiser que uma regra mude, eu a colocaria no final do arquivo, para que seja aplicada no final e não possa ser substituída.
rsjethani

Respostas:

173

EDIT graças ao comentário de medina: De acordo com a página de manual, você deve poder escrever

ALL            ALL = (ALL) NOPASSWD: ALL

para permitir que todos os usuários executem todos os comandos sem uma senha.


Para referência, estou deixando minha resposta anterior:

Se você adicionar uma linha do formulário

%wheel         ALL = (ALL) NOPASSWD: ALL

para /etc/sudoers(usando o visudocomando, é claro), permitirá que todos no grupo wheelexecutem qualquer comando sem fornecer uma senha. Então, acho que a melhor solução é colocar todos os seus usuários em algum grupo e colocar uma linha como essa sudoers- obviamente você deve substituir wheelpelo grupo real que você usa.

Como alternativa, você pode definir um alias de usuário,

User_Alias     EVERYONE = user1, user2, user3, ...

e use isso:

EVERYONE       ALL = (ALL) NOPASSWD: ALL

embora você precise atualizar /etc/sudoerssempre que adicionar ou remover um usuário.

David Z
fonte
2
Não ALLfunciona, em vez de *especificar todos os usuários? Veja o exemplo em sudoers(5).
medina
1
@ Medina: por isso, senti falta disso quando estava lendo a página de manual. Eu vou editar.
David
6
no Ubuntu, criando um arquivo sob /etc/sudoers.d e colocar essas entradas nele, em seguida, ele irá parar de você ter que editar sudoers
Xetius
1
No CentOS7, essa entrada está lá por padrão, apenas comentada.
killjoy
1
Só conseguiu usá-lo no centOS por cópia / colar, falhou todas as tentativas de digitar diretamente a configuração. Mas o resultado parece idênticos, exceto para os espaços ...
MUY Bélgica
96

Eu tentei as soluções acima sem sucesso. A solução a seguir funcionou para mim Edite o arquivo / etc / sudoers e adicione a seguinte linha

username ALL=(ALL) NOPASSWD: ALL

A chave é adicioná-lo após a última linha que diz

#includedir /etc/sudoers.d
Richipal
fonte
1
//, parece a melhor maneira de fazer isso, especialmente quando determinados aplicativos adicionam suas próprias regras para usuários do sistema, Richipal. Mais informações sobre sudoers.d: sudo.ws/man/1.8.13/sudoers.man.html
Nathan Basanese
1
//, você gostaria de adicionar alguns dos diagnósticos de Gearoid Murphy à sua resposta?
Nathan Basanese
1
Obrigado por este esclarecimento. Acrescentando que após a linha #includedir /etc/sudoers.d parece importante no CentOS 7 Considerando que parece funcionar bem para ter a linha no início do arquivo no CentOS 6
dmohr
3
O problema de ignorar o NOPASSWD do% wheel parece surgir da /etc/sudoers.d/USERNAMEsubstituição da permissão NOPASSWD do grupo. A aplicação do NOPASSWD /etc/sudoers.d/USERNAMEresolve o problema.
enguia ghEEz
1
Os grandes destaques, após a inclusão, são importantes
Theodore Howell
27

Eu tentei todas as respostas nesta página, sem resultados úteis. Eventualmente, eu descobri, use este comando para listar seus direitos de sudo:

sudo -l

Isso deve fornecer uma saída como esta:

User gmurphy may run the following commands on this host:
    (root) NOPASSWD: ALL
    (ALL) ALL

Isso mostra que estou configurado com privilégios de root, mas que ainda faço parte de um grupo (admin) correspondente a uma regra sudo que espera a senha ("(ALL) ALL"). Isso estava forçando o sudo a me alertar. A regra em questão eram os usuários administrativos:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Depois que comentei isso, consegui sudo sem senha. Espero que isso seja útil para outra pessoa.

Gearoid Murphy
fonte
1
Ahhh, obrigada! Isso estava me deixando louco ... no meu caso, meu usuário fazia parte do grupo "sudo" e também "admin" (que eu criei), e as permissões de cada um eram incompatíveis, como no seu caso . Agora esse material funciona! :)
neezer
14
Comentar uma saída de linha é um instrumento contundente. Você pode estar interessado em ouvir que "o sudo lê o arquivo sudoers e aplica as permissões na ordem de cima para baixo. Portanto, a última linha do arquivo substituirá qualquer conflito anterior", de acordo com ubuntuforums.org/showthread.php?t=1132821 - - e isso funcionou para mim.
David J.
10

Dentro, /etc/sudoershá um exemplo disso na parte inferior do arquivo:

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
Ignacio Vazquez-Abrams
fonte
2
essa amostra não estava na minha - mas obrigado!
warren
1
Como sua resposta sucinta
Sr. Pei
6

Há outra maneira de fazer isso sem tocar no arquivo sudoers.

  • Edite /etc/pam.d/sue remova o comentário da linha abaixo:

    auth           sufficient      pam_wheel.so trust use_uid
    
  • Adicione o usuário ao wheelgrupo.

Melhor cachorro
fonte
2

Há outra maneira de fazer isso sem tocar no arquivo sudoers.

  • Edite /etc/pam.d/sudoe adicione a linha abaixo:

    auth suficiente pam_wheel.so confie use_uid
  • Adicione o usuário ao wheelgrupo.

Adota "topdog" e "Daniel Serodio" para a resposta original em relação a "su" em vez de "sudo". Eu usei isso como referência e copiei descaradamente e alterei o post deles.

noabody
fonte
1
Penso que, em vez de copiar literalmente, seria melhor creditá-los, mas seja claro sobre como exatamente suas respostas diferem. Presumo que isso permite sem senha su, em vez de / assim como sem senha sudo? A adição de Daniel é apenas formatação, a propósito.
Mkfearnley