一、安裝ftp服務
yum install -y vsftp # 安裝虛擬用戶數據庫 yum -y install libdb-utils
二、增加一個系統用戶‘virftp’ ,所有虛擬用戶都會映射到此用戶后對文件系統進行讀寫操作
#添加用戶,用戶登錄時使用nologin useradd -s /sbin/nologin virftp #設置用戶密碼 passwd virftp
三、配置vsftp主配置文件
#備份vsftpd主配置文件 cp /etc/vsftpd/vsftpd.conf{,.bak} #查看過濾配置文件注釋后內容 grep -v "#" /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf #禁止匿名用戶登錄 anonymous_enable=NO #允許本地用戶登錄 local_enable=YES #啟用虛擬賬戶 guest_enable=YES #把虛擬賬戶映射到系統賬戶virftp guest_username=virftp #使用虛擬用戶驗證(PAM驗證) pam_service_name=vsftpd #設置存放各虛擬用戶配置文件的目錄(此目錄下與虛擬用戶名相同的文件為它的配置文件) user_config_dir=/etc/vsftpd/vsftpd_viruser #啟用chroot時,虛擬用戶根目錄允許寫入 allow_writeable_chroot=YES
#被動模式,文件傳輸端口的最大最小范圍 pasv_min_port=30000 pasv_max_port=35000
四、配置vsftpd pam驗證文件
#備份 cp /etc/pam.d/vsftpd{,.bak} #將auth及account的所有配置行均注釋掉,再添加如下兩行 vim /etc/pam.d/vsftpd auth required pam_userdb.so db=/etc/vsftpd/vir_user account required pam_userdb.so db=/etc/vsftpd/vir_user
五、配置虛擬用戶訪問vsftpd服務
#創建虛擬用戶密碼文件(奇數行為帳號,偶數行為密碼) vim /etc/vsftpd/vir_user test01 pwd_test01 test02 pwd_test02
六、配置虛擬用戶各自的配置文件
#創建‘虛擬用戶配置文件’的存放目錄 mkdir /etc/vsftpd/vsftpd_viruser/ #創建和配置虛擬用戶各自的配置文件(文件名稱是‘虛擬用戶名’) vim /etc/vsftpd/vsftpd_viruser/test01 # 允許寫入 write_enable=YES #允許瀏覽FTP目錄和下載 anon_world_readable_only=NO #禁止用戶下載 #download_enable=NO # 允許虛擬用戶上傳文件 anon_upload_enable=YES # 允許虛擬用戶創建目錄 anon_mkdir_write_enable=YES # 允許虛擬用戶執行其他操作(如改名、刪除) anon_other_write_enable=YES # 上傳文件的掩碼,如022時,上傳目錄權限為755,文件權限為644 anon_umask=022 # 指定虛擬用戶的虛擬目錄(虛擬用戶登錄后的主目錄,即登錄ftp后訪問的根目錄) local_root=/home/virftp/test01
七、生成虛擬用戶數據庫
db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db chmod 700 /etc/vsftpd/vir_user.db
八、創建虛擬用戶的根目錄,要保證虛擬用戶映射的系統用戶,對這個根目錄有讀寫權限
#創建虛擬用戶對應根目錄 mkdir -p /home/virftp/test01 #修改目錄權限 chown -R virftp.virftp /home/virftp/test01
九、重啟服務
systemctl restart vsftpd #開放端口 firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --zone=public --add-port=30000-35000/tcp --permanent firewall-cmd --reload
注:若添加新虛擬用戶,創建用戶對應根目錄文件夾、在/etc/vsftpd/vsftpd_viruser/目錄下創建用戶名為文件名的配置文件,/etc/vsftpd/vir_user文件中添加帳號密碼
#再執行 db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db #重啟服務 systemctl restart vsftpd
#被動模式,文件傳輸端口的最大最小范圍pasv_min_port=30000pasv_max_port=35000
