私はこの問題に頻繁に遭遇しますが、なぜこれが起こるのか混乱しています。次の例を考えてみましょう。
[me@localhost:~]$ sudo command > /some/file.log
user
私が知っている限り、/some/file.log
コマンドがで実行されても書き込み権限がないと機能しませんsudo
。このサイトでいくつかの解決策を見つけたので、問題ではありませんが、知りたいです。その理由は何ですか?コマンドはユーザーとして実行されますが、sudo
リダイレクトはユーザーとして実行されるのはなぜですか?これを支持する妥当な理由はありますか?
答え1
sudo
コマンドを実行すると、通常のユーザーとして実行されている現在のシェルによってcommand
出力リダイレクトが実行されます。/some/file.log
出力を作成しようとすることができるタスクはroot
次のとおりです。
sudo bash -c "command > /some/file.log"