使用sudo來(lái)賦予普通用戶root的權(quán)限

字號(hào):

常規(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賬戶本身。