TL; DR
パイプで sudo tee しましょう。
$ cat <<EOS | sudo tee /root/script.txt foo bar hoge EOS
一般ユーザから sudo でコマンド実行していると、出力をファイルに書き込みたいときがあると思います。そういったとき、例えば次のように出力リダイレクトを使うのを真っ先に思いつくと思います。
$ sudo cat <<EOS >/root/script.txt foo bar hoge text EOS
一件この出力リダイレクトは sudo で実行されるように見えますが、実際には実行ユーザの権限で書き込みを行おうとするので、当然ながら "Permission denied" を頂戴することになります。
ここで使うのが tee というコマンドで、これは入力を標準出力とファイルに同時出力というものですが、そのファイル出力を利用しようというわけです。
上記の例であれば、cat の実行自体には sudo は要らず、書込みを行う tee に sudo を付ける形になります。
$ cat <<EOS | sudo tee /root/script.txt foo bar hoge EOS
ちなみに、これを見つけるまでは次のようにして sudo cp して回避していました。
$ cat <<EOS >/tmp/script.txt foo bar hoge EOS $ sudo cp /tmp/script.txt /root/