Arquivo Sudoers, habilite o NOPASSWD para o usuário, todos os comandos

100

Prefácio

Esta é uma questão bastante complexa relacionada ao arquivo Sudoers e ao comando sudo em geral.

NOTA: Eu fiz essas alterações em uma máquina dedicada rodando o Ubuntu Desktop 13.04, que eu uso apenas para fins de aprendizado. Eu entendo que é um enorme risco de segurança para ativar o sudo NOPASSWD.

Pergunta

Inicialmente, minha única alteração no arquivo sudoers (/ etc / sudoers) era uma linha, uma especificação do usuário que deveria ter ativado 'nicholsonjf' para executar todos os comandos com sudo sem precisar digitar uma senha (veja a linha que inicia com 'nicholsonjf'):

# 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
nicholsonjf    ALL=NOPASSWD: ALL

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

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

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

#includedir /etc/sudoers.d

No entanto, isso não funcionou, e eu ainda era solicitado a fornecer minha senha toda vez que eu executava um comando como 'nicholsonjf'. Eu só era capaz de começar a executar comandos sudo como 'nicholsonjf' uma vez que eu removi 'nicholsonjf' dos grupos sudo e admin.

Alguém pode explicar por que isso funcionou?

É porque o usuário 'nicholsonjf' estava herdando os direitos de sudo das duas especificações de grupo de 'admin' e 'sudo' (vistas abaixo no arquivo sudoers), que estavam substituindo a especificação de usuário 'nicholsonjf' porque no arquivo de configuração?

    
por James Nicholson 19.08.2013 / 02:45

3 respostas

90

Sua linha adicionada foi substituída. De man sudoers :

  

Quando várias entradas correspondem a um usuário, elas são aplicadas em ordem.   Onde há várias correspondências, a última correspondência é usada (o que não é   necessariamente a correspondência mais específica).

No seu caso, nicholsonjf era membro do grupo sudo , então, para ele, essa linha foi aplicada:

%sudo   ALL=(ALL:ALL) ALL

Se você quiser substituir as entradas em /etc/sudoers , basta colocar as novas entradas depois delas.

A nova entrada deve se parecer com

myuser ALL=(ALL) NOPASSWD:ALL para um único usuário ou

%sudo ALL=(ALL) NOPASSWD:ALL para um grupo.

    
por pabouk 03.09.2013 / 02:55
107

Para um único usuário:

superuser ALL=(ALL) NOPASSWD:ALL

Para um grupo:

%supergroup  ALL=(ALL) NOPASSWD:ALL
    
por Fedir RYKHTIK 16.01.2015 / 16:28
-1

Como Vince tem mencionado em um comentário , você pode usar esta linha:

%sudo ALL=NOPASSWD: ALL

(Isto é diferente das linhas mostradas em aquelas responde , e resolveu o problema para mim.)

    
por E. Fortes 04.10.2017 / 11:53

Tags