我在Ubuntu 14.04工作我有一个C ++应用程序,我已编译。我得到名为“program”的可执行文件。那么事情是,如果我尝试在终端中执行它,这个程序使用opencv和套接字,如下所示:
./program
我收到了这个错误:
listener: socket: Operation not permitted
setsockopt: Bad file descriptor
出现此错误是因为我使用套接字,我需要以root身份运行我的应用程序,所以我这样做了:
sudo ./program
这请求我的密码和程序正常工作。
问题是我想在启动Ubuntu时自动运行这个“程序”,但它不起作用。我有另一个应用程序名称是“相机”,只使用opencv,没有套接字,那么我不需要以root身份运行。所以我把这个应用程序放在ubuntu的启动应用程序中,“相机”应用程序从头开始没有问题。
所以我想我的问题是我需要以root身份运行我的“程序”,但我无法得到它。
有人可以帮帮我吗?
非常感谢
您需要将程序的所有权更改为root:root并使用setuid权限,以便它以其所有者的权限运行,而不是以调用它的用户身份运行。
sudo chown root:root ./program
sudo chmod a+s ./program
现在,程序将以所有用户的root权限运行。
希望有所帮助。
旁注:作为程序员,您应该努力确保以root权限运行的程序没有安全漏洞,因此它们不容易受到缓冲区溢出攻击等的攻击。