Sau đây là bài hướng dẫn từng bước “Cài đặt vsFTPd trên Ubuntu cho Virtual Users truy cập”
 
Cần phân biệt Local user là user được tạo ra trong hệ điều hành Linux. Còn Virtual user là user tạo ra, được quản lý trong một ứng dụng hoặc dịch vụ cụ thể. Trong môi trường Shared Hosting hoặc VPS thì nên dùng Virtual user để đảm bảo user đó không thao tác trực tiếp vào hệ điều hành, giảm thiểu rủi ro.

 

Bước 1: Cài vsFTPd
sudo apt-get install vsftpd

Bước 2: Cài thư viện PAM để authenticate virtual user.
sudo apt-get install libpam-pwdfile

Bước 3: Sửa file /etc/vsftpd.conf

sudo nano /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
virtual_use_local_privs=YES
nopriv_user=vsftpd
local_umask=022
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
guest_enable=YES
guest_username=vsftpd
user_sub_token=$USER
local_root=/var/www/$USER

Bước 4: Sửa file /etc/pam.d/vsftpd
sudo nano /etc/pam.d/vsftpd
Tham khảo nội dung sửa

auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so

Bước 5: Tạo user ảo và ghi vào file /etc/vsftpd/passwd
Để tạo user ảo và mã hoá mật khẩu, cần dùng lệnh htpass.
sudo apt-get install apache2-utils
Tạo user và mã hoá

htpasswd -c -d /etc/vsftpd/passwd cuong
htpasswd -d /etc/vsftpd/passwd minh

Bước 6: Tạo thư mục ứng với từng user

mkdir /var/www/cuong
chmod +w /var/www/cuong

mkdir /var/www/minh
chmod +w /var/www/minh

Bước 7: Kiểm tra.
Cách 1: dùng FileZilla hoặc vào terminal gõ lệnh ftp xxx.xxx.xxx.xxx //xxx.xxx.xxx.xxx là địa chỉ IP của FTP server

———————– Bổ xung đối với trường hợp cập nhật Ubuntu gần đây————

#	Cài đặt db4-utils
$	sudo apt-get install db4.2-util
$	cd /etc/vsftpd
#	Tạo file text chứa danh sách các virtual user và  mật khẩu
$	nano virtual-users.txt

* Thêm dòng sau:
jack #username cho virtual user
123456 #password cho jack
david
123456
* Lưu lại file (Ctrl + X, gõ Y)
– Thực hiện đoạn lệnh sau để tạo file .db chứa các tài khoản virtual
$ sudo db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db
– Cấu hình PAM
$ sudo nano /etc/pam.d/vsftpd
* Thêm dòng sau:

auth required pam_userdb.so db=/etc/vsftpd/virtual-users #db=đường dẫn đến file db
account required pam_userdb.so db=/etc/vsftpd/virtual-users  #db=đường dẫn đến file db

* Lưu lại file (Ctrl + X, gõ Y)
– Cấu hình file /etc/vsftpd.conf

$	sudo nano /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
virtual_use_local_privs=YES
nopriv_user=vsftpd
local_umask=022
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
guest_enable=YES
guest_username=vsftpd
user_sub_token=$USER
local_root=/var/www/$USER
#	Tạo thư mục với từng user
$	mkdir  /var/www/jack
$	chown -R vsftpd:ftp /var/www/jack
$	mkdir /var/www/david
$	chown –R vsftpd:ftp /var/www/david
-	Khởi động lại vsftpd
$	sudo service vsftpd restart