您好,登錄后才能下訂單哦!
在linux系統中,有些普通用戶需要借助root帳號來執行一些操作,但我們并不能把root密碼給普通用戶,就有了sudo
sudo可以臨時切換到指定帳號進行操作
使用方法:
sudo [ -u 用戶帳號] 需要執行的命令;切換到root時,可以直接執行sudo 執行命令 即可;
sudo -l :列出所有可以執行的命令
使用條件:
必須以root身份執行visudo,添加需要執行sudo命令的用戶;
執行visudo,實際上修改的是/etc/sudoers文件;
為什么要使用visudo,而不直接使用vim /etc/sudoers呢?這是因數visudo在修改完成后可以對語法進行檢查
使用visudo -c進行語法檢查,當sudoers文件有語法錯誤時,所有的sudo命令都無法使用
修改配置:
[root@web1 ~]# visudo
root ALL=(ALL) ALL <==找到這一行
liu ALL=(ALL) ALL <==新增的行,保存退出
用戶帳號:表示系統中哪個帳號可以使用sudo命令
第一個ALL:登錄者來源的主機名,表示這個帳號可以從哪一臺主機連接過來,ALL表示任意主機
第二個ALL:可切換的身份,表示此帳號可以切換哪個帳號進行操作,ALL表示可以切換成任何用戶
第三個ALL:可執行的命令,表示此帳號可以執行哪些命令,ALL表示可以執行任何命令;
注意:在大多數情況下,不能為普通用戶設置全部命令的權限,要讓用戶擁有一個或者幾個權時,ALL可以換成此命令的絕對路徑,有多個命令時,中間以逗號分開,但必須是全路徑
比如只有修改密碼的權限時,但絕對不能修改root用戶的密碼:
liu ALL=(ALL) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
用!(感嘆號)表示排除此命令
進行測試:
結果:
從上圖中可以看到以普通用戶liu登錄時,執行sudo命令創建test2目錄,其屬主和屬組均為root
sudo免密碼執行命令:
每次執行sodu命令都需要輸入用戶密碼才能執行,那怎么可以做到執行sudo不輸入密碼呢?
liuwei ALL=(ALL) NOPASSWD:/usr/sbin/useradd
在給定可執行的命令時,在前邊添加NOPASSWD
有時我們需要為很多用戶添加sudo權限,此時可以通過組來實現
前提:
把需要執行同樣的權限的普通用戶,添到同一個組中
把用戶wei,cui同時加入到組liu中,此組liu中就有liu,wei,cui3個普通用戶
修改配置文件:
#visudo 把之前添加的用戶liu獨有權限刪除,添加組liu
找到圈中的這一行,把“wheel”改為你自己設定的組,我這邊改為組liu,保存退出進行測試
檢查語法:
#visudo -c
測試:
分別切換到用戶liu,wei,cui進行測試 注意:用戶第一次用sudo命令時會收到一些提示
查看上面3文件的屬主屬組,可以看到都為root,說明測試成功
以后如果想要增加或者刪除某個用戶sudo權限時,只需要將此用戶添加到或者移除此組就可以了
思考:
使用sudo命令切換用戶,總是提示輸入自己的密碼才可以成功,那有沒有辦法不輸入密碼呢?
找到此行,把前邊的#號去掉,百分號后邊添加你需要設定的組即可
測試:可以看到用戶組liu中的所有用戶,再執行sudo操作時,可以不用輸入密碼了
總結:
要給定sudo權限的用戶,必須是你信任的用戶;
別名設置:
用戶或者組的別名 --> User_Alias ADMINS = jsmith,mkike,%groupname (注:組前邊需要添加%)
主機別名 --> Host_Alias FILESERVERS = fs1,fs2
可以切換的用戶角色別名 --> Runas_Alias OP = root
命令別名 --> Cmnd_Alias SERVICES = /sbin/service,/sbin/chkconfig
什么情況才使用別名?
答:在工作中一般有多個系統用戶,需要分類,分層次管理用戶的時候
別名實際實例:
工作需求:
開發人員:User_Alias KAIFA_ADMINS = kaifa01,kaifa02
命令權限:KAFACMD
身份權限:KAIFA_ADMINS
運維人員:User_Alias OLD_ADMINS = oldboy,oldgirl,%sa
命令權限:USERCMD,NETMAGCMD,CTRLCMD,DISKCMD
身份權限:OP1
網絡工程師:User_Alias OLD_NETADMINS = leo,maya
命令權限:NETMAGCMD
身份權限: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
#授權
KAIFA_ADMINS ALL=(OP1) KAFACMD
OLD_ADMINS ALL=(OP1) USERCMD,DISKCMD,NETMAGCMD,CTRLCMD
OLD_NETADMINS ALL=(OP2) NETMAGCMD
sudo審計:
只記錄用戶使用sudo時執行的命令;
只需要向/etc/sudoers文件中添加如下內容,即可實現sudo審計
echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。