user1@<HOSTNAME>:~$ sudo -H -u nagios bash -c "sudo /usr/localcw/bin/check_disk.sh -w 10% -c 80% -p /boot"
Sorry, user nagios is not allowed to execute '/usr/localcw/bin/check_disk.sh -w 10% -c 80% -p /boot' as root on <HOSTNAME>.
user1@<HOSTNAME>:~$ sudo -H -u nagios bash -c "sudo /usr/localcw/bin/nagios_check_files_age.sh -f /var/lib/logrotate/status -c 3600 -w 3600"
FILE_AGE OK: /var/lib/logrotate/status is 1680 seconds old and 1626 bytes.[w=3600 , c=3600 s]
user1@<HOSTNAME>:~$ ls -l /usr/localcw/bin/check_disk.sh
-rwx------ 1 root root 6390 Mar 3 16:45 /usr/localcw/bin/check_disk.sh
user1@<HOSTNAME>:~$ ls -l /usr/localcw/bin/nagios_check_files_age.sh
-rwx------ 1 root root 2236 Nov 13 15:48 /usr/localcw/bin/nagios_check_files_age.sh
보시다시피 두 스크립트의 권한이 동일하고 두 스크립트에 사용된 인터프리터도 동일하므로 문제의 원인이 무엇인지 알아보려고 노력했습니다.
쉘 스크립트의 코드는 다음에서 찾을 수 있습니다.checkdisk.sh
답변1
visudo를 실행하고 nagios 사용자 이름이 포함된 줄을 찾으세요. 누군가 제한된 sudo 권한을 부여했을 수 있습니다. 다음과 유사한 줄이 표시되면 /usr/localcw/bin/check_disk.sh를 목록에 추가할 수 있습니다.
비쥬도
## Allows nagios user to run below commands
nagios ALL=/usr/localcw/bin/nagios_check_files_age.sh
목록에 추가
비쥬도
## Allows nagios user to run below commands
nagios ALL=/usr/localcw/bin/nagios_check_files_age.sh, /usr/localcw/bin/check_disk.sh
sudoers 파일에 추가한 후 명령을 다시 시도하십시오.
nagios 사용자가 sudoers 파일에 나열되어 있지 않으면 facls(액세스 제어)를 확인하세요.
getfacl /usr/localcw/bin/check_disk.sh