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

use*_*585 3 c++ sockets ubuntu

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

./program
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

listener: socket: Operation not permitted
setsockopt: Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

出现此错误是因为我使用套接字并且需要以 root 身份运行我的应用程序,所以我输入了以下内容:

sudo ./program
Run Code Online (Sandbox Code Playgroud)

这要求我的密码并且程序正常工作。

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

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

有人可以帮助我吗?

非常感谢

小智 9

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

sudo chown root:root ./program
sudo chmod a+s ./program
Run Code Online (Sandbox Code Playgroud)

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

希望有帮助。

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