系統中很多命令及軟件都要求經過root帳號權限來執行,root帳號權限過大,所以頻繁經過root進行系統操做會大大增大誤操做的概率。建議爲系統管理人員及使用人員創建各自的用戶帳號,有須要時再經過su命令切換到root帳號來進行操做。可是這樣作也有一些問題,在實際的管理中,並非每一個用戶都須要操做全部與root權限相關的操做。經過su命令切換成root帳戶意味着要給予用戶root帳戶的密碼信息,所以用戶徹底能夠直接使用root帳戶登陸系統,於是也就沒法對用戶進行獨立的管理。服務器
1. sudo特性
sudo經過更嚴謹的管理,爲用戶分配可經過root權限運行的某些特定的命令或軟件,同時又避免直接將root用戶帳號的密碼公開給普通用戶。
主要特色以下:
sudo限制指定用戶在指定主機上運行某些命令。
sudo提供日誌,記錄每一個用戶經過sudo進行了哪些操做,而且在服務器中保存記錄以便管理審覈。
sudo容許系統管理員集中地管理用戶的權限及使用這些權限時的服務器位置。
sudo對root權限的使用時間有嚴格控制,經過sudo獲得root權限後,用戶能夠在5分鐘內使用此權限,時間超出後必須從新進行密碼驗證。
2. sudo基本配置
修改文件/etc/sudoers:
……
## 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
設定一個名爲NETWORKING的命令集以便於權限定義的分類
## Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
……
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
此處指定root用戶能夠經過sudo獲得全部命令的使用權限
ken localhost=(ALL) ALL
指定用戶ken能夠在主機localhost上經過任何用戶權限運行全部命令
%sale ALL=(ALL) NETWORKING
指定組sale中的用戶能夠在任何主機上經過任何用戶權限
運行NETWORKING命令集中全部的命令
3. sudo基本操做
[ken@server1 ~]$ /usr/bin/passwd root
passwd: Only root can specify a user name.
因爲用戶ken的權限不夠,所以沒法經過passwd修改root用戶帳號的密碼
[ken@server1 ~]$ sudo /usr/bin/passwd root
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Password:在此處輸入用戶ken的登陸密碼
Changing password for user root.
New UNIX password:
經過sudo獲得root執行權限後,能夠對root的密碼進行修改
從以上實例能夠看出,一旦passwd命令的sudo運行權限授予了某個用戶,此用戶就有權經過passwd來對root管理員帳號的密碼進行修改,從而獲得root帳號的全部操做權限。在實際生產環境中請注意避免此類狀況的發生,嚴格控制sudo可運行的命令。