crontab -e は以下を生成します: /var/spool/cron/: mkstemp: 権限が拒否されました。

crontab -e は以下を生成します: /var/spool/cron/: mkstemp: 権限が拒否されました。

私のユーザーとしてクローンタスクを設定しようとしています。 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 ルート 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

合計8000個

drwx-wx--T 2ルートsystemd-journal 4.0K 2023年3月2日。

drwxr-xr-x 3 ルート ルート 4.0K 7月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

関連情報