网站首页 > 技术教程 正文
场景概述
在一些有安全要求的公司中,经常有安全提醒你的应用使用了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)
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (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)
本文暂时没有评论,来添加一个吧(●'◡'●)