16

I have a Server running Ubuntu 12.10 x64, and the last version of vsFTPd.

My user example.com has its home folder set on /var/www/example.com,

I created a public_html folder inside and gave 777 permisions to it, and removed the writing permissions of the home user folder. Everything is working well but:

Every file I upload by FTP (using SmartFTP) gets a chmod of 0.

My vsftpd.conf had only one line related:

local_umask=022.

I've tried to change to:

file_open_mode=777
local_umask=002

So my files would get 775 as soon as uploaded.

But only my uploaded folders are getting 775 permissions.

My uploaded files get 1411 permissions

Can someone help me solving that?

1
  • you must to give permission to the FTP user.
    – Gex
    Feb 18, 2014 at 0:56

5 Answers 5

14

I ended up using

file_open_mode=0777
local_umask=022

on the vsftpd.conf. The problem was that both FTP user and www-data user needed permissions to write, so i had to join www-data and ftpuser to www-data usergroup, and CHMOD -R 775 all the files on /var/www - that way, with 775 CHMOD, the group would have permission to read, write and execute. Now its working perfectly.

1
  • 2
    do not forget to restart the FTP server: sudo service vsftpd restart
    – Nahid
    Feb 3, 2017 at 10:33
8

Got my answer:

As the www-data is the user responsible for the webserver and your normal user is responsible for the ftp server, you need first to make them both members of the same group: the group www-data.

Creating custom User:

useradd –d /var/www/asasd.com -g www-data -m yourusername this way the home directory will be the /var/www/asasd.com and your user will be in the www-data group.

after this, change the user pass by typing passwd.

Then, you need to create a public_html folder inside your yourusername home folder, as the FTP wont be able to write in the root of your home folder, you have to create a subfolder.

Remove write permissions of your yourusername folder chmod a-w /var/www/asasd.com

Then, apply new permissions for the subfolder: chmod -R 775 /var/www/asasd.com/public_html (note you must use 775 chmod because you need group write permissions, not user write permissions, as you want the whole group (ftp and www-data) being able to write) Then, own the folder for the www-data chown -R www-data:www-data /var/www/asasd.com/public_html

That way you must be able to use FTP and have a Webserver working.

Good luck!

Funny this info is so hard to find. Are people not sharing knowledge anymore?

2
  • "you need first to make them both members of the same group: the group www-data" How to put my ftp user in the group www-data?
    – Black
    Mar 6, 2019 at 10:30
  • Worked perfect. Thanks @lucasmx Aug 28, 2019 at 13:52
0

I also had problem like the file permission is changed when i upload a file through my ftp. This is fixed with one line change in my vsftpd.conf

local_umask=val(like 022,007,etc.,)

1
  • Care to improve and open this a little bit? Why is this better than the previous alternatives and what does it actually do, since this kind of syntax is not described in the manual page at all: local_umask has to be single value, and it must have 0 as a prefix for octal value. Mar 28, 2015 at 12:31
0

If you are using ftp or anonymous user to upload files, please use below lines to set the upload file permission to 644 in /etc/vsftpd/vsftpd.conf file

file_open_mode=0666
anon_umask=022

Final permission is 666-022 = 644.

-4

you need to change the ownership of that file:

chown root:root /home/username

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .