回答:
による man crond
警告
すべてのcrontabファイルは、通常のファイルまたは通常のファイルへのシンボリックリンクである必要があり、所有者以外の実行可能ファイルまたは書き込み可能ファイルであってはなりません。この要件は、crondコマンドラインで-pオプションを使用して上書きできます。intifyサポートが使用されている場合、シンボリックリンクされたcrontabの変更は、cronデーモンによって自動的に通知されません。cronデーモンは、crontabをリロードするためにSIGHUPシグナルを受信する必要があります。これはinotify APIの制限です。
sendmailがインストールされていない場合、メールの代わりにsyslog出力が使用されます。
それはない場合は、しかし、シンボリックリンクを使用することができ、短いそうで、同様に私の生活のがらくたを悩ませregular files or symlinks to a regular file
、それが使用しなければならない-p
スイッチを。
sudo -u www-data crontab -e
とwww-dataユーザーのcrontabに追加します。その後、userとして実行されますwww-data
。明示的なユーザー列は、ユーザーcrontabに存在しないため、必ず削除してください。
etc/cron.
か?私はcrontabツールがタスクをどこか別の場所に配置するという印象を受けていました。
crontab -e
です、この場合、電話はあなたが望むものではありません。私は探していますが、非rootユーザーとしてユーザーcrontabを実行する方法を見つけていません。
これはセキュリティに影響します。/etc/cron.d/内のスクリプトは、root権限でrootによって実行されます。システムがそのように侵害される可能性があるため、非rootユーザーが所有し、書き込み可能なスクリプトをそこにシンボリックリンクすることは悪い考えです。
Ubuntuのバージョンのcronマンページを確認します(このフォーラムでUbuntuについて話していると思います!)。
このディレクトリ内のファイルはルートが所有する必要があり、実行可能である必要はありません(/ etc / crontabのように構成ファイルです)。run-parts(8)で使用されるのと同じ命名規則に準拠する必要があります。大文字、小文字、数字、アンダースコア、ハイフンのみで構成されます。つまり、ドットを含めることはできません。
Florianが指摘しているように、このファイルが非rootユーザーによって書き込み可能な場合、ジョブはrootによって実行されるため、セキュリティホールになります(ファイル内でジョブの所有者として名前が付けられている人)。また、したがって、それに注意してください
このディレクトリには、/ etc / crontabで使用される形式に従ってタスクを定義するファイルを含めることができます。つまり、ユーザーcronスプールとは異なり、これらのファイルはタスク定義のようにタスクを実行するユーザー名を提供する必要があります。
すなわち、実行するコマンドの前にユーザー名をポップします。
/etc/cron.d/bobsjob
がユーザー「bob」が所有するファイルを指す場合、cronはsyslogメッセージで失敗しますWRONG FILE OWNER (/etc/cron.d/bobsjob)
。