系统中很多命令及软件都要求经过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可运行的命令。