以root ubuntu自动运行我的可执行文件

时间:2014-10-17 09:18:29

标签: c++ sockets ubuntu

我在Ubuntu 14.04工作我有一个C ++应用程序,我已编译。我得到名为“program”的可执行文件。那么事情就是这个程序使用opencv和套接字然后如果我尝试在终端中执行它,如下所示:

./program

我收到了这个错误:

listener: socket: Operation not permitted
setsockopt: Bad file descriptor

出现此错误是因为我使用套接字而我需要以root身份运行我的应用程序,所以我对此提出异议:

sudo ./program

此请求我的密码和程序运行正常。

问题是我想在启动Ubuntu时自动运行这个“程序”,但它不起作用。我有另一个应用程序名称是“相机”,只使用opencv,没有套接字,那么我不需要以root身份运行。所以我把这个应用程序放在ubuntu的启动应用程序中,“相机”应用程序从一开始就没有问题。

所以我想我的问题是我需要以root身份运行我的“程序”,但我无法得到它。

有人可以帮助我吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

您需要将程序的所有权更改为root:root并使用setuid权限,以便它以其所有者的权限运行,而不是调用它的用户。

sudo chown root:root ./program
sudo chmod a+s ./program

现在程序将以所有用户的root权限运行。

希望有所帮助。

附注:作为程序员,您应该努力确保以root权限运行的程序没有安全漏洞,这样它们就不会受到缓冲区溢出攻击等的攻击。<​​/ p>