Pyスクリプトを実行するcrontabコマンドを5分ごとに実行したい。 pyスクリプトは、/ var/www/logs /内で深夜ローテーションのログファイルを生成します。logsディレクトリには777のアクセス許可があります。
ログファイルには午前0時のローテーションがあり、新しいファイルが作成されると、ルート所有者として作成されます。他のスクリプトも同じファイルに書き込むため、所有権がwww-dataのままになるようにする方法.
1つの方法は、コマンドを入力することです。
crontab -u www-data -e
これは正常に機能しますが、すべてのcronコマンドをrootユーザーで管理したいです。
私はSudoでも同じことを試みましたが、所有者としてrootで作成しますが、これは私が望むものではありません。
したい
コメントで説明したように、suはwww-dataでは使用できないため、システムで使用可能な場合は、代わりにSudoを使用できます。マニュアルページから
Sudo、sudoedit —別のユーザーとしてコマンドを実行します
あなたの場合、これはあなたが使用することを意味します
Sudo crontab -e
rootユーザーとしてcrontabを編集します。 crontabの内部にSudo -u www-data python
コマンドを追加して、python
ad user www-data
を実行します。
*/5 * * * * Sudo -u www-data python /my/python/log/script.py
さらなる回避策ですが、スクリプトをそのままroot
として実行させ、root
によってファイルを作成することもできます。そして最後に追加するだけではありません
&& Sudo chown www-data <your Log file>
最終的にファイルの所有権をwww-data
に転送します。
(フォルダよりも多くのファイルがある場合は、フォルダ全体でchownを実行する「再帰的」の-R
フラグとそのコンテンツにも関心があるでしょう)
Rootユーザーの下ですべてのcronコマンドを保守したい。
すべてのcron
ジョブ(さまざまなユーザーとして実行可能)を1か所で維持するには、crontab
コマンドを忘れて、代わりにファイル/etc/crontab
のシステム全体のcrontabを編集するか、 /etc/cron.d
ディレクトリにcrontabを所有します。予想どおり、ルートアクセスが必要になります。
これらのファイルは他のcrontabとよく似ていますが、ユーザー名列が含まれているため、ターゲットユーザーを指定するだけで、Sudo
などを使用する必要はありません。
コマンドcrontab
とは異なり、システム構成ファイルを直接編集しているため、エディターを終了した後に変更がチェックされないことに注意してください。したがって、十分に注意して編集してください。