跳轉到內容

Unix 指南/解釋/成為 Root

來自華夏公益教科書

大多數使用者帳戶對 Unix 的訪問許可權有限。例如,使用者通常無法刪除其他使用者的檔案或系統的一部分。使用者通常可以在他們的主目錄中安裝新軟體,但不能安裝到系統目錄,例如/usr. 若要安裝此類軟體,更改系統檔案的許可權,在保留埠 < 1024 上啟動伺服器,或執行其他禁止普通使用者執行的任務,您必須成為超級使用者。超級使用者具有root的使用者名稱、零的使用者 ID,並且可以不受系統許可權限制地執行任何操作 - 對使用者活動的限制永遠不適用於 root

注意:對於 UbuntuKubuntu,請參閱 此處

以 Root 使用者登入

[編輯 | 編輯原始碼]

訪問超級使用者帳戶的最古老方法是以root使用者身份登入,使用 root 密碼。出於安全原因,以及由於網上的許多駭客似乎都知道 root 的使用者名稱,因此通常只允許在本地控制檯上進行 root 登入。(某些系統允許 root 透過 ssh 登入,因為這是唯一的方法。好的系統管理員會在不再需要時停用 root 登入,例如,在執行 OpenSSH 的系統上,取消註釋/etc/ssh/sshd_config中的“PermitRootLogin no”行。)

一般來說,使用 root 登入是不好的。應該要求使用susudo,以便使用者必須使用普通使用者帳戶進行身份驗證,然後再成為 root。使用 root 登入的唯一正當理由是在另一個使用者帳戶建立之前和“su”或“sudo”經過測試之前,在 Unix 系統的初始設定期間。在此之後,應在本地控制檯上也停用 root 登入。

一些安裝程式允許您在安裝期間建立第一個使用者帳戶。您永遠不會獲得 root 密碼或進行 root 登入,但第一個使用者帳戶可以使用sudo。Ubuntu Linux 和 Mac OS X 都是執行此操作的發行版。

使用 su

[編輯 | 編輯原始碼]

su命令允許任何知道 root 密碼的人獲得 root shell,從而擁有 root 的所有許可權

$ su
Password:
#

縮寫“su”代表切換使用者替代使用者。您可以指定一個使用者(su USERNAME),但預設情況下,它會將您切換到 root。

如果 su 後面跟著一個“-”(su -);shell 型別、工作目錄、環境變數和 shell 別名將與您切換到的使用者(root)正常登入(在虛擬終端的“使用者”提示符下)時相同。

某些系統要求您加入 wheel 組才能訪問 su。要求是您的使用者名稱列在/etc/group中,位於組“wheel”的行的組 ID 為零。此要求在某些系統上不存在。

當您完成使用 su 建立的 root shell 後,應退出 root shell,以避免在以後的正常使用者活動中意外使用它

# exit
exit
$

使用 sudo

[編輯 | 編輯原始碼]

有一個名為 sudo 的高度可配置命令,幾個類 Unix 發行版都包含它。這允許您以 root 使用者身份執行單個命令。在大多數情況下,執行sudo會提示您輸入自己的使用者帳戶密碼,而不是 root 密碼,因此sudo非常適合那些不希望記住單獨的 root 密碼的管理員,尤其是在他們很少使用 root 的情況下。

以 root 使用者身份執行 COMMAND 的語法是

$ sudo COMMAND

例如,我們嘗試檢視透過類 Unix 系統傳送的電子郵件的日誌

$ less /var/log/maillog
/var/log/maillog: Permission denied

由於許可權被拒絕,我們使用 sudo 以 root 使用者身份執行命令

$ sudo less /var/log/maillog

另一種方法是使用!!命令。“bang-bang”擴充套件到重新列印輸入到 shell 的最後一個命令,然後執行它。

$ sudo !!
sudo less /var/log/maillog

請注意,這是一個bash功能。此功能在sh中不起作用。預設情況下,大多數現代類 Unix 系統傾向於使用 bash。只是不要將它用於 shell 指令碼!

配置 sudo

[編輯 | 編輯原始碼]

在某些系統上,您必須在使用 sudo 之前對其進行配置。這是要在 /etc/sudoers 中新增的有用配置行。它可能已經存在,但被註釋掉了。

%wheel  ALL=(ALL)       ALL

這意味著什麼?第一個詞,“%wheel”是允許使用 sudo 執行某項操作的使用者。百分號表示 wheel 組中的所有使用者都可以這樣做。第一個“ALL”表示這在所有計算機上都是允許的。(如果您將相同的 sudoers 檔案複製到幾個不同的類 Unix 系統,這將很有用。)“(ALL)”是命令將擁有其許可權的使用者。我們可以說“(root)”但任何可以使用 root 的人都可以使用所有其他帳戶,所以我們只說“(ALL)”。最後一個“ALL”表示允許哪些命令。

因此,該行規定wheel 組中的每個使用者都可以以任何使用者身份執行任何命令,包括 root。唯一的要求是使用者輸入密碼:他們自己的密碼,而不是 root 的密碼。

有用的預設值

[編輯 | 編輯原始碼]

此行在 /etc/sudoers 中停用兩個選項。

Defaults        !insults, !lecture

“insults”功能會對輸入錯誤密碼的任何使用者進行隨機辱罵。“lecture”會在使用者第一次使用“sudo”(在系統每次啟動後)時顯示一條訊息。它適用於管理員授予(可能有限的)sudo 訪問許可權給許多使用者的系統;如果只有管理員使用 sudo,那麼此選項就沒有必要了。

華夏公益教科書