Назад | Перейти на главную страницу

Предоставьте apache доступ для записи в DocumentRoot на сервере разработки

У меня apache работает на моей рабочей станции Mac (OS X 10.7, с предварительно установленной копией apache), и нашим веб-приложениям требуется доступ на запись к определенным разделам файловой системы для запуска (обычно это просто каталог tmp, но иногда и больше чем это).

У нас есть (буквально) тысячи клиентов, и я хочу иметь возможность быстро получить копию кода любого веб-сайта и заставить ее «просто работать», однако мне всегда нужно вручную изменять разрешения unix для определенных каталогов после получения клиентского веб-сайт вне системы контроля версий (список каталогов варьируется от клиента к клиенту, так как он менялся с годами).

Поскольку это сервер разработки, отделенный от общего Интернета брандмауэром, я хотел бы предоставить apache / php доступ на запись для всего DocumentRoot. Как я могу это сделать?

Я попытался chmod 777 на DocumentRoot, но если я создам в нем каталог, разрешения все равно останутся 755 (владелец: me, группа: wheel).

Я думаю, что должен быть способ заставить все файлы, созданные внутри DocumentRoot, быть 777 или, возможно, 775, с _www пользователь добавлен в wheel группа?

Я смог решить эту проблему с помощью ACL, который поддерживает унаследованные разрешения:

sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' /Library/WebServer/Documents

Теперь, когда я создаю новый каталог или проверяю исходный код в DocumentRoot, то _www пользователь имеет полный доступ для чтения / записи.

установка umask на 000 или 002 даст вам права на создание 777 или 775, которые вы ищете. Проблема в том, что все, что вы создаете где угодно, получит эти разрешения. Если вас устраивает 775, дерзайте. В противном случае вы можете сделать команду mkwebdir так:

mkwebdir()
{
  umask 000;
  mkdir "$1";
  umask 022;
}

или даже лучше, если вы не возражаете против команды sudo:

mkwebdir()
{
  mkdir "$1" && sudo chown _www "$1"
}

тогда просто сделайте: mkwebdir username

Вы можете попробовать использовать chown _www:wheel docroot, а затем chmod g+s после этого настройте umask как вам нужно.