sudo命令的简单使用

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命令别名包含的命令时不须要输入当前用户密码


写的比较潦草,若有遗漏错误和争议之处,欢迎你们的批评指正和讨论,谢谢。

相关文章
相关标签/搜索