CGI- och PHP-program är program som exekveras på webbservern. Av säkerhetsskäl använder sig DSV av suEXEC vilket innebär att alla CGI/PHP-program körs under användarens egen identitet i stället för webbserverns identitet (www-data). För att CGI/PHP-program ska fungera måste vissa regler följas:
- Filer med CGI-program skall ha namn som slutar på ".cgi" och PHP-programs namn skall sluta på ".php".
- .cgi-filer kan skrivas i valfritt programspråk. Är programmet inte kompilerat så måste första raden som vanligt vara en #!-rad som anger interpretatorn.
- Katalogen där CGI/PHP-programmet ligger får bara vara skrivbar av ägaren och inga andra.
- Filen med CGI/PHP-program får bara vara skrivbar av ägaren och inga andra.
- Filen med CGI/PHP-program måste vara exekverbar av ägaren (ha x-biten satt för ägaren).
- Filen med CGI/PHP-program får inte ha Unix setuid eller setgid satt.
- Alla kataloger ovanför CGI/PHP-programmet i filsystemshierarkin måste vara exekverbara för alla (ha x-biten satt för "others"). Det här kravet är inte specifikt för CGI/PHP-program utan gäller även vanliga statiska webbsidor.
PHP-filer måste vara exekverbara
Normalt så brukar PHP-filer inte vara exekverbara, men eftersom DSV använder suEXEC så måste de vara det.
Om du är inloggad på en Linux-pc vid DSV eller vid skalservern triton.dsv.su.se så kan du göra alla PHP-filer i ett katalogträd exekverbara med Unix-kommandot
find . -name '*.php' -exec chmod u+x {} \;