У меня 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 как вам нужно.