1糖声、超級用戶概念與重要性
在所有Linux系統(tǒng)中,系統(tǒng)都是通過UID來區(qū)分用戶權限級別的咳促,而UID為0的用戶被系統(tǒng)約定為是具有超級權限绑青。超級用戶具有在系統(tǒng)約定的最高權限范圍內操作,所以說超級用戶可以完成系統(tǒng)管理的所有工作怠褐。我們可以通過/etc/passwd 來查得UID為0的用戶是root畏梆,而且只有root對應的UID為0,從這一點來看,root用戶在系統(tǒng)中是無可替代的至高地位和無限制權限奠涌。root用戶在系統(tǒng)中就是超級用戶宪巨。
在系統(tǒng)中,每個文件铣猩、目錄和進程揖铜,都歸屬于某一個用戶,沒有用戶許可其它普通用戶是無法操作的达皿,但對root除外天吓。root用戶的特權性還表現在root可以超越任何用戶和用戶組來對文件或目錄進行讀取、修改或刪除(在系統(tǒng)正常的許可范圍內)峦椰;對可執(zhí)行程序的執(zhí)行龄寞、終止;對硬件設備的添加汤功、創(chuàng)建和移除等物邑;也可以對文件和目錄進行屬主和權限進行修改,以適合系統(tǒng)管理的需要(因為root是系統(tǒng)中權限最高的特權用戶)滔金。
與超級用戶相對的就是普通用戶和虛擬(也被稱為偽裝用戶)色解,普通和偽裝用戶都是受限用戶,但為了完成特定的任務餐茵,普通用戶和偽裝用戶也是必須的科阎。Linux是一個多用戶、多任務的操作系統(tǒng)忿族,多用戶主要體現在用戶的角色的多樣性锣笨,不同的用戶所分配的權限也不同,這也是Linux系統(tǒng)比Windows系統(tǒng)更為安全的本質所在道批。
由于超級權限在系統(tǒng)管理中的不可缺少的重要作用错英,為了完成系統(tǒng)管理任務,我們必須用到超級權限隆豹;在一般情況下椭岩,為了系統(tǒng)安全,對于一般常規(guī)級別的應用璃赡,不需要root用戶來操作完成簿煌,root用戶只是被用來管理和維護系統(tǒng)之用;比如系統(tǒng)日志的查看鉴吹、清理,用戶的添加和刪除惩琉。
在不涉及系統(tǒng)管理的工作的環(huán)境下豆励,普通用戶足可以完成,比如編寫一個文件,聽聽音樂良蒸;用gimp 處理一個圖片等...... 基于普通應用程序的調用技扼,大多普通用戶就可以完成。
當我們以普通權限的用戶登錄系統(tǒng)時嫩痰,有些系統(tǒng)配置及系統(tǒng)管理必須通過超級權限用戶完成剿吻,比如對系統(tǒng)日志的管理,添加和刪除用戶串纺。而如何才能不直接以root登錄丽旅,卻能從普通用戶切換到root用戶下才能進行操作系統(tǒng)管理需要的工作,這就涉及到超級權限管理的問題纺棺。
獲取超級權限的過程榄笙,就是切換普通用戶身份到超級用戶身份的過程;這個過程主要是通過su和sudo來解決祷蝌。
2茅撞、超級用戶在系統(tǒng)管理中的作用
(1)對任何文件、目錄或進程進行操作
但這種操作是在系統(tǒng)最高許可范圍內的操作巨朦,有些操作就是具有超級權限的root也無法完成米丘。比如/proc 目錄,/proc 是用來反應系統(tǒng)運行的實時狀態(tài)信息的糊啡,因此即便是root也無法對其進行寫操作拄查。
(2)對于涉及系統(tǒng)全局的系統(tǒng)管理
硬件管理、文件系統(tǒng)管理悔橄、用戶管理以及涉及到的系統(tǒng)全局配置等等......如果執(zhí)行某個命令或工具時靶累,提示無權限,大多是需要超級權限來完成癣疟,比如用adduser來添加用戶挣柬,這個只能用通過超級權限的用戶來完成。
3睛挚、超級用戶的授權
(1)su命令
su命令就是切換用戶的工具邪蛔。比如我們以普通用戶beinan登錄的,但要添加用戶任務扎狱,執(zhí)行useradd 侧到,beinan用戶沒有這個權限,而這個權限恰恰由root所擁有淤击。解決辦法無法有兩個匠抗,一是退出beinan用戶,重新以root用戶登錄污抬,但這種辦法并不是最好的汞贸;二是我們沒有必要退出beinan用戶绳军,可以用su來切換到root下進行添加用戶的工作,等任務完成后再退出root矢腻。我們可以看到當然通過su 切換是一種比較好的辦法门驾。通過su可以在用戶之間切換,如果超級權限用戶root向普通或虛擬用戶切換不需要密碼多柑;而普通用戶切換到其它任何用戶都需要密碼驗證奶是。
su 在不加任何參數,默認為切換到root用戶竣灌,但沒有轉到root用戶家目錄下聂沙,也就是說這時雖然是切換為root用戶了,但并沒有改變root登錄環(huán)境帐偎;用戶默認的登錄環(huán)境逐纬,可以在/etc/passwd 中查得到,包括家目錄削樊,SHELL定義等豁生。
(2)sudo命令
su 的確為管理帶來方便,通過切換到root下漫贞,能完成所有系統(tǒng)管理工具甸箱,只要把root的密碼交給任何一個普通用戶,他都能切換到root來完成所有的系統(tǒng)管理工作迅脐,但通過su切換到root后芍殖,也有不安全因素;比如系統(tǒng)有10個用戶谴蔑,而且都參與管理豌骏。如果這10個用戶都涉及到超級權限的運用,做為管理員如果想讓其它用戶通過su來切換到超級權限的root隐锭,必須把root權限密碼都告訴這10個用戶窃躲;如果這10個用戶都有root權限,通過root權限可以做任何事钦睡,這在一定程度上就對系統(tǒng)的安全造成了威協蒂窒,我們絕對不能保證這10個用戶都能按正常操作流程來管理系統(tǒng),其中任何一人對系統(tǒng)操作的重大失誤荞怒,都可能導致系統(tǒng)崩潰或數據損失洒琢,所以su 工具在多人參與的系統(tǒng)管理中,并不是最好的選擇褐桌,su只適用于一兩個人參與管理的系統(tǒng)衰抑,畢竟su并不能讓普通用戶受限的使用,這時最好是針對每個管理員的技術特長和管理范圍荧嵌,并且有針對性的下放給權限停士,并且約定其使用哪些工具來完成與其相關的工作挖帘,這時我們就有必要用到 sudo。
通過sudo恋技,我們能把某些超級權限有針對性的下放,并且不需要普通用戶知道root密碼逻族,所以sudo 相對于權限無限制性的su來說蜻底,還是比較安全的,所以sudo 也能被稱為受限制的su 聘鳞,另外sudo 是需要授權許可的薄辅,所以也被稱為授權許可的su。
sudo 執(zhí)行命令的流程是當前用戶切換到root(或其它指定切換到的用戶)抠璃,然后以root(或其它指定的切換到的用戶)身份執(zhí)行命令站楚,執(zhí)行完成后,直接退回到當前用戶搏嗡,而這些的前提是要通過sudo的配置文件/etc/sudoers來進行授權窿春。
(3)編寫/etc/sudoers文件
sudo的配置文件是/etc/sudoers ,我們可以用他的專用編輯工具visodu 采盒,此工具的好處是在添加規(guī)則不太準確時旧乞,保存退出時會提示給我們錯誤信息。配置好后磅氨,可以用切換到授權的用戶下尺栖,通過sudo -l 來查看哪些命令是可以執(zhí)行或禁止的。
/etc/sudoers 文件中每行算一個規(guī)則烦租,前面帶有#號可以當作是說明的內容延赌,并不執(zhí)行;如果規(guī)則很長叉橱,一行列不下時挫以,可以用\號來續(xù)行,這樣看來一個規(guī)則也可以擁有多個行赏迟。
/etc/sudoers 的規(guī)則可分為兩類屡贺;一類是別名定義,另一類是授權規(guī)則锌杀;別名定義并不是必須的甩栈,但授權規(guī)則是必須的。
具體使用可以查看man sudoers糕再。