Ubuntu – How to give a specific user access only to a specific folder and its contents

Apache2chownftppermissionsusers

I used

adduser <name>

and created a new user, andrew. Now I want to give him read/write access only to /var/www/sitename.com and its contents.

How am I supposed to do this?

I tried sudo chown andrew /var/www/sitename.com but he is still able to see all the folders and files under /var/www and other directories.

Best Answer

Changing the ownership to a designated user will not change the users default home directory specified in passwd file. Anyhow, You may achieve this in different ways. But to make it simpler do this by opening up a terminal;

Firstly make a back-up of your /etc/passwd file doing below;

sudo cp /etc/passwd /etc/passwd.back

Once done, edit the file (either with vi or nano), I prefer nano which is pretty easy;

sudo EDITOR=nano vipw /etc/passwd

Locate the created user. A line should reflect as below assuming the user is andrew;

andrew:x:1001:1001:andrew:/home/andrew:/bin/sh

Replace /home/andrew with /var/www/sitename.com & save the file by hitting CTRL+O then enter to save & then CTRL+X to exit. This will direct the user to specified directory. Login as the user and see whether it points to **/var/www/sitename.com by also checking for any permission issues. If permission issue persists, then add the user to the www-data group by doing below;

sudo adduser andrew www-data

EDIT: regarding the comment, I just had a quick search and found some more detail. Well, you may edit vsftpd.conf file located in /etc/ directory

sudo nano /etc/vsftpd.conf

un-comment (remove only the # if its there at the beginning) the following line;

chroot_local_user=YES

Note: Just to be safe, make a back-up of the configuration file before you make any changes to it.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.back

Source: vsftpd.conf on Ubuntu

Hope it helps!

Related Question