Webserveren uten tilgang til filer

For at filene på webserveren skal kunne brukes av webserveren (httpd) må denne ha lesetilgang til dem. Bilder som webserveren ikke har lesetilgang til vil ikke bli vist på web. PHP-kode som webserveren ikke har lesetilgang til vil ikke bli utført.

Dersom dere kopierer filer til webserveren med scp og andre filkopieringsprogram kan dere oppleve at webserveren ikke klarer å lese fila selv om fila har mod-bits som gir lesetilgang for alle (typisk 644 eller -rw-r--r--).

Årsak til dette den RHEL7 vi bruker er utstyrt med «ekstra» sikkerhet (SELinux), slik at det i tillegg til mod-bits også benyttes andre mekanismer for tilgangskontroll. Disse er bare synlig i «security context».

Har dere får problemer med tilgang kan dere inspisere «security context» til den eller de filene som gir problemer. Dette gjøres med -Z-velgeren til CLI-kom­mandoen ls. Eksempel:

$ ls -Z *.png
-rw-r--r-- ... unconfined_u:object_r:httpd_sys_rw_content_t:s0 bilde1.png
-rw-r--r-- ... unconfined_u:object_r:user_home_t:s0 bilde2.png

Her vil det fila med navn bilde2.png som vil gi problemer. Den vil ikke kunne vises på web selv om den har nøyaktig samme mod-bits som bilde1.png.

Legg merke til at feltet det tredje feltet i «security context» som vises for bilde2.png verken er httpd_sys_content_t eller httpd_sys_rw_content_t. Dette innebærer at webserveren ikke har tilgang til å lese denne fila.

Dersom dere opplever dette problemet kan det fikses med en av følgende CLI-kommandoer (bytt ut filnavnet «bilde2.png» i eksemplet med den fila dere har problemer med):

$  sudo chcon -t httpd_sys_content_t bilde2.png
$  sudo chcon -t httpd_sys_rw_content_t bilde2.png

Den første benyttes på filer som kun skal være lesbare (men ikke skrivbare) for webserveren. Den andre brukes dersom webserveren skal ha skrivetilgang.