Configurando o sudo para não solicitar senha em comandos não permitidos

2

Há muitas informações sobre como fazer com que o sudo não solicite senhas (NOPASSWD).

Digamos que eu tenha o usuário alice e essa linha em meus sudoers:

alice ALL=(root) NOPASSWD: /bin/myadmintool

Isso funciona muito bem. O usuário pode executar sudo /bin/myadmintool e fazer coisas.

No entanto, se o usuário fizer isso:

sudo /bin/bash

Isso é o que acontece:

$ sudo /bin/bash
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password: 
Sorry, user alice is not allowed to execute '/bin/bash' as root on myhostname.

O que eu gostaria que acontecesse é que o sudo pule diretamente para:

Sorry, user alice is not allowed to execute '/bin/bash' as root on myhostname.

... sem o aviso de senha.

Como posso expressar isso no arquivo sudoers, apenas para esse usuário?

    
por Ricapar 17.06.2014 / 22:54

2 respostas

4

Após algumas leituras mais detalhadas da página de manual do sudoers , encontrei uma solução de trabalho!

Minha configuração de sudoers para alice é assim:

Defaults:alice    !authenticate
alice             ALL=(root) NOPASSWD: /bin/myadmintool

Tenha em mente que isso essencialmente definirá NOPASSWD para ALL das linhas sudo de alice . No meu caso, essa era a intenção.

Mais detalhes

A opção authenticate é definida no manual como:

authenticate

If set, users must authenticate themselves via a password (or other means of authentication) before they may run commands. This default may be overridden via the PASSWD and NOPASSWD tags. This flag is on by default.

A opção Defaults permite que você defina um usuário, grupo, lista de hosts, etc, conforme:

Default_Type ::= 'Defaults' |
             'Defaults' '@' Host_List |
             'Defaults' ':' User_List |
             'Defaults' '!' Cmnd_List |
             'Defaults' '>' Runas_List

Como authenticate é uma opção de configuração booleana, ele pode ser negado / definido como falso fazendo !authenticate .

    
por 18.06.2014 / 04:46
1

Como solução alternativa, você pode usar um modo não interativo:

sudo -n echo test
sudo: a password is required

Você pode criar um alias para esse usuário:

alias sudo = 'sudo -n'

    
por 17.06.2014 / 23:21