Linux 运维中怎么通过 sudo 允许特定用户修改指定服务端口的防火墙规则

千杰君_3451

千杰君_3451

2026-09-22

845人浏览

原创

linux运维中,需通过/etc/sudoers精确授权普通用户操作防火墙端口规则:先确认系统工具(ubuntu用ufw,centos用firewalld),再用visudo配置带参数白名单的nopasswd规则,限定端口范围、协议及操作类型,并启用sudo日志、禁用requiretty以保障最小权限与可审计性。

linux 运维中怎么通过 sudo 允许特定用户修改指定服务端口的防火墙规则

Linux 运维中,不能直接用 sudo 让普通用户“修改指定服务端口的防火墙规则”,因为 sudo 本身不控制具体命令参数粒度——它只管“能否执行某条命令”,不管“执行时传什么参数”。真正可行的方式是:通过 /etc/sudoers 精确授权,限定该用户只能对特定端口、特定协议、使用特定工具(如 ufwfirewall-cmd)执行允许/删除操作。

明确区分工具类型再授权

不同发行版默认防火墙不同,授权前必须确认目标系统实际在用哪个工具:

  • Ubuntu/Debian 系统通常用 ufw,命令如 sudo ufw allow 8080/tcp
  • CentOS/RHEL/Rocky/AlmaLinux 默认用 firewalld,命令如 sudo firewall-cmd --permanent --add-port=8080/tcp 且必须跟 --reload
  • 混用或误判会导致授权无效(比如给 CentOS 用户配了 ufw 权限,但系统压根没装 ufw

用 visudo 限制命令参数范围

直接给用户 ALL=(root) ALL 是高危操作。应编辑 /etc/sudoers(用 sudo visudo 安全打开),添加带参数白名单的规则:

onewo-rtlinux
onewo-rtlinux

Linux 实时编程助手。生成、审查并修改用于周期性控制任务和中断驱动程序的 C 代码。强制实施实时调度策略。

下载
  • 对 Ubuntu 用户授权开放 8080–8090 TCP 端口:
    deploy ALL=(root) NOPASSWD: /usr/sbin/ufw allow [0-9][0-9][0-9][0-9]:[0-9][0-9][0-9][0-9]/tcp, /usr/sbin/ufw delete allow [0-9][0-9][0-9][0-9]:[0-9][0-9][0-9][0-9]/tcp
  • 对 CentOS 用户授权永久开放单个 TCP 端口并重载:
    deploy ALL=(root) NOPASSWD: /usr/bin/firewall-cmd --permanent --add-port=[0-9]{4,5}/tcp, /usr/bin/firewall-cmd --permanent --remove-port=[0-9]{4,5}/tcp, /usr/bin/firewall-cmd --reload
  • 注意:正则写法依赖 sudo 版本(2.2.0+ 支持基本模式匹配),生产环境建议先测试;数字范围用 [0-9]{4,5} 比硬写 8080 更灵活,又避免开放 1–1023 等敏感端口

配套加固与验证要点

光授权命令不够,还需确保行为可审计、防误操作:

  • 开启 sudo 日志:确认 /etc/sudoers 中有 Defaults logfile="/var/log/sudo.log",所有执行记录可追溯
  • 禁止绕过:在对应行末尾加 , !requiretty, !setenv 防止提权滥用
  • 验证是否生效:切换到该用户后运行 sudo -l,输出应只显示你授权的那几条命令,不含通配符或 shell 调用
  • 提醒用户必须手动 reload(firewalld)或确认 ufw 已启用(sudo ufw status 返回 active),否则规则不生效

核心逻辑是“最小权限 + 显式白名单 + 可审计”,不是靠 sudo 本身实现细粒度控制,而是靠 sudoers 的参数约束能力。配置完别忘了让目标用户用 sudo -l 自查权限,再试一条合法命令验证路径和参数是否真被接受。

相关文章

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

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

下载

相关标签:

linux 防火墙

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

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

3965

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

355

21

磁盘配额是什么
磁盘配额是什么

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

2023.06.21

3610

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3133

10

linux find
linux find

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

2023.06.30

2193

5

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

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

2023.07.05

5210

7

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

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

2023.07.06

4882

7

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

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

2023.07.20

2933

8

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

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

2023.07.20

2445

4

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习