sudo echoの「xyz」の出力をファイルにリダイレクトすると、「権限の拒否」というメッセージが表示されるのはなぜですか? [コピー]

sudo echoの「xyz」の出力をファイルにリダイレクトすると、「権限の拒否」というメッセージが表示されるのはなぜですか? [コピー]

私はなぜ受けますか?

-bash: test: Permission denied

私が走るとき

sudo echo "xyz" > test

ディレクトリ権限は次のとおりです。

drwxr-xr-x 3 root root 4096 2014-08-05 16:26 

ディレクトリにファイル生成を使用することに問題はありませんsudo。しかし、なぜsudo echoを使って入ることができないのですか?

答え1

echoこれは、rootとしてのみコマンドを実行するために発生します。出力リダイレクトは(ルートではなく)シェルで処理されます。これを防ぐには、シェルリダイレクトを使用せず、実際のコマンドを使用して書き込みを処理してくださいtee。あなたがしたいことは次のようにすることができます:

echo "xyz" | sudo tee test > /dev/null

(出力をリダイレクトしないと標準出力にも出力されteeます)xyz

関連情報