Hvordan konfigurere virtuelle kataloger i IIS 8 på Windows Server 2012

Jeg stiller dette spørsmålet fordi jeg fremdeles ikke har funnet en enhetlig metode som jeg er spesielt glad i. Ideelt sett bør denne kombinasjonen av katalogstruktur og tillatelser passe enhver webserver (ikke anta Apache). Jeg bør også nevne at jeg bare er opptatt av * nix-servere.

Jeg ser primært etter:

  • Beste kombinasjon av uid / gid / annet (navn og oktetter)
  • Relativt sikker (trenger ikke å være uber paranoid)
  • Enkel å bruke / vedlikeholde (CMS kan selv oppdatere, ingen tillatelsesproblemer)

Bare for referanse er den nåværende stabelen jeg jobber med Ubuntu 11.04 + Nginx + php-fpm + Wordpress, selv om den ideelle løsningen skal fungere for alle nettsteder

  • Oppgi mer informasjon: vil du være vert for flere nettsteder på en server? Hvordan laster du opp filer?
  • Ja, jeg vil gjerne ha potensial til å være vert for mer enn ett nettsted på serveren. Anta at jeg har root-tilgang på noen dedi / VPS og filer lastes opp via SSH / SFTP.

Tillatelser kan gis til eier, gruppe og andre.

Først bestemmer du hvilke tillatelser som er nødvendige og hvilke brukere som er involvert:

  • Nginx kjører som www-data (gruppe www-data): skrivebeskyttet
  • php-fpm kjører som www-data (gruppe www-data): lese og skrive
    (hvis du vil tillate operasjoner som chmod, bør du løpe php-fpm som SFTP-bruker. Vær oppmerksom: hvis noen kan utføre kommando på serveren din fra PHP, vil han / hun kunne endre filene dine, som .bashrc!)
  • sftp / SSH: full tillatelse
  • Andre brukere: ingen lese- og skrivetillatelser

Bare eieren av en fil / katalog kan endre tillatelser, og det er foretrukket å gi SSH-brukeren dette eierskapet. Hvorfor? Fordi det er idiot at du ikke kan endre dine egne filer i webroot, og å gjøre alt som root er en dårlig ide.

Vanlige brukere kan ikke endre gruppen til en fil / katalog, bare root kan gjøre det. En spesiell SETGID-bit gjør at hver fil og katalog i en katalog arver gruppen. Med riktig tillatelsessett kan både php-fpm og SSH-brukeren endre filer.

  • Eier: din SSH-bruker
  • Gruppe: www-data
  • Tillatelser for filer: rw-rw ---- (0660)
  • Tillatelser for kataloger: rwxrwx --- (2770) Utfør biten (2) er nødvendig for å komme ned i en katalog. Henrette info coreutils 'file permissions' for å få mer informasjon om denne biten
  • umask 007 slik at eieren og gruppen kan skrive til filer / kataloger, og andre brukere ikke får tillatelse.

Forutsatt at webroot ligger på /var/www/website1, endre eier / gruppe og tillatelser ved å kjøre:

sudo chown -R your_ssh_user_here:www-data /var/www/website1 sudo find /var/www/website1 -type f -exec chmod 660 {} \; sudo find /var/www/website1 -type d -exec chmod 2770 {} \; 

Legg deg til www-data gruppe:

sudo usermod -a -G www-data your_ssh_user_here 

Du må logge på igjen for å bli medlem av gruppen.

Ytterligere konfigurasjon er nødvendig for å sikre at nettsteder ikke får tilgang til andre filer hvis php-fpm kjører som samme bruker.

  • Takk så mye! Jeg setter pris på fullstendigheten av svaret ditt! Det traff alle de viktigste punktene jeg lette etter.
  • To spørsmål for avklaring: 1) Hva er hensikten med å bli med www-data med ssh_user? 2) Hva er hensikten med å bytte den til kataloger / underordninger etter å ha lest om setgid-biten? Sagt på en annen måte, i hvilke situasjoner vil denne oppførselen avvike fra den normale?
  • @Dan Simmons: CMS'er (og PHP-skript) skriver til katalogene som www-data, vil filene eies av www-data med gruppe www-data (siden prosessen går under den gruppen). SSH-brukeren din oppretter filer / kataloger som eies av your_ssh_user_here. Uten setgid-biten vil disse filene ha gruppen your_ssh_user_here. Uten lesetillatelser for den andre vil ikke PHP og nginx kunne få tilgang til filene / katalogene. Setgid-biten arves av katalogene under (men kan fjernes).
  • Tusen takk for tipsene. Jeg er bare nysgjerrig, er det noen sikkerhetsrisiko ved å gi www-data 'rwx'? Også, hva behandler tilgangsfiler / kataloger som 'annet'?
  • Gi www-data rwx på kataloger tillater www-data å lese, skrive og komme ned i kataloger. Hvis www-data er eieren, vil den også kunne endre filtillatelsene. Hvis www-data trenger ikke skrivetilgang, bør du trekke den tilbake r-x (prinsippet om minst privilegium). Prosesser kjøres under en bruker som er medlem av en eller flere grupper. Hvis en fil ikke eies av brukeren av den prosessen, eller hvis prosessbrukeren ikke er medlem av gruppen av filen, får den tillatelsene til "Annet" (også kalt "verden").

fungert for deg: Charles Robertson | Ønsker du å kontakte oss?