目录
sudo简介
Sudo
(substitute user
[或 superuser
]do
)是linux
系统管理指令,允许系统管理员委派授权给某些用户(或用户组)以root用户或其他用户身份运行某些(或全部)命令的能力,同时提供命令及其参数的审计跟踪。
sudo特性
sudo
能够授权指定用户在指定主机上运行某些命令。 如果未授权用户尝试使用sudo
,会提示联系管理员。sudo
可以提供日志,记录每个用户使用sudo
操作。sudo
为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。sudo
使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券” 。
相关文件
配置文件: /etc/sudoers
,/etc/sudoers.d/
可以修改/etc/sudoers
也可以在/etc/sudoers.d/
目录下新建配置文件
时间戳文件:/var/db/sudo
日志文件:/var/log/secure
配置文件
配置支持使用通配符glob
:
?
:任意单一字符*
:匹配任意长度字符
[wxc]
:匹配其中一个字符[!wxc]
:除了这三个字符的其他字符
x
:转义
[[alpha]]
:字母:示例:/bin/ls [[alpha]]*
配置文件规则:
- 别名定义:不是必须的除了
- 授权规则:必须的
授权规则格式:
user host=(runas) command
用户 登入主机=(代表用户) 命令
示例:root ALL=(ALL) ALL
格式说明:
user
:运行命令者的身份username
:用户名#uid
:用户UID
%group_name
:组名%#gid
:用户组GID
User_Alias
:用户别名
用户别名:格式
User_Alias USER=用户1,用户2...
。例:User_Alias DBA=haiyun,wang
;其中DBA
是别名,haiyun,wang是别名内的用户。注:别名必须为大写。host
:通过哪些主机
ip
或hostname
:IP
或者主机名network
(/netmask
):网段Host_Alias
:主机别名
主机别名:格式
Host_Alias HOST=主机1,主机2...
。例:Host_Alias HOST=192.168.8.10,192.168.8.100
。其中:HOST
是别名,192.168.8.10,192.168.8.100
是别名中的IP
。注:别名必须大写。
(runas
):以哪个用户的身份
username
:用户名
#uid
:用户UID
%group_name
:组名%#gid
:用户组GID
Runas_Alias
:用户别名
用户别名:格式
Runas_Alias USER=用户1,用户2...
。用法同User_Alias
。注:别名必须大写。command
:运行哪些命令
command name
:命令名称,注:写绝对路径directory
:目录下的命令sudoedit
:有编辑sudoers
文件的权限,授权的用户可以自定义权限Cmnd_Alias
:命令别名
命令别名:格式Cmnd_Alias CMD=命令1,命令2...
。例:Cmnd_Alias CMD=/bin/cat,/bin/mount
。其中,CMD
为别名,/bin/cat
,/bin/mount
为别名中的命令。注:别名必须大写。
命令执行不需要密码,在Commands
前可以加NOPASSWD:CMD
例如:haiyun ALL=(ALL) NOPASSWD: ALL
。代表haiyun
用户可以执行所有命令,且不需要密码。注:这只是一个例子,并不建议这么做。
范例
范例1:使用户
haiyun
能够有权限挂载/dev/sr0
到/mnt/cdrom
目录下[root@A ~]# vi /etc/sudoers #修改文件/etc/sudoers root ALL=(ALL) ALL #在此行后面添加,下面内容。注:命令要写绝对路径 haiyun ALL=(ALL) /bin/mount /dev/sr0 /mnt/cdrom [root@A ~]# su - haiyun # 切换到haiyun用户 [haiyun@A ~]$ sudo /bin/mount /dev/sr0 /mnt/cdrom # 使用sudo执行挂载命令 [sudo] password for haiyun: # 输入用户haiyun的密码 m