Don't tell me this is a duplicate because I have already read questions like how to execute a command as root but I just can't make it work for me.
This is my C program whoami.c
:
#include <stdio.h>
#include <stdlib.h>
int main() {
system("whoami");
}
And this is exactly what I did:
user@ubuntu:~/Desktop/test$ ls
whoami.c
user@ubuntu:~/Desktop/test$ gcc whoami.c
user@ubuntu:~/Desktop/test$ sudo chown root:root a.out
[sudo] password for user:
user@ubuntu:~/Desktop/test$ sudo chmod 4711 a.out
user@ubuntu:~/Desktop/test$ ls -l
total 24
-rws--x--x 1 root root 16816 Nov 13 13:03 a.out
-rw-rw-r-- 1 user user 75 Nov 13 13:03 whoami.c
user@ubuntu:~/Desktop/test$ ./a.out
user
user@ubuntu:~/Desktop/test$ sudo ./a.out
root
user@ubuntu:~/Desktop/test$
I thought that the s
in the execution bit means that no matter who starts this program, it will ever run as root so my question is why is this not working?
And if doing this is not possible how can I let any user run a specific program as root?