首页 > 系统相关 >ubuntu 非 root用户 bind socket 80端口 失败

ubuntu 非 root用户 bind socket 80端口 失败

时间:2023-12-08 11:44:33浏览次数:33  
标签:systemd socket SERVICE bind CAP 端口 ubuntu 80 root

在 Ubuntu 或其他类似的 Linux 系统中,非 root 用户在绑定低于 1024 的端口时会失败,这是出于安全考虑的一种行为。为了允许非 root 用户绑定低端口,您可以考虑以下几种方法:

1. 使用 CAP_NET_BIND_SERVICE 能力

您可以使用 setcap 命令,为您的可执行文件分配 CAP_NET_BIND_SERVICE 能力。这样,您的程序就能够绑定低于 1024 的端口。以下是具体步骤:

# 安装 setcap 工具
sudo apt-get install libcap2-bin

# 赋予可执行文件 CAP_NET_BIND_SERVICE 能力
sudo setcap cap_net_bind_service=+ep /path/to/your/executable

请替换 /path/to/your/executable 为您的可执行文件的实际路径。

2. 使用端口重定向

另一种方法是让您的程序监听一个大于 1024 的端口,然后使用防火墙或端口重定向工具将流量从低端口转发到您的程序运行的端口。例如,使用 iptables 进行端口重定向:

# 将 80 端口的流量重定向到您的程序运行的端口(假设程序运行在 8080 端口)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

3. 使用 systemd 来启动服务

如果您的程序是作为服务运行的,您可以考虑使用 systemd 来启动服务。systemd 允许您以服务的形式运行程序,并且在配置中可以指定程序所需的权限。在 systemd 配置文件中,您可以设置 AmbientCapabilitiesCAP_NET_BIND_SERVICE,以允许非 root 用户绑定低端口。

这三种方法中,最适合您的取决于您的具体应用场景和需求。

标签:systemd,socket,SERVICE,bind,CAP,端口,ubuntu,80,root
From: https://www.cnblogs.com/itfanr/p/17884842.html

相关文章

  • Web服务器-socket编程
    代码#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<netdb.h>#include<arpa/inet.h>#includ......
  • Ubuntu安装PHP和NGINX环境
    Ubuntu安装PHP和NGINX环境介绍PHP-FPMPHP-FPM是PHPFastCGIProcessManager的缩写,是FastCGI进程管理器。PHP-FPM是基于master/worker的多进程架构模式,与nginx的设计风格类似。master进程主要负责CGI、PHP环境初始化,事件监听、子进程状态,worker进程负责处理PHP......
  • Ubuntu安装MySQL数据库
    Ubuntu安装MySQL数据库介绍MySQL的定义MySQL是一种开源关系型数据库管理系统。与其他关系型数据库一样,MySQL将数据存储在由行和列组成的表中。用户可以使用结构化查询语言(通常称为SQL)定义、操作、控制和查询数据。由于MySQL是开源的,因此它的大量功能是在超过25年与用户......
  • Ubuntu安装typecho博客
    Ubuntu安装typecho博客简介名称的来历Typecho是由type和echo两个词合成的,来自于开发团队的头脑风暴。Type,有打字的意思,博客这个东西,正是一个让我们通过打字,在网络上表达自己的平台。Echo,意思是回声、反馈、共鸣,也是PHP里最常见、最重要的函数,相信大部分PHP爱好者都是从e......
  • WPF 绑定binding都有哪些事件
    在WPF中,源属性(SourceProperty)指的是提供数据的属性,通常是数据模型或者其他控件的属性,而目标属性(TargetProperty)则是数据绑定的目标,通常是绑定到控件的属性,例如TextBlock的Text属性。数据绑定将源属性的值自动更新到目标属性中。 主要包含以下几个事件:1. UpdateSourceTrigg......
  • 记录springboot的一次使用socketio的经历
    pom中加入依赖<dependency><groupId>com.corundumstudio.socketio</groupId><artifactId>netty-socketio</artifactId><version>2.0.6</version></dependency>......
  • VMware17 ubuntu18.04.5安装好后无法访问win11共享文件夹的问题
    1在关闭虚拟机的情况下,点击虚拟机设置,CD/DVD设置使用ISO镜像文件,并设置好镜像路径。2启动虚拟机,此时重新安装VMwaretools按钮变成有效状态,点击该按钮,如果虚拟机进入系统后,该按钮会变成无效状态。3等待虚拟机自动下载VMwaretools,下载后在桌面可以看到VMwaretoolsDVD光盘,......
  • 【环境配置记录】ubuntu用samba共享文件夹给windows
    中文社区真的不太行,英文社区资源丰富很多转载https://askubuntu.com/questions/1462387/trying-to-samba-share-a-folder-always-gives-errors的答案 Pleaseseethefollowinginstallationguideline.Itcaneffectivelysolvetheoutstandingissueof'netusershare'r......
  • Ubuntu下MPICH的安装与配置
    原创直达链接一、MPICH的下载与安装MPI安装文件下载地址:博客下载地址或官网地址可以下载3.4.2版本的,本文就是3.4.2版本1.解压:sudotar-zxvfmpich-3.4.2.tar.gz2.进入mpich-3.4.2文件夹:cdmpich-3.4.23.进行软件配置与检查:先用apt安装gcc,g++sudoaptinstallgcc......
  • C++socket服务器与客户端简单通信流程
    服务器和客户端简单通信的流程,做一个简单的复习:1.服务器创建的流程代码如下,各个重要函数已经写注释:#include<iostream>//推荐加上宏定义#defineWIN32_LEAN_AND_MEAN#include<winsock2.h>#include<Windows.h>#pragmacomment(lib,"ws2_32")usingnamespacestd;i......