2013-09-16 13:33:11 +0000 2013-09-16 13:33:11 +0000
27
27

Het toekennen van schrijfrechten aan www-data groep

Ik ben een website aan het maken en een deel van de functie is om door de gebruiker gegenereerde gegevens uit te schrijven met php. Ik gebruik nginx op Ubuntu 13.04. Op dit moment ben ik alleen aan het testen en alles wordt geserveerd via nginx op locahost.

Mijn php script slaagt er niet in het tekstbestand te schrijven (hoewel ik dit handmatig kan doen) en ik denk dat het een permissies probleem is voor het schrijven naar mijn /var/www/example.com/public_html directory.

Op dit moment ben ik (iain) eigenaar van deze directory, maar het lijkt zinvoller om het eigendom van de /var/www directory en alles daarbinnen over te dragen aan de www-data gebruiker (of moet dat groep zijn?) en mezelf toe te voegen aan de www-data groep. Is het volgende de juiste manier om dit te doen?

useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www

Dus betekent dit dat iedereen in de www-data groep nu kan lezen, schrijven en uitvoeren in /var/www?

Antwoorden (1)

53
53
53
2013-09-16 13:53:44 +0000

Ten eerste, useradd maakt een nieuwe gebruiker aan. Aangezien jij (iain) al bestaat, wil je in plaats daarvan usermod aanroepen. Dus dat zou zijn:

sudo usermod -aG www-data iain
addgroup www-data

(let op de -a op Debian-gebaseerde servers (Ubuntu inbegrepen) die je zal toevoegen aan die groep, en je lidmaatschap van andere groepen zal behouden. Vergeet het en u zult alleen tot de www-data groep behoren - zou een slechte ervaring kunnen zijn als een van hen wiel was. Op SUSE-type servers is de optie -A in plaats van -aG dus lees man usermod zorgvuldig om het goed te krijgen).

Ten tweede, u wilt niet dat apache volledige rw toegang heeft tot /var/www: dit is potentieel een groot veiligheidslek. Als algemene regel geldt: sta alleen toe wat je nodig hebt, en niets meer dan dat “least privilege” principe ). In dit geval moet apache (www-data) en jij (www-data groep) kunnen schrijven (en lezen) in /var/www/example.com/public_html, dus

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html
  • *

Edit : om je oorspronkelijke vraag te beantwoorden, ja, ieder lid van www-data kan nu /var/www lezen en uitvoeren (omdat het laatste bit van je permissies 5 = lezen + uitvoeren is). Maar omdat je de -R switch niet gebruikt hebt, geldt dat alleen voor /var/www, en niet voor de bestanden en submappen die er in staan. Of ze kunnen schrijven is een andere zaak, en hangt af van de groep van /var/www, die je niet hebt ingesteld. Ik denk dat het typisch root:root is, dus nee, ze kunnen (waarschijnlijk) niet schrijven.

Edit op 2014-06-22 : noot toegevoegd dat de -aG optie geldig is op Debian-gebaseerde servers. Het varieert blijkbaar met de distributie, dus lees man zorgvuldig alvorens uit te voeren.