我在硬件设备上工作,我必须在其中执行一些GPIO操作。
在程序开始时,我调用iopl(3)
。可执行文件不是root
所拥有,但具有功能集-cap_sys_rawio+eip
。虽然这在大多数情况下都有效
有时该过程失败,并显示以下信息:
iopl: Operation not permitted
能力不足吗?我无法以root
的身份运行该程序。
设备正在运行Ubuntu 14.04.2
。 dmesg
/ syslogs
没有给予
任何提示!
更多详细信息:
我的main
的开头是这样的:
if (iopl(3) != 0) {
perror("iopl");
assert(!"Failed to set privilege!");
}
尽管大多数情况下都可以使用,但有时在硬件平台上也可以
(基于Intel Atom),此操作将失败,perror
打印iopl: Operation not permitted
。
答案 0 :(得分:0)
知道您不能以root用户身份运行程序,我想您是否尝试过:
chmod u+s /usr/bin/xinit
,或者如果您具有root用户访问权限,
sudo chmod u+s /usr/bin/xinit
如果未设置setuid(考虑在没有sudo的情况下运行-因为您已经具有root访问权限)
sudo chown root $prefix/Xorg
sudo chmod u+s $prefix/Xorg