Linux--sudo權限講解
阿新 • • 發佈:2018-01-25
通用 usr 正在 定義 增加 ash sbin passwd sha
sudo簡介:sudo是linux系統管理指令,是允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root用戶的登錄 和管理時間,同樣也提高了安全性。sudo不是對shell的一個代替,它是面向每個命令的
基本操作
[root@localhost /]# useradd Daniel #創建一個用戶 [root@localhost /]# passwd Daniel #設置密碼 [root@localhost /]# su Daniel #切換用戶到Daniel bash-4.1$ #切換成功 #給權限 #Linux sudo命令以系統管理者的身份執行指令,也就是說,經由 sudo 所執行的指令就好像是 root 親自執行。 #使用權限:在 /etc/sudoers 中有出現的使用者。這裏可以直接修改sudoers,也可以額使用visudo,推薦使用visudo,可以判斷你的語法是否正確 root@localhost /]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL Daniel ALL=(ALL) ALL #這是我們新添加的一行,意思是Daniel這個用戶,可以使用所有的命令,使用單個命令(比如useradd),可以將ALL改成/user/sbin/add #測試 -bash-4.1$ ls /root/ ls: 無法打開目錄/root/: 權限不夠 -bash-4.1$ sudo ls /root/ [sudo] password for Daniel: #sudo後輸入Daniel的密碼即可 anaconda-ks.cfg install.log install.log.syslog #現在讓我們來看一下那三個ALL到底是什麽意思。第一個ALL是指網絡中的主機,可以將它改成localhost=,它指明foobar可以在此主機上執行後面的命令。第二個括號裏的ALL是指目標用戶,也就是以誰的身份去執行命令。最後一個ALL當然就是指命令名了。例如,我們想讓Danielr用戶在linux主機上以jimmy或rene的身份執行kill命令,這樣編寫配置文件: Daniel linux=(jimmy,rene) /bin/kill #但這還有個問題,Daniel到底以jimmy還是rene的身份執行?這時我們應該想到了sudo -u了,它正是用在這種時候。 Daniel可以使用sudo -u jimmy kill PID或者sudo -u rene kill PID,但這樣挺麻煩,其實我們可以不必每次加-u,把rene或jimmy設為默認的目標用戶即可。再在上面加一行: Defaults:foobar runas_default=rene Defaults後面如果有冒號,是對後面用戶的默認,如果沒有,則是對所有用戶的默認。就像配置文件中自帶的一行: Defaults env_reset
別名
#別名類型 1)Host_Alis定義主機別名 Host_Alias WEBSERVERS = web1, web2 #WEBSERVERS是主機組,web1,web2是主機 #每個主機使用逗號分隔逗號後面有空格,=號兩邊也有空格,主機組就是別名,可以用這個別名來限制,主機就是在第一個ALL位置,可以定義很多這樣的別名,每個別名可以當做一個主機組,平常很少用到 #正在生產場景中,一般情況不需要設置主機別名,在定義授權規則時可以通過ALL來匹配所有的主機 2)User_Alias定義用戶別名 #別名成員可以是用戶,用戶組(用戶組前面要加%號) User_Alias ADMINS = Daniel, qwer, %groupname #假如說用戶Daniel,qwer和用戶組%groupname都有一樣的權限,那麽直接就可以使用別名ADMINS限制了,後期如果要增加一個同樣權限的用戶或組,直接在後面加上即可 #引用位置Daniel ALL=(ALL) ALL ALL #Daniel就是用戶別名的引用位置 3)Runas_Alias定義runas別名 #這個別名指定的是“用戶身份”,即sudo允許切換到的用戶 #Runas-Alias定義的是某個系統用戶可以執行sudo切換身份到Runas_Alias下包含的成員身份 #語法 Runas_Alias OP = root #引用位置:括號裏的那個ALL。表示使用sudo的時候是使用的OP身份來使用的(也就是root) 4)Cmnd_Alias定義命令別名 #命令別名就是定義一個可以把汗一對命令的名字 Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /usr/bin/net, /sbin/iptables #引用位置:最後一個ALL。定義完成後,可以放在最後一個ALL位置,授權後,該用戶或組就可以通過sudo來使用這些命令了 #完整定義 #User_Alias by Daniel User_Alias ADMINS = admin, Daniel, %admins User_Alias NETADMINS = netadmin, %netadmins User_Alias USERADMINS = useradmin #Cmnd_Alias by Daniel Cmnd_Alias USERCMD = /usr/sbin/useradd, /usr/sbin/userdel, /user/bin/passwd [A-Za-z]*, /bin/chown, /bin/chmod Cmnd_Alias DISKCMD = /sbin/fdisk, /sbin/parted Cmnd_Alias NETCMD = /sbin/ifconfig, /etc/init.d/network Cmnd_Alias CTRLCMD = /usr/sbin/reboot, /usr/sbin/halt Runnas_Alias OP = root, Daniel ## ADMINS ALL=(ALL) USERCMD, NETCMD, CTRLCMD NETADMINS ALL=(OP) NOPASSWD: NETCMD USERADMINS ALL=(OP) NOPASSWD: USERCMD #NOPASSWD,表示輸入完一次後不需要在輸入密碼了,默認是輸入完畢後,五分鐘內不需要在輸入
Linux--sudo權限講解