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
正如您所看到的,两个脚本的权限是相同的,并且两个脚本中使用的解释器是相同的,我一直在找出导致问题的原因。
shell 脚本的代码可以在这里找到:检查磁盘.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