我正在尝试在我的用户下设置一个 cron 作业。我运行 crontab -e,进行编辑,然后尝试保存并退出。我收到以下错误消息/var/spool/cron/: mkstemp: Permission denied
。
ls -al /var/spool/cron/crontabs 的相关输出
drwxr-xr-x 2 root crontab 4096 Nov 4 10:09 .
drwxr-xr-x 5 root root 4096 Nov 19 2014 ..
-rw-rw-rw- 1 greg crontab 91 Nov 4 11:04 greg
-rw------- 1 root crontab 1231 Oct 29 16:18 root
我可以直接编辑 greg 文件并保存它,但即使我在更新后重新启动 cron,我似乎仍然无法运行该作业。我需要做什么来解决这个问题?
的输出ls -lha $(which crontab)
是:
-rwxr-sr-x 1 root crontab 36K Feb 8 2013 /usr/bin/crontab
的输出groups greg
是:
greg : greg adm sudo crontab lpadmin sambashare
答案1
这将解决您眼前的问题:
chmod u=rwx,g=wx,o=t /var/spool/cron/crontabs
但是,如果您可以下载软件包,解决此问题的更可靠方法是重新apt-get
安装适当的软件包:
root@ubuntu# dpkg-query -S /var/spool/cron/crontabs
cron: /var/spool/cron/crontabs
root@ubuntu# apt-get install --reinstall cron
首先确保您对 、 等所做的任何本地更改都/etc/init/cron.conf
被/etc/default/cron
复制到某处然后重新应用。
答案2
Mark Plotnick 提到的解决方案对我不起作用,但是将我的用户添加到组后crontab
它起作用了:
sudo adduser myname crontab
您需要注销并再次登录才能应用此更改。
答案3
在 Ubuntu 22.04 中:
crontab ~/admin/scripts/crontab.txt
/var/spool/cron/: mkstemp: 权限被拒绝
$ ls -lha $(which crontab)
-rwxr-sr-x 1 root crontab 39K 2022 年 3 月 23 日 /usr/bin/crontab
~$ ls -lha /var/spool/cron/crontabs
ls: 无法打开目录 '/var/spool/cron/crontabs': 权限被拒绝
~$ sudo ls -lha /var/spool/cron/crontabs
总计 8.0K
drwx-wx--T 2 根 systemd-journal 4.0K 2023 年 3 月 2 日。
drwxr-xr-x 3 root root 4.0K 七月 22 09:48 ..
所以我们需要2组用户执行才能获得权限:
sudo usermod -a -G systemd-journal <user>
sudo usermod -a -G systemd-journal <user>
注销并使用用户再次登录...
crontab ~/admin/scripts/crontab.txt
crontab -l
0 */1 * * * ~/admin/scripts/elasticsearch_flush.sh > /dev/null 2>&1