나는 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
소켓을 사용할 수 없다는 내용이 구체적으로 언급되었으며 , 주변을 둘러보니 위의 해결 방법을 찾을 수 있었습니다.