Пользователь без прав root не может открывать порты.

Пользователь без прав root не может открывать порты.

У меня встроенная система Linux, собранная с помощью Yocto. Только что после сборки у нее был только пользователь root. Я создал нового пользователя. Этот новый пользователь не может открыть ни одного порта в системе, даже если они больше 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

Я пробовал разные порты, но пользователь без прав root не может открыть ни один из них.

Насколько я понимаю, только пользователь root может получить доступ к портам < 1024, но другие порты могут использовать и не-пользователи, если они свободны. Однако я вообще не могу использовать ни один порт. Любые указания будут очень полезны.

решение1

Есть группа inet(3003), которая была назначена пользователю, но не новым пользователям. Как только я добавляю в эту группу пользователя без прав root, они могут открывать порты и все python -m SimpleHTTPServerработает нормально.

Мне удалось добраться до этой конкретики, запустив ее /sbin/ifconfigкак не-root пользователя. Запуск его специально упомянул, что inetсокет недоступен, и немного повозившись, я нашел решение выше.

Связанный контент