Prefácio
Essa é uma pergunta bastante complexa relacionada ao arquivo Sudoers e ao comando sudo em geral.
NOTA: Fiz essas alterações em uma máquina dedicada executando o Ubuntu Desktop 13.04, que utilizo apenas para fins de aprendizado. Entendo que é um enorme risco de segurança habilitar o NOPASSWD sudo.
Pergunta, questão
Inicialmente, minha única alteração no arquivo sudoers (/ etc / sudoers) foi uma linha, uma especificação do usuário que deveria ter habilitado 'nicholsonjf' para executar todos os comandos com sudo sem precisar digitar uma senha (consulte a linha que começa 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 solicitava minha senha toda vez que executava um comando como 'nicholsonjf'. Eu só consegui começar a executar comandos sudo como 'nicholsonjf' depois que removi 'nicholsonjf' dos grupos sudo e admin.
Alguém pode explicar por que isso funcionou?
É porque o usuário 'nicholsonjf' estava herdando os direitos sudo das duas especificações de grupo de 'admin' e 'sudo' (vistos abaixo no arquivo sudoers), que estavam substituindo a especificação do usuário 'nicholsonjf' porque estavam mais abaixo no arquivo de configuração?
Respostas:
A linha que você adicionou foi substituída. De
man sudoers
:No seu caso,
nicholsonjf
era um membro do grupo,sudo
então para ele essa linha se aplicava:Se você deseja substituir as entradas,
/etc/sudoers
basta colocar as novas entradas após elas.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.fonte
NOPASSWD
nessa resposta ...%sudo ALL=(ALL) NOPASSWD:ALL
nicholsonjf ALL=NOPASSWD: ALL
está correta. Estava no lugar errado, como expliquei na resposta. ------ ARunas
especificação - no seu caso(ALL)
- é opcional. Se você omitir a especificação, poderá executar os comandosroot
e não poderá usar-u
e-g
opções desudo
.Para um único usuário, adicione esta linha no final do seu
sudoers
arquivo usandosudo visudo
Para um grupo
fonte
%sudo ALL=NOPASSWD: ALL
e funciona. Eu sou o único que acha realmente difícil a Forma Estendida de Backus-Naur?sudo
sem senha como usuário sem privilégios de sudo. Por exemplosudo -u root -i
, funciona, massudo -u git -i
não.Nunca solicitará que o usuário atual para uma senha quando o usuário utiliza
sudo
fazerisso criará um arquivo chamado
/etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password
e significará que o usuário que você executou esse comando como não será solicitado a fornecer sua senha ao executar osudo
comando. Você ainda será solicitada a senha em outros contextos, como a instalação de itens do aplicativo gráfico do Ubuntu Software .As vantagens de fazê-lo desta maneira em relação à adição da linha no
echo
comando ao/etc/sudoers
usosudo visudo
(conforme sugerido pelas outras respostas) são/etc/sudoers
às vezes é modificado por atualizações do sistema, enquanto os arquivos/etc/sudoers.d
não sãosudo visudo
método é propenso a erros (como evidenciado por essa pergunta), enquanto copiar / colar um comando é muito mais difícil de atrapalharDe acordo com
sudo cat /etc/sudoers.d/README
esse recurso (de colocar arquivos extras do sudoer/etc/sudoers.d
) foi ativado por padrão desde o Debian 1.7.2p1-1, lançado no final dos anos 90 (o Ubuntu é baseado no Debian ).fonte
Como Vince foi mencionado em um comentário , você pode usar esta linha:
(Isso é diferente das linhas mostradas nessas respostas e resolveu o problema para mim.)
fonte
supergroup
na resposta da Fedir porsudo
. A seguir, outro usuário do grupowheel
? Ou qualquer outro grupo que o usuário esteja usando?supergroup
na resposta do Fedir porsudo
". O que? Substituirsupergroup
porsudo
na linha%supergroup ALL=(ALL) NOPASSWD:ALL
produz%sudo ALL=(ALL) NOPASSWD:ALL
, não%sudo ALL=NOPASSWD: ALL
.supergroup
withsudo
. Esta é a sua própria resposta, não um post de agradecimento ou uma cópia de outra resposta. Mas sim, eu concordo: a menos que eles pretendam isso , isso não será tão bom para a maioria dos usuários quanto os métodos nas outras respostas. (Mas, especialmente considerando a pergunta diz: "todos os comandos," não "a todos os usuários-alvo," Eu não acho que isso está em vigor nem mesmo a tentativa de responder à pergunta que foi feita.)