常規(guī)來(lái)說(shuō),root的權(quán)限是不可隨意分割的,所以很難既給某個(gè)用戶完成一件任務(wù)的權(quán)力,比如說(shuō)備份,而又不給這個(gè)人自由運(yùn)行系統(tǒng)的權(quán)力。如果把root給多個(gè)人去使用,顯然是個(gè)不安全的做法。
針對(duì)這個(gè)問(wèn)題,現(xiàn)在廣泛的采用SUDO的方式來(lái)解決。
所謂的SUDO就是以普通用戶的身份登錄到系統(tǒng),當(dāng)需要完成某項(xiàng)任務(wù)時(shí)(假設(shè)此任務(wù)普通用戶無(wú)權(quán)使用),在管理員root的授權(quán)下來(lái)完成。呵呵,對(duì)了,有點(diǎn)像WINDOWS中的委派。一旦用戶得到授權(quán)后就可以去做原本自己不能做的事情,從而幫助管理員管理,減輕管理員的負(fù)擔(dān)。
執(zhí)行sudo時(shí),它會(huì)讀取文件/etc/soduers,這個(gè)文件列出了授權(quán)使用sudo的人以及他們?cè)诿颗_(tái)主機(jī)上可以運(yùn)行的命令。如果提供給sudo的命令允許運(yùn)行,那么sudo就提示輸入這個(gè)用戶自己的口令并執(zhí)行命令。在隨后的5分鐘內(nèi),再次使用sudo則不需輸入口令。sudo沒(méi)有定義好的日志文件,所以如果你要使用sudo的日志,你還得自己去配置一下。至于怎么去配咱們以后討論。
如果你要配置sudo,建議你使用visudo來(lái)配置/etc/sudoers文件,它會(huì)檢查是否有人在同時(shí)編輯修改此文件。以下是一個(gè)例子:
## Host Aliases
Host_Alias FILESERVERS = fs1, fs2
Host_Alias MAILSERVERS = smtp, smtp2
## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom,z3 FILESERVERS=ALL
jerry MAILSERVERS=/usr/sbin/tcpdump:FILESERVERS=(L4)DUMP
w5 ALL=(ALL)ALL,!SHELLS
上面第一部分是用來(lái)定義主機(jī)的,如果不定義那么你就得在第三部分手動(dòng)寫(xiě)入。第二部分是用來(lái)定義服務(wù)的,如果不定義那么你就得在第三部分手動(dòng)寫(xiě)入。建議你使用這種別名的方式來(lái)定義你的“操作”,這樣sudoers的可讀性更強(qiáng)。
第三部分是關(guān)于權(quán)限的定義,也就是說(shuō)誰(shuí)可以用sudo干什么事情。其中格式如下:
適用的用戶 要注意的主機(jī)=(轉(zhuǎn)換成誰(shuí)的身份)可以使用什么命令
如果沒(méi)有定義括號(hào)中的內(nèi)容,則表示只以root身份執(zhí)行相應(yīng)操作。!表示“除什么以外”。
當(dāng)普通用戶,例如tom,登錄到系統(tǒng)要執(zhí)行本來(lái)沒(méi)有權(quán)限執(zhí)行的操作時(shí),他可以鍵入如下命令:
sudo su –
然后鍵入自己的密碼就可以了。
Alias主要分成4種
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias
1) 配置Host_Alias:就是主機(jī)的列表
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允許執(zhí)行的命令的列表
Cmnd_Alias COMMAND_FLAG = command1, command2, command3
3) 配置User_Alias:就是具有sudo權(quán)限的用戶的列表
User_Alias USER_FLAG = user1, user2, user3
4) 配置Runas_Alias:就是用戶以什么身份執(zhí)行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
5) 配置權(quán)限
配置權(quán)限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密碼驗(yàn)證的話,則按照這樣的格式來(lái)配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG
使用sudo的好處
1, 由于有日志可以提高安全審計(jì)的能力
2, 操作員不需要不受限制的root特權(quán)就能完成許多任務(wù)
3, 保證root密碼的安全
4, 比使用su快
5, 不需要改變r(jià)oot密碼就能收回某些權(quán)限
6, 只需維護(hù)sudoers就可維護(hù)所以用戶的特權(quán)列表
7, 降低遺留root shell的概率
8, 可以使用單個(gè)文件來(lái)控制對(duì)整個(gè)網(wǎng)絡(luò)的訪問(wèn)權(quán)限
當(dāng)然也有不足,比如說(shuō)如果突破了能執(zhí)行sudo命令的個(gè)人賬戶,就等同突破了root賬戶本身。
針對(duì)這個(gè)問(wèn)題,現(xiàn)在廣泛的采用SUDO的方式來(lái)解決。
所謂的SUDO就是以普通用戶的身份登錄到系統(tǒng),當(dāng)需要完成某項(xiàng)任務(wù)時(shí)(假設(shè)此任務(wù)普通用戶無(wú)權(quán)使用),在管理員root的授權(quán)下來(lái)完成。呵呵,對(duì)了,有點(diǎn)像WINDOWS中的委派。一旦用戶得到授權(quán)后就可以去做原本自己不能做的事情,從而幫助管理員管理,減輕管理員的負(fù)擔(dān)。
執(zhí)行sudo時(shí),它會(huì)讀取文件/etc/soduers,這個(gè)文件列出了授權(quán)使用sudo的人以及他們?cè)诿颗_(tái)主機(jī)上可以運(yùn)行的命令。如果提供給sudo的命令允許運(yùn)行,那么sudo就提示輸入這個(gè)用戶自己的口令并執(zhí)行命令。在隨后的5分鐘內(nèi),再次使用sudo則不需輸入口令。sudo沒(méi)有定義好的日志文件,所以如果你要使用sudo的日志,你還得自己去配置一下。至于怎么去配咱們以后討論。
如果你要配置sudo,建議你使用visudo來(lái)配置/etc/sudoers文件,它會(huì)檢查是否有人在同時(shí)編輯修改此文件。以下是一個(gè)例子:
## Host Aliases
Host_Alias FILESERVERS = fs1, fs2
Host_Alias MAILSERVERS = smtp, smtp2
## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom,z3 FILESERVERS=ALL
jerry MAILSERVERS=/usr/sbin/tcpdump:FILESERVERS=(L4)DUMP
w5 ALL=(ALL)ALL,!SHELLS
上面第一部分是用來(lái)定義主機(jī)的,如果不定義那么你就得在第三部分手動(dòng)寫(xiě)入。第二部分是用來(lái)定義服務(wù)的,如果不定義那么你就得在第三部分手動(dòng)寫(xiě)入。建議你使用這種別名的方式來(lái)定義你的“操作”,這樣sudoers的可讀性更強(qiáng)。
第三部分是關(guān)于權(quán)限的定義,也就是說(shuō)誰(shuí)可以用sudo干什么事情。其中格式如下:
適用的用戶 要注意的主機(jī)=(轉(zhuǎn)換成誰(shuí)的身份)可以使用什么命令
如果沒(méi)有定義括號(hào)中的內(nèi)容,則表示只以root身份執(zhí)行相應(yīng)操作。!表示“除什么以外”。
當(dāng)普通用戶,例如tom,登錄到系統(tǒng)要執(zhí)行本來(lái)沒(méi)有權(quán)限執(zhí)行的操作時(shí),他可以鍵入如下命令:
sudo su –
然后鍵入自己的密碼就可以了。
Alias主要分成4種
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias
1) 配置Host_Alias:就是主機(jī)的列表
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允許執(zhí)行的命令的列表
Cmnd_Alias COMMAND_FLAG = command1, command2, command3
3) 配置User_Alias:就是具有sudo權(quán)限的用戶的列表
User_Alias USER_FLAG = user1, user2, user3
4) 配置Runas_Alias:就是用戶以什么身份執(zhí)行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
5) 配置權(quán)限
配置權(quán)限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密碼驗(yàn)證的話,則按照這樣的格式來(lái)配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG
使用sudo的好處
1, 由于有日志可以提高安全審計(jì)的能力
2, 操作員不需要不受限制的root特權(quán)就能完成許多任務(wù)
3, 保證root密碼的安全
4, 比使用su快
5, 不需要改變r(jià)oot密碼就能收回某些權(quán)限
6, 只需維護(hù)sudoers就可維護(hù)所以用戶的特權(quán)列表
7, 降低遺留root shell的概率
8, 可以使用單個(gè)文件來(lái)控制對(duì)整個(gè)網(wǎng)絡(luò)的訪問(wèn)權(quán)限
當(dāng)然也有不足,比如說(shuō)如果突破了能執(zhí)行sudo命令的個(gè)人賬戶,就等同突破了root賬戶本身。