Ubuntu + Apache2 + vsftpd + virtual hosts
After a fresh install of Ubuntu complete the following.
sudo su passwd root exit exit |
-> login as root
dpkg-reconfigure tzdata dpkg -P apparmor apparmor-utils apt-get update apt-get upgrade reboot |
-> login as root
apt-get dist-upgrade
reboot |
-> login as root
apt-get autoremove apt-get install ssh openssh-server openntpd exit |
-> ssh as root
apt-get install apache2 apt-get install php5 php-pear php5-mysql php5-gd |
-> Setup of MTA send ONLY
apt-get install exim4-daemon-light mailutils
dpkg-reconfigure exim4-config |
-> Select "internet site;" -> Ok -> Enter/Accept default entry as the FQDN -> Enter "127.0.0.1" to listen on -> Enter/Accept default in recipient domains -> Leave relay domains and relay machines blank -> Select No to keep DNS queries to a minimum -> Select "Maildir" for locally delivered email -> Select No to split file configuration -> Setup vsftpd
apt-get install vsftpd libpam-pwdfile |
Edit vsftpd.conf
mv /etc/vsftpd.conf /etc/vsftpd.conf.bak vi /etc/vsftpd.conf |
Add the following
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 nopriv_user=vsftpd virtual_use_local_privs=YES guest_enable=YES user_sub_token=$USER local_root=/var/www/$USER chroot_local_user=YES hide_ids=YES guest_username=vsftpd pasv_promiscuous=YES |
Register the virtual users
mkdir /etc/vsftpd htpasswd -cd /etc/vsftpd/ftpd.passwd user1 htpasswd -d /etc/vsftpd/ftpd.passwd user2 mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak vi /etc/pam.d/vsftpd |
Add the following
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd account required pam_permit.so |
Create the local vsftpd user without shell access
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd |
Restart vsftpd
service vsftpd restart |
Now we create the users directories
mkdir /var/www/user1 chmod -w /var/www/user1 mkdir /var/www/user1/www chmod -R 755 /var/www/user1/www chown -R www-data: /var/www/user1 |
The main one to not forget is the removal of write access to the users root directory /var/www/user1