Здравствуйте! <br/> <br/> У меня установлен apache2, который работает от пользователя www-data и группы www-data. Также есть пользователь www-root, которому необходимо редактировать файлы без постоянного изменения прав доступа с помощью chmod -R 777... Я рассмотрел несколько вариантов, и наиболее предпочтительный - это: <br/> <br/> - Изменить группу, под которой работает apache2, на www-root, оставив пользователя www-data. Изменение пользователя может вызвать проблемы с правами на директории, такие как /var/log/apache2, а также затруднения с работой php-fpm. В таком случае, мне придется изменять пользователя для php-fpm, менять права на сокеты и так далее, чего мне бы хотелось избежать. <br/> <br/> - После изменения группы, apache2 начинает создавать все файлы и папки с владельцем www-data и группой www-root, но устанавливает права 755. Чтобы www-root мог без проблем работать с файлами, необходимо, чтобы права по умолчанию были 775. <b>Как можно настроить apache2 так, чтобы он по умолчанию устанавливал права 775 вместо 755?</b> <br/> <br/> Все рекомендации, которые я нашел в интернете, связаны с выполнением команды chmod -R 775 ..., что совершенно не подходит. Неужели нет удобного способа, чтобы apache автоматически устанавливал нужные права? <br/> <br/> Настройки через ACL не работают, поскольку права все равно устанавливаются на 755. <br/> <br/> Чат ЖПТ предложил добавить в envvars следующий код: <br/> <pre><code><IfModule mpm_prefork_module> Umask 002 </IfModule></code></pre> <br/> Однако после этого apache не запускается, хотя он работает в режиме prefork. <br/> <br/> Как видно, после длительных попыток у меня уже начинают заканчиваться нервы. Подскажите, пожалуйста, надежное решение. Я хочу один раз настроить это на dev сервере и больше не задумываться о chown`ах и chmod`ах.
Для того чтобы Apache устанавливал права на создаваемые файлы и директории по умолчанию как 775 вместо 755, действительно, можно изменить умаску (umask) процесса Apache. Однако, как вы уже заметили, изменения в конфигурационных файлах могут не срабатывать или приводить к ошибкам. Вот несколько альтернативных подходов, которые могут помочь вам: ### 1. Изменение переменной umask в скриптах запуска Apache Вы можете попробовать изменить umask в файле, который запускает Apache. Для этого нужно найти файл, который запускает ваши службы. Это может быть файл `/etc/init.d/apache2` или systemd-юнит файл `/lib/systemd/system/apache2.service`. Добавьте следующую строку: ``` UMASK=002 ``` Если вы используете systemd, вам нужно будет создать или изменить конфигурационный файл `/etc/systemd/system/apache2.service.d/override.conf`, добавив следующий блок: ```ini [Service] UMask=002 ``` После внесения изменений не забудьте перезапустить systemd: ```bash sudo systemctl daemon-reload sudo systemctl restart apache2 ``` ### 2. Использование umask в `envvars` Если вы ранее пробовали добавлять `Umask 002` в `envvars`, убедитесь, что вы делаете это корректно. Например: ```bash # /etc/apache2/envvars umask 002 ``` Некоторые версии Apache могут не поддерживать этот способ, но стоит проверить. ### 3. Использование ACL (Access Control Lists) Если у вас есть возможность использовать ACL в вашей файловой системе, вы можете установить ACL для ваших директорий, чтобы новые файлы наследовали права. Например: ```bash sudo setfacl -R -m g:www-root:rwx /путь/к/вашей/директории sudo chmod g+s /путь/к/вашей/директории ``` Опция `g+s` для директории устанавливает бит setgid, что заставляет новые файлы и папки унаследовать группу директории. ### 4. Настройка `Directory` в конфигурации Apache Вы можете установить права на директории в конфигурации Apache, если это не вызовет конфликтов с другими настройками. Например: ```apache <Directory /путь/к/вашей/директории> Options Indexes FollowSymLinks AllowOverride None Require all granted <IfModule mod_unixd.c> Umask 002 </IfModule> </Directory> ``` Этот метод может не сработать в некоторых конфигурациях Apache, но стоит проверить. ### 5. Использование cron для изменения прав Это не самый элегантный метод, но можно написать скрипт, который периодически будет изменять права на нужные файлы и запустить его через cron. Например: ```bash */10 * * * * chmod -R 775 /путь/к/вашей/директории ``` ### Заключение Есть несколько методов для установки нужных прав по умолчанию. Какой из них лучше всего подойдет конкретно для вашего случая, зависит от вашей конфигурации и требований. Исключение возможных конфликтов и тестирование каждого метода отдельно — хорошая практика, чтобы найти надежное решение для своих нужд.
MPM-ITK решает проблему. Спасибо Refguser , ты изменил мою жизнь :D