sudo .. » ファイル名でpermission denied
以下の様にsudoコマンドの結果をファイルに書き込もうとするとエラーになる場合がある。
$ sudo systemctl status nginx >> /var/log/nginx.log
systemctlコマンドはroot権限で実行されるが、>> /var/log/nginx.logの部分は実行ユーザーの権限で実行される。
そのため、/var/log/nginx.logに書き込む権限がない場合はpermission deniedで失敗する。
sudoコマンドの実行結果をroot権限で書き込みたい場合
root権限でリダイレクトしたい場合はsh -cを使って以下のように書く。
$ sudo sh -c "systemctl status nginx >> /var/log/nginx.log"
これであれば-cで渡したコマンド全体がroot権限で実行されるのでpermission deniedで失敗することはない。
\第一線のプログラマーの行動原理を学べる!/
