Por que a opção NOPASSWD dos sudoers não está funcionando?

54

Eu tenho uma linha NOPASSWD em / etc / sudoers (editada com visudo )

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

No entanto, a saída é

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

Este tipo de comando funciona em uma máquina OpenSuSE, mas não no Ubuntu 11.10. O que estou fazendo errado?

Observação : não consigo encontrar mensagens de registro relevantes do sistema, por exemplo, via tail -f /var/log/syslog .

editar

Aqui está o / etc / sudoers.

Defaults    env_reset

# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

root    ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
    
por gatoatigrado 31.01.2012 / 02:05

3 respostas

85

Você deve colocar essa linha após a linha com a regra para o grupo sudo , porque, como a página sudoers man afirma:

   When multiple entries match for a user, they are applied in order.
   Where there are multiple matches, the last match is used (which is not
   necessarily the most specific match).
    
por enzotib 31.01.2012 / 07:36
4

Corri para isso também.

Minha situação é que estou configurando um sistema remoto que será executado sem cabeça. Eu habilitei a criptografia de disco completo (caso contrário, um invasor com acesso físico pode fazer qualquer coisa que desejar) Eu quero a autenticação apenas com a chave de pub (desarmar a senha para que o esquema "tenha algo, saiba de algo" seja uma senha protegido keypair --root login é, claro, desativado completamente)

O instalador do Ubuntu solicita um usuário administrador não-root que é adicionado ao grupo sudo . Eu tinha então manualmente me adicionado ao arquivo sudoers usando sudo visudo :

my_username ALL=(ALL:ALL) NOPASSWD:ALL

OBSERVAÇÃO: se você usar o nopasswd no seu laptop, sempre deverá bloquear o computador enquanto se afasta, ou então um invasor casual pode comprometer muito enquanto você se levanta para colocar o creme no café

Eu ainda precisava autenticar a senha.

A resposta da enzotib é a chave para o que está acontecendo. O grupo sudo aparece em sudoers após a entrada do meu nome de usuário.

Em vez de mover minha entrada abaixo da linha sudo, simplesmente removi a linha que eu havia adicionado anteriormente e, em seguida, adicionei NOPASSWD à entrada de %sudo

Isso parece funcionar. Novamente, use nopasswd apenas se você realmente precisar (no meu caso, foi exatamente o que eu precisava, pois a maioria dos usuários que exigem uma senha para a atividade do sudo é melhor)

ADVERTÊNCIA adicional: Sempre edite sudoers com visudo. (sudo visudo) Além disso, ter outra janela aberta comutada para o usuário root permite recuperar quaisquer erros que você possa cometer ao alterar o arquivo sudoers.

    
por jorfus 04.02.2016 / 20:05
1

Idealmente, se você estiver personalizando quais comandos podem ser executados via sudo , você deve fazer essas alterações em um arquivo separado em /etc/sudoers.d/ , em vez de editar o arquivo sudoers diretamente. Você também deve sempre usar visudo para editar o (s) arquivo (s).

Exemplo: sudo visudo -f /etc/sudoers.d/slowcpu

Insira sua permissão de concessão de linha: gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq

Em seguida, salve e saia e visudo avisará se você tiver erros de sintaxe.

Você pode executar sudo -l para ver as permissões concedidas a seu usuário, se qualquer um dos comandos NOPASSWD específicos do usuário aparecer ANTES de qualquer comando %groupyouarein ALL=(ALL) ALL na saída, será solicitada sua senha.

Se você estiver criando muitos desses arquivos sudoers.d, talvez queira criá-los com nomes por usuário, para que sejam mais fáceis de visualizar. Tenha em mente que a ordenação dos NOMES DE ARQUIVO e das REGRAS dentro do arquivo é muito importante, o ÚLTIMO carregado carrega, seja MAIS ou MENOS permissivo que as entradas anteriores.

Você pode controlar a ordenação de nomes de arquivos usando um prefixo de 00-99 ou aa / bb / cc, mas lembre-se de que, se tiver ALGUNS arquivos que não tenham prefixo numérico, eles serão carregados após o número arquivos, sobrescrevendo as configurações. Isso ocorre porque, dependendo das configurações de idioma, a "ordenação lexical" do shell usa os primeiros tipos de classificação e, em seguida, pode intercalar maiúsculas e minúsculas ao classificar em ordem "crescente".

Tente executar printf '%s\n' {{0..99},{A-Z},{a-z}} | sort e printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort para ver se o seu idioma atual imprime AaBbCc etc ou ABC then abc para determinar qual seria o melhor prefixo de letra "último" a usar.

    
por dragon788 22.05.2017 / 22:55

Tags