Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run my executable automatically as root ubuntu

I am working in Ubuntu 14.04 I have an C++ application which I have compiled. I get the executable which name is "program". Well the thing is that this program use opencv and sockets then if I try to execute it in the terminal like this:

./program

I got this error:

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

This error appear because I using socket and I need to run my application as root, so I tyoe this:

sudo ./program

This request my password and the program works propertly.

The thing is that I want to run this "program" automatically when I start my Ubuntu, but it does not work. I have another application the name is "camera" which only use opencv, no socket, then I do not need to run as root. So I put this application in the startup application of ubuntu and the "camera" application start at the begining without problem.

So I guess that my problem is that I need to run as root my "program", but I can not get it.

Someone could help me?

Many Thanks

like image 652
user3766585 Avatar asked Oct 23 '25 16:10

user3766585


1 Answers

You need to change the ownership of the program to root:root and use the setuid permission so that it runs with the permissions of its owner, not the user who invoked it.

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

Now the program will run with root privileges for all users.

Hope that helps.

Side note: As a programmer you should strive to ensure that programs that run with root privileges are free of security holes, so that they're not vulnerable to buffer overflow exploits, etc.

like image 66
RJinman Avatar answered Oct 25 '25 06:10

RJinman