我无法crontab -e
以普通用户身份在我有的 gentoo 盒子上运行。以下是抄录:
ben@tools ~ $ crontab -e
# (I add something trivial, like a new line containing "#foo")
crontab: installing new crontab
chown: Operation not permitted
crontab: edits left in /tmp/crontab.XXXXULPy6M
ben@tools ~ $
我有另一台 gentoo 机器,它可以运行良好。
我已经检查了所有这些内容的权限,它们看起来都是合理的,并且与其工作的机器相同:
tools ~ # ls -AFlh /usr/bin/crontab
-rwxr-s--x 1 root crontab 29K Oct 22 16:16 /usr/bin/crontab*
tools ~ # ls -AFlhd /tmp
drwxrwxrwt 17 root root 3.2K Oct 22 16:34 /tmp/
tools ~ # ls -AFlhd /var/spool/cron
drwxr-xr-x 4 cron root 4.0K Oct 22 16:07 /var/spool/cron/
tools ~ # ls -AFlhd /var/spool/cron/crontabs
drwx-wx--T 2 root crontab 4.0K Oct 22 16:16 /var/spool/cron/crontabs/
我是以下团体的成员cron
:crontab
ben@tools ~ $ groups ben
cron crontab sysops
没有/etc/cron.allow
,/etc/cron.deny
除注释行外均为空白。
我尝试通过执行以下操作来更新 vixie-cron 包:
emerge --sync
emerge -v vixie-cron # reinstall the current version, in case something is wrong
# add "sys-process/vixie-cron ~x86" to /etc/portage/package.keywords
emerge -v =vixie-cron-4.1-r11
不好。
我曾尝试过strace
对其进行运行(先以我自己的身份strace -Ff crontab -e
运行crontab -e
,再strace -FF -p foo
以 root 身份运行),但我看不到比我已经收到的错误消息更有用的内容:
chown32("crontabs/tmp.XXXXI5Oi61", 0, -1) = -1 EPERM (Operation not permitted)
write(2, "chown: Operation not permitted\n", 31) = 31
close(4) = 0
我当然已经在 Google 上搜索过它,并且每个 Google 结果都谈到检查上面我检查过的相同文件/文件夹的权限。
救命!我没有主意了。
- 本
答案1
为什么“drwx-wx--T 2 root crontab 4.0K Oct 22 16:16 /var/spool/cron/crontabs/”这个没有群组的读取权限?
为这个 crontabs/ 目录分配读取权限。我猜 crontab 是以 ben:crontab 的形式运行的,而 crontab/ 没有任何组有权从 crontabs/ 读取
或者尝试“chmod 4755 /usr/bin/crontab”。这样,crontab 应该以 root 身份运行:crontab 和 crontabs/ 对 root 具有读/写访问权限。
答案2
也许 crontab 权限被改变了。在我的 Ubuntu 上,它是:
-rwxr-sr-x 1 root crontab 35896 24-08-2010 22:45:58 /usr/bin/crontab
检查一下 g+s 吗?