Я знаю, что это довольно распространенный вопрос, но, похоже, я не нашел хорошего ответа.
Настройка следующая - есть веб-сервер и есть папка, в которой Apache (пользователь www-data) создает каталоги и загружает / удаляет файлы.
Веб-мастер может решить добавить или удалить некоторые файлы.
В большинстве настроек хостинга для Apache и веб-мастера используется один и тот же пользователь.
Я смог сделать это внутри самой папки, установив chmod 770
и создание группы, включающей обоих пользователей, но я не смог сделать это для вложенных папок.
Я также хочу избегать использования umask
.
Я бы использовал 664 (rw-rw-r--) вместо 770 (rwxrwx ---) для файлов (по умолчанию (rw-r - r--), поэтому файлы могут быть прочитаны всеми, а бит выполнения не устанавливать.
Для каталогов (где по умолчанию rwxr-xr-x) вам нужен бит выполнения для входа в каталог и доступа к файлам.
С участием setgid
вновь созданные файлы автоматически входят в группу каталога (а не в группу по умолчанию пользователя, создавшего файл), поэтому другие пользователи той же группы могут изменять их.
Если ваш каталог /var/www/html
и ваша группа с разрешением на запись www-data
, это все, что вам нужно:
Измените каталоги на 2775 (rwxrwsr-x) с помощью setgid
устанавливать.
find /var/www/html -type d -exec chmod 2775 {} +
Только установить setgid
в каталогах (если другие разрешения уже верны)
find /var/www/html -type d -exec chmod g+s {} +
Измените файлы на 664 (rw-rw-r--)
find /var/www/html -type f -exec chmod -v 664 {} +
Рекурсивно изменить группу на www-data
chgrp -R www-data /var/www/html
Или рекурсивно измените пользователя и группу на www-data
chown -R www-data:www-data /var/www/html
Вы можете добавить подробный -v
к приведенным выше командам, чтобы увидеть, что было изменено.
Добавить пользователя username
группировать www-data
usermod -a -G www-data username
Попробуйте с этим:
Войдите в корневую папку кода
cd /var/www/html/
И попробуйте это для файлов:
sudo find -type f -exec chmod 664 {} \;
А для справочников:
sudo find -type d -exec chmod 775 {} \;
А для хозяина можно попробовать
sudo chown www-data:www-data -R /var/www/html
Это найдет каждую папку и файл и изменит разрешения на то, что вы хотите, с уважением!