用戶受權 生產環境中,root用戶密碼只有極少數人知道,普通員工只能使用普通用戶登陸, 若是普通用戶須要執行特殊操做,有兩種方法。 (1)su -root ,切換到root執行特殊操做,而後再返回到普通用戶 (2)sudo su 優勢: 使用簡單 缺點: 一、root密碼容易泄露 二、普通用戶可執行的操做不可控 sudo命令 做用:給普通用戶受權,讓普通用戶能夠執行特定操做的權限 缺點:須要進行配置受權 優勢: 一、不須要切換到root用戶(不須要知道root的密碼) 二、用戶可執行的命令都是預先設置好的(可執行的權限是可控的) 三、能夠記錄每一個用戶所執行過的命令 sudo的使用 第一步:經過sudo的配置文件爲普通用戶受權 第二部:普通用戶使用sudo來執行特定的操做 sudo的配置文件 /etc/sudoers 格式: 用戶名 主機=(切換的用戶) 可執行的命令 說明 用戶名:普通用戶的名稱 主機:能夠在哪一個主機上執行特定的命令 ALL 表示任意主機 localhost 表示當前主機 hostName 表示具體的主機名 ***.***.***.*** 表示一個ip地址(192.168.6.123) ***.***.***.***/netmask 表示一個網段(192.168.6.0/24) 切換的用戶:切換到指定的用戶來執行後面的命令,一般的都是root用戶 表示的方式 一、(all) 二、(root) 三、 空 可執行的命令:用戶能夠執行命令 格式:命令1,命令2…… 補充:能夠用通配符的方式 例子:給test賦權,讓這個用戶能夠在任意主機切換到root用戶執行useradd test ALL=(ALL) /usr/sbin/useradd 注意:修改sudo的配置文件,一般不用vi,而是用visodu命令 使用visodu來修改配置文件,若是你修改的配置文件有錯誤,那麼系統會提示有錯,而且阻止保存。 例子:讓普通用戶laowantong能夠在任意主機上執行useradd和userdel命令 一、建立用戶laowantong useradd laowantong passwd laowantong 二、修改sudo配置文件 visudo laowantong ALL=(root) /usr/sbin/useradd,/usr/sbin/userdel 三、用普通用戶laowantong登陸系統,而後執行新建用戶和刪除用戶的操做 sudo useradd zhoubotong sudo userdel zhoubotong 思考:爲何用sudo的時候,會提示輸入密碼 爲何第二次不須要輸入密碼 普通用戶在執行sudo的時候,會在/var/db/sudo/lectured/下生成該用戶的一個祕鑰, 這個用戶的祕鑰有效期是5分鐘,這樣在5分鐘以內再次執行sudo的時 候,是不須要輸入密碼的。 擴展受權格式 test ALL=(root) /usr/sbin/useradd test ALl=(root) ALL %gp01 ALL=(root) /usr/sbin/useradd test ALL=(root) /usr/sbin/* %gp01 ALL=(root)/usr/sbin/useradd,/usr/sbin/userdel %gp01 ALL=(root)NOPSAAWD:/usr/sbin/useradd,/usr/sbin/userdel 不用輸入密碼 %gp01 ALL=(root)NOPASSWD:/usr/sbin/useradd,NOPASSWD:/usr/sbin/userdel 不用輸入密碼 test ALL(root) NOPASSWD:ALL 不用輸入密碼 %gp01 ALL(root) /usr/sbin/*,!/usr/sbin/useradd 除了/usr/sbin/useradd 不能執行 注意:若是直接是一個字符串,那麼這幾一個用戶名 若是在字符串前面有個%,那麼這是一個用戶組 用戶使用sudo的基本流程 一、sudo -------->>>>>var/db/sudo/檢查時間戳是否過時 -------->>>>>若是過時,要求從新輸入密碼 -------->>>>>記錄時間戳到/var/db/sudo --檢查/etc/sudoers 是否有受權 -------->>>>>若是有執行命令 -------->>>>>若是還沒有過時--->>>>>檢查/etc/sudoers 是否有受權 -------->>>>>若是有執行命令 -------->>>>>報錯提示無權限,並退出sudo sudo配置文件的構成 定義別名 受權規則 別名的類別 Host_Alias:主機別名。別名字母必須都是大寫,成員能夠是主機、網段 Host_Alias MYHOST = zhangsan,lisi Host_Alias MYHOST = ALL Host_Alias MYHOST =locahost,192.168.6.0/24,172,10.0.0/16 User_Alias:用戶別名。別名字母必須都是大寫,成員都是系統中的用戶, 也能夠是組 User_Alias MYUSER =tom,jerry User_Alias MYUSER =tom,jerry,%gp01 Cmnd_Alias:命令別名,成員都是系統中的命令,這裏最好用命令的絕對路徑。 Cmnd_Alias MYCMD = usr/sbin/useradd,usr/sbin/userdel Cmnd_Alias MYCMD = usr/sbin/*,/usr/bin* Cmnd_Alias MYCMD = usr/sbin/*,/usr/bin* !/usr/sbin/useradd Runas_Alias:角色別名,成員一般都是root或者其餘權限較高的用戶,用的比較少 注意:一、別名的名稱中的字母必須都是大寫 二、別名中的能夠有數字和下劃線,可是必須以字母爲開頭 主機別名舉例 Host_Alias H1 = localhost,zhangsan,lisi,192.168.6.123,172.20.0.0/16 用戶別名舉例 User_Alias DEV = zs,ls,ww,%admin 命令別名舉例 Cmnd_Alias CMND1 = /usr/sbin/useradd, /usr/sbin/userdel,/bin/*,/sbin/[a-g]* Cmnd_Alias CMND1 = /usr/sbin/useradd, NOPASSWD:/usr/sbin/userdel,/bin/*,!/bin/find,/sbin/[a-g]* 特殊寫法 User_Alias DEV = zs,ls,ww,%admin: NET = dehua,degang sudo的受權規則 格式: 受權用戶 主機=[(切換到的用戶)] [NOPASSWD:]命令1,[(切換到的用戶)] [NOPASSWD:]命令2, [(切換到的用戶)] [NOPASSWD:]命令3…… 說明: 一、[]中的內容都是可省略的 二、命令和命令之間用逗號分隔 三、若是省略[(切換到的用戶)],表示切換到root用戶執行後面的命令 四、若是(切換到的用戶)寫出(ALL),表示切換到全部用戶,從全部用戶中 找出能夠執行後面的命令並執行命令 五、若是[NOPASSWD:]省略,則表示在用戶首次使用sudo時候輸入密碼,密碼有效期爲5分鐘 timi ALL= /bin/* timi ALL= /usr/bin/passwd, !/usr/bin/passwd root timi ALL= /bin/vi, !/bin/vi /etc/* 或者 Cmnd_Alias CMD_TIMI = /bin*, /usr/bin/passwd, !/usr/bin/passwd root,/bin/vi, !/bin/vi /etc/* timi ALl= CMD_TIMI sudo-l User timi may run the following commands on this host: (root) /usr/bin/passwd sudo命令的選項 -l:查看當前用戶的受權信息 -k:讓當前主機上的sudo祕鑰馬上失效 visudo命令選項 -c:檢查sudo的配置文件是否有語法錯誤 治理公司root權限氾濫的狀況 第一步:分析員工的類別 分析梳理公司須要使用服務器的員工的數量和類別 開發一、開發2……開發主管 運營一、運營2……運營主管 初級運維一、初級運維二、初級運維3 中級運維一、中級運維二、中級運維3 高級運維一、高級運維二、高級運維3 第二步:分析各種員工要執行的操做 開發:上傳和下載、建立目錄、文件、刪除文件、目錄 開發主管:上傳和下載、建立目錄、文件、刪除文件、目錄 運營…… 運營主管…… 第三步:結合要執行的操做給出必須的命令 將命令反饋給各個部門,讓他們檢查是否知足平常的操做需求 第四步:sudo受權 定義命令別名 定義用戶別名 定義主機別名 sudo受權 第五步:測試受權是否可用