Shell Script 資料一覧
sudoによるコマンド実行結果を書き込み権限のないファイルにリダイレクトする方法
2015/3/6更新
sudoでコマンドを実行した結果を書き込み権限のないファイルにリダイレクトしようとするとパーミッションエラーになる。
% ls -l /tmp/test -rw-r--r-- 1 root root 3 3月 6 22:42 /tmp/test % sudo id > /tmp/test -bash: /tmp/test: 許可がありません
コマンド自体はrootで実行されるものの、リダイレクトは一般ユーザで実行されるのでこのような現象になる。
リダイレクトも含めてrootで実行したい場合はsudoでshを実行し、-cオプションでリダイレクトを含めたコマンド全体を「"」でくくればよい。
% sudo sh -c "id > /tmp/test" % cat /tmp/test uid=0(root) gid=0(root) groups=0(root)