でコマンドを実行することは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"