루트가 아닌 사용자는 포트를 열 수 없습니다.

루트가 아닌 사용자는 포트를 열 수 없습니다.

나는 Yocto를 사용하여 구축된 임베디드 Linux 시스템을 가지고 있습니다. 처음 빌드되면 루트 사용자가 한 명뿐입니다. 새로운 사용자를 만들었습니다. 새 사용자는 시스템의 포트가 1024보다 크더라도 열 수 없습니다.

python -m SimpleHTTPServer빠른 테스트를 실행하면 root작동합니다.

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

그러나 루트가 아닌 사용자를 사용하여 실행하면 액세스 문제로 인해 실패합니다.

~ $ 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

이를 위해 다른 포트를 시도했지만 루트가 아닌 사용자는 그 포트를 열 수 없었습니다.

제가 이해한 바에 따르면 루트 사용자만 1024 미만의 포트에 액세스할 수 있지만 다른 포트는 루트가 아닌 사용자도 사용 가능한 한 사용할 수 있습니다. 그러나 어떤 포트도 전혀 사용할 수 없습니다. 어떤 조언이라도 도움이 될 것입니다.

답변1

inet(3003)사용자에게 할당되었지만 새 사용자에게는 할당되지 않은 그룹이 있습니다 . 루트가 아닌 사용자를 그룹에 추가하면 그들은 포트를 열고 python -m SimpleHTTPServer정상적으로 실행할 수 있었습니다.

/sbin/ifconfig루트가 아닌 사용자로 실행하여 이 세부 사항을 배울 수 있었습니다. 이를 실행하면 inet소켓을 사용할 수 없다는 내용이 구체적으로 언급되었으며 , 주변을 둘러보니 위의 해결 방법을 찾을 수 있었습니다.

관련 정보