SUDO:switch user
概述:使用某個使用者A或某些使用者以其他使用者B的身份去執行某些指令,執行該指令的權限依照使用者B的權限。
實作與配置:
1.其配置檔案:/etc/sudoers
2.配置配置檔案:
法1:#vim /etc/sudoers
法2:#visudoers
3.文法格式:
username|alias host=(username) command_list
使用者名|别名 主機=(以誰的身份) 指令清單
例如:jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd
設定jerry可以在所有主機上以root權限去執行/usr/sbin/usermod,/usr/sbin/userdel,/usr/bin/passwd這三個指令
由上可以看到,jerry可以執行/usr/bin/passwd,那麼他不就可以修改root使用者的密碼了,為防止該行為我們可以這樣設定。
jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root
4.使用别名:
●使用者别名:
User_Alias USERMANAGER = jerry, redhat, centos, ubuntu
User_Alias POWERMANAGER = tom, gentoo, USERMANAGER
●指令别名:
Cmnd_Alias USERMANCMND = /usr/sbin/useradd,/usr/sbin/usermod,/usr/bin/passwd, !/usr/bin/passwd root
●主機名稱:
Host_Alias MANHOST = ...
注:所有的Alias後面的名稱中的字元必須全部使用大寫字母,别名中還可以嵌套其他的别名。
5.在第一個字段處,不僅可以使用使用者,也可以使用别名定義的組,如果要使用系統上通過"groupadd"添加的組,則需要在在該組前面加上"%".
例如:系統原本有一個組“mygroup”
%mygroup ALL=(root) /usr/sbin/useradd, /usr/sbin/usermod,/usr/bin/passwd, !/usr/bin/passwd root
使用别名定義:
USERMANAGER ALL=(root) USERMANCMND
6.日志資訊
可以通過/var/log/secure檢視使用sudo執行過的指令已經執行指令的使用者的詳細資訊。
7.當某個使用者被賦予了sudo可以執行的指令時,每當在兩次指令執行的相隔的時間在預設時間之外時,就會被提示必須輸入使用者的密碼,以確定指令執行者的真實身份。但是在這個預設時間内執行則不需要鍵入使用者的密碼,為了防止其安全性,這時可以使用:
#sudo -k #####要求下次在使用sudo執行指令時必須輸入密碼
#sudo -l #####顯示目前使用者可以使用的sudo的所有指令
當需要為某使用者設定在使用sudo指令時,不在輸入密碼時,可以使用這樣的格式:
jerry ALL=(root) NOPASSWD: /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root
jerry ALL=(root) /usr/sbin/usermod, /usr/sbin/userdel, NOPASSWD: /usr/bin/passwd, !/usr/bin/passwd root
注:NOPASSWD隻對其後的指令生效。
本文轉自 向陽草米奇 51CTO部落格,原文連結:http://blog.51cto.com/grass51/796033,如需轉載請自行聯系原作者