Вопрос или проблема
У меня есть пользователь на моем сервере (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), которые могут блокировать доступ.