システム:Ubuntu 15.10 with Bluez 5.38BlueZ5ライブラリを使用してPyBluezサンプルを(sudoなしで)通常のユーザとして実行するにはどうすればよいですか?
PyBluez with BlueZ 4はこれに問題はありませんでした。しかし、BlueZ 5に移行して、ブルートゥースコードを実行するために必要な調整を行った後、同じプログラムをsudo
なしで実行することはできません。 sudo
を使用すると、すべて正常に動作します。私はsudoをせずに実行する場合は、次のエラーがスローされます。
Traceback (most recent call last):
File "/home/sidmeister/mymodule/py34/lib/python3.4/site-packages/PyBluez-0.22-py3.4-linux-x86_64.egg/bluetooth/bluez.py", line 240, in advertise_service
protocols)
_bluetooth.error: (13, 'Permission denied')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.4/runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.4/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/sidmeister/mymodule/mymodule/blue/receiver.py", line xxx, in some_function
profiles=[bluetooth.SERIAL_PORT_PROFILE]
File "/home/sidmeister/mymodule/py34/lib/python3.4/site-packages/PyBluez-0.22-py3.4-linux-x86_64.egg/bluetooth/bluez.py", line 242, in advertise_service
raise BluetoothError (str (e))
bluetooth.btcommon.BluetoothError: (13, 'Permission denied')
私は、これはそれがsudo
を必要とする理由である、新しいBluetoothのライブラリで強化されたセキュリティに由来することを理解しています。しかし、私のユーザをそのグループのメンバーにすることができ、sudo
なしでブルートゥースにアクセスできるように、ブルートゥースに固有のアクセス権を持つ特別グループ(カメラにアクセスする場合はvideo
など)がありますか?参考までに、私のユーザーは既にdialout
グループのメンバーであり、助けにはなりません。
私はこの問題に取り組むことができる他の方法があるかどうか教えてください。
私はこれをしなかった私のマシンでは、
/usr/bin/python
は、実行可能ファイルに適切な権限を割り当てるには/usr/bin/python2.7
へのリンクです。 14.04で動作しますが、15.10では失敗します。 'sudo'ではうまく動作します。私は 'sudo'なしで15.10で動作するようにこれが必要です! – Sidmeister
あなたの質問から、あなたはpython 3.4を使っているようです。したがって、私はあなたのバイナリが '/ usr/bin/python3.4'のようなものだろうと思います。 'setcap'を実行しているときにエラーが出たのですか、それとも単に' sudo'であなたのPythonコードを実行する必要があるという問題を修正していませんか? –
はい。私はpython3.4の許可を設定し、それは滑らかでした。しかし、それは許可の問題を解決しませんでした。 'bluez.py'ライブラリの中で' bluetooth._bluetooth.sdp_advertise_service'が呼び出されたときに、 – Sidmeister