普通用户运行Python脚本访问系统DBus报错AccessDenied的解决求助
各位好,我正在树莓派Bookworm系统上开发一个Python脚本,打算把它做成普通用户的systemd服务来运行。这个脚本的核心功能是监听BlueZ通过系统DBus发送的消息,以此识别蓝牙设备的连接和断开事件。
目前的问题是:用sudo运行脚本一切正常,但切换到普通用户运行时,直接抛出权限错误:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: rejected attempt to call AddMatch by connection :1.117 (uid=1000 pid=1811 comm="python connect_listener.py") with uid 1000
另外我注意到一个可能相关的现象:在终端里用普通用户执行dbus-monitor --system时,虽然最终能正常监控消息,但会先弹出这个警告:
dbus-monitor: unable to enable new-style monitoring: org.freedesktop.DBus.Error.AccessDenied: "rejected attempt to call BecomeMonitor by connection :1.118 (uid=1000 pid=1829 comm="dbus-monitor --system") with uid 1000"
有没有朋友遇到过类似的问题?想请教下怎么给普通用户配置访问系统DBus的权限,让脚本能正常运行呢?
备注:内容来源于stack exchange,提问作者antonpoll

