在linux系統(tǒng)中,有些普通用戶需要借助root帳號來執(zhí)行一些操作,但我們并不能把root密碼給普通用戶,就有了sudo
創(chuàng)新互聯(lián)公司專注于留壩企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站開發(fā)。留壩網(wǎng)站建設(shè)公司,為留壩等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
sudo可以臨時切換到指定帳號進(jìn)行操作
使用方法:
sudo [ -u 用戶帳號] 需要執(zhí)行的命令;切換到root時,可以直接執(zhí)行sudo 執(zhí)行命令 即可;
sudo -l :列出所有可以執(zhí)行的命令
使用條件:
必須以root身份執(zhí)行visudo,添加需要執(zhí)行sudo命令的用戶;
執(zhí)行visudo,實(shí)際上修改的是/etc/sudoers文件;
為什么要使用visudo,而不直接使用vim /etc/sudoers呢?這是因數(shù)visudo在修改完成后可以對語法進(jìn)行檢查
使用visudo -c進(jìn)行語法檢查,當(dāng)sudoers文件有語法錯誤時,所有的sudo命令都無法使用
修改配置:
[root@web1 ~]# visudo
root ALL=(ALL) ALL <==找到這一行
liu ALL=(ALL) ALL <==新增的行,保存退出
用戶帳號:表示系統(tǒng)中哪個帳號可以使用sudo命令
第一個ALL:登錄者來源的主機(jī)名,表示這個帳號可以從哪一臺主機(jī)連接過來,ALL表示任意主機(jī)
第二個ALL:可切換的身份,表示此帳號可以切換哪個帳號進(jìn)行操作,ALL表示可以切換成任何用戶
第三個ALL:可執(zhí)行的命令,表示此帳號可以執(zhí)行哪些命令,ALL表示可以執(zhí)行任何命令;
注意:在大多數(shù)情況下,不能為普通用戶設(shè)置全部命令的權(quán)限,要讓用戶擁有一個或者幾個權(quán)時,ALL可以換成此命令的絕對路徑,有多個命令時,中間以逗號分開,但必須是全路徑
比如只有修改密碼的權(quán)限時,但絕對不能修改root用戶的密碼:
liu ALL=(ALL) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
用!(感嘆號)表示排除此命令
進(jìn)行測試:
結(jié)果:
從上圖中可以看到以普通用戶liu登錄時,執(zhí)行sudo命令創(chuàng)建test2目錄,其屬主和屬組均為root
sudo免密碼執(zhí)行命令:
每次執(zhí)行sodu命令都需要輸入用戶密碼才能執(zhí)行,那怎么可以做到執(zhí)行sudo不輸入密碼呢?
liuwei ALL=(ALL) NOPASSWD:/usr/sbin/useradd
在給定可執(zhí)行的命令時,在前邊添加NOPASSWD
有時我們需要為很多用戶添加sudo權(quán)限,此時可以通過組來實(shí)現(xiàn)
前提:
把需要執(zhí)行同樣的權(quán)限的普通用戶,添到同一個組中
把用戶wei,cui同時加入到組liu中,此組liu中就有l(wèi)iu,wei,cui3個普通用戶
修改配置文件:
#visudo 把之前添加的用戶liu獨(dú)有權(quán)限刪除,添加組liu
找到圈中的這一行,把“wheel”改為你自己設(shè)定的組,我這邊改為組liu,保存退出進(jìn)行測試
檢查語法:
#visudo -c
測試:
分別切換到用戶liu,wei,cui進(jìn)行測試 注意:用戶第一次用sudo命令時會收到一些提示
查看上面3文件的屬主屬組,可以看到都為root,說明測試成功
以后如果想要增加或者刪除某個用戶sudo權(quán)限時,只需要將此用戶添加到或者移除此組就可以了
思考:
使用sudo命令切換用戶,總是提示輸入自己的密碼才可以成功,那有沒有辦法不輸入密碼呢?
找到此行,把前邊的#號去掉,百分號后邊添加你需要設(shè)定的組即可
測試:可以看到用戶組liu中的所有用戶,再執(zhí)行sudo操作時,可以不用輸入密碼了
總結(jié):
要給定sudo權(quán)限的用戶,必須是你信任的用戶;
別名設(shè)置:
用戶或者組的別名 --> User_Alias ADMINS = jsmith,mkike,%groupname (注:組前邊需要添加%)
主機(jī)別名 --> Host_Alias FILESERVERS = fs1,fs2
可以切換的用戶角色別名 --> Runas_Alias OP = root
命令別名 --> Cmnd_Alias SERVICES = /sbin/service,/sbin/chkconfig
什么情況才使用別名?
答:在工作中一般有多個系統(tǒng)用戶,需要分類,分層次管理用戶的時候
別名實(shí)際實(shí)例:
工作需求:
開發(fā)人員:User_Alias KAIFA_ADMINS = kaifa01,kaifa02
命令權(quán)限:KAFACMD
身份權(quán)限:KAIFA_ADMINS
運(yùn)維人員:User_Alias OLD_ADMINS = oldboy,oldgirl,%sa
命令權(quán)限:USERCMD,NETMAGCMD,CTRLCMD,DISKCMD
身份權(quán)限:OP1
網(wǎng)絡(luò)工程師:User_Alias OLD_NETADMINS = leo,maya
命令權(quán)限:NETMAGCMD
身份權(quán)限:OP2
#用戶分組 --> 相同崗位的人放在一個組
User_Alias OLD_ADMINS = oldboy,oldgirl,%sa
User_Alias OLD_NETADMINS = leo,maya
User_Alias KAIFA_ADMINS = kaifa01,kaifa02
#類似命令分組
Cmnd_Alias USERCMD = /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod
Cmnd_Alias DISKCMD = /sbin/fdisk,/sbin/parted
Cmnd_Alias NETMAGCMD = /sbin/ifconfig,/etc/init.d/network
Cmnd_Alias CTRLCMD = /usr/sbin/reboot,/usr/sbin/halt
Cmnd_Alias KAFACMD = /bin/grep,/usr/bin/tail,/bin/cat
#角色
Runas_Alias OP1 = root,oldboy
Runas_Alias OP2 = root,oldgirl
#授權(quán)
KAIFA_ADMINS ALL=(OP1) KAFACMD
OLD_ADMINS ALL=(OP1) USERCMD,DISKCMD,NETMAGCMD,CTRLCMD
OLD_NETADMINS ALL=(OP2) NETMAGCMD
sudo審計(jì):
只記錄用戶使用sudo時執(zhí)行的命令;
只需要向/etc/sudoers文件中添加如下內(nèi)容,即可實(shí)現(xiàn)sudo審計(jì)
echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers