Linux 中 su 命令和sudo命令

本文來源於點擊打開鏈接



su 命令的主要作用是讓你可以在已登錄的會話中切換到另一個用戶。換句話說,這個工具可以讓你在不登出當前用戶的情況下登錄爲另一個用戶。

su 命令經常被用於切換到超級用戶或root用戶(因爲在命令行下工作,經常需要root權限),但是正如前面提到的 su 命令也可以用於切換到任意非root用戶。

 

su 命令切換到root用戶 要輸入的是root用戶的密碼;還有一種方法可以切換到root用戶:運行 su - 命令。

那麼su命令與 su -命令之間有什麼區別呢?前者在切換到root用戶之後仍然保持舊的(或者說原始用戶的)環境,而後者則是創建一個新的環境(由root用戶 ~/.bashrc 文件所設置的環境),相當於使用root用戶正常登陸(從登陸屏幕登陸)。

 

su 命令手冊很清楚地說明了這一點:

 

可選參數 - 可提供的環境爲用戶在直接登錄時的環境。

 

有時候,對於系統管理員root來講,使用其他普通用戶的shell賬戶而不是自己的root shell賬戶更會好一些。尤其是在處理用戶問題時,最有效的方法就是:登錄目標用戶以便重現以及調試問題。     

 

sudo  vs  su

 

這兩個命令的最大區別是:sudo命令需要輸入當前用戶的密碼,su 命令需要輸入root用戶的密碼。

很明顯,就安全而言,sudo命令更好。例如,考慮到需要root訪問權限的多用戶使用的計算機。在這種情況下,使用 su 意味着需要和其他用戶共享root用戶密碼,這顯然不是一種好習慣。

此外,如果要撤銷特定用戶的超級用戶/root用戶的訪問權限,唯一的辦法就是更改root密碼,然後再告知其他用戶新的root密碼。

 

而使用sudo命令要求輸入的是其他用戶自己的密碼,所以,不需要共享root密碼。同時,若要阻止特定用戶訪問root權限,只需調整/etc/sudoers文件中相應配置即可。

 

還有一個區別: sudo 命令只允許使用提升的權限運行單個命令,而su命令會啓動一個新的shell,同時允許使用root權限運行儘可能多的命令,直到明確退出登錄。

儘管 sudo 命令是以目標用戶(默認情況下是 root 用戶)的身份執行命令,但是它們會使用 sudoer 所配置的用戶名來記錄是誰執行命令。而 su 命令是無法直接跟蹤記錄用戶切換到 root 用戶之後執行了什麼操作。

 

大概是因爲使用 su 命令或直接以root用戶身份登錄有風險,所以,一些Linux發行版(如 Ubuntu)默認禁止用root用戶賬戶。鼓勵用戶使用sudo命令。

 

然而,您還是可以成功執行su 命令,而不用輸入root用戶密碼。運行一下命令:

 

sudo su

 

由於你使用sudo運行命令,你只需要輸入當前用戶的密碼。所以,一旦完成操作,su命令將會以root用戶身份運行,這意味着它不會在要求輸入任何密碼。

                                      

發佈了55 篇原創文章 · 獲贊 16 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章