我的用户“craig”位于/etc/sudoers
我的 CentOS 5.6 VM 上的文件中,但是当我尝试使用以下命令访问 crontab 时,出现了一条错误消息:
sudo crontab -e -u crmpicco-stock-dev
[sudo] password for craig:
Sorry, user craig is not allowed to execute '/usr/bin/crontab -e' as root on dev.localdomain.
为什么我会收到此消息,因为我可以在/etc/sudoers
文件中看到我可以访问请求的 crontab。
/etc/sudoers
以下是我的文件中的条目:
craig ALL=(crmpicco-stock-dev) /usr/bin/crontab, /var/spool/cron/crmpicco-stock-dev
答案1
该规范ALL=(crmpicco-stock-dev) /usr/bin/crontab
意味着在ALL
主机上,您可以以/usr/bin/crontab
用户身份运行crmpicco-stock-dev
。这并不意味着sudo
,每当您尝试运行时/usr/bin/crontab
,都会自动选择以用户身份运行crmpicco-stock-dev
- 默认值仍然是root
,配置不允许,错误消息会泄露这一点:Sorry, user craig is not allowed [...] as root
。
尝试运行sudo -u crmpicco-stock-dev crontab -e
。这将告诉sudo
您想要crmpicco-stock-dev
并调用/usr/bin/crontab
,应该允许;crontab -e
默认情况下将尝试编辑当前用户的 crontab - 即crmpicco-stock-dev
,因此您无需再次指定它。
将 放在-u crmpicco-stock-dev
第一个非选项后面,sudo
将假定它是您要运行的命令的一部分,并忽略它。整行看起来相似,但含义却截然不同。
答案2
您可以尝试这样做:
sudo crontab -u crmpicco-stock-dev -e
从手册页来看,这似乎是正确的顺序。
此致
答案3
我认为您必须联系您的系统管理员来帮助您调试问题。我怀疑这是 sudo 中的 setuid() 或 seteuid() 调用以及您正在调用 SUID 程序的某种产物。我以前见过这种情况,修复起来非常令人沮丧。
我可能开始修复它的方法是尝试将 crontab 调用放入没有特殊权限的可执行包装程序中,然后使用 sudo 来调用包装程序。