======Sudo vs Su======
通常在在系統管理時,要使用root所具有的權限都會使用**su** 或 **su -** ,但使用此方式必須先知道root密碼才能得到**完整的權限**。
那sudo就與su不同,sudo是以委派**指定使用者**方式,限定取得**部份權限**,而且事先不用知道root密碼,只要使用者自己的密碼即可取得root部份權限。
======sudo 設定檔======
指定委派帳號 在哪一台機器=(換成哪一個帳號) 使用哪些指令
#visud
#andy 使用sudo在任何機器上,可以換成任何帳號,使用任何指令來控制系統。另外,沒給定(ALL),預設是換成root。
andy ALL=(ALL) ALL
#使用者編組。jsmith,mikem為一組,別名為ADMINS(別名為大寫)
# User_Alias ADMINS = jsmith, mikem
#主機編組。host1.QQin.com, host2.QQin.com為一組,別名為MAILSERVERS(別名為大寫)。
Host_Alias MAILSERVERS = host1.QQin.com, host2.QQin.com
#指令編組。/sbin/service, /sbin/chkconfig為一組,別名為SERVICES(別名為大寫)。
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
#群組名為wheel 使用sudo在任何機器上,可以換成任何帳號,使用任何指令來控制系統。
%wheel ALL=(ALL) ALL
#假若用sudo 不打密碼,在任何機器上,使用任何指令來控制系統。
# %wheel ALL=(ALL) NOPASSWD: ALL
======sudo LAB======
在使用者**student,betty** 可以在任何機器上使用 sudo /etc/init.d/http 及chkconfig
未設定sudo之前
[student@location ~]$/etc/init.d/httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[student@location ~]$ chkconfig --level 35 httpd on
chkconfig --level 35 httpd on
You do not have enough privileges to perform this operation.
#visudo
User_Alias TESTS = student,betty
Cmnd_Alias CMDS = /etc/init.d/httpd,/sbin/chkconfig
TESTS ALL=CMDS
**測試**
[student@location ~]$ sudo /etc/init.d/httpd start
[sudo] password for student: (鍵入student 自己的密碼)
Starting httpd: [ OK ]
[student@location ~]$ sudo chkconfig --level 35 httpd on
[sudo] password for student: (鍵入student 自己的密碼)
betty 同理也是一樣情況
======參考資料======
* [[http://note.drx.tw/2008/01/linuxsudo.html|sudo 指令使用說明-凍仁的筆記]]