Em 14.04 aqui. Coloquei SSH na minha máquina e adicionei a seguinte linha a /etc/sudoers
:
myuser ALL=NOPASSWD: ALL
E então tentei correr:
sudo mkdir /etc/blah
... e me pedem minha senha. Por quê?!?
Eu não quero ser convidado para a minha senha ao fazer esta operação. Observe que, quando corro ls -ltr /
, recebo:
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
Mas eu não acho que isso importe, porque eu me estabeleci como um "sudoer", certo?
Mais importante, o que preciso fazer para poder executar sudo mkdir /etc/blah
como meu usuário atual ( myuser
) sem ser solicitada a senha?
Aqui está o meu /etc/sudoers
arquivo inteiro :
#
# 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
fizzbuzz ALL=NOPASSWD: ALL
chadmin 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
visudo
no entanto, nenhuma edição manual deste arquivo foi de trabalhos de copiar e colar, digitei tudo como está. Masvisudo
edita outros arquivos além deste? Isso poderia ser ele .../etc/sudoers.d/
, eles podem estar substituindo itens de/etc/sudoers
Respostas:
É a sequência / ordem das regras que causou isso. A última regra tem preferência.
Para resolver seu problema, basta mover suas linhas,
do
sudoers
arquivo paraEssa é uma abordagem melhor do que editar o
sudoers
arquivo com um editor de texto simples. Se você acidentalmente inserir erros no arquivo, talvez não seja mais possível executarsudo
. Sempre usevisudo
, para que a sintaxe seja verificada e você receba avisos sobre erros!Sua diretiva não funciona porque é substituída por:
Se você executar o
groups
comando, verá que seu usuário pertence a esses grupos.fonte
nn-somename
, por exemplo/etc/sudoers.d/20-myoverrides
Se myuser estiver no grupo sudo , essa ordem das linhas não fornecerá acesso sem senha (como observado por Florian Diesch), porque a terceira linha substitui a primeira.
Então, basta colocar as linhas nesta ordem:
Na conta myuser , use
sudo -l
para verificar quais permissões o myuser possui.fonte
Se várias entradas corresponderem a um usuário, a última será usada. Portanto, se
fizzbuzz
echadmin
são membros dos grupos,admin
ousudo
ainda será solicitada uma senha.Coloque as duas linhas no final do
sudoers
arquivo após a#includedir
linha.fonte
#includedir
é a última entradasudoers
por padrão.Idealmente, se você estiver personalizando os comandos que podem ser executados,
sudo
faça essas alterações em um arquivo separado em/etc/sudoers.d/
vez de editar osudoers
arquivo diretamente. Você também deve sempre usarvisudo
para editar o (s) arquivo (s). NUNCA deve concederNOPASSWD
emALL
comandos.Exemplo:
sudo visudo -f /etc/sudoers.d/mynotriskycommand
Insira sua linha concedendo permissão:
myuser ALL= NOPASSWD: /bin/mkdir
Em seguida, salve e saia e
visudo
avisará se você tiver algum erro de sintaxe.Você pode executar
sudo -l
para ver as permissões concedidas ao usuário, se algum dosNOPASSWD
comandos específicos do usuário aparecer ANTES de qualquer%groupyouarein ALL=(ALL) ALL
comando na saída, você será solicitado a fornecer sua senha.Se você criar muitos desses arquivos sudoers.d, talvez queira criá-los com o nome do usuário, para que sejam mais fáceis de visualizar. Lembre-se de que a ordem dos NOMES DE ARQUIVOS e das REGRAS no arquivo é muito importante; o ÚLTIMO carregado carrega, seja MAIS ou MENOS permissivo do que as entradas anteriores.
Tente executar
printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
eprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
verifique se o seu idioma atual é impressoAaBbCc
etc. ouABC
entãoabc
para determinar qual o melhor prefixo de "última" letra a ser usado.fonte