linux sudo 與 /etc/sudoer的配置

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,我們會看到很多內容,我們只看對我們有用的一些信息,如圖:

root下的/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進行編輯。

推薦閱讀:

TAG:科技 | Linux運維 |