Networking
非root使用者無法打開任何埠
我有一個使用 Yocto 建構的嵌入式 Linux 系統。剛剛建構,它只有一個root使用者。我創建了一個新使用者。這個新使用者無法打開系統上的任何埠,即使它們大於 1024。
對於我執行
python -m SimpleHTTPServer
as時的快速測試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
套接字不可用並且擺弄了一下讓我得到了上述解決方案。