web-dev-qa-db-ja.com

Sudoコマンドを使用してcronジョブを実行する方法

Sudo コマンドを必要とする cron ジョブを実行することは可能ですか?

好む:

 Sudo rm somefile
117
sayem siam

これがどれほど悪いアイデアなのかは説明しません。簡単に言えば、crontabでSudoを実行するには、パスワードをプレーンテキストのどこかに保存する必要があります。

それは悪い考えです。


以下は、cronを使用して管理タスクを実行する推奨方法です。 ルートのcrontabを変更する場合は、crontabにSudoと書く必要は本当にないので

ルートのcrontabを使用する

次のコマンドを実行します。

Sudo crontab -e

これにより、rootのc​​rontabが開きます。 Sudoは、とにかくrootとして呼び出されるため、このコンテキストでコマンドを実行する必要はありません。

したがって、ルートのcrontabに次を追加するだけです。

@hourly rm somefile

さて、あなたが絶対に安全でなく、パスワードでリスクを取りたい場合、以下はあなた自身のcrontabからコマンドを実行し、パスワードを自動的に入力しますSudoのプロンプトが表示されたら。

繰り返しますが、これは推奨されません


独自のcrontabで、次のようにコマンドを記述します。

@hourly echo "password" | Sudo -S rm somefile

ここでの明らかな欠点は、もし誰かがあなたのcrontabにアクセスしたとしても、あなたのパスワードは平文で読めるということです。

これを行うべきではありません。

237
SirCharlo

Cronディレクトリ(/etc/cron.*)の1つからスクリプトを配置する場合、ルートとして実行されているSudoを使用する必要はありません。

Crontabを使用している場合は、ルートのcrontabを使用する必要があります。これにより、rootとして実行され、Sudoも必要ありません。

Sudo crontab -e
33
tgm4883

ターミナルで次のコマンドを実行します

Sudo visudo

ファイルの最後に次の行を追加しました。

vidyadhar  ALL= NOPASSWD: /bin/rm

上記の例では、vidyadharがユーザー名であり、vidyadharを介してrmコマンドを実行している場合、パスワードを要求しません。

3
Vidyadhar