banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Cải tiến một chút về cấu hình vsftpd với virtual user  XML
  [Question]   Cải tiến một chút về cấu hình vsftpd với virtual user 05/08/2008 04:08:11 (+0700) | #1 | 145090
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
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 

Let's build on a great foundation!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|