sudo命令的简单使用

sudo命令的作用:能够通过授权使某用户以另一个用户的身份运行命令。

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


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章