一.安装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