非root用户无法打开任何端口

非root用户无法打开任何端口

我有一个使用 Yocto 构建的嵌入式 Linux 系统。刚构建完成时,它只有一个 root 用户。我创建了一个新用户。该新用户无法打开系统上的任何端口,即使这些端口大于 1024。

python -m SimpleHTTPServer当我运行时进行快速测试root,它就可以工作。

~ # python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

但是,当我使用非 root 用户运行它时,由于访问问题而失败。

~ $ python -m SimpleHTTPServer
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/lib/python2.7/SimpleHTTPServer.py", line 235, in <module>
    test()
  File "/usr/lib/python2.7/SimpleHTTPServer.py", line 231, in test
    BaseHTTPServer.test(HandlerClass, ServerClass)
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 606, in test
    httpd = ServerClass(server_address, HandlerClass)
  File "/usr/lib/python2.7/SocketServer.py", line 414, in __init__
    self.socket_type)
  File "/usr/lib/python2.7/socket.py", line 191, in __init__
    _sock = _realsocket(family, type, proto)
socket.error: [Errno 13] Permission denied

我为此尝试了不同的端口,非 root 用户无法打开其中任何一个。

我的理解是只有 root 用户可以访问 < 1024 的端口,但其他端口只要空闲就可以由非 root 用户使用。但是,我根本无法使用任何端口。任何指示都会非常有帮助。

答案1

有一个组inet(3003),已分配给用户但未分配给任何新用户。一旦我将非 root 用户添加到该组中,他们就能够打开端口并python -m SimpleHTTPServer运行得很好。

/sbin/ifconfig通过以非 root 用户身份运行,我能够了解这一细节。运行它时特别提到inet套接字不可用,并且摆弄了一下让我找到了上述解决方案。

相关内容