📌  相关文章
📜  如何以非root用户访问权限绑定到小于1024的端口号?(1)

📅  最后修改于: 2023-12-03 15:08:16.480000             🧑  作者: Mango

如何以非root用户访问权限绑定到小于1024的端口号?

在Linux/Unix系统上,访问小于1024的端口号需要root用户权限。但是,在某些情况下,我们可能希望以非root用户的身份来绑定端口号,如何实现呢?

1. 使用setcap命令

setcap是Linux内核提供的一个工具,可用于设置进程的网络权限。我们可以使用setcap命令将需要访问小于1024的端口号的程序的网络权限赋予非root用户。

安装setcap

在Debian/Ubuntu系统上,可以使用apt-get命令安装setcap:

sudo apt-get install libcap2-bin
使用setcap

以Apache服务器为例,我们可以将访问80端口的网络权限赋予www-data用户:

sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/apachectl

上述命令中,cap_net_bind_service是一种能力,代表允许进程绑定到小于1024的端口号。+ep参数表示将这种能力添加到可执行文件的能力集中。

2. 使用authbind命令

authbind是一个开源的工具,可以让非root用户绑定到小于1024的端口号,而不必使用setcap命令。

安装authbind

在Debian/Ubuntu系统上,可以使用apt-get命令安装authbind:

sudo apt-get install authbind
使用authbind

以Node.js的http模块为例,我们可以使用authbind命令让Node.js应用程序在80端口监听:

sudo touch /etc/authbind/byport/80
sudo chown your_user_name /etc/authbind/byport/80
sudo chmod 755 /etc/authbind/byport/80
authbind --deep node app.js

上述命令中,touch命令创建了一个文件,/etc/authbind/byport/80代表允许绑定80端口的权限。chown命令将该文件的拥有者改为你的用户名,chmod命令设置文件权限。authbind --deep命令是为了让Node.js应用程序能够访问子进程的端口。

总结

使用setcap或authbind命令,我们可以让非root用户绑定到小于1024的端口号,提高了应用程序的安全性和可用性。