FTP не предоставляет разрешения на действия для пользователя, у которого есть разрешение.

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

У меня есть пользователь на моем сервере (Debian), которого я буду использовать для FTP. Для определенной директории в файловой системе он может создавать директории и файлы.

myuser@debian-server:/storage$ su ftp_accesser
Password: 
ftp_accesser@debian-server:/storage$ echo "foobar" > foobar.txt
ftp_accesser@debian-server:/storage$ mkdir -v foobar2
mkdir: создана директория 'foobar2'
ftp_accesser@debian-server:/storage$ ls -l
total 448380
drwxr-xr-x 2 root         root              4096 Mar 25 19:32 other_dir
drwxrwxr-x 2 ftp_accesser ftp_accesser      4096 Apr  9 11:32 foobar2
-rw-rw-r-- 1 ftp_accesser ftp_accesser       7 Apr  9 11:31 foobar.txt

ftp_accesser@debian-server:/storage$ 

Я также запускаю сервер vsftpd на этом сервере. Я пытаюсь сделать то же самое, что и выше (с удаленными файлами, конечно), используя клиент ftp.

Подключен к localhost.
220 (vsFTPd 3.0.3)
Имя (localhost:myuser): ftp_accesser
331 Пожалуйста, укажите пароль.
Password:
230 Успешный вход.
Удаленная система — это UNIX.
Используется двоичный режим для передачи файлов.
ftp> cd /storage
250 Успешно изменена директория.
ftp> mkdir foobar3
550 Отказано в доступе.
ftp> put /home/myuser/foobar.txt foobar.txt
local: /home/myuser/foobar.txt remote: foobar.txt
200 PORT-команда выполнена успешно. Рассмотрите использование PASV.
550 Отказано в доступе.
ftp> 

Есть ли способ разрешить ftp_accesser создавать/загружать файлы на сервер?

Оказалось, что write_enable=YES был закомментирован в моем файле /etc/vsftpd.conf. Как только я раскомментировал это и перезапустил сервер, я успешно смог создать директорию и загрузить файл.

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

Проблема, с которой вы столкнулись при использовании FTP на сервере под управлением Debian, связана с необходимостью настройки прав доступа для пользователя ftp_accesser с помощью сервера vsftpd. Давайте рассмотрим шаги, которые помогут вам обеспечить корректное функционирование FTP-доступа и решат проблему с разрешениями.

1. Проверка конфигурации vsftpd

Первоначально обратите внимание на файл конфигурации /etc/vsftpd.conf. Как вы уже обнаружили, одна из ключевых строк в этом файле – write_enable=YES. Этот параметр определяет, имеет ли пользователь право на запись, включая создание файлов и директорий. Если он закомментирован (#), сервер будет запрещать любые операции записи.

Шаги:

  • Откройте файл конфигурации /etc/vsftpd.conf.
  • Убедитесь, что write_enable=YES не закомментирован, и сохраните изменения.
  • Перезапустите сервер vsftpd для применения настроек:
    sudo systemctl restart vsftpd

2. Проверьте права пользователя и группы

Убедитесь, что пользователь ftp_accesser имеет необходимые права доступа к требуемым директориям на файловой системе.

Шаги:

  • Проверьте, принадлежит ли директория /storage пользователю ftp_accesser или его группе, и при необходимости измените владельца или группу:
    sudo chown ftp_accesser:ftp_accesser /storage
  • Настройте права доступа, чтобы пользователь и его группа могли выполнять операции записи:
    sudo chmod 775 /storage

3. Конфигурация FTP-клиента

  • Убедитесь, что ваш FTP-клиент корректно настроен для взаимодействия с сервером. Используйте соответствующий режим передачи (например, PASV), если это требуется вашим сетевым окружением.

4. Логирование и устранение ошибок

Для более детального анализа и устранения проблем настройте логирование в vsftpd. Это поможет определить, какие ошибки возникают при попытке записи или создания каталогов.

Шаги:

  • Включите логирование:
    xferlog_enable=YES
  • Просмотрите лог-файлы для выявления возможных ошибок:
    less /var/log/vsftpd.log

Заключение

Следуя вышеописанным шагам, вы сможете успешно устранить проблему с FTP-доступом для пользователя ftp_accesser. Обратите особое внимание на конфигурацию vsftpd и права доступа, так как это наиболее частые причины отказа в разрешении при действиях с файлами через FTP. Если после выполнения всех настроек проблема persists, рассмотрите возможность проверки на наличие дополнительных ограничений безопасности (например, AppArmor или SELinux), которые могут блокировать доступ.

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

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