117 votes

Propriétaire/groupe/permissions correctes pour les fichiers/dossiers du site Apache 2 sous Mac OS X ?

Il est difficile de trouver des réponses spécifiques à Mac à cette question sur le web, alors j'espère que quelqu'un pourra m'éclairer sur ce sujet ? Mes permissions sont déréglées sur mes sites et je ne suis pas sûr de savoir comment les réparer sans simplement claquer un 777 récursif sur tout ce qui est de toute évidence incorrect.

Gracias.

188voto

dkamins Points 10565

C'est la méthode la plus restrictive et la plus sûre que j'ai trouvée, comme expliqué ici à titre d'exemple. ~/my/web/root/ pour votre contenu web :

  • Pour chaque répertoire parent menant à votre racine web (par ex. ~/my , ~/my/web , ~/my/web/root ) :
    • chmod go-rwx DIR (personne d'autre que le propriétaire ne peut accéder au contenu)
    • chmod go+x DIR (pour permettre aux "utilisateurs", y compris _www, d'"entrer" dans le répertoire)
  • sudo chgrp -R _www ~/my/web/root (tout le contenu web est maintenant groupé _www)
  • chmod -R go-rwx ~/my/web/root (personne d'autre que le propriétaire ne peut accéder au contenu web)
  • chmod -R g+rx ~/my/web/root (tout le contenu web est maintenant lisible/exécutable/entrable par _www)

Toutes les autres solutions laissent les fichiers ouverts à d'autres utilisateurs locaux (qui font partie du groupe "staff" ainsi que du groupe "o"/autres). Ces utilisateurs peuvent alors librement parcourir et accéder aux configurations des bases de données, au code source ou à d'autres détails sensibles dans vos fichiers de configuration web et scripts si ceux-ci font partie de votre contenu. Si ce n'est pas un problème pour vous, optez pour l'une des solutions les plus simples.

0 votes

Cela a parfaitement résolu mon problème ! OSX 10.7.5 sur un MBP. J'ai activé le partage Web, j'ai pu accéder aux pages html dans /Users/[nom]/Sites/, mais je ne pouvais pas récupérer les JS/CSS des sous-répertoires du même dossier. Il retournait des erreurs 403 interdites. La 4ème instruction, "sudo chgrp -R _www ~/my/web/Root" a fait l'affaire.

3 votes

J'ai dû donner un accès en lecture en plus du drapeau x avec chmod go+rx DIR au niveau du répertoire /Users/username avant que ls ne cesse de lancer l'erreur de permission. Vous vous demandez pourquoi ?

0 votes

Pour l'étape 3, j'ai dû utiliser chmod go+rx DIR afin d'être en mesure de ls à l'intérieur du DIR moi-même.

33voto

llange Points 290

Si vous n'aimez vraiment pas le Terminal, voici la manière GUI de faire ce que DKAMINS vous dit :

1) Allez dans le répertoire personnel de votre utilisateur ( ludo serait le mien) et de la Fichier menu choisir Obtenir des informations cmdI dans l'inspecteur :

Get Info window Sharing & Permissions section

2) Par alt/option en cliquant sur le [+] ajouter le signe _www et lui donner la permission de en lecture seule :

Get Info add Users & Groups highlighted and World Wide Web Server highlighted

  • Pensez donc (bonne pratique) à ne pas stocker d'informations personnelles à la racine de votre dossier personnel (& disque dur) !
  • Vous pouvez sauter cette étape si le groupe **everyone** a la permission **read-only** mais depuis AirDrop, le dossier **/Public/Drop Box** est pratiquement inutile...

3) Montrer le Obtenir des informations inspecteur de votre utilisateur Sites et reproduisez l'étape 2 puis, dans le sous-menu Action de l'engrenage, choisissez Appliquer aux articles joints... :

Get Info action sub-menu Apply to enclosed Items... highlighted

Voilà 3 étapes et l'interface graphique seulement...

1 votes

C'est de loin la meilleure façon, alt+click montre correctement _www utilisateur

0 votes

C'est le cas si le partage de fichiers entre invités est activé ou si un php script malveillant est installé Assurez-vous qu'il n'y a que le dossier Public et Sites qui est "lisible" par tous. L'étape 3 ne s'applique qu'au dossier "Sites" Donc normalement les autres dossiers ne devraient pas être modifiés

0 votes

Cela ne devrait pas être nécessaire. _www est dans le groupe de tout le monde.

13voto

mjswensen Points 592

Je sais qu'il s'agit d'un ancien message, mais pour tous ceux qui ont effectué une mise à niveau vers Mountain Lion (10.8) et qui rencontrent des problèmes similaires, l'ajout de l'option FollowSymLinks à votre fichier {username}.conf (dans /etc/apache2/users/) a fait l'affaire pour moi. Le fichier ressemble donc à ceci :

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

0 votes

J'ai créé un utilisateur "git" que je n'utilise pas, et c'est tout ce qu'il y avait à modifier dans ce répertoire (git.conf). Une fois que j'ai mis à jour le fichier comme décrit ci-dessus pour l'utilisateur git - le répertoire que j'ai créé a été servi correctement par apache. Cela n'a pas de sens pour moi car mon utilisateur git n'a rien à voir avec les répertoires créés, ni avec apache.

10voto

Tim Mackey Points 234

Sujet vieux de 2 mois, mais mieux vaut tard que jamais ! Sous la version 10.6, le dossier des documents de mon serveur Web est défini comme suit :

owner:root
group:_www
permission:755

_www est l'utilisateur qui fait tourner apache sous Mac OS X. J'ai ensuite ajouté une ACL pour permettre des permissions complètes au groupe Administrateurs. De cette façon, je peux toujours effectuer des modifications avec mon utilisateur admin sans avoir à m'authentifier en tant que Root. De plus, lorsque je veux permettre au serveur web d'écrire dans un dossier, je peux simplement donner un chmod à 775, laissant à tous les utilisateurs autres que Root:_www des droits de lecture/exécution (sans tenir compte des ACL que j'ai appliquées).

0 votes

Il n'est pas nécessaire de définir le propriétaire comme "Root", mais c'est inoffensif. Vous n'avez certainement pas besoin des perms o+rx que vous avez -- qui permettent à n'importe quel utilisateur local de parcourir et de lire tout votre contenu web (y compris éventuellement les configurations avec les mots de passe des bases de données, etc.)

1 votes

(voir ma réponse à cette question ci-dessous qui est une version beaucoup plus complexe de cette réponse qui peut être intéressante pour les plus paranoïaques en matière de sécurité)

0 votes

Dans le terminal, comment voir avec quoi, par exemple, wordpress a été installé (en ce qui concerne ses propres autorisations de fichiers), car je veux que wordpress puisse écrire ses propres téléchargements de médias...

5voto

Steve Graham Points 2229

Sur mon système 10.6 :

vhosts folder:
 owner:root
 group:wheel
 permissions:755

vhost.conf files:
 owner:root
 group:wheel
 permissions:644

1 votes

Super, merci Steve, et pour les fichiers web eux-mêmes ? /Library/WebServer/Documents /Library/WebServer/Documents/[fichier] /Library/WebServer/Documents/[répertoire]

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