# sudo [-u user] COMMAND
命令选项:
-V 显示版本编号
-h 显示版本编号及指令的使用方式说明
-l 显示出自己(执行sudo的执行者)的权限
-v 因为sudo在第一次执行时会询问当前用户的密码以验证身份,密码验证通过后,会建立一个当前用户的密码缓存凭据(/etc/sudoers文件配置了timestamp_timeout,这个指令的作用是指定了当前用户的密码缓存凭据的保存期限,默认设置为5分钟;也就是说当用户输入正确密码后,密码缓存凭据能有效保存5分钟,那么5分钟之内再使用sudo执行命令就不需要再次输入密码,超过5分钟后密码缓存凭据就会过期,那么再次执行sudo命令就需要输入密码),这个选项的作用是刷新5分钟缓存期限,重新计时
-k 立即清除密码缓存凭据,下次执行sudo命令时需要输入当前用户密码
-b 把将要执行的指令放到后台执行
-p prompt 可以更改询问密码的提示语,其中%u会替换为使用者的账号名称,%h会显示主机名称
-u username/$uid 不加此参数,代表要以root的身份执行命令,而增加了此参数,可以以username的身份执行命令(#uid为该username的使用者uid)
-s 执行环境变数中的SHELL为执行的shell,或是/etc/passwd里所指定的shell
-H 执行环境变数中的HOME(家目录)指定为要变更身份的使用者家目录(如不加-u参数就是系统管理者root)command要以系统管理者身份(或以-u更改为其他人)执行的指令
配置文件:/etc/sudoers
使用专用的配置工具来进行配置:visudo
因为sudoers文件为了其安全性,默认是没有写权限的
sudoers文件配置选项
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
即:
who where (whom) which
root即who,表示运行命令者的身份,user
ALL即where,表示通过哪些主机,host
(ALL)即(whom),表示以哪个用户身份,runas
ALL即which,表示运行哪些命令,command
%wheel,表示wheel组
user的支持格式:
username,用户名
#uid 用户uid,#号是固定格式,不可省略
user_alias,用户别名
%group_name,用户组名,%号是固定格式,不可省略
%#gid,用户组gid,%#是固定格式,不可省略
host的支持格式:
ip,ip地址
hostname,主机名
netaddr[/netmask],网络地址,网段
command:
command name,命令名,需要注意的是,这里的命令必须携带绝对地址路径
directory,目录名,即目录内的所有命令
sudoedit,编辑sudoers文件本身,即赋予编辑sudoers文件的权限
Cmnd_Alias,命令别名
别名机制:
注意:别名必须为全大写字母
user_alias用户别名
例:User Alias NETADMIN = netuser1,netuser2
Cmnd_Alias命令别名
例:Cmnd_Alias NETADMINCMNDS = /usr/sbin/ip,/usr/sbin/fdisk
别名名单中可以使用通配符:
例:Cmnd_Alias USERADMINCMNDS = /usr/bin/passwd [a-z]*,!/usr/bin/passwd root
以上表示USERADMINCMNDS命令别名中,可以使用passwd命令,但是必须带参数,且不能使用passwd root,也就是不能更改root用户密码
用户别名和命令别名可以直接在sudo文件中应用
例:NETADMIN ALL=(root) NETADMINCMNDS
特殊用法:
NOPASSWD:USERADMINCMDS
USERADMIN ALL=(root) NOPASSWD:USERADMINCMNDS
表示执行USERADMINCMNDS命令别名包含的命令时不需要输入当前用户密码
写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。
原文地址:http://blog.51cto.com/11367661/2047990