Настройка пользователя
Итак, начнем с добавления основного пользователя в группу пользователей Apache:
sudo usermod -a -G www-data demo
Это добавляет пользователя demo в группу www-data. Убедитесь, что вы используете обе опции -a и -G с командой usermod, показанной выше.
Вам нужно будет выйти и снова войти в систему, чтобы включить изменение группы.
Проверьте группы сейчас:
groups
...
# demo www-data
Итак, теперь я являюсь членом двух групп: Моя собственная (демо) и группа Apache (www-data).
Настройка папки
Теперь нам нужно убедиться, что папка public_html принадлежит основному пользователю (демонстрация) и является частью группы Apache (www-data).
Давайте настроим это:
sudo chgrp -R www-data /home/demo/public_html
Поскольку мы говорим о разрешениях, я добавлю небольшое примечание относительно команды sudo: это хорошая привычка использовать абсолютные пути (/ home / demo / public_html), как показано выше, а не относительные пути (~ / public_html). Это гарантирует, что sudo используется в правильном месте.
Если у вас есть папка public_html с символическими ссылками, будьте осторожны с этой командой, поскольку она будет следовать по символическим ссылкам. В тех случаях, когда есть рабочая папка public_html, измените каждую папку вручную.
Сетгид
Пока все хорошо, но помните, что команда, которую мы только что дали, влияет только на существующие папки. А что насчет чего-нибудь нового?
Мы можем установить право собственности, чтобы все новое также находилось в группе «www-data».
Первая команда изменит права доступа к каталогу public_html, включив бит "setgid":
sudo chmod 2750 /home/demo/public_html
Это гарантирует, что всем новым файлам будет присвоена группа www-data. Если у вас есть подкаталоги, вы захотите запустить эту команду для каждого подкаталога (этот тип разрешения не работает с '-R'). К счастью, новые подкаталоги будут созданы с автоматически установленным битом setgid.
Если нам нужно разрешить доступ для записи в Apache, например, в каталог загрузок, установите разрешения для этого каталога следующим образом:
sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads
Разрешения необходимо установить только один раз, так как новым файлам автоматически будет назначено правильное владение.