sudo命令的做用:可以经过受权使某用户以另外一个用户的身份运行命令。
shell
# sudo [-u user] COMMAND缓存
命令选项:安全
-V 显示版本编号网络
-h 显示版本编号及指令的使用方式说明ide
-l 显示出本身(执行sudo的执行者)的权限工具
-v 由于sudo在第一次执行时会询问当前用户的密码以验证身份,密码验证经过后,会创建一个当前用户的密码缓存凭据(/etc/sudoers文件配置了timestamp_timeout,这个指令的做用是指定了当前用户的密码缓存凭据的保存期限,默认设置为5分钟;也就是说当用户输入正确密码后,密码缓存凭据能有效保存5分钟,那么5分钟以内再使用sudo执行命令就不须要再次输入密码,超过5分钟后密码缓存凭据就会过时,那么再次执行sudo命令就须要输入密码),这个选项的做用是刷新5分钟缓存期限,从新计时ui
-k 当即清除密码缓存凭据,下次执行sudo命令时须要输入当前用户密码spa
-b 把将要执行的指令放到后台执行ip
-p prompt 能够更改询问密码的提示语,其中%u会替换为使用者的帐号名称,%h会显示主机名称it
-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命令别名包含的命令时不须要输入当前用户密码
写的比较潦草,若有遗漏错误和争议之处,欢迎你们的批评指正和讨论,谢谢。