crontab -e の結果: /var/spool/cron/: mkstemp: 権限が拒否されました

crontab -e の結果: /var/spool/cron/: mkstemp: 権限が拒否されました

自分のユーザーで 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 ルート 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 ルートシステムd-journal 4.0K 2023 年 3 月 2 日 .

drwxr-xr-x 3 root root 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

関連情報