sudoers e padrões

10

Eu preciso permitir que um usuário execute o sudo sem senha sem tty.

Eu tenho um arquivo em /etc/sudoers.d/ com os comandos e configurações especiais que preciso, já que não gosto de editar diretamente o arquivo sudoers . Nesse arquivo eu tenho o seguinte:

# My list of commands that the user can run passwordless
myUser ALL=(ALL) NOPASSWD:SETENV: /foo/bar /foo/zaz
# My new defaults.
Defaults exempt_group = myUser
Defaults !env_reset,env_delete-=PATH
Defaults: myUser !requiretty

No entanto, quando eu su para o usuário e executar sudo -l , obtenho isso nos padrões:

 Matching Defaults entries for myUseron this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
    LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, exempt_group=myUser,
    !env_reset, env_delete-=PATH, !requiretty

Onde eu posso ver, tem primeiro requiretty e no final meu !requiretty , que não funciona. Suponho que isso esteja acontecendo porque primeiro é analisado o arquivo normal sudoers , depois meu arquivo personalizado em /etc/sudoers.d/ .

Existe uma maneira de fazer isso funcionar sem editar o original /etc/sudoers ?

    
por Navarro 07.04.2017 / 15:10

1 resposta

4

A gramática dos Padrões é esta (veja man sudoers):

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

User_List ::= User |
              User ',' User_List

Então, on line

Defaults: myUser !requiretty

remova o espaço entre Defaults: e myUser .

    
por 07.04.2017 / 16:29

Tags