linux sudo 與 /etc/sudoer的配置
1,在linux當中sudo這個命令的作用是什麼?
官方的文檔可以通過man sudo 或者 sudo --help進行查看,這裡我闡述我對sudo的理解
一個普通的用戶,在自己許可權不夠的情況下,通過sudo向root用戶或者是其他用戶獲取相對的許可權,從而實現自己的整條命令。
2,sudo與/etc/sudoers的關係是什麼。
如上,當普通用戶向其他的用戶獲取它的許可權的時候,其他用戶怎麼去判斷是不是需要給這樣的許可權給這個普通用戶。其中的許可權分配體現在給予許可權者的/etc/sudoers文件當中。
一個簡單的例子,在root用戶下的/etc/sudoers文件當中有一條這樣的配置信息。
zhang:表示zhang這個用戶
ALL=(ALL):第一個ALL表示:所有的主機,第二個ALL所有的用戶
NOPASSWD:不需要輸入密碼就能切換到用戶
/usr/bin/bash,/usr/bin/sh :表示能夠執行命令
圖中的意思是:zhang用戶可以在任意主機上不輸入密碼的情況下以任意用戶執行/usr/bin/bash和/usr/bin/sh
對上面的內容做一個總結 :
下面看是正式的介紹/etc/sudoers這個文件裡面的內容。cat /etc/sudoers,我們會看到很多內容,我們只看對我們有用的一些信息,如圖:
為了方便配置,我們一般都會對一些命令進行了分類,圖中的Cmnd_alias即為某些具有相同功能或者相同性質的命令取別名,即為分類。
註:1,##表示注釋,#後才是別名的設置
2,別名為了規範一定大寫。
3,以上內容可以cat /etc/sudoers 進行查看,不懂單詞可以查閱字典(推薦使用微軟必應詞典)
4,別名大致分為四種:
Host_Alias (主機別名)
Cmnd_Alias (命令別名)
User_Alias (用戶別名,可以是用戶,用戶組)
Runas_Alias (目的用戶別名)
一個簡單的例子:允許zhang這個user在任何主機上在不輸入密碼的情況下以任何用戶的方式執行network相關的命令。
zhang ALL=(ALL) NOPASSWD: NETWORKING
別名總結:
User_Alias Host_Alias=(Runas_Alias) Cmnd_Alias
一個複雜的例子:
假設一個公司有開發,運維,測試,三個崗位。有三台主機。都已root用戶的方式使用.
開發有三人:zhangsan01、lisi01、wangwu01。他們擁有升級軟體,訪問磁碟,處理進程的許可權
運維三人:zhangsan02、lisi02、wangwu02。他們擁有所有功能。
測試三人:zhangsan03、lisi03、wangwu03。他們擁有升級軟體的功能
三台主機:server01、server02、server03.
1,對三組人設置別名
#User_alias DEVELPERS=zhangsan01,lisi01,wangwu01
#User_alias OPREATION =zhangsan02,lisi02,wangwu02
#User_alias TEST=zhangsan03,lisi03,wangwu03
#Host_alias SERVER=server01,server02,server03
2,別名設置號了之後我看開始配置
DEVELPERS SERVER=(root) SERVICES,LOCATE,STORAGE
OPREATION ALL=(ALL) ALL
TEST SERVER=(root) LOCATE
註:建議只用visduo進行編輯。
推薦閱讀: