У меня чистый 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 ...
. После этого пользователь смог войти в систему.
Я надеюсь, что это сэкономит кому-то несколько часов головокружения.