Detta är framför allt ett inlägg som jag själv kan använda nästa gång jag sätter upp en Apache server och råkar på ett problem med ”403 Forbidden”, som inte verkar ha en naturlig förklaring.
Oavsett om det är en virtuell host eller inte så kan man råka ut för detta fel när man använder en annan sökväg än default för webbroten.
Normalt så skall man säkerställa att användaren och gruppen ”apache” äger och har behörigheter i den aktuella katalogen.
Detta gör man med:
sudo chown -R apache:apache /sökväg/till/katalog/
sudo chmod -R 755 /sökväg/till/katalog/
Även om man har säkerställt att detta är gjort så kan man råka ut för 403 Forbidden, och då kan det vara SELinux (Security Enhanced Linux) som begränsar vad som kan göras. SELinux är knutet till Linux kärnan och möjliggör avancerade säkerhetslösningar för filer i säkerhetskritiska system. SELinux används inte av alla distributioner, men finns i Fedora och RHEL med flera.
För att sätta rättigheter i SELinux så kan man använda:
sudo chcon -R -t httpd_sys_content_t /sökväg/till/katalog/
sudo chcon -R -t httpd_sys_rw_content_t /sökväg/till/katalog/
sudo setsebool -P httpd_can_network_connect 1
Det tredje kommandot tillåter file_get_contents/curl, vilket inte är tillåtet med SELinux som standard.