Command-Line

使用 sudo 執行命令與以 root 使用者執行命令有什麼區別?

  • April 27, 2021

我對 linux 相當陌生,直到現在,一直認為sudo <command>與 exectuing <command>as相同root。我最近玩了一下這個ls命令,並註意到一個輕微但令人困惑的區別。

執行時sudo ls -lap(在根目錄中),我得到以下輸出:

sudo ls -lap

與當我ls -lap作為root(或作為沒有 sudo的普通使用者)執行時:

ls -lap

除了明顯但不重要的顏色差異之外,如果您仔細觀察,您會發現該-p選項(顯示/後目錄)在links使用sudo.

兩者之間有實際區別嗎?或者這是一個錯誤?

無論哪種方式,這是否意味著兩個命令的處理方式不同?

ls是一個別名,並且sudo不知道它。當您將使用者切換為 becomeroot時,您的互動式 shell 會執行其啟動腳本並設置相關別名。

嘗試執行alias lsas root,而不是via sudo,以查看相應的命令。

符號連結的輸出差異似乎是向輸出添加顏色的副作用:

ls -lp --color=tty /

在。

ls -lp --color=never /

將顯示相同的差異。

引用自:https://unix.stackexchange.com/questions/646976