atd報告権限が拒否されました

atd報告権限が拒否されました

後で実行するようにスケジュールされたジョブを使用した後、ジョブを開始するのではなく、指定されたat時間にatd「許可拒否」が報告されます。 /var/spool/cron/at* の権限が正しいです。

root@server /var/spool/cron # ls -la
total 20
drwxr-xr-x 5 root   root    4096 Okt 30  2014 .
drwxr-xr-x 6 root   root    4096 Okt 30  2014 ..
drwxrwx--T 2 daemon daemon  4096 Nov  1 17:57 atjobs
drwxrwx--T 2 daemon daemon  4096 Nov  1 17:57 atspool
drwx-wx--T 2 root   crontab 4096 Nov  1 17:34 crontabs

手動で送信されたコマンドを実行すると、atすべてがうまく機能します。

答え1

オペレーティングシステムの仕様を見なくてもSELinuxが動作している可能性があると思います。

有効になっていることを確認してください。がgetenforce返されますEnforcing。その場合は、root として実行し、setenforce permissiveコマンドの実行時に権限拒否エラーが発生することを確認します。

答え2

atd実行理由に対する回答を探していますが、ジョブは実行されず、ログに次のものが表示されます。

Nov 16 05:28:00 yourserver atd[15038]: Cannot create output file: Permission denied

システムはDebian 10バスターです。

atd私が気づいたことの1つは、プロセスがuserで実行されていることですdaemonDebian はなぜ "daemon" ユーザーとして "atd" を実行するのですか?

いいね

man atdファイルセクションにいくつかの有用な情報があることがわかりました。

       /var/spool/cron/atjobs The directory for storing jobs; this should be mode 700, owner daemon.

       /var/spool/cron/atspool The directory for storing output; this should be mode 700, owner daemon.

ディレクトリにこれらの権限と所有権があることを確認した後、すべてが期待どおりに機能し始めました。

この特定のシステムでは、atこのシステムは頻繁に使用されていないようです(それでこれまで問題は見つかりませんでした)。システムは長年にわたって以前のバージョンのDebianからアップグレードされているため、ルートからデーモンへのatd実行を変更すると、ディレクトリが正しい(更新された)権限と所有権を受け取っていないようです。

関連情報