書き込み権限のないフォルダでリダイレクトでファイル作成する
Ubuntuで、ufeを使用して国外からのアクセスを制限するルールをシェルスクリプトで作成し、新しいファイルをリダイレクトで作成しようとした際にパーミッションエラーが発生しました。
sh drop_except_jp.sh > /etc/ufw/after.init.drop_except_jp # -bash: /etc/ufw/after.init.drop_except_jp: 許可がありません
sudoを使ってroot権限で実行してみたのですが、解決しませんでした。
sudo sh drop_except_jp.sh > /etc/ufw/after.init.drop_except_jp
原因と解決策
原因は、sh drop_except_jp.sh
以降のコマンドが通常ユーザで実行されていたためでした。
teeコマンドを使用して/etc/ufw/after.init.drop_except_jp
の部分もrootユーザで実行することで解決しました。
sudo sh drop_except_jp.sh | sudo tee /etc/ufw/after.init.drop_except_jp
標準出力させたくない場合は、以下のように/dev/nullにリダイレクトさせます。
sudo sh drop_except_jp.sh | sudo tee /etc/ufw/after.init.drop_except_jp > /dev/null