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