最近,配置为从用户的 crontab 运行的作业停止执行。尝试列出或编辑用户的 crontab 时,结果如下:
user@host:~$ crontab -l
crontabs/user/: fopen: Permission denied
user@host:~$ crontab -e
crontabs/user/: fdopen: Permission denied
显然这与权限有关,尽管我不确定权限是如何改变的——更重要的是,它们应该设置为何。
/usr/bin/crontab 的权限:
$ ll /usr/bin/crontab
-rwxr-sr-x 1 root libuuid 35896 Aug 24 2010 /usr/bin/crontab*
/var/spool/cron/crontab 目录的权限:
# ll /var/spool/cron/
total 12
drwxr-xr-x 3 root root 4096 Oct 12 2010 ./
drwxr-xr-x 7 root root 4096 Jun 5 20:51 ../
drwx-wx--T 2 root libuuid 4096 Jan 10 2014 crontabs/
crontab 目录内的权限:
# ll /var/spool/cron/crontabs/
total 16
drwx-wx--T 2 root libuuid 4096 Jan 10 2014 ./
drwxr-xr-x 3 root root 4096 Oct 12 2010 ../
-rw------- 1 1017 libuuid 1120 Dec 3 2013
-rw------- 1 root libuuid 1342 Jan 10 2014 root
发行版信息:
# cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"
答案1
/usr/bin/crontab 上的权限应为:
owner=root
group=root
perms= 4755 (rws rx rx)
您的 /usr/bin/crontab 的组所有者有误。此外,它有 sgid,但没有 suid,而这恰恰是它必须有的。
答案2
如果您具有超级用户访问权限,则可以编辑用户 crontab,而无需修改权限:
$ sudo crontab -u username -e
我以为您可以在不使用 sudo 的情况下编辑用户 crontab,但我遇到了与您相同的权限问题,即使将自己添加到组中也是如此。我的用户的 crontab ( )crontab
中的权限为,组为。/var/spool/cron/crontabs
-rw-------
crontab
答案3
我遇到了同样的错误。问题出在目录上/var/spool/cron/crontabs
$ sudo stat /var/spool/cron/crontabs
Fichier : '/var/spool/cron/crontabs'
Taille : 34 Blocs : 0 Blocs d'E/S : 4096 répertoire
Périphérique : 802h/2050d Inœud : 272986341 Liens : 2
Accès : (1730/drwx-wx--T) UID : ( 0/ root) GID : ( 107/ crontab)
Accès : 2020-07-10 14:01:01.246597775 +0200
Modif. : 2020-07-10 14:01:00.806605868 +0200
Changt : 2020-07-10 14:01:00.806605868 +0200
Créé : -
如果您有不同的权限/所有者/组,您可以像这样修复它:
sudo chmod 1730 /var/spool/cron/crontabs
sudo chown root:crontab /var/spool/cron/crontabs