Sudo是Unix/Linux平臺上的一個很是有用的工具,它容許系統管理員分配給普通用戶一些合理的「權利」,讓他們執行一些只有超級用戶或其餘特許用戶才能完成的任務,好比:運行一些像mount,halt,su之類的命令,或者編輯一些系統配置文件,像/etc/mtab, /etc/samba/smb.conf等。這樣以來,就不只減小了root用戶的登錄次數和管理時間,也提升了系統安全性。vim
1、sudo的特色
安全
sudo扮演的角色註定了它要在安全方面格外謹慎,不然就會致使非法用戶攫取root權限。同時,它還要兼顧易用性,讓系統管理員可以更有效,更方便地使用它。sudo設計者的宗旨是:給用戶儘量少的權限但仍容許完成他們的工做。因此,sudo有如下特色:bash
一、sudo可以限制指定用戶在指定主機上運行某些命令。
服務器
二、sudo能夠提供日誌,忠實地記錄每一個用戶使用sudo作了些什麼,而且能將日誌傳到中心主機或者日誌服務器。網絡
三、sudo爲系統管理員提供配置文件,容許系統管理員集中地管理用戶的使用權限和使用的主機。它默認的存放位置是/etc/sudoers。ide
四、sudo使用時間戳文件來完成相似「檢票」的系統。當用戶執行sudo而且輸入密碼後,用戶得到了一張默認存活期爲5分鐘的「入場券」(默認值能夠在編譯的時候改變)。超時之後,用戶必須從新輸入密碼。工具
2、sudo命令oop
一、sudo條目語法以下:測試
whowhich_hosts=(runas) TAG:commandspa
hadoop ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
註釋:hadoop用戶能夠在任何地點以管理的身份執行命令useradd(無需密碼)和usermod(須要密碼)
二、關於別名(宏)
此外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別名 |
三、使用visudo來編輯配置文件(/etc/sudoers)
雖然咱們可使用vim直接來編輯sudo的配置文件,但sudo提供了更加智能的編輯命令visudo,它能在編輯配置文件的同時幫咱們檢查語法錯誤,並在錯誤時提供快捷的返回功能,如圖:
四、visudo經常使用選項
查看當前用戶可使用全部sudo類的命令可使用 -l 選項,如圖:
因爲sudo默認密碼刷新時間爲5分鐘,若是恰好用戶輸入密碼執行命令以後因其餘緣由離開計算機,其餘用戶在5分鐘以後執行相同的命令依然有效,如圖:
爲了防止這種狀況的發生,可使用 -k 選項,如圖:
爲了可以明確的追究責任,sudo還提供了人性化的日誌功能,在/var/log/secure日誌文件中能夠查看到,用於記錄全部sudo類用戶的全部動做,如圖:
日誌文件的安全性
3、基本實例用法
一、hadoop用戶能夠在任何地點以管理員的身份執行命令useradd(無需密碼)和usermod(須要密碼)。
使用visudo命令在配置文件末尾添加以下內容:
hadoop ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
切換至hadoop用戶測試結果:
二、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
三、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測試,如圖:
四、hadoop用戶能夠在任何地點以任何的身份執行全部命令,等同於root。
使用visudo命令在配置文件末尾添加以下內容:
hadoop ALL=(ALL) ALL