パイプ(|
)とリダイレクト(<
、、、、)の両方<<
が標準ストリーム(>
>>
標準入力、標準出力、標準エラー)、パイプだけがsudo
権限を維持できますが、なぜですか?
働く:
sudo echo "hello" | tee /root/test
動作しません:
sudo echo "hello" > /root/test
ベストアンサー1
パイプ(|)とリダイレクト(<、<<、>、>>)の両方が標準ストリーム(stdin、stdout、stderr)を使用しますが、パイプだけがsudo権限を保持できるのはなぜですか?
これは本当ではありません。あなたは何かを混ぜたようです。
sudo echo "hello" | tee /root/test
これはecho
rootとして実行されていますが、tee
rootユーザーではなく現在のユーザーとして実行されています。
これが変化をもたらすでしょう
echo "hello" | sudo tee /root/test
ここでtee
プログラムはrootとして実行されるため、/root/testファイルにアクセスできます。