Uruchamianie skryptów powłoki przez php

Jeśli chcecie uruchamiać skrypty powłoki bezpośrednio ze strony www za pomocą php należy wykonać kilka czynności.

1) Tworzymy w katalogu, do którego ma dostęp php, plik zawierający skrypt do uruchomienia o nazwie skrypt.sh

root@server:/# touch /var/www/naszastrona/skrypt.sh

2) Przypisujemy do pliku właściciela:

root@server:/# chown root:root /var/www/naszastrona/skrypt.sh

i prawa:

root@server:/# chmod 705 /var/www/naszastrona/skrypt.sh

3) Edytujemy plik i wpisujemy do niego polecenia do wykonania:

root@server:/# vim /var/www/naszastrona/skrypt.sh

na przykład polecenie uruchamiające naszego firewalla:

#!/bin/sh
sudo /home/start/firewall.sh

4) Zmieniamy właściciela i nadajemy odpowiednie uprawnienia do pliku firewall.sh:

root@server:/# chown root:root /home/start/firewall.sh
root@server:/# chmod 4700 /home/start/firewall.sh

5) Dodajemy uprawnienia dla Apacha do uruchamiania skryptu bez hasła za pomocą sudo (zmiana domyślnego edytora systemowego):

root@server:/# visudo

dopisując na końcu poniższą linijkę:

www-data ALL = (root) NOPASSWD: /home/start/firewall.sh

6) Dodajemy do strony php poniższe polecenie do uruchomienia skryptu:

<?
$script="/var/www/naszastrona/skrypt.sh";
$message = shell_exec($script);
echo $message;
?>

Po wczytaniu strony w przeglądarce, uruchomiony skrypt powinien wyświetlić wyniki poleceń wykonanych podczas jego uruchamiania (nie wyświetli nic, jeśli wykonane polecenia nie wygenerują żadnych informacji).