SUDO requerendo tty

2

No Amazon Linux 2018.03, eu tenho um processo rodando como um usuário sem privilégios e chama o sudo para executar um comando. Estou recebendo a mensagem:

sudo: sorry, you must have a tty to run sudo

O usuário sem privilégios (xymon) tem permissão para executar o comando em questão sem senha

Cmnd_Alias YUM = /usr/bin/yum
xymon   ALL=(ALL)               NOPASSWD: YUM

O comando está sendo chamado de um script perl executado pelo processo do cliente xymon local através das seguintes linhas:

my $YumCmd  = 'sudo yum check-update  2>&1' ;
@Lines = '$YumCmd' ;

Em / etc / sudoers, eu supostamente desativei o requisito tty com:

Defaults    !requiretty

Sem sorte. Nenhum dos conjuntos inclui requiretty.

sudo - como o usuário xymon está abaixo:

Matching Defaults entries for xymon on this host:
!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", !requiretty, secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, requiretty, !visiblepw, 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", !authenticate

User xymon may run the following commands on this host:

Sudoers entry:
RunAsUsers: ALL
Commands:
    NOPASSWD: /usr/bin/yum

Noto que requiretty aparece na saída, mas não parece ser substituído pela minha diretiva Defaults !requiretty . Colocar a diretiva Defaults !requiretty no final do arquivo sudoers coloca-a antes do requiretty listado em sudo -ll . Não faço ideia de onde isso está vindo.

Usar uma pseudo-tty com o ssh funciona usando o seguinte comando:

my $YumCmd  = 'ssh -tt -i ~/.ssh/id_rsa localhost sudo yum check-update  2>&1' ;

Esta não é uma boa opção, dada a grande quantidade de configuração necessária para muitos servidores executarem esse script (script Xymon). Alguma sugestão para fazer isso funcionar com o sudo ou isso é um bug?

    
por JohnA 10.05.2018 / 23:29

1 resposta

2

Problema resolvido. Eu tinha incluído requiretty no meu LDAP.

cn=defaults,OU=SUDOers sudoOption requiretty alterado para !requiretty e tudo funciona corretamente.

Agora, vou limitar o !requiretty apenas ao usuário afetado.

    
por 11.05.2018 / 18:38