天天看點

su和sudo的差別及忘記su密碼後咋辦

一、sudo與su之間的差別

sudo 指令需要輸入目前使用者的密碼,su 指令需要輸入 root 使用者的密碼。另外一個差別是其預設行為。sudo 指令隻允許使用提升的權限運作單個指令,而 su 指令會啟動一個新的 shell,同時允許使用 root 權限運作盡可能多的指令,直到明确登出。

Linux su 指令

su 指令的主要作用是讓你可以在已登入的會話中切換到另外一個使用者。換句話說,這個工具可以讓你在不登出目前使用者的情況下登入為另外一個使用者。

su 指令經常被用于切換到超級使用者或 root 使用者(因為在指令行下工作,經常需要 root 權限),但是 - 正如前面所提到的 - su 指令也可以用于切換到任意非 root 使用者。

如何使用 su 指令切換到 root 使用者,如下隻需在終端直接輸入su即可:

su

不帶指令行參數的 su 指令

如上,su 指令要求輸入的密碼是 root 使用者的密碼。是以,一般 su 指令需要輸入目标使用者的密碼。在輸入正确的密碼之後,su 指令會在終端的目前會話中打開一個子會話。

su -

還有一種方法可以切換到 root 使用者:運作 su - 指令

su - 指令

那麼,su 指令與 su - 指令之間有什麼差別呢?前者在切換到 root 使用者之後仍然保持舊的(或者說原始使用者的)環境,而後者則是建立一個新的環境(由 root 使用者 ~/.bashrc 檔案所設定的環境),相當于使用 root 使用者正常登入(從登入螢幕登入)。

sudo vs. su

現在,我們已經讨論了關于 su 指令的基礎知識,是時候來探讨一下 sudo 和 su 指令之間的差別了。

關于密碼:

兩個指令的最大差別是:sudo 指令需要輸入目前使用者的密碼,su 指令需要輸入 root 使用者的密碼。

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

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

而使用 sudo 指令就不一樣了,你可以很好的處理以上的兩種情況。鑒于 sudo 指令要求輸入的是其他使用者自己的密碼,是以,不需要共享 root 密碼。同時,想要阻止特定使用者通路 root 權限,隻需要調整 sudoers 檔案中的相應配置即可。