配置visudo

https://blog.51cto.com/chenfage/1830424
visudo配置sudo权限-小白菜博客
在大约99行添加配置信息
第一段 表示允许提权的用户
第二段 ALL=(ALL) 这里第一个ALL可以指定主机来源,参数有localhostIP地址,ALL
第三段 允许放行的命令(绝对路径),多个命令可以用逗号(,)隔开

例如:

# 允许lisi用户通过sudo 执行poweroff命令
## 没有NOPASSWD:表示要输入密码
lisi  ALL=(ALL)  /usr/sbin/poweroff
代授权的用户或组 来源机器= (授权角色) 是否免密码:可以执行的命令
lisi ALL= (ALL) /usr/sbin/poweroff

仅允许字符终端登陆(tty)–授权localhost

非ssh可执行的命令

# 用户名 本地登陆用localhost=命令绝对路径
## 没有NOPASSWD:表示要输入密码
## user1用户允许localhost登录,能通过sudo 运行yum命令,需要输入密码
user1 localhost=/usr/bin/yum
代授权的用户或组 来源机器= (授权角色) 可以执行的命令 免密码
zhangsan localhost= /usr/bin/yum

允许图形和tty登陆–授权all

ssh和localhost登录都可以执行

# 用户名  要执行的命令		免密码
## user1用户允许本地和ssh登录,能通过sudo允许yum命令不需要输入密码
user1 ALL=/usr/bin/yum NOPASSWD: ALL
代授权的用户或组 来源机器= (授权角色) 可以执行的命令 免密码
user1 ALL= /usr/bin/yum NOPASSWD: ALL

用户组提权-示例配置

用户组提权配置只需要在用户组前加上%

# %组名	ALL=(主机来源)	命令绝对路径
%gourp 	ALL=(ALL)		/usr/bin/yum
%组名 来源机器= (授权角色) 可以执行的命令 免密码
%sudo ALL= (ALL) /usr/bin/yum NOPASSWD: ALL

sudoers.d目录下创建授权文件–推荐

sudoers.d目录下文件权限一定要0440

# sudoers.d目录下文件设为0440
chmod 0440 /etc/sudoers.d/*

示例:

# 创建hadoop用户
## -d 指定用户登入时的起始目录
## -m 自动创建用户的登入目录
sudo useradd -d /home/hadoop -m hadoop

# 配置hadoop用户的权限
echo "hadoop ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/hadoop

# 配置hadoop的sudo配置文件权限
sudo chmod 0440 /etc/sudoers.d/hadoop
代授权的用户或组 来源机器= (授权角色) 免密码:可以执行的命令
hadoop ALL = (root) NOPASSWD: ALL

五段式配置

# 给devops创建授权文件,设置文件权限0400
cd /etc/sudoers.d && touch devops && chmod 0440 devops && vim devops

# 将配置文件添加到devops文件中,当执行sudo updatedb命令时免密码
devops ALL=(ALL) NOPASSWD:/usr/bin/updatedb
代授权的用户或组 来源机器= (授权角色) 可以执行的命令 免密码
devops ALL= (ALL) /usr/bin/updatedb NOPASSWD: /usr/bin/updatedb

第一段: 表示允许提权的用户,%sudo代表sudo组
第二段: ALL=(ALL) 这里第一个ALL可以指定主机来源,参数有localhostIP地址,ALL
第三段:表示sudo可以切换到什么用户。ALL表示所有用户
第四段:表示sudo可以切换到哪些组下的用户。ALL表示所有组
第五段:表示sudo之后能够执行的命令(绝对路径)。NOPASSWD:ALL表示执行任意命令都不需要密码

代授权的用户或组 来源机器= (授权角色) 可以执行的命令 免密码
devops ALL= (ALL) NOPASSWD: ALL

三段式配置

第一段: 表示允许提权的用户,%sudo代表sudo组
第二段: ALL=(ALL) 这里第一个ALL可以指定主机来源,参数有localhostIP地址,ALL
第三段: 允许放行的命令(绝对路径),多个命令可以用逗号(,)隔开

# 允许执行所有sudo命令不需要输入密码
devuser ALL=(ALL) NOPASSWD:ALL
代授权的用户或组 来源机器= (授权角色) 免密码:可以执行的命令
devops ALL= (ALL) NOPASSWD: ALL

检查sudoers配置是否有误

https://www.linuxcool.com/visudo

# 检查文件格式是否有误
visudo -c /etc/sudoers.d/devops

在这里插入图片描述

# 严格检查sudoers文件
visudo -s

如何在sudo运行的命令中防止使用参数

参考: https://linux.cn/article-15106-1.html

visudoroot用户身份编辑/etc/sudoers文件.
命令行后添加 ""防止使用参数

# 命令行后添加 ""防止使用参数
user1   ALL=(root)      /usr/bin/ls ""

# 用户设为ALL命令行后添加 ""防止使用参数
ALL   ALL=(root)      /usr/bin/ls ""
代授权的用户或组 来源机器= (授权角色) 免密码:可以执行的命令
user1 ALL = (root) /usr/bin/ls “”

在这里插入图片描述

结果验证

在这里插入图片描述