Networking

非root使用者無法打開任何埠

  • July 29, 2021

我有一個使用 Yocto 建構的嵌入式 Linux 系統。剛剛建構,它只有一個root使用者。我創建了一個新使用者。這個新使用者無法打開系統上的任何埠,即使它們大於 1024。

對於我執行python -m SimpleHTTPServeras時的快速測試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使用者使用,只要它們是免費的。但是,我根本無法使用任何埠。任何指針都會非常有幫助。

有一個組inet(3003),已分配給使用者,但未分配給任何新使用者。一旦我將非 root 使用者添加到該組,他們就可以打開埠並python -m SimpleHTTPServer執行良好。

/sbin/ifconfig通過以非 root 使用者身份執行,我能夠了解這些細節。執行它特別提到inet套接字不可用並且擺弄了一下讓我得到了上述解決方案。

引用自:https://unix.stackexchange.com/questions/655258