一、應用場景
1、一般情況下如果一台服務器涉及到多人管理的時候,需要每人都會有一個自己的賬戶,但是默認普通用戶需要部分超級管理員的權限,有人說直接su - root切換到超級管理員上就可以了,那日志怎么審核,這樣過大家都知道root的用戶密碼,最初的目的就沒有達到,所以引出了一個sudo的命令。
2、sudo命令的優點:
1、給普通賬戶部分管理員的權限不需要root密碼,只需要自己的密碼就行。
2、可以根據工作內容的相同,實現權限分組管理(很方便)
3、方便日志審核
二、使用方法
科普小知識,su命令切換的時候su和su -的區別是,su - 會把需Shell環境變量一起都切過去,而su只會把身份切換過去。一般情況下我們習慣使用su - 。
1、在root命令下執行visudo或者直接vi /etc/sudoers即可,打開的是同一個配置文件。
2、第一種使用方法:
1、首先在root下面建立一個普通賬戶,設置密碼(記得要允許登錄,否則毫無意義),具體新建用戶的方法就不在這里贅述了。
2、這里我們給這個普通用戶可以查看/etc/shadow這個密碼文件和重啟服務器權限,首先找到root ALL=(ALL) ALL,在這行下加上如下內容:
leihaidong ALL=/sbin/init 6,/bin/cat /etc/shadow
3、這樣我們使用su - leihaidong命令切換到這個普通用戶下后執行sudo init 6 和cat /etc/shadow命令了,注意,如果提示你輸入輸入用戶名密碼,切記這里輸入的是你當前登錄的自己的用戶名密碼。這樣就簡單實現了,如果你想給更多的權限,就在后面追加,以逗號隔開。
4、如果有些命令不需要輸入密碼,有些又需要輸入密碼,可以這么寫,但是這么寫又特別繁瑣。
leihaidong ALL=NOPASSWD:/sbin/init 6,PASSWD:/bin/cat /etc/shadow
3、這一長串命令代表什么呢?
1、第一列:用戶名,也就是需要授權的用戶名。
2、被管理主機的地址,這里可以寫IP地址,一般情況下ALL即可。
3、(ALL)指的是可使用的身份,這里如果寫ALL的話,代表擁有root權限。
4、授權命令,也就是要執行命令的絕對路徑,可以使用which命令查看。
提示:正常情況下大多都是想前面我提到的那兩種寫法。
4、第二種使用方法:
1、首先我們先想一個場景,同10個用戶都會做同樣的一些工作,按照上面我那種寫法,就得寫10行,改動起來比較繁瑣,試想一下,如果我們單獨寫一個模板,然后建設一個組,把這些用戶都加到組里面,最后讓這個組使用我們單獨寫的這個授權模板,這樣只需要加組即可實現授權。
2、還是上面的案例,我們先創建一個組,然后把leihaidong這個賬戶加到新建組里面。
groupadd testgroup #新建組 usermod -G testgroup leihaidong #將leihaidong加入testgroup組中
3、在root下執行visudo修改授權(寫刪除第一種授權方法),
在文件51行附近加上下面兩句,第一句是注釋下面這個模板是做什么用的,第二行是新建模板INIT,這個模板授權可以重啟和查看/etc/shadow文件的權限。如果不想或者強制每次執行某個命令需要輸入當前用戶密碼,這里就不能使用這種方法了,只能一個一個寫了。 ##test sudo init 6 Cmnd_Alias INIT =/sbin/init 6,/bin/cat /etc/shadow
4、執行有了模板,還需要讓新建的testgroup這個組應用INIT這個授權模板。在文件中%wheel ALL=(ALL) ALL這行下面加入%testgroup ALL=(ALL) INIT這行命令保存退出即可(寫法有誤會提示你保存不了)
5、解釋這句話的意思,%代表他后面的這個字符是一個linux組,第二列的個ALL和第三列的(ALL)就不解釋了,看上面。后面這個INIT指的是INIT這個授權模板名。注意,當然也可以寫成%testgroup ALL= INIT
6、如果應用多個授權模板,模板之間用逗號隔開。