问题背景
飞牛 NAS 的 Lucky 应用默认以 Lucky 用户运行,而 Linux 系统中绑定 1024 以下的端口(如 80、443)需要 root 权限,导致 Lucky 无法监听这些端口。
解决方案
使用 Linux 的 setcap 命令给 Lucky 程序授予绑定特权端口的能力,无需以 root 身份运行。
操作步骤
- SSH 登录飞牛 NAS
ssh 你的用户名@你的NAS地址
- 授予端口绑定权限
sudo setcap 'cap_net_bind_service=+ep' /vol2/@appcenter/Lucky/bin/lucky
注意:如果你的 Lucky 安装在 vol1,请将路径改为 /vol1/@appcenter/Lucky/bin/lucky
- 验证权限是否设置成功
sudo getcap /vol2/@appcenter/Lucky/bin/lucky
应该看到输出:
/vol2/@appcenter/Lucky/bin/lucky cap_net_bind_service=ep
- 重启 Lucky 应用
sudo appcenter-cli stop Lucky
sudo appcenter-cli start Lucky
或者在飞牛 NAS 网页管理界面重启 Lucky 应用。
- 验证端口监听
sudo ss -tlnp | grep lucky
应该看到 Lucky 已监听 80 和 443 端口:
LISTEN *:80 users:(("lucky",...))
LISTEN *:443 users:(("lucky",...))
注意事项
- 每次 Lucky 更新后需要重新执行 setcap 命令,因为二进制文件会被替换
- 这个方法比用 root 运行更安全,遵循最小权限原则