linux非root用户出现bind: permission denied 解决

/ 0评 / 0

问题根本原因:
特权端口:是指在 Linux 系统下,只允许 root 用户运行的程序才可以使用特权端口 ( 1024 以下的端口 )。如果在普通用户下使用特权端口将会报错。

解决:

使用setcap给服务程序赋予能力,该种方式是给程序赋予绑定特权端口的能力。操作如下:

使用 setcap 'CAP_NET_BIND_SERVICE=+ep' /path/to/program 赋予(raise)绑定特权端口的能力
使用 setcap 'CAP_NET_BIND_SERVICE=-ep' /path/to/program 清除(lower)绑定特权端口的能力

也可使用setcap -r /path/to/program清除(remove)该程序的所有能力

发表评论

邮箱地址不会被公开。 必填项已用*标注