目前我正在玩蓝牙LE和iBeacon设备。 我写了一个不断寻找附近信标的服务器。
我的服务器遵循此示例(Link)
不幸的是调用函数:
hci_le_set_scan_parameters()
需要root权限。
由于我不想以root权限运行整个服务器,我想询问是否有可能只使用root权限调用此函数?
我知道在执行程序时要求sudo总是至少有问题我找不到任何其他扫描iBeacons的可能性。 如果还有其他可能性,我也很高兴听到它。
感谢您的帮助和亲切的问候
nPLus
答案 0 :(得分:3)
根据POSIX,UID / GID是进程属性。您的流程中的所有代码都是使用当前为整个流程设置的UID / GID执行的。
您可以以root身份启动服务器并立即删除root权限。然后,您可以在执行函数时使用seteuid(2)
临时获得root权限。
另见this answer。
您也可以只获得选定的capabilities(7)
(临时或永久)。
主题安全提示
AFAIK,Linux UID / GID是每线程属性,可以为单线程设置它们,请参阅NOTES
手册页中的seteuid()
部分和{{3} }。