當使用sudo命令來執行乙個linux命令時,我們希望這個linux命令能以root身份執行,但有時候都會遇到「permission denied」的錯誤,結果發現是linux命令中只有部分語句是按root使用者執行的。
比如,如果以root身份執行下面的命令,沒有任何問題:
$ echo 12000 > /proc/sys/vm/dirty_writeback_centisecs
但,如果這樣執行:
$ sudo echo 12000 > /proc/sys/vm/dirty_writeback_centisecs
就會得到「permission denied」的錯誤。
為什麼?/bin/echo 是以root身份執行的,因為你使用了sudo,但將echo的輸出結果寫入root所有的檔案時,仍然是按照你自己的身份執行的,而不是root身份。shell的執行順序是先於sudo執行了輸出重定向。
解決辦法是,使用管道(pipeline)將整個命令送給sudo。有幾種方式可以做到這些,我最喜歡的一種是:
echo "echo 12000 > /proc/sys/vm/dirty_writeback_centisecs" | sudo sh
這樣,不管命令有多複雜,都可以把它放到 | sudo sh 之前,這樣執行sudo 命令非常保險,只是稍微增加了一點複雜度,但是十分有效的避免了遇到「permission denied」這種錯誤。 linux 下使用sudo 授權
linux下使用sudo授權1 使用root使用者授權 有兩種方法 a vim etc sudoers root all all all 允許操作的主機 想成為誰 授權的命令 在下面新增 使用者名稱 all all all 授權所有命令的許可權 all all usr bin cat 授權單個命令 ...
linux為什麼sudo命令執行變慢
cqq kali uname a linux kali 4.16.0 kali2 amd64 1 smp debian 4.16.16 2kali1 2018 06 25 x86 64 gnu linux 最近發現使用sudo命令的時候變得比平常慢了很多倍,然後網上搜原因,發現是修改了 etc ho...
docker取消sudo執行
docker為什麼要用sudo執行?docker的守護執行緒繫結的是unix socket,這個套接字預設屬於root使用者。docker服務程序都是以root賬戶執行的。解決方法 建立docker使用者組,把當前使用者加入到docker使用者組裡面。這樣就可以直接執行docker命令了。sudo ...