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