Como executar o comando sudo sem senha?

206

Como o usuário ubuntu nas imagens da AWS para o Ubuntu Server 12.04 tem% sem senhasudo para todos os comandos quando não há configuração para ele em /etc/sudoers ?

Estou usando o servidor Ubuntu 12.04 na Amazon. Eu quero adicionar um novo usuário que tenha o mesmo comportamento que o usuário padrão do Ubuntu. Especificamente, eu quero sem senha sudo para esse novo usuário.

Então, adicionei um novo usuário e fui editar /etc/sudoers (usando visudo, é claro). A partir da leitura desse arquivo, parecia que o usuário ubuntu padrão estava recebendo a senha sudo sem ser membro do grupo admin . Então eu adicionei meu novo usuário a isso. Que não funcionou. Então tentei adicionar a diretiva NOPASSWD a sudoers . Que também não funcionou.

De qualquer forma, agora estou apenas curioso. Como o usuário ubuntu obtém privilégios sem senha se não estiverem definidos em /etc/sudoers . Qual é o mecanismo que permite isso?

    
por aychedee 23.09.2012 / 11:30

3 respostas

301

Ok, eu descobri a resposta, então também pode colocá-la aqui para ser completa. No final de /etc/sudoers existe o que eu pensei ser apenas um comentário:

#includedir /etc/sudoers.d

No entanto, isso realmente inclui o conteúdo desse diretório. Dentro do qual é o arquivo %código%. Qual tem o conteúdo esperado

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

Então é aí que reside a configuração do sudo para o usuário padrão do Ubuntu.

Você deve editar este arquivo usando visudo. O comando a seguir permitirá que você edite o arquivo correto com visudo.

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

Adicione uma linha como:

aychedee ALL=(ALL) NOPASSWD:ALL

No final.

    
por aychedee 23.09.2012 / 12:27
79

Descobri que a coisa mais direta a ser feita, para replicar facilmente esse comportamento em vários servidores, era a seguinte:

sudo visudo

Altere esta linha:

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

para esta linha:

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

E mova abaixo desta linha:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

agora você deve ter isto:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

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

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

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

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

para cada usuário que precisa de acesso sudo COM uma senha :

sudo adduser <user> sudo

e para todos os usuários que precisam do sudo access SEM senha :

sudo adduser <user> admin

e finalmente, execute isto:

sudo service sudo restart

E é isso!

Editar: Você pode ter que adicionar o grupo de administradores, pois não acredito que exista por padrão.

sudo groupadd admin

Você também pode adicionar o usuário padrão% AWSubuntu ao grupo admin por meio deste comando:

sudo usermod ubuntu -g admin

Nota: Como o @hata mencionado, talvez você precise usar adm como nome do seu grupo de administradores, dependendo qual versão do Ubuntu está sendo usada.

    
por jiminikiz 03.04.2014 / 23:45
-1

Resposta curta sem usar nenhum editor (testado no bash, muito arriscado para executar em hosts remotos).

Configure o sudo para funcionar sem uma senha para o usuário atual:

echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

Verifique a edição com:

sudo visudo -c

Verifique se você pode usar o sudo sem uma senha:

sudo cat /etc/sudoers | grep "$USER"

... ou simplesmente tente com:

sudo <anything>
    
por user315445 14.08.2014 / 00:25

Tags