web-dev-qa-db-ja.com

非rootユーザーでcronjobを設定する方法は?

エラー:crontab:正常に動作するにはsuidである必要があります

非rootユーザーのDockerコンテナーにcronjobを設定したい。 Sudoを使用せず、cronをインストールせずにcronを設定することは可能ですか? Alpine Dockerコンテナーを使用しています。

4
LazyCoder

はい、Sudoなしで特定のユーザーで独自のcronを実行できます。各ユーザーはcrontabファイルを持っているため、明示的にインストールする必要はありません。任意のユーザーのcrontabを実行するには、-uオプションを使用します。-uを使用するには、ユーザーに特権が必要であることに注意してください

 $ crontab -u <username> -e
8
sanath meti

/etc/crontabはシステム全体のcrontabです。

/etc/crontabの形式は次のとおりです。

# m h dom mon dow user      command
*   *  *   *   *  someuser  echo 'foo'

crontab -eはユーザーごとですが、-u引数を指定せずにcrontabコマンドを実行すると、現在のユーザーのcrontabに移動します。 crontab -e -u <username>を実行すると、特定のユーザーを編集できますcrontab

user crontabごとに'user'フィールドがないことに注意してください。

# m h  dom mon dow  command
*   *   *   *   *   echo 'foo'

混乱する可能性のあるcrontabの特徴は、rootにも独自のcrontabがあることです。例えばcrontab -e -u rootは編集しません/etc/crontab

詳細については、cronの設定を参照してください: https://www.freebsd.org/doc/handbook/configtuning-cron.html

ほとんどのLinuxディストリビューションでは、ユーザーごとにcrontabが通常次の場所に格納されます:/var/spool/cron/crontabs/<username>

3
Allan

解決します/etc/cron.allowファイルにcronジョブを実行するために必要なユーザーの名前を追加します。このファイルが存在しない場合は、作成する必要があります。 cron.allowファイルの詳細

0
Aurelio Vivas