0

我正在尝试启动nodejs服务器,发现它无法绑定端口8000或8080、1234、12345 ....

Error: listen EACCES

如果我禁用 selinux (echo 0 > /selinux/enforce) 或者我以 root 身份运行它,它就可以工作。

它是nodejs的东西吗?python -m SimpleHTTPServer 8000 也失败了。

socket.error: [Errno 13] Permission denied

然后我尝试了端口 54321,它可以工作,32768,工作,32767,不。好的,所以 python 和 nodejs 都可以工作,如果

the port > 32767

或者

selinux disabled

或者

has root privilege

node 和 python 都通过 yum install 安装到 /usr/bin。

-rwxr-xr-x. root root   system_u:object_r:bin_t:s0       node
-rwxr-xr-x. root root   system_u:object_r:bin_t:s0       python

哪个 selinux 政策导致了这种情况?

这是一个更新的 Centos 6.4 x64 最小盒子。

SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
4

1 回答 1

1

您可以尝试查看端口是否在 SELinux 中打开:

semanage port -l | grep 8000

如果它不在列表中,您可以尝试使用以下命令打开该端口:

semanage port -a -t http_port_t -p tcp 8000
于 2013-12-19T17:35:53.660 回答