Hvordan sette opp filtillatelser for Laravel

Hvordan sette opp filtillatelser for Laravel

Problem

Jeg bruker Apache Web Server som har mappeeieren satt til _www: _www. Jeg glemmer stadig beste praksis når det gjelder filtillatelser, for eksempel når jeg oppretter et nytt Laravel 5 -prosjekt.

Betyr dette at Apache trenger tilgang til lagrings- og leverandørmappene også eller bare deres nåværende innhold?

Laravel 5 krever /lagringsmappe for å være skrivbar. Til tross for at jeg ikke er den beste ideen, har jeg satt 777 tillatelse til mappen

Den offisielle dokumentasjonen sier:

Laravel kan kreve at noen tillatelser skal konfigureres: Mapper innen lagring og leverandør krever skrivetilgang av webserveren.

Jeg forstår at det kan være mye bedre hvis jeg bare ville endre eieren i stedet for tillatelsene.

Men nå har jeg problemer med redaktøren min, og ber meg alltid om passord når jeg vil lagre en fil.

Hva ville være den beste måten å løse disse problemene ?

Løsning

Før jeg gir det endelige svaret, vil jeg bare oppgi det åpenbare. Hvis du vil gi noen mappe en 777-tillatelse, er du ganske mye som elsker alle til å lese, skrive og utføre filer i den katalogen.

Det er i utgangspunktet to måter å sette opp eierskap og tillatelser på:

  • Gi deg selv eierskap
  • Gjør webserveren til eieren av alle filer.

Det andre er hvordan de fleste gjør det, og det er det Laravel antyder.

Forutsatt at www-data er din webserverbruker, kan du kjøre:

sudo chown -r www-data: www-data/sti/to/your/laravel-directory

Og dette er bra, fordi webserveren din vil eie filer og kan utføre. Den dårlige delen er at din påloggede bruker (enten via FTP eller SSH) sannsynligvis vil være en annen bruker, så det du vil gjøre er å legge denne brukeren til WebServer -gruppen:

sudo usermod -a -g www -data ubuntu

Dette antar selvfølgelig at webserveren din kjører som www-data (homestead standard), og brukeren din er ubuntu (det er vagrant hvis du bruker husmannsplass).

Deretter er en god praksis å sette alle katalogene dine til 755 og alle filene dine til 644 ... Angi filtillatelser ved å bruke følgende kommando:

sudo find/path/to/your/laravel -directory -type f -exec chmod 644 \;

Angi katalogtillatelser:

sudo finn/sti/til/din/laravel -direkte -type d -exec chmod 755 \;

Brukeren din som eier

Det jeg foretrekker er å eie alle kataloger og filer jeg jobber med (det gjør det lettere å jobbe med alt mye lettere), så det gjør jeg:

sudo chown -r my-user: www-data/sti/to/your/laravel-directory

Da kan jeg bare gi disse tillatelsene til meg selv og Webserver -brukeren:

sudo finn/bane/til/din/laravel -directory -type f -exec chmod 664 \;
sudo finn/sti/til/din/laravel -direkte -type d -exec chmod 775 \;

En ting du ikke vil glemme er å gi webserver tilgang til å lese og skrive filer i hurtigbuffermappen

Webserveren din må også laste opp og lagre data, så sørg for at du gir tillatelsene til lagringsmappen også:

sudo chgrp -r www -data lagring bootstrap/cache
sudo chmod -r ug+rwx lagring bootstrap/cache

Det var ikke så vanskelig, var det ikke?