Назад | Перейти на главную страницу

Разрешить доступ к папке и подпапкам нескольким пользователям с возможностью перезаписи файлов

Я знаю, что это довольно распространенный вопрос, но, похоже, я не нашел хорошего ответа.

Настройка следующая - есть веб-сервер и есть папка, в которой 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

Это найдет каждую папку и файл и изменит разрешения на то, что вы хотите, с уважением!