別の Web サイトから Web サイトを自動的に移行するスクリプトで、/etc/httpd/conf.d/vhosts.conf ファイルに Includes を追加できるようにしたいと思います。
ただし、echo を使用してファイルの末尾に文字列を追加しようとすると、次のようになります。
$ sudo echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf
-bash: /etc/httpd/conf.d/vhosts.conf: Permission denied
それでも、vi /etc/httpd/conf.d/vhosts.conf にアクセスし、行を追加して :wq でファイルを保存し、閉じることはできます。
何が足りないのでしょうか?
答え1
Sudo は、呼び出すプロセスを昇格しますが、リダイレクト、グロブなどの現在のシェルの処理は昇格しません。
ファイルのリダイレクト>> /etc/httpd/conf.d/vhosts.conf
は、現在シェルは、現在の権限で引き続き実行されています。
このようなことを試してみてはいかがでしょうか。
sudo bash -c 'echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf'
または
echo "Include thing" | sudo tee -a /etc/httpd/conf.d/vhosts.conf