Обычно я делаю это в настройках сервера, чтобы создать группу для веб-сайта, а затем использовать комбинацию setgid и umask, чтобы убедиться, что файлы остаются доступными для записи приложениями, которые я хочу. Пошаговое руководство ниже:
1/ Создайте новую группу для вашего сайта:
$ sudo groupadd web-grp
2/ Добавьте пользователя, от имени которого работает веб-сервер:
$ sudo gpasswd -a www-data web-grp
3/ выберите каталоги и файлы, к которым у сервера должен быть доступ:
$ sudo chown -R :web-grp /path/to/website
4/ Установите бит gid и другие разрешения для этих каталогов:
$ sudo chmod -R ug+rw /path/to/website
$ find /path/to/website -type d -exec chmod g+xs {} \;
5/ Установите umask вашей ftp-программы на 002
. Это будет зависеть от вашего FTP-клиента и сервера, ищите, чтобы выяснить, как сделать это для вашей конкретной настройки.
6/ Перезагрузите веб-сервер, чтобы получить разрешение новой группы:
$ sudo service apache2 restart
Интересно, что бит setgid
для этих каталогов приведет к тому, что новые файлы, созданные в каталогах, по умолчанию будут иметь одну и ту же группу. Это означает, что вам не нужны разрешения 777
- это означает, что вы обладаете большей безопасностью, а также системой, которая должна продолжать работать.
umask
часть также важна. Новые файлы будут иметь разрешенные биты в umask
, поэтому если ваш umask
равен 022
, новые файлы не будут доступны для групповой записи, и все будет работать не очень хорошо.
Я использую эту установку очень успешно в течение ряда лет.