1.检测是否安装vsftpd:
rpm -q vsftpd
//利用rpm(redhat package manerge)软件测试是否存在vsftpd
2.如果没有vsftpd,install vsftpd
yum install -y vsftpd
//yum是基于rpm的软件管理软件
3.编辑vsftpd配置文件:
vi /etc/vsftpd/vsftpd.conf
#-------begin---------
anonymous_enable=NO
#关闭匿名登录
chroot_local_user=YES
#用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
#通过搭配能实现以下几种效果:
#①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
#②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
#③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
#④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
#加上这行解决了无法登陆的问题
#--------end---------
4.设置开机启动:
chkconfig vsftpd on
5.重新启动ftp
systemctl start vsftpd.service
systemctl restart vsftpd.service
6.防火墙配置:
(1)
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
#newline
(2)关闭防火墙:
[root@localhost modules]# systemctl stop firewalld.service #停止
[root@localhost modules]# systemctl disable firewalld.service #禁用
7.配置账户:
useradd -d /path(你的ftp文件夹) -s /sbin/nologin ftpname(用户名)
passwd ftpname
chown -R ftpname.ftpname /path(你的ftp路径)
chmod 777 /path
8.设置路径上运行:
setsebool -P ftp_home_dir on
setsebool allow_ftpd_full_access on
#----ps:-------
这里可能会出现一个错误:
error1: SELinux is disabled
解决方案:
vi /etc/selinux/config
更改为:SELINUX=1
必须重启linux,不重启是没办法立刻开启selinux的
1 命令查看出selinux的状态
sestatus -v
2 临时关闭 selinux
setenforce 0
3 永久关闭selinux
vi /etc/sysconfig/selinux
把里边的一行改为
SELINUX=disabled
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
如果要彻底禁用SELinux 需要在/etc/sysconfig/selinux中设置参数selinux=0
error2: boolean xxx is not defined
原因是:CentOS7开始用 tftp_home_dir 来代替了 ftp_home_dir (查看/etc/vsftpd/vsftpd.conf)
修改如下:
setsebool -P tftp_home_dir on
9.重启vsftpd:
systemctl restart vsftpd.service