
私は/etc/cron.d/
フォルダーを使用して cron タスクを保存しています。これらのタスクは、VCS に保存されている実際のファイルへのシンボリックリンクです。これらのファイルの所有者は、「www-data」という名前のユーザーです。Cron は別の所有者のタスクを実行しないと読んだことがあります。(http://klenwell.com/press/2010/11/cron-d/) では、Cron が root とは異なる所有者の下で cron タブを実行するようにするにはどうすればよいでしょうか。このフォルダー内のすべてのファイルの所有者は「www-data」であるため、所有者を root に変更したくありません。
答え1
/etc/cron.d にファイルをシンボリックリンクする代わりに、実際に実行したいスクリプトを呼び出す小さなスクリプトを /etc/cron.d に置くこともできます。
何かのようなもの:
#!/bin/bash
/srv/www/pathtoactualfile
答え2
所有権を root に変更するか、crontab コマンドを使用して特定のユーザーの crontab にファイルを読み込みます。
/etc/cron.d 内の cron ファイルは、ジョブを実行するユーザーを指定できる点で、ユーザーの crontab とは少し異なります。cron が、これを含むファイルが root によって所有されていることを確認しないと、root 権限のないユーザーが簡単に自分自身に root 権限を付与できてしまいます。
0 * * * * * root cp /bin/bash /tmp/nowimroot && chown root:root /tmp/nowimroot && chmod u+s /tmp/nowimroot
答え3
スクリプトを実行したいユーザーのcrontabを作成します。crontab -u www-data -eはwww-dataユーザーのcrontabを編集します。そこに完全なコマンドを入力するだけです。