我有一个在Linux移动设备上运行的用户级C ++测试应用程序。其中一项测试涉及启用/禁用打印机纸张传感器,这需要在设备文件上写入具有root权限。有没有办法向我的应用程序授予这种特权?如果没有,是否有解决方法?
这样就可以了
为root执行:
chown -v root:root /path/to/yourapp
chmod -v 4755 /path/to/yourapp
Run Code Online (Sandbox Code Playgroud)
或者
chmod -v u+s /path/to/yourapp
Run Code Online (Sandbox Code Playgroud)
或者
man chmod
Run Code Online (Sandbox Code Playgroud)
这不适用于脚本。是的,您应该认真对待jdizzle所说的有关删除不必要的特权的内容。
解决此问题的另一种方法是使运行应用程序的用户成为拥有设备文件的组的成员。例如,
ls -la /dev/devicefile
crw-rw---- 1 root printer 4, 0 may 6 10:56 /dev/devicefile
Run Code Online (Sandbox Code Playgroud)
该printer组的成员可以读写该设备,因此您只需要添加joe到该printer组(并重新启动会话)。
gpasswd -a joe printer
Run Code Online (Sandbox Code Playgroud)
如果需要调整devicefile权限,则可能需要编辑udev规则以使其永久。但是chmod应该也可以。
其他值得研究的选项:(此处有个setcap(8)不错的指南)和。sudo(8)