Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I've set up VSFTPD on Amazon EC2, with the Amazon Linux AMI. I created a user and can now succesfully connect via ftp. However, if I try to upload something I get the error message "553 Could not create file."

I assume this has to do with permissions but I don't know enough about it to be able to fix it. So basically, what do I have to do to be able to upload files?

share|improve this question

4 Answers 4

up vote 6 down vote accepted

There are two likely reasons that this could happen -- you do not have write and execute permissions on the directories leading to the directory you are trying to upload to, or vsftpd is configured not to allow you to upload.

In the former case, use chmod and chown as appropriate to make sure that your user has these permissions on every intermediate directory. The write bit allows the affected user to create, rename, or delete files within the directory, and modify the directory's attributes, whilst the read bit allows the affected user to list the files within the directory. Since intermediate directories in the path also affect this, the permissions must be set appropriately leading up to the ultimate destination that you intend to upload to.

In the latter case, look at your vsftpd.conf. write_enable must be true to allow writing (and it is false by default). There is good documentation on this configuration file at man 5 vsftpd.conf.

share|improve this answer
Neither of these seem to be the issue. I tried chmoding everything to 777 (unsafe) and settings write_enable=YES, but I still get this useless error message. –  Cerin Aug 5 '13 at 19:54

Could you try this

chown -R ftpusername /var/www/html
share|improve this answer

The command ftp put /path/to/local_file doesn't work with vsftpd. Try the following:

ftp put /path/to/local_file remote_file_name 

You may choose any name you wish for the remote_file_name, but you must specify one.

share|improve this answer
You might want to consider adding more detail to your answer (for example, some documentation that supports your solution's validity). –  HalosGhost Jun 29 '14 at 3:11

I had a similar issue, and resolved it by temporarily setting SELinux to "permissive" on the server.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.