怎么为普通用户分配特定的Sudo权限并实现管理权限隔离

星杰同学_1685

星杰同学_1685

2026-04-05

941人浏览

原创

应通过/etc/sudoers.d/独立文件精细化授权具体命令路径与参数,禁用shell类命令和通配符,启用日志审计,确保最小权限原则。

怎么为普通用户分配特定的sudo权限并实现管理权限隔离

给普通用户分配特定的 sudo 权限,核心是避免直接授予 ALL 权限,改用 /etc/sudoers 文件精细化控制命令范围、目标用户、主机和参数——既满足日常运维需求,又守住最小权限原则。

明确要授权的具体命令和上下文

先理清这个用户真正需要执行什么操作。比如运维助理只需重启 Nginx、查看日志、清缓存;开发测试人员可能需重启本地服务、切换到某应用用户执行部署脚本。不能笼统写 “允许管理服务”,而要落到具体二进制路径(如 /usr/bin/systemctl restart nginx)或带固定参数的命令(如 /bin/grep -i 'error' /var/log/nginx/error.log)。

建议做法:

  • 用 which 或 command -v 确认命令绝对路径,避免别名或 PATH 混淆
  • 对带参数的命令,用 sudo -l -U username 验证是否匹配成功
  • 若需以其他用户身份运行(如 www-data),必须显式声明 (www-data),不可依赖 runas_default

通过 sudoers.d 独立文件配置,不直接编辑主配置

推荐在 /etc/sudoers.d/ 下新建文件(如 /etc/sudoers.d/webops),用 visudo -f /etc/sudoers.d/webops 编辑。这样便于按角色/团队拆分权限,也避免误改主文件导致系统无法提权。

典型配置示例:

# 允许 user1 以 root 身份无密码重启 nginx
user1 ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
<h1>允许 user2 以 www-data 用户身份读取指定日志</h1><p>user2 ALL=(www-data) NOPASSWD: /usr/bin/tail -n 50 /var/log/app/current</p><h1>允许 group1 成员运行带固定参数的备份脚本</h1><p>%group1 ALL=(root) NOPASSWD: /usr/local/bin/backup-db.sh --target=prod</p>

注意:文件名不能含点号或波浪线(如 webops.conf 会被忽略),权限必须为 0440,且需以换行结尾。

禁止危险通配与 shell 逃逸风险

避免使用 /bin/bash、/bin/sh、/usr/bin/env 或通配符(如 /usr/bin/*、/usr/bin/*log)。这些极易被利用绕过限制,例如:

  • sudo /bin/bash -c 'cat /etc/shadow' —— 若允许 /bin/bash,就等于给了完整 shell
  • sudo /usr/bin/find /tmp -exec sh \; —— 若 find 可带 -exec,也能起 shell

安全替代方案:

  • 用 sudoedit 替代直接编辑敏感文件(需配置 sudoers 中的 editor 路径)
  • 对日志查看类需求,封装成只读脚本并限定参数,再授权该脚本
  • 启用 requiretty(默认开启)防止后台进程提权

验证与审计:确保配置生效且可追溯

配置后务必验证,而非仅凭语法检查通过就认为 OK:

  • 切换目标用户,执行 sudo -l 查看实际可用命令列表
  • 尝试执行授权命令和非授权命令,确认行为符合预期
  • 检查 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS),确认 sudo 日志记录完整

建议开启 log_input 和 log_output(需配置 Defaults 行),对高敏操作录屏式审计(需 sudo 1.8.15+ 和 session 模块支持)。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4050

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3453

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2633

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6410

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6042

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3513

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3005

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3239

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习