pure-ftpd returns 550 Can't change directory to /: Permission denied
I have pure-ftpd running onn ubuntu 16.04.5 LTS and have trouble uploading files. The server connects, but I can not create any directory nor can I upload files. It apears to be a permission problem.
The server is configured with virtual users over mysql, where each user has a directory. This used to work, but the config might have changed.
While trying to connect over 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
On the server site:
Feb 12 14:18:33 fx pure-ftpd: ([email protected]) [INFO] Logout.
Feb 12 14:18:33 fx pure-ftpd: ([email protected]) [INFO] New connection from 199.203.151.209
Feb 12 14:18:33 fx pure-ftpd: ([email protected]) [INFO] stangeimmo is now logged in
Feb 12 14:19:34 fx pure-ftpd: ([email protected]) [INFO] Can't change directory to /: Permission denied
Feb 12 14:19:34 fx pure-ftpd: ([email protected]) [ERROR] Can't create directory: File exists
Feb 12 14:19:34 fx pure-ftpd: ([email protected]) [INFO] Can't change directory to /: Permission denied
Feb 12 14:19:35 fx pure-ftpd: ([email protected]) [ERROR] Can't open that file: Permission denied
The mysql config file for pure-ftpd has this line:
MYSQLGetDir SELECT CONCAT('/mnt/project/data/ftp-upload/', user) AS Dir FROM ftp_access WHERE User="\L"
Also I noticed that the .welcome message will not be displayed, not sure if this is also an indication.
Folder permissions are:
rwxrwx--- 218 www users 4096 Feb 12 13:14 ftp-upload/
What could be the reason for this problem?
Solution 1:
After hours of trying everything, I discovered the permissions of a parent directory was preventing the virtual user from reading their own home directory. Hint: If you're using the default chroot jail, then the home directory is reported as root (/).
Try verifying that the user can read all parent directories.
In my case...
There is a system user called ftpuser
. Virtual user, bob
, was created with uid as ftpuser
, and home directory as something like /srv/ftp-home/bob
. Example command: pure-pw useradd bob -u ftpuser -d /srv/ftp-home/bob
Well, /srv/ftp-home
has to be owned by root in order for pure-ftpd to automatically create missing home directories, so ls -l
on that directory was drwx------ 1 root root ...
I used chgrp ftpuser /srv/ftp-home
and chmod g+rx /srv/ftp-home
so that permissions were changed to drwxr-x--- 1 root ftpuser ...
. The user was able to log in after that.
I hope this saves someone several hours of head bashing.