권한이없는 사용자의 crontab에서 스크립트를 실행하여을 사용하여 일부 명령을 호출합니다 sudo
. 그렇지 않은 경우를 제외하고. 스크립트는 정상적으로 실행되지만 sudo의 명령은 자동으로 실패합니다.
스크립트는 문제의 사용자로서 쉘에서 완벽하게 실행됩니다.
Sudo에는 비밀번호가 필요하지 않습니다. 해당 사용자는에
(root) NOPASSWD: ALL
액세스 권한이 부여되었습니다/etc/sudoers
.Cron이 스크립트를 실행하고 실행 중입니다. 단순을 추가
date > /tmp/log
하면 적시에 출력이 생성됩니다.권한 문제가 아닙니다. 다시 스크립트는 sudo'ed 명령이 아니라 실행됩니다.
경로 문제가 아닙니다. 실행
env
중인 스크립트 내부에서 실행$PATH
하면 sudo에 대한 경로를 포함하는 올바른 변수가 표시됩니다. 전체 경로를 사용하여 실행해도 도움이되지 않습니다. 실행중인 명령에 전체 경로 이름이 제공됩니다.STDERR을 포함하여 sudo 명령의 출력을 캡처하려고 시도해도 유용한 것이 표시되지 않습니다.
sudo echo test 2>&1 > /tmp/log
스크립트에 추가 하면 빈 로그가 생성됩니다.sudo 바이너리 자체는 정상적으로 실행되며 스크립트 내부의 cron에서 실행될 때에도 권한이 있음을 인식합니다.
sudo -l > /tmp/log
스크립트에 추가 하면 출력이 생성됩니다.ec2-user 사용자는이 호스트에서 다음 명령을 실행할 수 있습니다.
(root) NOPASSWD : ALL
를 사용하여 명령의 종료 코드를 검사하면 $?
오류 (종료 코드 :)를 반환 1
하지만 오류가 발생하지 않는 것으로 나타납니다. 간단한 명령으로 /usr/bin/sudo /bin/echo test
동일한 오류 코드가 반환됩니다.
다른 일이 벌어 질 수 있습니까?
최신 Amazon Linux AMI를 실행하는 최근에 생성 된 가상 머신입니다. crontab은 사용자에 속하며 ec2-user
sudoers 파일은 분배 기본값입니다.
sudo
스크립트에 필요한 명령에 대해 제한된 권한 / only /을 가진 별도의 사용자를 설정하고 로그인 기능을 완전히 비활성화하는 것입니다.
The user in question has (root) NOPASSWD: ALL access granted in /etc/sudoers
뇌는 계속 소리를 지르기 위해 소리를 지르기 시작했다.