sudo詳解

   Sudo是Unix/Linux平臺上的一個非常有用的工具,它允許系統管理員分配給普通用戶一些合理的“權利”,讓他們執行一些只有超級用戶或其他特許用戶才能完成的任務,比如:運行一些像mount,halt,su之類的命令,或者編輯一些系統配置文件,像/etc/mtab, /etc/samba/smb.conf等。這樣以來,就不僅減少了root用戶的登陸次數和管理時間,也提高了系統安全性。

一、sudo的特點

   sudo扮演的角色註定了它要在安全方面格外謹慎,否則就會導致非法用戶攫取root權限。同時,它還要兼顧易用性,讓系統管理員能夠更有效,更方便地使用它。sudo設計者的宗旨是:給用戶儘可能少的權限但仍允許完成他們的工作。所以,sudo有以下特點:

   1、sudo能夠限制指定用戶在指定主機上運行某些命令。

   2、sudo可以提供日誌,忠實地記錄每個用戶使用sudo做了些什麼,並且能將日誌傳到中心主機或者日誌服務器。

   3、sudo爲系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機。它默認的存放位置是/etc/sudoers

   4、sudo使用時間戳文件來完成類似“檢票”的系統。當用戶執行sudo並且輸入密碼後,用戶獲得了一張默認存活期爲5分鐘的“入場券”(默認值可以在編譯的時候改變)。超時以後,用戶必須重新輸入密碼。

二、sudo命令

1、sudo條目語法如下:

   whowhich_hosts=(runas)  TAG:command

   hadoop  ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel

   註釋:hadoop用戶可以在任何地點以管理的身份執行命令useradd(無需密碼)和usermod(需要密碼)

2、關於別名(宏)

   此外sudo還支持別名的定義,我們通過引用定義好的別名可以提供工作效率:

       who                User_Alias

       which_hosts    Host_Alias

       runas              Runas_Alias

       command       Cmnd_Alias

   User_Alias   Host_Alias   Runas_Alias   Cmnd_Alias
     用戶名     主機名     用戶名     命令路徑
     組名(%)     IP地址     組名(%)       目錄
    User別名   網絡地址   Runas別名    Cmnd別名

   host別名

3、使用visudo來編輯配置文件(/etc/sudoers)

   雖然我們可以使用vim直接來編輯sudo的配置文件,但sudo提供了更加智能的編輯命令visudo,它能在編輯配置文件的同時幫我們檢查語法錯誤,並在錯誤時提供快捷的返回功能,如圖:

4、visudo常用選項

   查看當前用戶可以使用所有sudo類的命令可以使用 -l 選項,如圖:

   由於sudo默認密碼刷新時間爲5分鐘,如果剛好用戶輸入密碼執行命令之後因其他原因離開計算機,其他用戶在5分鐘之後執行相同的命令依然有效,如圖:

   爲了防止這種情況的發生,可以使用 -k 選項,如圖:

5、sudo的日誌審計

    爲了能夠明確的追究責任,sudo還提供了人性化的日誌功能,在/var/log/secure日誌文件中可以查看到,用於記錄所有sudo類用戶的所有動作,如圖:

   日誌文件的安全性  

三、基本實例用法

1、hadoop用戶可以在任何地點以管理員的身份執行命令useradd(無需密碼)和usermod(需要密碼)

   使用visudo命令在配置文件末尾添加如下內容:

hadoop  ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel

   切換至hadoop用戶測試結果:

2、hadoop用戶和組可以在任何地點以管理員的身份執行命令執行增、刪、改、設置用戶名密碼,但不允許設置管理員的密碼。

   使用visudo命令在配置文件末尾添加如下內容:

User_Alias USERADMIN = hadoop, %hadoop
Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd [A-Za-z]*, ! /usr/bin/passwd root
USERADMIN ALL=(root) NOPASSWD: USERADMINCMND

3、hadoop用戶只能在192.168.1.120主機遠程登錄並以管理員身份執行ifconfig eth0命令。

   使用visudo命令在配置文件末尾添加如下內容:

Cmnd_Alias NETCMND = /sbin/ifconfig eth0
hadoop 192.168.1.120 = (root) NOPASSWD:NETCMND

   使用192.168.1.104測試,如圖:

   使用192.168.1.120測試,如圖:

4、hadoop用戶可以在任何地點以任何的身份執行所有命令,等同於root。

   使用visudo命令在配置文件末尾添加如下內容:

hadoop  ALL=(ALL)       ALL

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章