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)