Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
应用程序的网络功能 我正忙着在Linux计算机上开发C++应用程序。该应用程序使用使用以太网适配器和网络的第三方库。该库是GigE Vision摄像头的库。启动时,我的应用程序尝试连接到摄像头,然后返回有关摄像头的信息,然后开始将视频流传输到应用程序_C++_Linux_Privileges_Linux Capabilities - Fatal编程技术网

应用程序的网络功能 我正忙着在Linux计算机上开发C++应用程序。该应用程序使用使用以太网适配器和网络的第三方库。该库是GigE Vision摄像头的库。启动时,我的应用程序尝试连接到摄像头,然后返回有关摄像头的信息,然后开始将视频流传输到应用程序

应用程序的网络功能 我正忙着在Linux计算机上开发C++应用程序。该应用程序使用使用以太网适配器和网络的第三方库。该库是GigE Vision摄像头的库。启动时,我的应用程序尝试连接到摄像头,然后返回有关摄像头的信息,然后开始将视频流传输到应用程序,c++,linux,privileges,linux-capabilities,C++,Linux,Privileges,Linux Capabilities,过了一段时间,应用程序无法连接摄像机或从摄像机获取摄像机信息,但以root sudo的身份运行应用程序解决了这个问题 我已经联系了图书馆的供应商,他们表示我应该做以下工作: 感觉以root用户身份运行会危及其系统安全的用户可能会发现以下实现令人满意: 将可执行文件所有者设置为root。 在可执行文件上设置setuid权限位 在代码中,当应用程序启动时,使用capset释放除以下特权以外的所有特权:CAP_SYS_NICE、CAP_NET_ADMIN、CAP_NET_BROADCAST、CAP_N

过了一段时间,应用程序无法连接摄像机或从摄像机获取摄像机信息,但以root sudo的身份运行应用程序解决了这个问题

我已经联系了图书馆的供应商,他们表示我应该做以下工作:

感觉以root用户身份运行会危及其系统安全的用户可能会发现以下实现令人满意:

将可执行文件所有者设置为root。 在可执行文件上设置setuid权限位 在代码中,当应用程序启动时,使用capset释放除以下特权以外的所有特权:CAP_SYS_NICE、CAP_NET_ADMIN、CAP_NET_BROADCAST、CAP_NET_RAW。应用程序将以所有根权限启动,但启动后会立即删除这些权限。 这是可行的,但是没有其他方法可以在不更改可执行文件的情况下实现这一点吗?我正在考虑将我的用户添加到允许我访问这些特权的组中,任何帮助都将不胜感激

上述解决方案不是最优的,因为每次编译后,我都需要更改所有者并设置权限。该应用程序用于录制视频和捕获图像。对于上述解决方案,这些录制和捕获也归根用户所有,并且在分发文件时需要将用户更改回根用户

操作系统:Ubuntu Linux 11.10
环境:C++与QT

> P>你可以手工设置需要的能力,使用StCabp作为根。
因此,使用此命令设置适当的功能,它将作为普通用户运行,甚至无需成为root用户。

听起来库正在做一些实际需要root权限的事情

也许最简单的解决方案是在构建过程中添加权限,例如Makefile

部分解决此问题的一种方法是将程序分为两个程序,一个用于使用库与相机通信,另一个用于通过套接字或管道与接口程序通信的用户界面。这样,您只需要在更改接口程序时更改权限。对于setuid程序来说,这通常也是一个好主意——您有一个具有提升权限的小包装程序,而较大的GUI程序在没有扩展权限的情况下运行。审计setuid程序会更容易,特别是如果它可以变得非常简单的话