Разрешения предотвращают загрузку файлов в vsftpd.

Вопрос или проблема

Я хочу настроить vsftpd, чтобы разрешить пользователю (foouser) загружать и создавать директории в /var/www/ с намерением загружать целые вебсайты.

Текущие права доступа:

  1. Apache работает от имени www-data.
  2. Корневая папка документа: /var/www/
  3. Права доступа www-data:www-data для /var/www (рекурсивно).

Шаги, которые уже предприняты:

Создан пользователь: foouser

 useradd foouser

Добавлен пользователь foo в группу www-data.

 usermod -a -G www-data foouser

Установлена /var/www/ как домашняя директория foouser:

 usermod -d /var/www/

Вот мой файл vsftpd.conf:

 root@c9e0266eb8c8:/var# cat /etc/vsftpd.conf | grep -v ^#
 listen=YES
 local_enable=YES
 write_enable=YES
 local_umask=022
 dirmessage_enable=YES
 use_localtime=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 chown_uploads=YES
 chown_username=www-data
 xferlog_file=/var/log/vsftpd.log
 xferlog_std_format=YES

Но я все еще не могу загрузить файл:

 Команда:   USER foouser
 Ответ:  331 Пожалуйста, укажите пароль.
 Команда:   PASS ******
 Ответ:  230 Успешный вход в систему.
 Статус:    Сервер не поддерживает не-ASCII символы.
 Статус:    Подключено
 Статус:    Начинается загрузка /home/michael/settings.json
 Команда:   CWD /var/www
 Ответ:  250 Директория успешно изменена.
 Команда:   TYPE I
 Ответ:  200 Переход в бинарный режим.
 Команда:   PASV
 Ответ:  227 Вход в пассивный режим (172,17,0,2,174,22).
 Команда:   STOR settings.json
 Ответ:  553 Не удалось создать файл.
 Ошибка: Критическая ошибка передачи файлов

СЕЙЧАС… если я изменю права доступа директории с www-data на foouser:foouser, я смогу загружать без проблем, но это (конечно) сломает apache.

Что я делаю не так?

Правка: Разрешение анонимной загрузки файлов в /var/www/ также будет приемлемо. Это контейнер Docker, поэтому такая небезопасная практика допустима, поскольку это будет использоваться для разработки, а не для продакшена.

Я думаю, вам нужно добавить конфигурации пассивного режима в ваш файл ‘/etc/vsftpd.conf’, так как ваше соединение переходит в пассивный режим. Ниже приведены конфигурации.

# Дополнительная конфигурация
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=xx.xx.xx.xx # Публичный IP вашего сервера
local_root=/var/www

Вы можете настроить pasv_min_port и pasv_max_port по вашему усмотрению, но убедитесь, что вы разрешили их в вашем файрволе.

Ответ или решение

Для успешной загрузки файлов с использованием сервера FTP, настроенного с помощью vsftpd, необходимо обратить особое внимание на как разрешения файловой системы, так и на конфигурацию самого сервера. В этом случае проблема заключается в том, что пользователь foouser не может загружать файлы в директорию /var/www, и причиной этого являются права доступа и настройки vsftpd.

Правила доступа к файловой системе

  1. Проверка прав и владения: Убедитесь, что каталог /var/www имеет необходимые права доступа для группы www-data, к которой добавлен foouser. Текущие права на директорию выглядят следующим образом:

    drwxr-xr-x  7 www-data www-data 4096 Oct 10 10:00 www

    Чтобы foouser мог загружать файлы, ему необходимо иметь права на запись в этой директории. Чтобы это исправить, вы можете изменить владельца каталога /var/www на группу www-data, как вы уже сделали. Однако foouser как пользователь должен иметь следующие права:

    sudo chmod -R 775 /var/www

    Это позволит пользователю и группе www-data записывать в каталог, не меняя владельца.

  2. Проверка принадлежности к группе: Убедитесь, что foouser действительно добавлен в группу www-data. Для этого выполните команду:

    groups foouser

    Если www-data отсутствует в списке групп, то выполнение команды usermod нужно повторить.

Настройки конфигурации vsftpd

Ваш текущий файл конфигурации /etc/vsftpd.conf содержит необходимые настройки, но также рекомендуется внести некоторые изменения:

  1. Включение пассивного режима: Поскольку ваш клиент FTP использует пассивный режим (PASV), убедитесь, что в конфигурации vsftpd активированы соответствующие настройки:

    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048

    Обратите внимание, что порты из диапазона 1024-1048 должны быть открытыми в вашем файерволе, чтобы клиент мог установить соединение.

  2. Права на загрузку: Em у вас уже установлено chown_uploads=YES и chown_username=www-data, что означает, что файлы загруженные пользователем, будут принадлежать группе www-data. Убедитесь, что эта настройка активно работает в контексте загружаемых файлов.

Прочие аспекты

Если после внесения всех указанных изменений проблема не исчезает, можно рассмотреть возможность временного разрешения анонимной загрузки:

anonymous_enable=YES
anon_root=/var/www

Но помните, что это должно использоваться только в целях тестирования, так как в продакшене такие практики могут подвергать серьезным рискам безопасность вашего сервера.

Заключение

Следуйте указанным рекомендациям и проверьте настройки прав доступа и конфигурацию вашего сервера. Эти шаги должны позволить пользователю foouser успешно загружать файлы в директорию /var/www, сохранив при этом функционирование веб-сервера Apache.

Оцените материал
Добавить комментарий

Капча загружается...