"Permission Error", without the information precisely which system/library call failed with which arguments is not all that helpful (and figuring out what exactly fails is not straightforward [1]), so after printing the error reply, point users to #313, which is likely the cause.
(Alternatively, one could also check capabilities during startup, e.g. using capget(2) or libcap. Might by worth it if any command a user can run needs these capabilities.)
--
[1] strace shows (apparently successful) interactions with both an eventfd (glib event loop related?) and a socket (the actual bluetooth stuff).
"Permission Error", without the information precisely which system/library call failed with which arguments is not all that helpful (and figuring out what exactly fails is not straightforward [1]), so after printing the error reply, point users to #313, which is likely the cause.
(Alternatively, one could also check capabilities during startup, e.g. using capget(2) or libcap. Might by worth it if any command a user can run needs these capabilities.)
-- [1] strace shows (apparently successful) interactions with both an eventfd (glib event loop related?) and a socket (the actual bluetooth stuff).