crontab: 「一時的な crontab はもうあなたの所有物ではありません。」

crontab: 「一時的な crontab はもうあなたの所有物ではありません。」

Linuxmint 18 Cinnamon 64 ビットから Linuxmint 17.3 Cinnamon 64 ビットに戻しましたが、cron ジョブを作成できなくなりました。ルート (/) とホーム (/home/my-user-name) のパーティションが別々にあり、17.3 のインストール時にホーム パーティションは変更しませんでした。

cronジョブの作成にいろいろと問題があったので、gnome-schedulerをインストールして、その方法でcronジョブを作成しようとしました。次のような警告ダイアログボックスが表示されました。

「警告: 実行されたタスクの作業ディレクトリ」

メッセージの内容は

「実行されたタスクの作業ディレクトリに関する注意: 定期的なタスクはホーム ディレクトリから実行されます。」

[OK] をクリックすると、ジョブが次のようにターミナルに表示されます。

$ crontab -l
* * * * * env DISPLAY=:0 /home/my-user-name/wallpaper_changer.sh >/dev/null 2>&1 # JOB_ID_4

私の壁紙は、本来あるべきように毎分変化しません。スクリプトはコマンド ラインから問題なく実行され、出力は生成されません。スクリプトの権限は 8 進数で 744 です。これはすべて Mint 18 で問題なく動作しましたが、スクリプトは 1 日に 1 回だけ実行するようにしました。テスト目的でのみ、毎分実行するように設定しました。

通常のcronジョブ編集方法を試すと、

$ crontab -e
Temporary crontab no longer owned by you.
Error while editing crontab

すると、コメント行でいっぱいの通常の crontab テンプレートではなく、空の nano バッファが表示されます。nano バッファをファイル /tmp/crontab.lmuwIe/crontab に書き込もうとすると、次のエラー メッセージが表示されます。

[ /tmp/lmuwIe/crontab の書き込みエラー: アクセス権が拒否されました ]

ついに、

$ ls -l /usr/bin/crontab
-rwsr-xr-x 1 root crontab 35984 Feb  9  2013 /usr/bin/crontab

再び cron ジョブを作成できるようになりますか?

$ sudo ls -la /var/spool/cron/crontabs
total 12
drwx-wx--T 2 root crontab      4096 Sep 25 03:23 .
drwxr-xr-x 5 root root         4096 Sep 23 00:05 ..
-rw------- 1 root my-user-name  188 Sep 25 03:23 my-user-name

@Gilles まあ、かなり進歩しました。cronを再インストールすることで、すべてのエラーの異常を取り除きました。今では、

$ crontab -e

を除外する何年も使ってきたスクリプトが実行されないのです。

しかし、別のスクリプトは実行されるので、困惑しています。

私が今持っているものは次のとおりです:

$ crontab -l
* * * * * env DISPLAY=:0.0 /home/my-user-name/wallpaper_changer.sh
* * * * * date >> /home/my-user-name/crontest.txt

(cron ジョブの前の 20 行ほどのコメントは含めませんでした。)

日付ジョブは期待通りに実行されますが、wallpaper_changer.sh ジョブは何も実行しません。私はこれを何年も使用してきましたが、今は機能しません。スクリプトはコマンド ラインからは正常に動作し、cron からも正常に動作していました。

$ ls -l /home/my-user-name/wallpaper_changer.sh
-rwxr-xr-x 1 my-user-name my-user-name 694 Jun  2 14:30 /home/my-user-name/wallpaper_changer.sh

$ echo $DISPLAY
:0.0

これは一体何なの?

答え1

crontab バイナリの権限を編集し、新規インストール時に元の状態に戻す必要があります。

機能しない権限:

ls -la /usr/bin/crontab
-rwsr-xr-x 1 root crontab 40264 Oct  7  2017 /usr/bin/crontab

アクションは、root として、または sudo を使用して実行します。

chmod g+s /usr/bin/crontab
chmod u-s /usr/bin/crontab

作業権限:

ls -la /usr/bin/crontab
-rwxr-sr-x 1 root crontab 40264 Oct  7  2017 /usr/bin/crontab

新規の作業インストールから取得され、作業権限はインストール中に設定されます。

後からなぜ変更されたのかは分かりません。

答え2

$ sudo ls -la /var/spool/cron/crontabs
total 12
drwx-wx--T 2 root crontab      4096 Sep 25 03:23 .
drwxr-xr-x 5 root root         4096 Sep 23 00:05 ..
-rw------- 1 root my-user-name  188 Sep 25 03:23 my-user-name

の所有権/var/spool/cron/crontabs/my-user-nameが間違っています。あなたが所有者である必要があります。これが、cron がファイルを上書きできない理由を説明しています。また、ファイルは通常crontabグループ内にありますが、それは問題ではないと思います。

これを修正するには、

sudo chown my-user-name /var/spool/cron/crontabs/my-user-name

何が原因なのかはわかりませんし、システムのダウングレードとどのように関連しているのかもわかりません。根本的な問題が別の問題を引き起こす可能性があります。

関連情報