回答:
これがどれほど悪い考えなのかは説明しません。簡単に言えばsudo
、crontab で実行するには、パスワードをプレーンテキストのどこかに保存する必要があります。
それは悪い考えです。
以下は、cronを介して管理タスクを実行する推奨方法です。ルートのcrontabを変更する場合、crontabに実際に書き込む必要はありませんsudo
。
次のコマンドを実行します。
sudo crontab -e
これによりroot
のcrontab が開きます。とにかくsudo
呼び出されるので、このコンテキストでコマンドを実行する必要はありませroot
ん。
したがって、ルートのcrontabに次を追加するだけです。
@hourly rm somefile
これで、絶対に安全でなく、パスワードでリスクを取りたい場合は、次のコマンドを実行すると、独自のcrontabからコマンドが実行され、のプロンプトに従ってパスワードが自動的に入力されsudo
ます。
繰り返しますが、これは推奨されません。
独自のcrontabで、次のようにコマンドを記述します。
@hourly echo "password" | sudo -S rm somefile
ここでの明らかな欠点は、もし誰かがあなたのcrontabにアクセスした場合、パスワードは平文で読めるということです。
これはすべきではありません。
root
のユーザーのcrontabの代わりに、システム全体のcrontab /etc/crontab
?
sudoers
パスワード要件のないsudoグループのように、ファイルで利用できる微妙な点を明らかにするため、マークを逃しています。
cronディレクトリ(/etc/cron.*
)の1つからスクリプトを配置する場合、sudoがrootとして実行されているため、sudoを使用する必要はありません。
crontabを使用している場合は、ルートのcrontabを使用する必要があります。これにより、rootとして実行され、sudoも必要ありません。
sudo crontab -e
ターミナルで次のコマンドを実行します
sudo visudo
ファイルの最後に次の行を追加しました。
vidyadhar ALL= NOPASSWD: /bin/rm
上記の例では、vidyadharがユーザー名であり、vidyadharを介してrmコマンドを実行している場合、パスワードを要求しません。
sudo rm -rf 'slash'
(そのコマンドを実行していないというユーザーから実行、)、..私は、いや、それは危険な感じ、知らないパスワードを必要としないのでしょうか?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
より安全だろう。
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
、これははるかに安全です。