PHP site permissions

Et standard PIL site/webhotel afvikler som udgangspunkt PHP fra en anden bruger end den man uploader filer med via FTP eller SSH. Denne bruger hedder det samme som FTP/SSH brugeren blot med www_ foran.

Nogle gange vil denne opsplitning resultere i, at man kan opleve problemer med file permissions. Fx hvis PHP har brug for at skrive til nogle specifikke mapper eller filer, så kan det se sådan ud i PHP error loggen:

PHP Warning: copy(/dana/data/some.domain.tldg/docs/wp-admin/includes/update-core.php): failed to open stream: Permission denied in /dana/data/some.domain.tld/docs/wp-admin/includes/class-wp-filesystem-direct.php on line 257

Eller man kan opleve det omvendte, at man selv prøver at redigere nogle filer, der er ejet af PHP brugeren.

PHP afvikles som en anden bruger af sikkerhedsmæssige årsager. Der kan være en sårbarhed i PHP koden, som er mulig at udnytte af andre, således at de kan skrive deres egen kode til maskinen og derefter afvikle den. Men hvis koden ikke har lov til at skrive til maskinen, så kan sårbarheden ikke udnyttes.

Det kan selvfølgelig være nødvendigt for ens website/CMS, at det kan skrive til specifikke mapper og filer. Nogle CMSer har mulighed for at man kan angive FTP credentials i indstillingerne, og opnå skrive adgang den vej igennem. Se fx vores Wordpress Update guide.

Ellers kan problemet generelt løses ved at give group write permissions, da brugeren der uploader og PHP deler samme gruppe. Som udgangspunkt har de to brugere kun adgang til at læse hinandens filer, men der kan altså gives skrive adgang på fil/mappe niveau.

Via SSH kan dette kan gøres med chmod g+w filnavn eller chmod g+w mappenavn eller for alle filer og mapper under en bestemt mappe chmod -R g+w mappenavn.
Via FTP er det lidt forskelligt hvordan det angives i de respektive klienter, men enten kan man tilføje group write adgang ellers skal man angive 770 for mapper og 660 for filer i octalmode.

Vi anbefaler at man giver group write adgang så sparsomt som muligt.

Hvis koden overhovedet ikke kan køre med dette ekstra sikkerhed, og man har adgang til vores manager.pil.dk, så er det muligt under websitet at fjerne fluebenet i 'Privilege separation'. Derefter vil PHP blive afviklet af den samme bruger, som man uploader filer med, og på samme tid vil det rette ejerskabet af alle filer, så de kun er ejet af den ene bruger.

Hvis man slår privilege separation til igen vil alle filer forblive ejet af FTP/SSH brugeren.

Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.
Powered by Zendesk