1.yum安装vsftpd
yum install vsftpd
cd /etc/vsftpd
mv vsftpd.conf vsftpd.conf_bak
2.编辑配置文件
vim vsftpd.conf ###清空并添加如下内容
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
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
guest_enable=YES
guest_username=virtual_user
virtual_use_local_privs=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
hide_file=.*
chroot_local_user=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf/ #需要加上这句
#从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/ftpuser去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:
allow_writeable_chroot=YES #redhat7版本后需添加
3.创建虚拟用户
(##useradd -d /home/ftpsite -s /bin/bash virtual_user
##groupadd -g 500 virtual_user
##useradd -d /home/ftpsite -u 500 -g 500 -s /bin/bash virtual_user)这三步不做
useradd -d /home/ftpuser -s /bin/bash ftpuser ***此创建方式需要注释掉vsftpd.conf中的guest_enable=YES与guest_username=virtual_user
chmod 777 /home/ftpuser/
#未授权可导致500 OOPS报错(建议xshell登录ftp,会显示详细报错信息)500 OOPS::cannot change directory:/home/ftpuser ftp>500 OOPS:500 OOPS: child died
#类似报错:500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in
Connection closing…Socket close. ##vsftpd.conf内注释:tcp_wrappers=YES
4.建立PAM认证文件
vim /etc/pam.d/vsftpd
#将如下内容添加到/etc/pam.d/vsftpd,(原内容全部注释掉)(如果是32位系统就把lib64中的64去掉)###添加到最前面
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/account
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/account
5.将vsftp用户添加入/etc/vsftpd/account.txt
vim /etc/vsftpd/account.txt
ftpuser (用户名)
****** (密码 )
6.编辑注册db信息并增加执行权限
vim account.sh
db_load -T -t hash -f /etc/vsftpd/account.txt /etc/vsftpd/account.db
增加执行权限:
chmod +x account.sh
7.在/etc/vsftpd/vsftpd_user_conf/目录中建立用户对应文件 并添加访问目录
mkdir /etc/vsftpd/vsftpd_user_conf/
cd vsftpd_user_conf
vim ftpuser
local_root=/home/ftpuser
8.重新生成DB数据库文件(上传account.db,若原先没有,则直接运行axxount.sh)
cd /etc/vsftpd/
rm -rf account.db
sh account.sh
9.关闭SElinux与iptables防火墙
永久关闭SElinux:
vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
永久关闭防火墙:
systemctl disabled firewalld
chkconfig iptables off
10.重启启动vsftpd服务
systemctl restart vsftpd
11.设置开机自启
查看是否开机自启
chkconfig --list vsftpd
chkconfig vsftpd on
systemctl is-enabled vsftpd
若不是开机自启,则加入开机自启
systemctl enable vsftpd
注:vsftp安装后可上传、新建、删除、无法切换到别的目录