パイプはsudoを維持しますが、リダイレクトは維持しないのはなぜですか? [コピー]

パイプはsudoを維持しますが、リダイレクトは維持しないのはなぜですか? [コピー]

パイプ(|)とリダイレクト(<、、、、)の両方<<が標準ストリーム(>>>標準入力標準出力標準エラー)、パイプだけがsudo権限を維持できますが、なぜですか?

働く:

sudo echo "hello" | tee /root/test

動作しません:

sudo echo "hello" > /root/test

ベストアンサー1

パイプ(|)とリダイレクト(<、<<、>、>>)の両方が標準ストリーム(stdin、stdout、stderr)を使用しますが、パイプだけがsudo権限を保持できるのはなぜですか?

これは本当ではありません。あなたは何かを混ぜたようです。

sudo echo "hello" | tee /root/test

これはechorootとして実行されていますが、teerootユーザーではなく現在のユーザーとして実行されています。

これが変化をもたらすでしょう

echo "hello" | sudo tee /root/test

ここでteeプログラムはrootとして実行されるため、/root/testファイルにアクセスできます。

おすすめ記事