Права на запись - localhost - Mac OSX - PullRequest
21 голосов
/ 07 ноября 2011

Я новичок в мире Mac и только что настраивал свой веб-сервер. Я использовал следующее руководство: http://echo.co/blog/os-x-107-lion-development-native-mamp-mysql-installer

Я перенес свои сайты и базы данных, и все идет хорошо. Единственная проблема, с которой я столкнулся - это с разрешениями на запись. Например, есть файл конфигурации, в который нужно записать, и мне пришлось щелкнуть правой кнопкой мыши, перейти к Get Info, затем включить чтение и запись для персонала и всех остальных.

Я не могу вручную пройти и включить эти привилегии записи для каждого файла / папки. Мне не нужно было делать это с помощью WAMP, и разработка стала намного быстрее.

Так что интересно о 2 возможных решениях: а) добавить мою учетную запись пользователя в белый список для localhost, чтобы было достаточно 644 привилегий б) рекурсивно установить права на запись

Ответы [ 4 ]

49 голосов
/ 09 марта 2012

Я нашел, что лучшим решением было изменить настройки пользователя и группы apache.Инструкции можно найти по адресу: http://paulmason.name/item/change-apache-user-group-in-lion-os-x

  1. Открыть терминал и ввести

    sudo nano /private/etc/apache2/httpd.conf
    
  2. Найти и изменить код http.conf из

    User _www
    Group _www
    

    К

    User your_mac_username
    Group staff
    

    Примечание. В более ранних версиях, таких как Leopard, заглавные буквы переводятся в Персонал.Вы можете получить свое имя пользователя и группу, введя «id» и нажав «Enter» в терминале

  3. Перезапустите Apache

    sudo apachectl restart
    
22 голосов
/ 07 ноября 2011

Я автор упомянутого поста в блоге. Для прав доступа к файлам веб-сервера вы захотите предоставить пользователю доступ на запись для файлов. Для config.inc.php вы можете установить его двумя способами:

Иметь _www собственный файл и иметь права на запись:

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

У вашего пользователя должен быть файл, измените группу на _www и дайте разрешения на запись для группы:

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

Или, если вам удобнее разрешить всем пользователям писать, что я бы не рекомендовал по соображениям безопасности, дайте всем пользователям возможность писать:

$ chmod a+w config.inc.php

Если пользователю _www необходимо написать целую папку, он может владеть папкой и всеми файлами:

$ sudo chown -R _www:_www folder/

или вы можете дать папке право на запись и выполнение для всех:

$ chmod a+wx folder/

Причина, по которой chmod 774 выдала вам запрещенные ошибки, заключалась в том, что пользователь _www попал под разрешение «4», которое «только для чтения». Для каталогов пользователю необходимо выполнить команду «выполнить», чтобы перейти в папку. chmod 775 позволит пользователю и группе получить rwx, а другим - r-x. Подробнее о правах доступа к файлам Unix .

Кроме того, ваш пользователь может сохранить полное право собственности и добавить определенные разрешения для пользователя _www вместо изменения уровня доступа для ВСЕХ пользователей с помощью списков контроля доступа.

$ 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

Если вы собираетесь пойти по пути ACL, я бы посоветовал еще немного почитать, чтобы увидеть, какие уровни доступа вам действительно нужно предоставить. Вот отличное место для начала .

10 голосов
/ 21 августа 2014

Я использую Apache на OSX, и это исправило это для меня:

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

Обновление № 1:

Синтаксис: sudo chown <user>:<group> <file-or-folder>.Пользователь Apache в OSX - _www.

Чтобы сохранить право собственности, но дать разрешения Apache rwx:

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

Обновление № 2:

Мне больше нравится этот метод.Установите Apache для работы от имени.

  1. В терминале введите id, чтобы получить uid=123(Myname).

  2. Откройте / etc / apache2 / httpd.conf и измените его, используя свое имя пользователя.

    <IfModule unixd_module>
       User Myname
       Group staff
    </IfModule>
    
  3. Назад к терминалу: sudo apachectl restart

2 голосов
/ 07 ноября 2011

Рекомендую рекурсивную настройку привилегий записи для вашего веб-корня.

Вы можете сделать это через консоль / терминал, используя chmod -R 774 /my/web/root. Для меня владелец и группа установлены на: www-data:myUserName, который можно установить с помощью chown. Не забудьте сначала узнать, кто ваш веб-пользователь.

Редактировать: Для лучшего понимания, почему у вас нет доступа:

Chmod 774, каждый номер обозначает определенные права: пользователь, группа, другие. Если для пользователя установлено значение www-data, а для группы - www-data (большинство пользователей в системе Unix находятся в группе, названной по имени пользователя). Так что, если вы не в группе www-data, вы должны либо присоединиться к ней, либо изменить владельца (chown), либо изменить разрешения (chmod). Существует несколько учебных пособий для получения дополнительной информации.

...