web-dev-qa-db-fra.com

Privilèges d'écriture - localhost - Mac OSX

Je suis nouveau dans le monde Mac et je viens de configurer mon serveur Web. J'ai utilisé le guide suivant: https://alan.ivey.dev/posts/2011/os-x-10.7-lion-development-native-mamp-with-mysql-installer/

J'ai transféré mes sites et bases de données et tout se passe plutôt bien. Le seul problème que j'ai est avec les autorisations d'écriture. Par exemple, il y a un fichier de configuration qui doit être écrit, et j'ai dû faire un clic droit, aller à Get Info puis activer la lecture et l'écriture pour le personnel et tout le monde.

Je ne peux pas passer manuellement et activer ces privilèges d'écriture pour chaque fichier/dossier. Je n'avais pas besoin de le faire en utilisant WAMP et j'ai rendu le développement beaucoup plus rapide.

Je me demande donc 2 solutions possibles: a) ajouter mon compte d'utilisateur à une liste blanche pour l'hôte local afin que 644 privilèges soient suffisants b) définir les privilèges d'écriture de manière récursive

22
Paul Mason

J'ai trouvé que la meilleure solution était de modifier les paramètres d'utilisateur et de groupe d'Apache. Les instructions peuvent être trouvées sur: http://paulmason.name/item/change-Apache-user-group-in-lion-os-x

  1. Ouvrez le terminal et entrez

    Sudo nano /private/etc/Apache2/httpd.conf
    
  2. Recherchez et modifiez le code http.conf à partir de

    User _www
    Group _www
    

    À

    User your_mac_username
    Group staff
    

    Remarque: Avec les versions antérieures telles que Leopard, mettez le personnel en majuscule. Vous pouvez obtenir votre nom d'utilisateur et votre groupe en tapant "id" et en appuyant sur Entrée dans le terminal

  3. Redémarrez Apache

    Sudo apachectl restart
    
49
Paul Mason

Je suis l'auteur de l'article de blog mentionné. Pour les autorisations de fichiers du serveur Web, vous souhaiterez accorder un accès en écriture à l'utilisateur _www pour les fichiers. Pour config.inc.php, vous le définiriez de deux manières:

Avoir _www propriétaire du fichier et avoir des autorisations d'écriture:

$ Sudo chown _www config.inc.php
$ chmod u+w config.inc.php

Demandez à votre utilisateur de posséder le fichier, changez le groupe en _www et accordez des autorisations d'écriture au groupe:

$ Sudo chgrp _www config.inc.php
$ chmod g+w config.inc.php

Ou, si vous vous sentez à l'aise d'autoriser tous les utilisateurs à écrire, ce que je ne recommanderais pas pour des raisons de sécurité, donnez à tous les utilisateurs la possibilité d'écrire:

$ chmod a+w config.inc.php

Si un dossier entier doit être écrit par l'utilisateur _www, il peut posséder le dossier et tous les fichiers:

$ Sudo chown -R _www:_www folder/

ou vous pouvez donner au dossier des autorisations d'écriture et d'exécution par tous:

$ chmod a+wx folder/

La raison pour laquelle chmod 774 vous a donné des erreurs interdites parce que l'utilisateur _www est tombé sous l'autorisation "4", qui est en "lecture seule". Pour les répertoires, un utilisateur a besoin d '"exécuter" pour parcourir le dossier. chmod 775 permettrait à l'utilisateur et au groupe de rwx, et à d'autres de r-x. Voici plus d'informations sur les permissions des fichiers Unix .

En outre, votre utilisateur peut conserver la pleine propriété et ajouter certaines autorisations pour l'utilisateur _www au lieu de modifier le niveau d'accès pour TOUS les utilisateurs à l'aide des listes de contrôle d'accès.

$ Sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' folder
$ Sudo chmod +a '_www allow read,write' config.inc.php

Si vous allez suivre la voie des ACL, je vous suggère de faire un peu plus de lecture pour voir quels niveaux d'accès vous devez vraiment fournir. Voici un excellent endroit pour commencer .

23
Alan Ivey

J'utilise Apache sur OSX et cela m'a corrigé:

Sudo chown -R _www:_www <mywebfolder>
Sudo chmod -R 775 <mywebfolder>

Mise à jour # 1:

Syntaxe: Sudo chown <user>:<group> <file-or-folder>. L'utilisateur Apache sur OSX est _www.

Pour conserver la propriété mais accorder des autorisations à Apache r-w-x:

Sudo chown -R <your-username>:_www <mywebfolder>
Sudo chmod -R 775 <mywebfolder>

Mise à jour # 2:

Je préfère cette méthode. Définissez Apache pour qu'il s'exécute comme vous.

  1. Dans le terminal, tapez id pour obtenir uid=123(Myname).

  2. Ouvrez /etc/Apache2/httpd.conf et modifiez-le pour utiliser votre nom d'utilisateur.

    <IfModule unixd_module>
       User Myname
       Group staff
    </IfModule>
    
  3. Retour au terminal: Sudo apachectl restart

10
Justin

Je recommande de définir les privilèges d'écriture de manière récursive pour votre racine Web.

Vous pouvez le faire via la console/le terminal en utilisant chmod -R 774 /my/web/root. Pour moi, le propriétaire et le groupe sont définis sur: www-data:myUserName, qui peut être défini à l'aide de chown. N'oubliez pas de vérifier qui est votre utilisateur Web en premier.

Edit: Pour une meilleure compréhension, pourquoi vous n'avez pas accès:

Chmod 774, chaque numéro représente des droits spécifiques: utilisateur, groupe, autres. Si l'utilisateur est défini sur www-data et le groupe à www-data (la plupart des utilisateurs d'un système Unix font partie d'un groupe nommé par leur nom d'utilisateur). Donc, si vous n'êtes pas dans le groupe www-data vous devez soit le rejoindre, soit changer de propriétaire (chown), soit changer les permissions (chmod). Il existe plusieurs didacticiels pour plus d'informations.

2
sascha

Les solutions ci-dessus n'ont pas fonctionné pour moi. Ce que j'ai fait, c'est:

Cliquez avec le bouton droit sur le dossier -> Obtenir des informations

enter image description here

Il y a un cadre privilégié tout en bas.

Modifiez-le en Lecture et écriture pour Tout le monde .

0
Sayka