共计 1227 个字符,预计需要花费 4 分钟才能阅读完成。
一、前言
sudo 是什么?
sudo 是系统管理指令;由于 root 用户权限过大,在实际生产过程中很少使用 root 用户直接登录系统,而是使用普通用户登录系统;但是如果普通用户要对系统进行日常维护操作时需要 su 到 root 用户,为了提高安全性,可以使用 sudo 授权某一用户在某一主机以某一用户身份运行某些命令;从而减少 root 用户密码知晓人,提高系统安全性。
sudo 的优势:
①授权指定用户在指定的主机上运行指定的管理命令;
②详细记录用户基于 sudo 执行的命令相关的日志信息;
③”检票系统”: 时效性认证,用户第一次执行 sudo 命令时会要求输入密码来验证用户身份,成功后用户会获得一个有固定存活时长的”令牌”(令牌默认存活时长为 5 分钟)
二、sudo 相关参数
sudo 的授权文件:/etc/sudoers, 只有管理员能够编辑
1、实现 sudo 授权的方法
①使用 vim 打开编辑:
可以实现文本着色,但是不能检测语法错误,不建议使用
②visudo:专用的 sudoers 文本编辑工具
配置完成后能够检测提示语法错误,建议使用此编辑工具进行 /etc/sudoers 进行编辑
帮助文档:man visudo;man visudoers
2、sudo 授权格式:授权某用户在某主机上以某用户的身份运行指定的管理命令
WHO HOST=(WHOM) COMMAND
别名定义:别名必须使用全大写字符
WHO 别名定义:
User_Alias NAME = item1,item2,item3,….
item: 可以是用户名,% 组名,#UID,$#GID,User_Alias
HOST 别名定义:
Host_Alias NAME = item1,item2,item3,….
item: 可以是 hostname,ip,network,Host_Alias
WHOM 别名定义:
Runas_Alias NAME = item1,item2,item3,….
item: 可以是用户名,% 组名,#UID,$#GID,User_Alias
COMMANDb 别名定义:
Cmnd_Alias NAME = item1,item2,item3,…..
item: 可以是命令,目录 (目录下的所有命令),”sudoedit”,Cmnd_Alias
3、常用的标签
PASSWD: 执行操作时,需要输入密码,来验证用户身份
NOPASSWD: 执行操作时,无需输入密码,不能确定用户身份
4、sudo 常用的命令参数
-l: 查看当前用户可执行的 sudo 命令
-k:清除”令牌”
-b COMMAND:在后台运行指定的命令 COMMAND
-e /path/to/somefile: 修改指定的文件
-u USERNAME COMMAND: 以指定用户的身份运行指定的命令 COMMAND
三、配置举例
1、授权 cnetos 用户具有添加用户的权限
使用 centos 用户登录测试:
2、别名定义以及调用
测试;centos 用户登录测试指定的相关命令:
3、防止授权用户修改密码修改 root 用户的密码