
Tengo un sistema Linux integrado creado con Yocto. Recién salido de compilación, solo tenía un usuario root. Creé un nuevo usuario. Este nuevo usuario no puede abrir ningún puerto en el sistema aunque sea mayor que 1024.
Para una prueba rápida cuando ejecuto python -m SimpleHTTPServer
como root
, simplemente funciona.
~ # python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
Sin embargo, cuando lo ejecuto con un usuario no root, falla debido a problemas de acceso.
~ $ 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
Probé diferentes puertos para esto y el usuario no root no puede abrir ninguno de ellos.
Tengo entendido que solo el usuario root puede acceder a los puertos <1024, pero los usuarios no root pueden utilizar otros puertos siempre que estén libres. Sin embargo, no puedo utilizar ningún puerto. Cualquier consejo será de gran ayuda.
Respuesta1
Hay un grupo inet(3003)
que se asignó al usuario pero no a ningún usuario nuevo. Una vez que agrego el usuario no root a este grupo, puede abrir los puertos y python -m SimpleHTTPServer
funciona bien.
Pude llegar a estos detalles ejecutándolo /sbin/ifconfig
como usuario no root. Ejecutarlo mencionó específicamente que inet
el socket no estaba disponible y trastear un poco me llevó a la solución anterior.