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都会被去掉。