130 votes

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 est-ce que je n'autorise l'accès que pour moi-même et le www-data d'Apache?

208voto

James L. Points 2032
 sudo chown -R yourname:www-data cake
 

puis

 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 cake avec les mêmes autorisations de groupe

53voto

Kwadz Points 59

Comme indiqué dans un article de Slicehost:

Configuration utilisateur

Donc, nous allons commencer par l'ajout de l'utilisateur principal de l'utilisateur Apache groupe:

sudo usermod -a -G www-data demo

Que l'ajout de l'utilisateur "demo" pour le 'www-data' du groupe. Ne vous assurer que vous utilisez à la fois l'un et l'-G options avec la commande usermod indiqué ci-dessus.

Vous aurez besoin de se déconnecter et de se reconnecter à nouveau pour activer le groupe changement.

Vérifiez les groupes de maintenant:

groups
...
# demo www-data

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

Dossier d'installation

Maintenant, nous devons nous assurer que le dossier public_html est détenue par le principal utilisateur (démo) et fait partie du groupe Apache (www-data).

Nous allons mettre en place que:

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

Comme nous parlons d'autorisations, je vais ajouter une petite note 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). Il assure sudo est utilisé dans le bon emplacement.

Si vous avez un dossier public_html avec des liens symboliques en place alors attention avec cette commande car il permettra de suivre les liens symboliques. Dans ces cas d'un dossier public_html, de changer à chaque dossier en main.

Setgid

Bon jusqu'à présent, mais n'oubliez pas la commande que nous avons donné n'affecte les dossiers existants. Ce sujet de quelque chose de nouveau?

Nous pouvons définir la propriété, de sorte que rien de nouveau est également dans le 'www-data' groupe.

La première commande va modifier les autorisations pour le public_html répertoire pour y inclure le "setgid" peu:

sudo chmod 2750 /home/demo/public_html

Qui va s'assurer que tous les nouveaux fichiers sont donnés le groupe "www-data". Si vous avez des sous-répertoires, vous devez exécuter cette commande pour chaque sous-répertoire (ce type de permission ne fonctionne pas avec l'option '-R'). Heureusement, de nouveaux sous-répertoires seront créés avec le "setgid" bit réglée automatiquement.

Si nous avons besoin de permettre l'accès en écriture pour le serveur Apache, pour un répertoire uploads par exemple, puis définissez les autorisations pour le répertoire de la sorte:

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

Les autorisations ne doivent être fixés une fois que les nouveaux fichiers automatiquement attribué la propriété correcte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X