當你剛開始使用 Linux 時,你將發現與 Windows 的很多不同。其中一個“不同的東西”是 root 使用者的概念。
在這個初學者系列中,我將解釋幾個關於 Ubuntu 的 root 使用者的重要的東西。
請記住,儘管我正在從 Ubuntu 使用者的角度編寫這篇文章,它應該對大多數的 Linux 發行版也是有效的。
你將在這篇文章中學到下面的內容:
在 Linux 中,有一個稱為 root 的超級使用者。這是超級管理員賬號,它可以做任何事以及使用系統的一切東西。它可以在你的 Linux 系統上存取任何檔案和執行任何命令。
能力越大,責任越大。root 使用者給予你完全控制系統的能力,因此,它應該被謹慎地使用。root 使用者可以存取系統檔案,執行更改系統設定的命令。因此,一個錯誤的命令可能會破壞系統。
這就是為什麼 Ubuntu 和其它基於 Ubuntu 的發行版預設鎖定 root 使用者,以從意外的災難中挽救你的原因。
對於你的日常任務,像移動你家目錄中的檔案,從網際網路下載檔案,建立文件等等,你不需要擁有 root 許可權。
打個比方來更好地理解它。假設你想要切一個水果,你可以使用一把廚房用刀。假設你想要砍一顆樹,你就得使用一把鋸子。現在,你可以使用鋸子來切水果,但是那不明智,不是嗎?_
這意味著,你不能是 Ubuntu 中 root 使用者或者不能使用 root 許可權來使用系統嗎?不,你仍然可以在 sudo
的幫助下來擁有 root 許可權來存取(在下一節中解釋)。
要點: 使用於常規任務,root 使用者許可權太過強大。這就是為什麼不建議一直使用 root 使用者。你仍然可以使用 root 使用者來執行特殊的命令。
對於一些系統的特殊任務來說,你將需要 root 許可權。例如。如果你想通過命令列更新 Ubuntu,你不能作為一個常規使用者執行該命令。它將給出許可權被拒絕的錯誤。
apt updateReading package lists... DoneE: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)E: Unable to lock directory /var/lib/apt/lists/W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
那麼,你如何像 root 使用者一樣執行命令?簡單的答案是,在命令前新增 sudo
,來像 root 使用者一樣執行。
sudo apt update
Ubuntu 和很多其它的 Linux 發行版使用一個被稱為 sudo
的特殊程式機制。sudo
是一個以 root 使用者(或其它使用者)來控制執行命令存取的程式。
實際上,sudo
是一個非常多用途的工具。它可以設定為允許一個使用者像 root 使用者一樣來執行所有的命令,或者僅僅一些命令。你也可以設定為無需密碼即可使用 sudo 執行命令。這個主題內容比較豐富,也許我將在另一篇文章中詳細討論它。
就目前而言,你應該知道當你安裝 Ubuntu 時,你必須建立一個使用者賬號。這個使用者賬號在你系統上以管理員身份來工作,並且按照 Ubuntu 中的預設 sudo 策略,它可以在你的系統上使用 root 使用者許可權來執行任何命令。
sudo
的問題是,執行 sudo 不需要 root 使用者密碼,而是需要使用者自己的密碼。
並且這就是為什麼當你使用 sudo
執行一個命令,會要求輸入正在執行 sudo
命令的使用者的密碼的原因:
[email protected]:~$ sudo apt update[sudo] password for abhishek:
正如你在上面範例中所見 abhishek
在嘗試使用 sudo
來執行 apt update
命令,系統要求輸入 abhishek
的密碼。
如果你對 Linux 完全不熟悉,當你在終端中開始輸入密碼時,你可能會驚訝,在螢幕上什麼都沒有發生。這是十分正常的,因為作為預設的安全功能,在螢幕上什麼都不會顯示。甚至星號(*
)都沒有。輸入你的密碼並按確認鍵。
要點:為在 Ubuntu 中像 root 使用者一樣執行命令,在命令前新增
sudo
。 當被要求輸入密碼時,輸入你的賬戶的密碼。當你在螢幕上輸入密碼時,什麼都看不到。請繼續輸入密碼,並按確認鍵。
你可以使用 sudo
來像 root 使用者一樣執行命令。但是,在某些情況下,你必須以 root 使用者身份來執行一些命令,而你總是忘了在命令前新增 sudo
,那麼你可以臨時切換為 root 使用者。
sudo
命令允許你來模擬一個 root 使用者登入的 shell ,使用這個命令:
sudo -i
[email protected]:~$ sudo -i[sudo] password for abhishek:[email protected]:~# whoamiroot
你將注意到,當你切換為 root 使用者時,shell 命令提示字元從 $
(美元符號)更改為 #
(英鎊符號)。我開個(拙劣的)玩笑,英鎊比美元強大。
雖然我已經向你顯示如何成為 root 使用者,但是我必須警告你,你應該避免作為 root 使用者使用系統。畢竟它有阻攔你使用 root 使用者的原因。
另外一種臨時切換為 root 使用者的方法是使用 su
命令:
sudo su
如果你嘗試使用不帶有的 sudo
的 su
命令,你將遇到 “su authentication failure” 錯誤。
你可以使用 exit
命令來恢復為正常使用者。
exit
現在你知道,root 使用者在基於 Ubuntu 發行版中是預設鎖定的。
Linux 給予你在系統上想做什麼就做什麼的自由。解鎖 root 使用者就是這些自由之一。
如果出於某些原因,你決定啟用 root 使用者,你可以通過為其設定一個密碼來做到:
sudo passwd root
再強調一次,不建議使用 root 使用者,並且我也不鼓勵你在桌面上這樣做。如果你忘記了密碼,你將不能再次在 Ubuntu 中更改 root 使用者密碼。(LCTT 譯註:可以通過單使用者模式修改。)
你可以通過移除密碼來再次鎖定 root 使用者:
sudo passwd -dl root
我希望你現在對 root 概念理解得更好一點。如果你仍然有些關於它的困惑和問題,請在評論中讓我知道。我將嘗試回答你的問題,並且也可能更新這篇文章。