什么可能导致命令 `crontab -e` 出现“权限被拒绝”?

Nic*_*ton 27 cron

以下是我希望对您有所帮助的一些输出:

nick@home-sv-1:~$ crontab -e
/var/spool/cron/crontabs/nick: Permission denied

nick@home-sv-1:~$ echo $EDITOR
emacs

nick@home-sv-1:~$ ls /var/spool/cron/crontabs
ls: cannot open directory /var/spool/cron/crontabs: Permission denied

nick@home-sv-1:~$ sudo ls -al /var/spool/cron/crontabs
total 12
drwx-wx--T 2 root crontab 4096 2009-10-25 20:45 .
drwxr-xr-x 3 root root    4096 2009-05-18 01:19 ..
-rw------- 1 root root     612 2009-10-25 01:20 root
Run Code Online (Sandbox Code Playgroud)

问题:

crontab 没有 setguid,也不在 crontab 组中。

home-sv-1:~# ls -al /usr/bin/crontab
-rwxr-xr-x 1 root root 32048 2009-08-30 03:34 /usr/bin/crontab
Run Code Online (Sandbox Code Playgroud)

解决方案:

作为根...

home-sv-1:~# chown root.crontab /usr/bin/crontab
home-sv-1:~# chmod g+s /usr/bin/crontab

home-sv-1:~# ls -al /usr/bin/crontab
-rwxr-sr-x 1 root crontab 32048 2009-08-30 03:34 /usr/bin/crontab
Run Code Online (Sandbox Code Playgroud)

Sha*_*ike 19

另外值得检查 /var/spool/cron/crontabs 的权限

ls -al /var/spool/cron/crontabs 
Run Code Online (Sandbox Code Playgroud)

在我的情况下,这样做表明实际上分配给 crontab 的用户是“whoopsie”,我认为这意味着在设置用户时存在一些错误。

表演...

chown <username> /var/spool/cron/crontabs/<username>
Run Code Online (Sandbox Code Playgroud)

完全修复了这个:)


use*_*686 13

是否设置/usr/bin/crontabsetgid权限?

-rwxr-sr-x 1 根 crontab 32K 2008-09-28 14:07 /usr/bin/crontab*

如果没有,chmod g+s它(如果需要,chown 之前


编辑:请注意,这仅适用于 Vixie Cron(大多数发行版使用);其他守护进程(例如dcron)可能使用不同的权限 ( setuid)。


小智 6

我有同样的问题。我是这样解决的。

sudo crontab -u yourUser -e
Run Code Online (Sandbox Code Playgroud)

我希望它能帮助你。