ルート以外のユーザーはポートを開くことができません。

ルート以外のユーザーはポートを開くことができません。

私はYoctoを使って構築された組み込みLinuxシステムを持っています。初めてビルドされると、rootユーザーは1人だけです。新しいユーザーを作成しました。新しいユーザーは、システムのポートが1024より大きい場合でも開くことはできません。

python -m SimpleHTTPServerクイックテストを実行すると動作rootします。

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

ただし、root以外のユーザーを使用して実行すると、アクセスの問題によって失敗します。

~ $ 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未満のポートにアクセスできますが、他のポートはroot以外のユーザーも利用可能な限り使用できます。ただし、どのポートもまったく使用できません。どんなアドバイスでも役に立ちます。

ベストアンサー1

inet(3003)ユーザーに割り当てられているが新しいユーザーには割り当てられていないグループがあります。ルート以外のユーザーをグループに追加すると、彼らはポートを開いてpython -m SimpleHTTPServer正常に実行できました。

/sbin/ifconfigroot以外のユーザーとして実行してこの詳細を学ぶことができました。これを実行するとinetソケットが使用できないという内容が具体的に言及されており、周りを見回すと上記の解決策が見つかりました。

おすすめ記事