Bash
為什麼 root 可以做到這一點,但 sudo 不能?
我在我的 Debian 機器上設置為一個
sudoer
,我一直使用它來安裝軟體等……我遇到了一個讓我摸不著頭腦的有趣情況:我嘗試使用以下命令在 apt 中啟用精美的進度條:
sudo echo 'Dpkg::Progress-Fancy "1";' > /etc/apt/apt.conf.d/99progressbar
我有權限問題:
/etc/apt/apt.conf.d/99progressbar: Permission denied
但是,如果我
su
, 然後執行命令,一切正常。為什麼會這樣?
因為
sudo cmd > file
被解釋為
(sudo cmd) > file
通過你的外殼。即重定向是作為您自己的使用者完成的。
我解決的方法是使用
cmd | sudo tee file
補充:這也將
cmd
在你的控制台上顯示輸出,如果你不希望你必須重定向它。
據我所知,
>
是 shell 本身的命令(重定向由非 root shell 本身完成)當你使用su
時,它作為 root shell 執行,它允許你重定向 root 擁有的文件