一.安裝vsftpd及相關依賴包
#vsftpd安裝程序和依賴表 yum install -y vsftpd pam* db4*
安裝完之后,vsftpd默認在/etc/vsftpd目錄下
二.修改vsftpd.conf (/etc/vsftpd/vsftpd.conf)
#建立相關文件和文件夾
touch /etc/vsftpd/chroot_list
mkdir /etc/vsftpd/ftplogin
#修改vsftpd.conf
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
vim /etc/vsftpd/vsftpd.conf
#原有配置的修改
anonymous_enable=NO
chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list pam_service_name=vvsftpd #新增配置 guest_enable=YES guest_username=www user_config_dir=/etc/vsftpd/ftplogin
完整配置如下(伸手黨福音),直接覆蓋即可,千萬不要忘記備份原文件
anonymous_enable=NO
local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES listen=YES userlist_enable=YES tcp_wrappers=YES guest_enable=YES guest_username=www user_config_dir=/etc/vsftpd/ftplogin pam_service_name=vvsftpd
三.建立FTP虛擬登陸賬戶
1.創建密碼明文文件
touch /etc/vsftpd/vuser
vi /etc/vsftpd/vuser
格式為:
用戶名1
用戶名1密碼
用戶名2
用戶名2密碼
...........
2.生成pam校驗數據庫文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
為了安全期間,建議在生成校驗數據庫之后,刪除vuser文件
或者修改vuser權限,不讓別的用戶讀(root大神如果被攻陷,那就沒什么好說的了)
chmod 600 /etc/vsftpd/vuser
3.添加新的pam service
touch /etc/pam.d/vvsftpd
vim /etc/pam.d/vvsftpd
內容如下(注意如果是32位系統,那就用32位的校驗,本例是64位的):
#%PAM-1.0 #auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login #account required /lib/security/pam_userdb.so db=/etc/vsftpd/login auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
4.給FTP虛擬用戶賦權(增加權限配置文件)
配置文件存放路徑,就是conf中的user_config_dir,本文就是/etc/vsftpd/ftplogin,文件名必須和用戶名相同
文件配置詳解,默認路徑需要提前用mkdir建立好,目錄擁有者設置為conf中的guest_username,本文為www
#有上傳/下載/修改權限 anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES anon_other_write_enable=YES local_root=/u01/ftpb/upload/ #只有上傳/修改權限 anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES local_root=/u01/ftpb/upload/ #只有下載權限 anon_world_readable_only=NO local_root=/u01/ftpb/upload/
5.設置seLinux
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
#最新測試CentOS 7.6已經沒有ftp_home_dir參數 , 改成tftp_home_dir setsebool -P tftp_home_dir on
如果出現500無法顯示列表的錯誤,主要是iptables設置的問題,請查看相關文章 http://www.cnblogs.com/kreo/p/4368811.html
被動模式設置特定端口
pasv_enable=yes pasv_min_port=4500 pasv_max_port=5000