crontab 在 fopen 中列出或编辑结果:权限被拒绝

crontab 在 fopen 中列出或编辑结果:权限被拒绝

最近,配置为从用户的 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

相关内容