没有合适的资源?快使用搜索试试~ 我知道了~
首页如何让Linux下非root用户程序使用小于1024端口
在 Linux 下,默认情况下1024 以下的端口是要在 root 下才能使用的,在其他用户下,如果尝试使用将会报错。在有的时候,我们可能考虑程序运行在 root 帐户下,但这可能会给 Linux 系统带来安全风险。那如何能够让非 root 用户运行的程序能够对外启用小于1024的端口呢? 本文尝试给出一些方法: (题图来自: wordpress.com) 第一种方法:SetUID 给用户的应用程序在执行位设置用户 ID 能够使程序可以以 root 权限来运行,这个方法让程序能够像在 root 下运行一样,不过需要非常小心,这种方法同样会带来安全风险,特别是当要
资源详情
资源评论
资源推荐

如何让如何让Linux下非下非root用户程序使用小于用户程序使用小于1024端口端口
在 Linux 下,默认情况下1024 以下的端口是要在 root 下才能使用的,在其他用户下,如果尝试使用将会报错。在有的时
候,我们可能考虑程序运行在 root 帐户下,但这可能会给 Linux 系统带来安全风险。那如何能够让非 root 用户运行的程序能
够对外启用小于1024的端口呢?
本文尝试给出一些方法:
(题图来自: wordpress.com)
第一种方法:SetUID
给用户的应用程序在执行位设置用户 ID 能够使程序可以以 root 权限来运行,这个方法让程序能够像在 root 下运行一样,
不过需要非常小心,这种方法同样会带来安全风险,特别是当要执行的程序本身存在安全风险时。
使用的方法是:
chown root.root /path/to/application
#使用SetUID
chmod u+s /path/to/application
我们可以看到在系统下,/usr/bin/passwd这种文件,使用了SetUID,使得每个系统能的用户都能用passwd来修改密码
——这是要修改/etc/passwd的文件(而这个只有root有权限)。
既然要使用非root用户运行程序,目的是要降低程序本身给系统带来的安全风险,因此,本方法使用的时候需要特别谨
慎。
第二种方法:CAP_NET_BIND_SERVICE
从 2.1 版本开始,Linux 内核有了能力的概念,这使得普通用户也能够做只有超级用户才能完成的工作,这包括使用端
口。
获取CAP_NET_BIND_SERVICE能力,即使服务程序运行在非root帐户下,也能够banding到低端口。使用的方法:
# 设置CAP_NET_BIND_SERVICE
setcap cap_net_bind_service =+ep /path/to/application
Note:
1. 这个方法并不是所有Linux系统通适,内核在2.1之前的并没有提供,因此你需要检查要使用此方法所在系统是否支持;
2. 另外需要注意的是,如果要运行的程序文件是一个脚本,这个方法是没有办法正常工作的。
第三种方法:Port Forwarding
如果要运行的程序有权限监听其他端口,那么这个方法是可以使用的,首先让程序运行在非root帐户下,并绑定高于1024
的端口,在确保能正常工作的时候,将低端口通过端口转发,将低端口转到高端口,从而实现非root运行的程序绑定低端口。
要使用此方法可以使用下面的方式:
# Enable the IP FORWARD kernel parameter.
sysctl -w net.ipv4.ip_forward=1
# Use iptables rules to redirect packets
iptables -F -t nat
iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to:8088
第一步使用sysctl确保启用IP FORWARD功能(此功能在Red Hat/CentOS默认是被禁用的),注意,代码中使用的sysctl


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0