网站首页 > 技术教程 正文
场景概述
在一些有安全要求的公司中,经常有安全提醒你的应用使用了root权限启动,要求你使用其他用户启用;但是你的应用由于各种原因需要使用1024以下的网络端口,这个时候你setcap命令能帮你解决问题。
原因
在 Linux 系统中,默认情况下,非特权用户无法绑定到小于 1024 的端口(也称为特权端口),其原因主要有以下几点:
- 安全性考虑:小于 1024 的端口通常被认为是系统保留端口,用于系统服务和特权程序。如果非特权用户可以绑定到这些端口,那么可能会导致安全风险,例如非特权用户可能会监听特权端口并截取传输的数据。
- 避免误操作:小于 1024 的端口通常用于系统服务,如果允许非特权用户绑定到这些端口,可能会导致系统服务受到干扰或冲突。
- 控制访问权限:通过限制非特权用户对小于 1024 端口的访问权限,可以更好地控制系统中网络通信的安全性。只有特权用户才能绑定到小于 1024 端口,确保了只有经过认证的用户才能运行需要权限较高的服务。
使用SetCap为程序添加 CAP_NET_BIND_SERVICE 特权解决
如果确实需要让非特权用户绑定到小于 1024 的端口,可以通过修改相应的系统配置或者使用 setcap 命令为程序添加 CAP_NET_BIND_SERVICE 特权来实现。
CAP_NET_BIND_SERVICE是什么
CAP_NET_BIND_SERVICE 是 Linux 中的一种特权(capability),允许程序绑定到小于 1024 的端口,而无需使用 root 权限。具体来说,该特权允许非特权用户在绑定端口时不受端口限制(需要 root 权限的端口)的限制,即可以绑定到小于 1024 的特权端口上。
CAP_NET_BIND_SERVICE 的参数有以下几个:
- +e 允许继承特权。这意味着当执行程序时,程序可以继承到该特权。
- +p 让程序在 re-exec 时依然保留该特权。如果程序会在运行时进行重新执行(re-exec),例如通过系统调用 execve() 重新加载自己,那么此特权将被保留。
因此,CAP_NET_BIND_SERVICE 在一些需要程序绑定小于 1024 端口的情况下非常有用,同时避免了使用 root 权限来运行整个程序,提高了系统的安全性。
应用实战(Nginx非Root用户启动)
下面以Nginx使用非Root用户启动为例,具体说明如何使用setcap
- 使用setcap 让非root用户运行nginx程序监听低于 1024 的端口
sudo setcap cap_net_bind_service=+ep /usr/local/openresty/nginx/sbin/nginx- 修改nginx目录的用户权限为对应用户
sudo setfacl -m u:用户名A:rwx -R /usr/local/openresty
sudo setfacl -m g:用户名A:rwx -R /usr/local/openresty- 切换到用户A并启动
sudo su 用户名A
cd /usr/local/openresty
bin/openresty
猜你喜欢
- 2024-10-10 译荐|Nginx: 高性能与规模化的设计逻辑
- 2024-10-10 终于有人把「编程软件安装和环境配置」的教程整理成了一个文档
- 2024-10-10 破解 非root用户禁止使用1024以下端口限制
- 2024-10-10 Nginx反向代理(nginx反向代理 传递客户端ip)
- 2024-10-10 在Linux中通过expect工具实现脚本的自动交互
- 2024-10-10 我在自己腾讯云服务器上更改nginx配置的操作指引
- 2024-10-10 NGINX内部工作原理:我们如何设计性能和规模
- 2024-09-11 Linux下玩转nginx系列(六)---nginx实现cache(缓存)服务
- 2024-09-11 Nginx从理论到实践超详细笔记(nginx 原理与架构)
- 2024-09-11 Ngnix的root和alias指令(alias nginx)
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
-
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)

本文暂时没有评论,来添加一个吧(●'◡'●)