web-dev-qa-db-fra.com

Autorisations www-data?

J'ai donc un répertoire dans/var/www (appelé cake) et je dois permettre à www-data de l'écrire, mais je veux aussi y écrire (sans avoir à utiliser Sudo). J'ai peur de modifier les autorisations en 777 au cas où un autre utilisateur de ma machine (ou un pirate informatique) tente de modifier les fichiers de ce répertoire. Comment puis-je autoriser l'accès uniquement pour moi-même et le www-data d'Apache?

95
q3d
Sudo chown -R yourname:www-data cake

ensuite

Sudo chmod -R g+s cake

La première commande change de propriétaire et de groupe La deuxième commande ajoute un attribut qui gardera les nouveaux fichiers et répertoires dans le gâteau avec les mêmes autorisations de groupe

151
James L.

Comme indiqué dans n article de Slicehost :

Configuration de l'utilisateur

Commençons donc par ajouter l'utilisateur principal au groupe d'utilisateurs Apache:

Sudo usermod -a -G www-data demo

Cela ajoute l'utilisateur 'démo' au groupe 'www-data'. Veillez à utiliser les options -a et -G avec la commande usermod indiquée ci-dessus.

Vous devrez vous déconnecter et vous reconnecter pour activer le changement de groupe.

Vérifiez les groupes maintenant:

groups
...
# demo www-data

Alors maintenant, je suis membre de deux groupes: le mien (démo) et le groupe Apache (www-data).

Configuration du dossier

Nous devons maintenant nous assurer que le dossier public_html appartient à l'utilisateur principal (démo) et fait partie du groupe Apache (www-data).

Réglons cela:

Sudo chgrp -R www-data /home/demo/public_html

Comme nous parlons d'autorisations, je vais ajouter une note rapide concernant la commande Sudo: C'est une bonne habitude d'utiliser des chemins absolus (/ home/demo/public_html) comme indiqué ci-dessus plutôt que des chemins relatifs (~/public_html). Cela garantit que Sudo est utilisé au bon endroit.

Si vous avez un dossier public_html contenant des liens symboliques, soyez prudent avec cette commande car elle suivra les liens symboliques. Dans les cas où un dossier public_html est actif, modifiez chaque dossier manuellement.

Setgid

Bien jusqu'à présent, mais souvenez-vous que la commande que nous venons de donner n'affecte que les dossiers existants. Qu'en est-il de quelque chose de nouveau?

Nous pouvons définir la propriété afin que toute nouveauté soit également comprise dans le groupe "www-data".

La première commande modifiera les autorisations du répertoire public_html pour inclure le bit "setgid":

Sudo chmod 2750 /home/demo/public_html

Cela garantira que tous les nouveaux fichiers reçoivent le groupe "www-data". Si vous avez des sous-répertoires, vous voudrez exécuter cette commande pour chaque sous-répertoire (ce type d'autorisation ne fonctionne pas avec "-R"). Heureusement, de nouveaux sous-répertoires seront créés avec le bit 'setgid' défini automatiquement.

Si nous devons autoriser l'accès en écriture à Apache, à un répertoire de téléchargement par exemple, définissez les autorisations pour ce répertoire de la manière suivante:

Sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads

Les autorisations ne doivent être définies qu'une seule fois, car les nouveaux fichiers se verront automatiquement attribuer la propriété appropriée.

42
Kwadz