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

pure-ftpd возвращает 550 Невозможно сменить каталог на /: в доступе отказано

У меня чистый ftpd, работающий на ubuntu 16.04.5 LTS, и возникают проблемы с загрузкой файлов. Сервер подключается, но я не могу ни создать каталог, ни загружать файлы. Похоже, это проблема с разрешением.

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

При попытке подключиться через filezilla:

Status:         Resolving address of ftp.example.com
Status:         Connecting to myip...
Status:         Connection established, waiting for welcome message...
Status:         Insecure server, it does not support FTP over TLS.
Status:         Logged in
Status:         Retrieving directory listing...
Status:         Directory listing of "/" successful
Status:         Resolving address of ftp.example.com
Status:         Connecting to myip...
Status:         Connection established, waiting for welcome message...
Status:         Insecure server, it does not support FTP over TLS.
Status:         Logged in
Status:         Starting upload of /Users/user/Desktop/test.vcf
Command:    CWD /
Response:   550 Can't change directory to /: Permission denied
Command:    MKD /
Response:   550 Can't create directory: File exists
Command:    CWD /
Response:   550 Can't change directory to /: Permission denied
Command:    SIZE /test.vcf
Response:   550 Can't check for file existence
Command:    TYPE I
Response:   200 TYPE is now 8-bit binary
Command:    PASV
Response:   227 Entering Passive Mode (myip)
Command:    STOR /test.vcf
Response:   553 Can't open that file: Permission denied
Error:          Critical file transfer error

На сайте сервера:

Feb 12 14:18:33 fx pure-ftpd: (stangeimmo@199.203.151.209) [INFO] Logout.
Feb 12 14:18:33 fx pure-ftpd: (?@199.203.151.209) [INFO] New connection from 199.203.151.209
Feb 12 14:18:33 fx pure-ftpd: (?@199.203.151.209) [INFO] stangeimmo is now logged in
Feb 12 14:19:34 fx pure-ftpd: (stangeimmo@199.203.151.209) [INFO] Can't change directory to /: Permission denied
Feb 12 14:19:34 fx pure-ftpd: (stangeimmo@199.203.151.209) [ERROR] Can't create directory: File exists
Feb 12 14:19:34 fx pure-ftpd: (stangeimmo@199.203.151.209) [INFO] Can't change directory to /: Permission denied
Feb 12 14:19:35 fx pure-ftpd: (stangeimmo@199.203.151.209) [ERROR] Can't open that file: Permission denied

Конфигурационный файл mysql для pure-ftpd имеет следующую строку:

MYSQLGetDir     SELECT CONCAT('/mnt/project/data/ftp-upload/', user) AS Dir FROM ftp_access WHERE User="\L"

Также я заметил, что приветственное сообщение не будет отображаться, не уверен, что это тоже признак.

Права доступа к папке:

rwxrwx--- 218 www users  4096 Feb 12 13:14 ftp-upload/

В чем может быть причина этой проблемы?

После нескольких часов попыток я обнаружил, что разрешения родительского каталога не позволяют виртуальному пользователю читать свой собственный домашний каталог. Подсказка: если вы используете chroot jail по умолчанию, то домашний каталог указывается как root (/).

Попробуйте убедиться, что пользователь может читать все родительские каталоги.

В моем случае...

Есть системный пользователь по имени ftpuser. Виртуальный пользователь, bob, был создан с uid как ftpuser, а домашний каталог как что-то вроде /srv/ftp-home/bob. Пример команды: pure-pw useradd bob -u ftpuser -d /srv/ftp-home/bob

Хорошо, /srv/ftp-home должен принадлежать root, чтобы pure-ftpd автоматически создавал недостающие домашние каталоги, поэтому ls -l в этом каталоге был drwx------ 1 root root ...

я использовал chgrp ftpuser /srv/ftp-home и chmod g+rx /srv/ftp-home так что разрешения были изменены на drwxr-x--- 1 root ftpuser .... После этого пользователь смог войти в систему.

Я надеюсь, что это сэкономит кому-то несколько часов головокружения.