gpt4 book ai didi

linux - 如何以普通用户身份(不使用 sudo)使用 BlueZ5 库执行 PyBluez 示例?

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:38 25 4
gpt4 key购买 nike

系统:Ubuntu 15.10 和 Bluez 5.38

带有 BlueZ 4 的 PyBluez 对此没有任何问题。但是自从迁移到 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 的原因。但是,是否有任何特殊组(如 video 在访问相机的情况下)具有对蓝牙的固有访问权限,以便我可以让我的用户成为该组的成员并且无需访问蓝牙须藤?仅供引用,我的用户已经是 dialout 组的成员,但没有帮助。

如果有任何其他方法可以解决这个问题,请告诉我。

最佳答案

您可以使用 setcap 设置 python 可执行文件的权限。

在 Ubuntu 上安装 setcap:

sudo apt-get install libcap2-bin

要弄清楚你的 python 可执行文件在哪里:

which python

这通常是一个链接。您需要找出二进制文件的实际路径。在我的机器上,/usr/bin/python 是指向 /usr/bin/python2.7

的链接

为可执行文件分配适当的权限:

sudo setcap 'cap_net_raw,cap_net_admin+eip' <path-to-python-binary-here>

相关问题:https://unix.stackexchange.com/a/182559

关于linux - 如何以普通用户身份(不使用 sudo)使用 BlueZ5 库执行 PyBluez 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36701640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com