Chào mọi người,
Trong bài viết /hvaonline/posts/list/2109.html của bác chairuou, ở bước thiết lập các virtual users:
Cài đặt virtual user:
-----------------------
root@slackware10:/#useradd my_ftp -s /bin/false -d /var/ftp_pub
root@slackware10:/#passwd my_ftp my_password
vẫn phải tạo một user mới, chỉ có điều shell được cản với /bin/false.
Có một cách theo tôi là hay hơn để tạo các ftp users theo đúng nghĩa là "virtual" thật sự. File cấu hình vsftpd.conf của tôi thế này:
local_enable=YES
write_enable=YES
local_umask=0022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
vsftpd_log_file=/var/log/vsftpd.log
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/vsftp/$USER
chroot_local_user=YES
guest_enable=YES
guest_username=vsftp
virtual_use_local_privs=YES
anon_umask=0022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
Ở đây, vsftp chỉ là một user "giả", được tạo ra với lệnh:
Code:
# useradd -d /home/vsftp -s /bin/false vsftp
Mục đích của việc tạo user này là:
+ Tạo ra một thư mục /home/vsftp để chứa các FTP home directories
+ Owned các thư mục này
Tiếp theo, bạn cũng tạo một file virtual_users.txt với nội dung:
user1
password1
user2
password2
Để mỗi virtual user có một thư mục home riêng biệt, bạn có thể tạo các thư mục con trong /home/vsftp hoặc tạo symbolic links như sau:
Code:
$ cd /home/vsftp
$ ln -s /mnt/data/Music user1
$ ln -s /mnt/data/Video user2
$ sudo chown -R vsftp /mnt/data/Music
$ sudo chown -R vsftp /mnt/data/Video
Cuối cùng là tạo file virtual_users.db từ virtual_users.txt bằng lệnh db4x_load. File này sẽ được dùng bởi thư viện pam_userdb.so:
Code:
# db45_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
# chmod 600 /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
Mỗi khi muốn thêm một user, ngoài việc thêm username và password vào file virtual_users.txt, bạn cần xóa file virtual_users.db đi và chạy lại lệnh trên.
Ở đây có vài điểm chú ý:
1. Trong file cấu hình vsftpd.conf, bạn cần có dòng này:
virtual_use_local_privs=YES
Mục đích: Để map permission giữa user thật và user "ảo". Nếu không, virtual user sẽ không thể upload, và bạn sẽ gặp lỗi:
550 Permission denied
2. Các FTP home directories cần được owned bởi vsftp:
Code:
$ sudo chown -R vsftp /mnt/data/Music
$ sudo chown -R vsftp /mnt/data/Video
Nếu không, vsftpd sẽ "báo cáo" ngay khi upload:
553 Could not create file