分类: LINUX
2013-02-27 10:16:13
一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将一般用户登记在特殊的文件中(通常是/etc/sudoers),即完成 对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密 码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc /sudoers自定义),使用sudo不需要再次输入密码。
我们可以通过visudo命令来编辑/etc/sudoers文件,visudo是一个脚本文件,也可以通过编辑工具来对/etc/sudoers进行修改(注意:系统默认下/etc/sudoers是没有修改权限,需要通过chmod来对它增加权限)
grep -v ^$ /etc/sudoers | grep -v ^## 过滤空行和##号开头
查看sudoers配置文件中的重要代码
==========指定用户权限分配==========
格式:user MACHINE = (RunAs)
COMMANDS
——————————————
root ALL=(ALL) ALL
===============组成员权限分配===============
格式:%group-name MACHINE = (RunAs)
COMMANDS 或
%group-name MACHINE =
COMMANDS
注意:NOPASSWD: COMMANDS
在使用命令时不需要输入密码
这些群都必须在系统中存在的
—————————————————-
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING,
PROCESSES, LOCATE, DRIVERS
sys组可以在全部计算机上以ROOT用户身份运行
多个统称下包括的命令,调用Cmnd_Alias的设置
—————————————————-
# %wheel ALL=(ALL) ALL
whell组可以在全部计算机上以ROOT用户的身份,执行全部命令,但需要输入密码
—————————————————————————————–
# %wheel ALL=(ALL) NOPASSWD: ALL
whell组可以在全部计算机上以ROOT用户的身份,执行全部命令,但不需要输入密码
—————————————————————————————–
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
# %users localhost=/sbin/shutdown -h now
users组只能在本身上运行/sbin/shutdown -h
now
—————————————————————————————–
技巧:
1) 注意大小写
2) 在绝对路径前加(!)感叹号,代表该命令不可用 !/sbin/mount
3) RunAS 代表转换的身份
%group-name MACHINE = (RunAs) COMMANDS
%group-name MACHINE = COMMANDS 当没有(RunAs)时,系统默认以ROOT用户的身份来执行
4)用户是没有(%)百分号,组是有(%)百分号
5) 可以通过sudo -l 参数查看自己的权限