SUDO에는 tty가 필요합니다.

SUDO에는 tty가 필요합니다.

Amazon Linux 2018.03에는 권한 없는 사용자로 실행되고 sudo를 호출하여 명령을 실행하는 프로세스가 있습니다. 다음 메시지를 받았습니다.

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

권한이 없는 사용자(xymon)가 비밀번호 없이 관련 명령을 실행할 수 있도록 허용

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

이 명령은 다음 줄을 사용하여 로컬 xymon 클라이언트 프로세스에서 실행되는 Perl 스크립트에서 호출됩니다.

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

/etc/sudoers에서 tty 요구 사항을 비활성화했어야 했습니다.

Defaults    !requiretty

불운. 설정 요구 사항이 포함되어 있지 않습니다.

xymon 사용자로서 sudo -ll은 다음과 같습니다.

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

나는 그것이 requiretty출력에 나타나는 것을 보았지만 Defaults !requiretty내 지시문에 의해 무시되지는 않는 것 같습니다. Defaults !requirettysudoers 파일의 맨 끝에 지시문을 배치하고 , 이것이 어디서 왔는지 확실하지 않습니다 requiretty.sudo -ll

SSH에서 의사 tty를 사용하려면 다음 명령을 사용할 수 있습니다.

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

많은 서버에서 이 스크립트(Xymon 스크립트)를 실행하는 데 필요한 광범위한 설정을 고려하면 이는 좋은 옵션이 아닙니다. sudo와 함께 작동하게 하는 방법에 대한 제안이 있으십니까? 아니면 버그인가요?

답변1

문제가 해결되었습니다. requiretty내 LDAP에 포함시켰습니다 .

cn=defaults,OU=SUDOerssudoOption이 requiretty다음으로 변경되었으며 !requiretty모든 것이 잘 작동합니다.

!requiretty지금은 영향을 받는 사용자로 제한하겠습니다 .

관련 정보