Github上下载的FRPS发行版中,自带了systemd引导系统的服务文件,但是默认设置的User=nobody会导致无法绑定1024以下的端口。

这是由于Linux的安全策略导致的,可以改为User=root即可解决,如果觉得root权限过高,也可以通过AmbientCapabilities来给服务添加访问1024以下端口(Privileged Ports)的权限。

附上完整的文件,注意添加了一行AmbientCapabilities=CAP_NET_BIND_SERVICE

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

Tips:

使用systemd的发行版可以使用AmbientCapabilities给服务的一些cap。
还有一个参数CapabilityBoundingSet,这个参数表示的是限制该服务拥有的cap,也就是不在这个列表里的cap都会被去掉。

最后修改:2022 年 01 月 04 日
如果觉得我的文章对你有用,请随意赞赏