Sådan konfigureres virtuelle mapper i IIS 8 på Windows Server 2012

Jeg stiller dette spørgsmål, fordi jeg stadig ikke har fundet en ensartet metode, som jeg er særlig glad for. Ideelt set bør denne kombination af katalogstruktur og tilladelser passe til enhver webserver (antag ikke Apache). Jeg skal også nævne, at jeg kun er bekymret for * nix-servere.

Jeg leder primært efter:

  • Bedste kombination af uid / gid / andet (navne og oktetter)
  • Relativt sikker (behøver ikke at være uber paranoid)
  • Let at bruge / vedligeholde (CMS'er er i stand til selvopdatering, ingen tilladelsesproblemer)

Bare til reference er den nuværende stak, jeg arbejder på, Ubuntu 11.04 + Nginx + php-fpm + Wordpress, selvom den ideelle løsning skal fungere for ethvert websted

  • Angiv flere detaljer: vil du være vært for flere websteder på en server? Hvordan uploader du filer?
  • Ja, jeg vil gerne have potentialet til at være vært for mere end et websted på serveren. Antag at jeg har rodadgang på nogle dedi / VPS og filer uploades via SSH / SFTP.

Tilladelser kan gives til ejer, gruppe og andre.

Først skal du beslutte, hvilke tilladelser der er nødvendige, og hvilke brugere der er involveret:

  • Nginx kører som www-data (gruppe www-data): Læs kun
  • php-fpm kører som www-data (gruppe www-data): Læs og skriv
    (hvis du vil tillade operationer som f.eks chmod, skal du løbe php-fpm som SFTP-bruger. Pas på: hvis nogen kan udføre kommando på din server fra PHP, vil han / hun også være i stand til at ændre dine filer som .bashrc!)
  • sftp / SSH: fulde tilladelser
  • Andre brugere: ingen læse- og skrivetilladelser

Kun ejeren af ​​en fil / mappe kan ændre tilladelser, og det foretrækkes at give SSH-brugeren dette ejerskab. Hvorfor? Fordi det er idiot, at du ikke kan ændre dine egne filer i webroot, og det er en dårlig idé at gøre alt som root.

Almindelige brugere kan ikke ændre gruppen af ​​en fil / mappe, kun root kan gøre det. En speciel SETGID-bit får hver fil og katalog i en mappe til at arve gruppen. Med det rigtige tilladelsessæt kan både php-fpm og SSH-brugeren ændre filer.

  • Ejer: din SSH-bruger
  • Gruppe: www-data
  • Tilladelser til filer: rw-rw ---- (0660)
  • Tilladelser til mapper: rwxrwx --- (2770) Execute bit (2) er nødvendig for at komme ned i en mappe. Udfør info coreutils 'file permissions' for at få mere information om denne bit
  • umask 007 så ejeren og gruppen kan skrive til filer / mapper, og andre brugere ikke får tilladelse.

Forudsat at din webroot er placeret på /var/www/website1, skift ejer / gruppe og tilladelser ved at kø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 {} \; 

Føj dig selv til www-data gruppe:

sudo usermod -a -G www-data your_ssh_user_here 

Du skal logge ind igen for at blive medlem af gruppen.

Yderligere konfiguration er nødvendig for at sikre, at websteder ikke kan få adgang til andre filer, hvis php-fpm kører som den samme bruger.

  • Tusind tak! Jeg sætter pris på fuldstændigheden af ​​dit svar! Det ramte alle de store punkter, jeg ledte efter.
  • To spørgsmål til afklaring: 1) Hvad er formålet med at forbinde www-data med din ssh_user? 2) Efter læsning af setgid bit, hvad er formålet med at skifte det til mapper / underordninger? Sagt på en anden måde, i hvilke situationer vil denne adfærd afvige fra normal?
  • @Dan Simmons: CMS'ere (og PHP-scripts) skriver til telefonbøgerne som www-data, filerne ejes af www-data med gruppe www-data (da processen kører under denne gruppe). Din SSH-bruger opretter filer / kataloger, der ejes af your_ssh_user_here. Uden setgid-bit vil disse filer have gruppen your_ssh_user_here. Uden læsetilladelser for den anden kan PHP og nginx ikke få adgang til filerne / katalogerne. Setgid bit arves af nedenstående mapper (men kan fjernes).
  • Mange tak for henvisningerne. Jeg er bare nysgerrig, er der nogen sikkerhedsrisiko ved at give www-data 'rwx'? Hvad behandler også adgangsfiler / mapper som 'andet'?
  • At give www-data rwx på mapper tillader www-data at læse, skrive og komme ned i mapper. Hvis www-data er ejeren, kan den også ændre filtilladelserne. Hvis www-data behøver ikke skriveadgang, skal du hellere tilbagekalde den for r-x (princip om mindst privilegium). Processer kører under en bruger, der er medlem af en eller flere grupper. Hvis en fil ikke ejes af brugeren af ​​denne proces, eller hvis procesbrugeren ikke er medlem af gruppen af ​​filen, får den tilladelsen til "Andet" (aka "verden").

arbejdet for dig: Charles Robertson | Ønsker du at kontakte os?