Linux系統中的root超級許可權的控制

來源:互聯網
上載者:User

超級使用者是系統最高許可權的擁有者,是系統管理唯一的勝任者;由於許可權的超級並且達到無所不能的地步,如果管理不擅,必會對系統安全造成威脅。 除了儘可能的避免用直接用超級使用者root登入系統外,我們還要學會在普通使用者下臨時切換到超級使用者root下完成必要的系統管理工作;從使用者管理和系統 安全形度來說是極有意義的;

本文對普通使用者切換到root使用者的實現命令 su 和sudo 做了執行個體解說;希望能為初學者學習帶來方便;


目錄索引


一、對超級使用者和普通使用者的理解;

1、什麼是超級使用者;
2、理解 UID 和使用者的對應關係
3、普通使用者和偽裝使用者
二. 超級使用者(許可權)在系統管理中的作用

1、對任何檔案、目錄或進程進行操作;
2、對於涉及系統全域的系統管理;
3、超級許可權的不可替代性;
三、使用 su 命令臨時切換使用者身份;

1、su 的適用條件和威力;
2、su 的用法;
3、su 的範例;
4、su 的優缺點
四、sudo 授權許可使用的su,也是受限制的su

1. sudo 的適用條件;
2、從編寫 sudo 設定檔/etc/sudoers開始;
3、/etc/sudoers 設定檔中別名規則
4、/etc/sudoers中的授權規則:
5、/etc/sudoers中其它的未盡事項;
6、sudo的用法;
五、後記;
六、關於本文;
七、致謝;
八、參考文檔;


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本文
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++


在Linux作業系統中,root的許可權是最高的,也被稱為超級許可權的擁有者。普通使用者無法執行的操作,root使用者都能完成,所以也被稱之為超級系統管理使用者。

在系統中,每個檔案、目錄和進程,都歸屬於某一個使用者,沒有使用者許可其它普通使用者是無法操作的,但對root除外。root使用者的特權性還表現在 root可以超越任何使用者和使用者組來對檔案或目錄進行讀取、修改或刪除(在系統正常的功能內);對可執行程式的執行、終止;對硬體裝置的添加、建立和 移除等;也可以對檔案和目錄進行屬主和許可權進行修改,以適合系統管理的需要(因為root是系統中許可權最高的特權使用者);


一、對超級使用者和普通使用者的理解;

 

1、什麼是超級使用者;

在所有Linux系統中,系統 都是通過UID來區分使用者權限層級的,而UID為0的使用者被系統約定為是具有超級許可權。超級使用者具有在系統約定的最高許可權滿園內操作,所以說超級使用者可以 完成系統管理的所有工具;我們可以通過/etc/passwd 來查得UID為0的使用者是root,而且只有root對應的UID為0,從這一點來看,root使用者在系統中是無可替代的至高地位和無限制許可權。root 使用者在系統中就是超級使用者;


2、理解 UID 和使用者的對應關係


當系統預設安裝時,系統使用者和UID 是一對一的對關係,也就是說一個UID 對應一個使用者。我們知道使用者身份是通過UID 來確認的,我們在 《使用者(user)和使用者組(group)設定檔詳解》中 的UID 的解說中有談到“UID 是確認使用者權限的標識,使用者登入系統所處的角色是通過UID 來實現的,而非使用者名稱;把幾個使用者共用一個UID 是危險的,比如我們把普通使用者的UID 改為0,和root共用一個UID ,這事實上就造成了系統管理許可權的混亂。如果我們想用root許可權,可以通過su或sudo來實現;切不可隨意讓一個使用者和root分享同一個UID ;”

在系統中,能不能讓UID 和使用者是一對多的關係?是可以的,比如我們可以把一個UID為0這個值分配給幾個使用者共同使用,這就是UID 和使用者的一對多的關係。但這樣做的確有點危險;相同UID的使用者具有相同的身份和許可權。比如我們在系統中把beinan這個普通使用者的UID改為0後,事 實上這個普通使用者就具有了超級許可權,他的能力和許可權和root使用者一樣;使用者beinan所有的操作都將被標識為root的操作,因為beinan的 UID為0,而UID為0的使用者是root ,是不是有點擾口?也可以理解為UID為0的使用者就是root ,root使用者的UID就是0;

UID和使用者的一對一的對應關係 ,只是要求管理員進行系統管理時,所要堅守的準則,因為系統安全還是第一位的。所以我們還是把超級許可權保留給root這唯一的使用者是最好的選擇;

如果我們不把UID的0值的分享給其它使用者使用,只有root使用者是唯一擁有UID=0的話,root使用者就是唯一的超級許可權使用者;

3、普通使用者和偽裝使用者

與超級使用者相對的就是普通使用者和虛擬(也被稱為偽裝使用者),普通和偽裝使用者都是受限使用者;但為了完成特定的任務,普通使用者和偽裝使用者也是必須 的;Linux是一個多使用者、多任務的作業系統,多使用者主要體現在使用者的角色的多樣性,不同的使用者所分配的許可權也不同;這也是Linux系統比Windows系統更為安全的本質所在,即使是現在最新版本的Windows 2003 ,也無法抹去其單使用者系統的烙印;


二. 超級使用者(許可權)在系統管理中的作用

 

超級許可權使用者(UID為0的使用者)到底在系統管理中起什麼作用呢?主要表現在以下兩點;


1、對任何檔案、目錄或進程進行操作;


但值得注意的是這種操作是在系統最高功能內的操作;有些操作就是具有超級許可權的root也無法完成;

比如/proc 目錄,/proc 是用來反應系統啟動並執行即時狀態資訊的,因此即便是root也無能為力;它的許可權如下

[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /
[root@localhost /]# ls -ld /proc/
dr-xr-xr-x 134 root root 0 2005-10-27 /proc/

就是這個目錄,只能是讀和執行許可權,但絕對沒有寫入權限的;就是我們把/proc 目錄的寫入權限開啟給root,root使用者也是不能進行寫操作;

[root@localhost ~]# chmod 755 /proc
[root@localhost /]# ls -ld /proc/
drwxr-xr-x 134 root root 0 2005-10-27 /proc/
[root@localhost /]# cd /proc/
[root@localhost proc]# mkdir testdir
mkdir: 無法建立目錄‘testdir’: 沒有那個檔案或目錄


2、對於涉及系統全域的系統管理;


硬體管理、檔案系統理解、使用者管理以及涉及到的系統全域配置等等……如果您執行某個命令或工具時,提示您無許可權,大多是需要超級許可權來完成;

比如用adduser來添加使用者,這個只能用通過超級許可權的使用者來完成;


3、超級許可權的不可替代性;


由於超級許可權在系統管理中的不可缺少的重要作用,為了完成系統管理任務,我們必須用到超級許可權;在一般情況下,為了系統安全,對於一般常規層級的應 用,不需要root使用者來操作完成,root使用者只是被用來管理和維護系統之用;比如系統日誌的查看、清理,使用者的添加和刪除……

在不涉及系統管理的工作的環境下,普通使用者足可以完成,比如編寫一個檔案,聽聽音樂;用gimp 處理一個圖片等…… 基於普通應用程式的調用,大多普通使用者就可以完成;

當我們以普通許可權的使用者登入系統時,有些系統配置及系統管理必須通過超級許可權使用者完成,比如對系統日誌的管理,添加和刪除使用者。而如何才能不直接以root登入,卻能從普通使用者切換到root使用者下才能進行作業系統管理需要的工作,這就涉及到超級許可權管理的問題;

擷取超級許可權的過程,就是切換普通使用者身份到超級使用者身份的過程;這個過程主要是通過su和sudo 來解決;


三、使用 su 命令臨時切換使用者身份;

 

1、su 的適用條件和威力

su命令就是切換使用者的工具,怎麼理解呢?比如我們以普通使用者beinan登入的,但要添加使用者任務,執行useradd ,beinan使用者沒有這個許可權,而這個許可權恰恰由root所擁有。解決辦法無法有兩個,一是退出beinan使用者,重新以root使用者登入,但這種辦法 並不是最好的;二是我們沒有必要退出beinan使用者,可以用su來切換到root下進行添加使用者的工作,等任務完成後再退出root。我們可以看到當然 通過su 切換是一種比較好的辦法;

通過su可以在使用者之間切換,如果超級許可權使用者root向普通或虛擬使用者切換不要求輸入密碼,什麼是權力?這就是!而普通使用者切換到其它任何使用者都要求輸入密碼驗證;


2、su 的用法:


su [OPTION選項參數] [使用者]

-, -l, –login 登入並改變到所切換的使用者環境;
-c, –commmand=COMMAND 執行一個命令,然後退出所切換到的使用者環境;

至於更詳細的,請參看man su ;


3、su 的範例:


su 在不加任何參數,預設為切換到root使用者,但沒有轉到root使用者家目錄下,也就是說這時雖然是切換為root使用者了,但並沒有改變root登入環境;使用者預設的登入環境,可以在/etc/passwd 中查得到,包括家目錄,SHELL定義等;

[beinan@localhost ~]$ su
Password:
[root@localhost beinan]# pwd
/home/beinan

su 加參數 – ,表示預設切換到root使用者,並且改變到root使用者的環境;

[beinan@localhost ~]$ pwd
/home/beinan
[beinan@localhost ~]$ su -
Password:
[root@localhost ~]# pwd
/root

su 參數 – 使用者名稱

[beinan@localhost ~]$ su – root 註:這個和su – 是一樣的功能;
Password:
[root@localhost ~]# pwd
/root

[beinan@localhost ~]$ su – linuxsir 註:這是切換到 linuxsir使用者
Password: 註:在這裡輸入密碼;
[linuxsir@localhost ~]$ pwd 註:查看使用者當前所處的位置;
/home/linuxsir
[linuxsir@localhost ~]$ id 註:查看使用者的UID和GID資訊,主要是看是否切換過來了;

uid=505(linuxsir) gid=502(linuxsir) groups=0(root),500(beinan),502(linuxsir)
[linuxsir@localhost ~]$

[beinan@localhost ~]$ su – -c ls 註:這是su的參數組合,表示切換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.