一部のコマンドでは、なぜ sudo ではなく su が必要なのでしょうか?

一部のコマンドでは、なぜ sudo ではなく su が必要なのでしょうか?

でコマンドを実行することはsudo、ルート ユーザーとしてログインしてコマンドを実行することと同じだと思いました。しかし、 では機能しないsudoが では機能するコマンドがいくつかあることがわかりましたsu

例えば、

sudo > mail.log
bash: mail.log: Permission denied

しかし、実際にsu同じコマンドを入力して実行すると、機能します。

どうしてこれなの?

答え1

このコマンドで何を実行しているか見てみましょう。

sudo > mail.log

>コマンドラインで、stdout をリダイレクトする前に、mail.logファイルを切り捨てようとします。この操作は、通常のユーザーによって実行されます (引数なしのコマンドが開始する前に)。おそらく、通常のユーザーにはファイルsudoへの書き込みアクセス権がありません。mail.log

すべてが正常に動作します。

コマンドを実行してファイル タイプに書き込むために sudo が必要な場合は、次のコマンドを使用します。

sudo "some_command with operands > mail.log"

関連情報