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

114

Il est difficile de trouver des réponses spécifiques à Mac à cette question sur le Web, alors j'espère que quelqu'un pourra mettre celle-ci au repos pour moi? Mes autorisations sont faussées sur mes sites et je ne sais pas comment les réparer sans simplement claquer un 777 récursif sur tout ce qui est évidemment incorrect.

Merci!

Fo.
la source

Réponses:

186

C'est le moyen le plus restrictif et le plus sûr que j'ai trouvé, comme expliqué ici pour le ~/my/web/root/répertoire hypothétique de votre contenu Web:

  • Pour chaque répertoire parent conduisant à la racine de votre web (par exemple ~/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, de "saisir" le répertoire)
  • sudo chgrp -R _www ~/my/web/root (tout le contenu Web est maintenant groupe _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 / saisissable par _www)

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

dkamins
la source
3
J'ai dû donner un accès en lecture en plus du drapeau x avec chmod go+rx DIRau niveau du répertoire / Users / username avant que ls arrête de lancer une erreur d'autorisation. Se demander pourquoi?
bhavinb
1
@mike, tous les fichiers et répertoires resteront la propriété de vous (l'utilisateur) et seront toujours accessibles en écriture. Le chgrp ne permet que le « _www » groupe de lire les fichiers.
dkamins
2
Pour les systèmes qui s'attendent à ce que les scripts du site Web créent leurs propres dossiers et écrivent leurs propres fichiers dans webroot (comme le font de nombreux CMS), j'ai dû donner des autorisations d'écriture au groupe _www. Alors la dernière étape devient chmod -R g+rwx ~/my/web/root. Des objections ou une meilleure façon de faire cela @dkamins?
Jpsy
1
@Jpsy Cela devrait fonctionner correctement si votre application doit s'écrire sur elle-même. Cela introduit d'autres problèmes de sécurité potentiels si un autre code s'exécute également en tant que _www (et pourrait modifier de manière malveillante le code du CMS), alors soyez prudent. Si vous pouvez restreindre l'écriture (g + w) à un sous-répertoire plus profond, c'est encore mieux.
dkamins le
1
Cela fait maintenant quelques années, le temps passe, et OS X aime changer le fonctionnement de son serveur Apache par défaut de temps en temps. Ainsi, bien que cette solution fonctionne toujours, je recommanderais vivement à ce stade la solution alternative de création de machines virtuelles locales pour tester vos applications au lieu d'utiliser OS X lui-même. Voir: vagrantup.com
dkamins
30

Si vous n'aimez vraiment pas le terminal, voici la manière graphique de faire dkamins qui vous dit:

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

Fenêtre Obtenir des informations Section Partage et autorisations

2) En alt/optioncliquant sur le signe [+], ajoutez le groupe _www et définissez son autorisation en lecture seule :

Obtenir des informations ajouter les utilisateurs et groupes en surbrillance et le serveur World Wide Web en surbrillance

  • Considérez donc (bonne pratique) de ne pas stocker d'informations personnelles à la racine de votre dossier personnel (& disque dur)!
  • Vous pouvez ignorer cette étape si le groupe ** tout le monde ** dispose d'une autorisation ** lecture seule ** mais depuis AirDrop, le dossier ** / Public / Drop Box ** est pratiquement inutile ...

3) Affichez l' inspecteur Obtenir des informations de votre dossier Sites utilisateur et reproduisez l'étape 2, puis dans le sous-menu d'action de l'engrenage, choisissez Appliquer aux éléments inclus ... :

Sous-menu d'action Obtenir des informations Appliquer aux éléments inclus ... mis en surbrillance

Voilà 3 étapes et le seul moyen GUI ...

Llange
la source
2
Cela ne m'a pas aidé ici, mais c'est bon de connaître le ALT + [+]truc. Merci.
Tom
1
C'est de loin le meilleur moyen, alt + clic montre l'utilisateur correctement _www
CoolArts
Ceci est vrai si le partage de fichiers invité est activé ou si un script php malveillant est installé… Assurez-vous qu'il n'y a que le dossier Public et Sites qui est "lisible" par tout le monde. L'étape 3 s'applique uniquement au dossier "Sites"… Ainsi, normalement, les autres dossiers ne doivent pas être modifiés…
llange
Cela ne devrait pas être nécessaire. _www fait partie du groupe tout le monde.
DarkNeuron
Bon à savoir sur cette alt [+] !! Thx
Remi Grumeau
12

Je sais que c'est un ancien post, mais pour quiconque passe à Mountain Lion (10.8) et rencontre des problèmes similaires, l'ajout FollowSymLinksà votre fichier {username} .conf (dans / etc / apache2 / users /) a fait l'affaire pour moi. Donc, le fichier ressemble à ceci:

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
mjswensen
la source
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 configuré a été correctement servi par apache. Cela n'a aucun sens pour moi car mon utilisateur git n'a rien à voir avec les répertoires créés ou apache.
ktamlyn
9

Fil de 2 mois, mais mieux vaut tard que jamais! Sur 10.6, mon dossier de documents de serveur Web est défini sur:

owner:root
group:_www
permission:755

_www est l'utilisateur qui exécute apache sous Mac OS X. J'ai ensuite ajouté une ACL pour autoriser des autorisations complètes au groupe Administrateurs. De cette façon, je peux toujours apporter des modifications avec mon utilisateur administrateur sans avoir à m'authentifier en tant que root. De plus, lorsque je veux autoriser le serveur Web à écrire dans un dossier, je peux simplement chmod à 775, laissant tout le monde autre que root: _www avec uniquement des autorisations de lecture / exécution (à l'exclusion des ACL que j'ai appliquées)

Tim Mackey
la source
Vous n'avez pas besoin de définir le propriétaire sur «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 DB, etc.)
dkamins
1
(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ïdes sur la sécurité)
dkamins
Dans le terminal, comment pouvons-nous 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 ...
atterri le
5

Sur mon système 10.6:

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

vhost.conf files:
 owner:root
 group:wheel
 permissions:644
Steve Graham
la source
1
Super, merci Steve, et pour les fichiers Web eux-mêmes? / Bibliothèque / WebServer / Documents / Bibliothèque / WebServer / Documents / [fichier] / Bibliothèque / WebServer / Documents / [répertoire]
Fo.
0

Le propriétaire de l'utilisateur pour moi est l'utilisateur admin et le groupe est _www et fonctionne avec des autorisations définies sur 775 pour le répertoire et pour les fichiers 664

michalzuber
la source
0

Mise à jour de Catalina / autorisations de bureau

Je rencontre cela une fois par an sur macOS. J'utilise généralement apache2 pour héberger un dossier sur mon bureau.

Si vous essayez de donner accès au desktopdossier, vous devez suivre ceci pour permettre à httpd d'avoir accès à tous les dossiers: https://apple.stackexchange.com/a/373139/353465

Sean_Codes
la source
-3

Ouvrez d'abord le terminal, puis accédez au répertoire du serveur Web

cd /Library/WebServer/Documents

puis tapez ceci et ce que vous ferez est que vous donnerez readet la writepermission

sudo chmod -R o+w /Library/WebServer/Documents

Cela fonctionnera sûrement!

Sidharth kaushik
la source