搭建了一個vsftp的環境,花了小半天才搞好,主要是在文件權限部分折騰了挺久,我的系統環境是CentOS Linux release 7.0.1406 ,vsftpd-3.0.2-21.el7.x86_64
首先是虛擬用戶的概念,vsftp有三種登錄方式,匿名,本地用戶,虛擬用戶。
匿名使用ftp或者anonymous登錄,無密碼
本地用戶使用系統用戶登錄
虛擬用戶是使用在vsftp內創建的一系列賬戶進行登錄,vsftp通過db以及用戶配置文件來對用戶進行管理,通常配置比較靈活,安全性也較高
創建好一個系統用戶,映射到vsftp中,然后vsftp內部再創建一系列的虛擬用戶就可以了
搭建過程:
一、添加一個系統用戶
useradd –d /home/ftp –s /sbin/nologin vftpuser
ftp目錄,可以使用該用戶的home目錄,也可以指定其他目錄作為ftp目錄,需要確保有相應的權限(讀、寫、刪除更名等)
二、vsftp中添加虛擬用戶
1、使用db_load生成用戶口令認證文件
先生成一個txt文件,一行用戶名,一行密碼,例如:
然后通過db_load生成口令認證文件,放在/etc/vsftpd/目錄下
db_load –T –t hash –f ./vsftpuser.txt /etc/vsftpd/vsftpuser.db
可以通過db_dump來查看db中的內容,命令格式為:
db_dump -d a ./vsftpuser.db
2、修改PAM認證文件
修改/etc/pam.d/vsftpd文件
注掉所有行后添加以下兩行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
三、修改vsftpd.conf配置文件
1 anonymous_enable=NO 2 local_enable=YES 3 write_enable=YES 4 local_umask=022 5 anon_upload_enable=NO 6 dirmessage_enable=YES 7 xferlog_enable=YES 8 connect_from_port_20=YES 9 chroot_local_user=NO 10 chroot_list_enable=YES 11 chroot_list_file=/etc/vsftpd/chroot_list 12 listen=YES #不打開啟動失敗,同時ipv6設置為NO 13 userlist_enable=YES 14 tcp_wrappers=YES 15 guest_enable=YES #打開虛擬用戶設置 16 guest_username=vsftpuser #映射為第一步中添加的系統用戶 17 pam_service_name=vsftpd #PAM文件 18 vsftpd_log_file=/var/log/vsftpd.log #指定log文件 19 user_config_dir=/etc/vsftpd/userconf #虛擬用戶的配置文件路徑 20 allow_writeable_chroot=YES #新版本安全選項 21 virtual_use_local_privs=NO #為NO時,虛擬用戶使用匿名用戶權限,為YES虛擬用戶使用系統用戶權限,默認為NO,可以通過用戶的配置文件再來為用戶單獨指定權限
主要是這些配置,如遇到問題,可以根據錯誤提示,反復嘗試一下配置選項
四、虛擬用戶配置文件
對應着vsftpd.conf中 user_config_dir=/etc/vsftpd/userconf的路徑
可以為每一個虛擬用戶創建單獨的配置文件,該文件中的配置選項覆蓋vsftpd.conf的選項。
通常匿名用戶只具有瀏覽和下載的權限,通過用戶配置文件可以為虛擬用戶指定目錄以及各種上傳下載權限等等
例如用戶名為mput的配置文件:
1 local_root=/home/ftpfile/media_upload #指定該用戶ftp路徑 2 # 3 anon_upload_enable=YES #匿名用戶的權限 4 anon_world_readable_only=YES 5 anon_mkdir_write_enable=YES 6 anon_other_write_enable=YES 7 #chown_username=vsftpuser 8 ~ 9 ~ 10 11 "./userconf/mput" 7L, 173C
配置好后,systemctl start vsftpd.service將服務起起來,通過客戶端進行測試
遇到的一些問題:
1、vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
安全選項,設置一下 allow_writeable_chroot=YES試試
2、550 Permission denied.
檢查下用戶是否對該目錄有寫權限,以及在虛擬用戶的配置項中,需要打開寫的權限
3、500 OOPS: cannot change directory:/home/vsftp
安全選項,在setsebool中將ftpd_full_access 項打開
4、啟動失敗,提示warning: can’t get client address: Socket operation on non-socket
檢查一下配置選項中的LISTEN是否打開,以及ipv6的配置
5、用戶可以上傳,但是無法瀏覽文件列表或者無法下載
chmod -R o+r 用戶目錄,或者設置anon_umask權限
參考:
http://blog.csdn.net/a2500100455/article/details/48135943
http://yuanbin.blog.51cto.com/363003/108262/