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).