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

问题描述 投票:0回答:1

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

./program

我收到了这个错误:

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

出现此错误是因为我使用套接字,我需要以root身份运行我的应用程序,所以我这样做了:

sudo ./program

这请求我的密码和程序正常工作。

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

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

有人可以帮帮我吗?

非常感谢

c++ sockets ubuntu
1个回答
1
投票

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

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

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

希望有所帮助。

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

© www.soinside.com 2019 - 2024. All rights reserved.