linux普通用户使用1024以下的端口(80)

  • 1. nginx 等软件做反向代理
  • 2. iptables端口转发
  • 3. setuid
  • 4. CAP_NET_BIND_SERVICE

linux对于非root权限用户不能使用1024以下的端口,对于一些服务,过高的权限,会带来一定的风险。那么对于低权限的用户如何对外开放1024以下的端口。我这里找到几种办法并且亲测可行
首先搭建环境centos7账户prod没有sudo权限

1. nginx 等软件做反向代理

使用nginx启动80端口反向代理后台服务,后台服务可以写1024之后的端口

2. iptables端口转发

首先程序绑定1024以上的端口,然后root权限下做转发注意有些系统需要手动开启IP FORWARD功能
临时修改
sysctl -w net.ipv4.ip_forward=1
或:修改文件sysctl.conf

vi /etc/sysctl.conf
#修改
net.ipv4.ip_forward = 1
#重新加载
sysctl -p /etc/sysctl.conf

使用root配置端口转发,把80端口转发到本机的后台服务6666端口上

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 6666

3. setuid

root账户下执行

##正常情况下是不能监听80端口的
[test@test nginx]$ sbin/nginx -c conf/nginx.conf
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
##下面给nginx授权suid权限
[root@test nginx]# chown root:root sbin/nginx
[root@test nginx]# chmod 4755 sbin/nginx
You have new mail in /var/spool/mail/root
[root@test nginx]# ll sbin/nginx
-rwsr-xr-x. 1 root root 17675424 May 22 16:43 sbin/nginx
## 用普通用户运行nginx,监听80端口
[test@test nginx]$ sbin/nginx -c conf/nginx.conf
[test@test nginx]$ ps -ef |grep nginx
root     29988     1  0 13:15 ?        00:00:00 nginx: master process sbin/nginx -c conf/nginx.conf
nobody   29989 29988  0 13:15 ?        00:00:00 nginx: worker process
nobody   29990 29988  0 13:15 ?        00:00:00 nginx: worker process
nobody   29991 29988  0 13:15 ?        00:00:00 nginx: worker process
nobody   29992 29988  0 13:15 ?        00:00:00 nginx: worker process
test     30699 23722  0 13:16 pts/1    00:00:00 grep --color=auto nginx从上面可以看出来nginx可以运行,
但是主进程仍然是以root权限运行,这样并不安全。

4. CAP_NET_BIND_SERVICE

2.1 版本开始,Linux 内核有了能力的概念,这使得普通用户也能够做只有超级用户才能完成的工作,这包括使用端口。

获取CAP_NET_BIND_SERVICE能力,即使服务程序运行在非root帐户下,也能够binding到低端口。使用的方法:root账户下执行
setcap cap_net_bind_service=+eip nginx/sbin/nginx

切换到test账户下
信息如下
[root@centos7 sbin]# setcap cap_net_bind_service=+eip nginx
[root@centos7 sbin]# su test
[test@centos7 sbin]$ ./nginx
[test@centos7 sbin]$ ps -aux| grep nginx
test 18014  0.0  0.1  45500  1124 ?        Ss   18:49   0:00 nginx: master process ./nginx
test 18015  0.0  0.1  45960  1596 ?        S    18:49   0:00 nginx: worker process
test 18017  0.0  0.0 112664   984 pts/0    R+   18:49   0:00 grep --color=auto nginx
[test@centos7 sbin]$
cap_net_bind_service

最后别忘记怎么清除这个能力

CSDN_码404:linux普通用户使用1024以下的端口(80)

linux普通用户使用1024以下的端口(80)相关推荐

  1. Linux下用户空间访问I/O端口的相关函数

    Linux下设置端口权限的系统调用有两个:ioperm和iopl函数. ioperm 功能描述 为调用进程设置I/O端口访问权限,从端口地址from起始,共设置num个值为turn_on.ioperm ...

  2. linux普通用户开不了端口,Linux中如何让普通用户使用小于1024的端口

    在Linux系统中,一般情况下,小于1024的端口是不对没有root的Linux普通用户开放的.但是还是有一些技巧能够让没有root的用户使用小于1024的端口的.本文就来介绍一下Linux中如何让普 ...

  3. 非root用户使用1024以下端口(Linux的Capabilities)

    非root用户使用1024以下端口 一.问题背景 二.解决方法 1.进入root用户 2.分配用户权限 总结 1.Capabilities介绍 2.Capabilities其他功能名称 3.Capab ...

  4. linux普通用户监听1024以下的端口(80、443)

    最近为了安全,不打算让Nginx以root权限启动,网上查了查资料,这里整理一下分享给大家 1.介绍 linux对于非root权限用户不能使用1024以下的端口,对于一些服务,过高的权限,会带来一定的 ...

  5. setcap详解-普通用户绑定1024以下端口

    Capabilities的主要思想在于分割root用户的特权,即将root的特权分割成不同的能力,每种能力代表一定的特权操作.例如:能力CAP_SYS_MODULE表示用户能够加载(或卸载)内核模块的 ...

  6. Linux上1024以下的端口

    在Linux上,以一般用户身份执行一个需要占用小于1024端口的程序,会得到错误提示: Permission denied 这是因为在Linux平台,小于1024的端口被认为是特殊端口. The TC ...

  7. nginx非root用户使用1024以下端口

    nginx非root用户使用1024以下端口 nginx应用需要使用80和443端口,但是非root用户,nginx -t 检查文件是会报错: [majd@majd nginx]$ /home/maj ...

  8. 【linux创建用户启动tomcat】

    linux创建用户启动tomcat 前言 基本思路 开始 第一步 第二步 第三步 小知识 前言 使用root用户启动tomcat会使所有html.js等文件具备root权限,会使服务器更容易被黑. 非 ...

  9. linux通过进程看端口,linux下通过进程名查看其占用端口

    linux下通过进程名查看其占用端口: 1.先查看进程pid ps -ef | grep 进程名 2.通过pid查看占用端口 netstat -nap | grep 进程pid 例:通过nginx进程 ...

最新文章

  1. oracle 有则更新,oracle 存在则更新不存在则插入-方案
  2. 两帧点云刚性配准的ICP算法
  3. 实现人脸识别性别之路---open CV将图片显示出来
  4. linux系统安装后需要的有效小工具(持续更新)
  5. 前端组件:layui
  6. redhat配置centos的yum源
  7. git maven 发布_Maven Git发布
  8. 转 【MQTT】在Windows下搭建MQTT服务器
  9. vue 同级页面调用方法_【Vue】一个vue页面调用另一个vue页面中的方法
  10. 如何做一个国产数据库(七) 网络传输 java做订阅客户端
  11. centos 7下安装mysql
  12. 批量(或选择)导出数据库表中的数据生成Excel文件
  13. android开机自动启动app
  14. IoT-Fast支持C#啦!教你对接HslCommunication
  15. Quorum区块链原理及其概念
  16. css ms是什么意思,CSS 3中-webkit-, -moz-, -o-, -ms-这些私有前缀的含义和兼容
  17. python控制手机
  18. 电压和电流反馈判别及例子,绝对让你通透,其实也没有那么难,一次就看懂!从此终于搞懂了电压反馈和电流反馈!
  19. 什么是python的内置函数_什么是python内置函数
  20. 用matlab编写了一个DSP数据处理小软件

热门文章

  1. python itertools_python - itertools 模块
  2. Xshell6和Xftp提示“要继续使用此程序,您必须应用最新的更新或使用新版本
  3. 创业一年(13)八月风高
  4. vue实现鼠标滚动图片放大缩小拖拽
  5. [多项式前缀和差分]智乃酱的静态数组维护问题多项式
  6. OpenCore(OC)引导开机声音与图形界面设置
  7. maven项目依赖导入不进去的解决方法或者报错的情况
  8. Web----CSS
  9. 真是想不到系列之一:VB到底为我们做了什么?
  10. 一份PPT让你了解5G天线技术【附下载】