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で失敗することはない。
\第一線のプログラマーの行動原理を学べる!/