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 !requiretty
sudoers 파일의 맨 끝에 지시문을 배치하고 , 이것이 어디서 왔는지 확실하지 않습니다 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=SUDOers
sudoOption이 requiretty
다음으로 변경되었으며 !requiretty
모든 것이 잘 작동합니다.
!requiretty
지금은 영향을 받는 사용자로 제한하겠습니다 .