Matt Welander Matt Welander - 1 month ago 19
Linux Question

how to do a linux reboot from php file

I have a user brftv on my linux system and I have www-data that runs the nginx.

from the terminal I can let my brftv user run

sudo /sbin/reboot


and it works fine since I added the following to my /etc/sudoers file's "#user privilege specification" section:

brftv ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff
www-data ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff


But when my php file runs the following code, nothing happens

exec('nohup sudo -u brftv /sbin/reboot');


I added the www-data line to the etc/sudoers above in case it was necessary when running the above exec() (even though I run it as -u brftv, but I'm no linux expert, just thought better be safe just in case).

The php file that runs this exec() is owned by www-data, and chmod is 777, all should thus have privilege to execute from it.

I have tried running the php-file both through browser (would be run by user www-data I assume) and from terminal $
php myFile.php
.

------------------- UPDATE -----------------

I did this

sudo chmod u s /sbin/reboot


Which allows all users on my system to run the reboot cmd without password. It works, but I rather not leave it THAT open, so the other solution with /etc/sudoers would be better, if someone would have a hint at what my problem is...

I followed this tut http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/ and the second example is pretty much what I got above that didn't work for me..

Answer

The only way I got this to work on my system was to "hack" it by changing chmod on /sbin/reboot like this guy did

http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/

sudo chmod u+s /sbin/reboot

I realize this might not be optimal in many cases, but this mediaPlayer is very much locked down so there is no accessing a terminal for anyone else anyways.

Comments