エラー:crontab:正常に動作するにはsuidである必要があります
非rootユーザーのDockerコンテナーにcronjobを設定したい。 Sudoを使用せず、cronをインストールせずにcronを設定することは可能ですか? Alpine Dockerコンテナーを使用しています。
はい、Sudoなしで特定のユーザーで独自のcronを実行できます。各ユーザーはcrontabファイルを持っているため、明示的にインストールする必要はありません。任意のユーザーのcrontabを実行するには、-u
オプションを使用します。-uを使用するには、ユーザーに特権が必要であることに注意してください
$ crontab -u <username> -e
/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>
解決します/etc/cron.allowファイルにcronジョブを実行するために必要なユーザーの名前を追加します。このファイルが存在しない場合は、作成する必要があります。 cron.allowファイルの詳細