非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套接字不可用,並且擺弄了一下讓我找到了上述解決方案。

相關內容