gentoo 上的 crontab -e 失败:“chown:操作不允许”

gentoo 上的 crontab -e 失败:“chown:操作不允许”

我无法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/

我是以下团体的成员croncrontab

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 吗?

相关内容