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 权限运行的程序没有安全漏洞,这样它们就不会受到缓冲区溢出漏洞等的攻击。
归档时间: |
|
查看次数: |
12732 次 |
最近记录: |