
나는 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
소켓을 사용할 수 없다는 언급이 있었고 잠시 동안 주변을 둘러보니 위의 해결 방법이 나타났습니다.