File-Permissions
為什麼我可以使用 sudo vi 更新 root 擁有的文件,但不能使用 sudo echo ‘Thing’ >> file 在其上追加一行?
我希望腳本能夠自動從另一個網站遷移網站,以便將包含附加到 /etc/httpd/conf.d/vhosts.conf 文件中。
但是,當我嘗試使用 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 文件以保存並關閉它。
我錯過了什麼?
Sudo 提升了它呼叫的程序,它不會提升目前 shell 的任何處理,如重定向、萬用字元等。
文件重定向
>> /etc/httpd/conf.d/vhosts.conf
正在由您目前的shell 處理,該 shell 仍在您目前的權限下執行。你可以試試這樣的。
sudo bash -c 'echo "Include thing" >> /etc/httpd/conf.d/vhosts.conf'
或者
echo "Include thing" | sudo tee -a /etc/httpd/conf.d/vhosts.conf