一、 安装ftp
yum -y install vsftpd
二、配置
安装完之后在/etc/vsftpd/路径下会存在三个配置文件。
vsftpd.conf: 主配置文件
ftpusers: 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户。(黑名单)
user_list(白名单): 指定的用户是否可以访问ftp服务器,通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP。
三、启动ftp服务
service vsftpd start
四、相关配置
修改配置,不允许匿名登入:
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=NO
service vsftpd restart
添加用户:
useradd ftpuser
设置密码:
passwd ftpuser
创建ftp服务器存储数据的目录:
mkdir -p /data/ftp
mkdir -p /data/ftp/pub
为所有用户设置访问权限,
chmod a-w /data/ftp #其他用户没有写的权限
chmod 777 -R /data/ftp/pub
这些文件所有者是root,root赋予其他用户/data/ftp不能有写的权限,/data/ftp/data为所有权限,-R表示目录和其所有的子目录。
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:
allow_writeable_chroot=YES
将/data/ftp设置成ftpuser的主目录。
usermod -d /data/ftp ftpuser
然后禁止用户向上切换目录:
在/etc/vsftpd/vsftpd.conf添加
chroot_local_user=YES
关闭selinux:
setenforce 0
永久有效
修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。
开放21号端口:
#添加 firewall-cmd --zone=public --add-port=21/tcp --permanent #(--permanent永久生效,没有此参数重启后失效) #重新载入 firewall-cmd --reload
下载图形客户端使用:
https://winscp.net/eng/docs/lang:chs#下载
若登入后发现:
无法获得目录列表
出现这个问题的原因是防火墙的拦截掉请求信息,所以需要配置防火墙的规则信息
该错误是由iptables的配置引起的,临时的解决方法是执行如下命令:
[root@localhost soft]# modprobe ip_nat_ftp
这个是临时解决的,重启centos7就会失效了。
再次登陆列表正常啦!
但当你重新启动服务器则iptables规则失效,又会出现相同的情况,所以我们需要修改/etc/sysconfig/iptables-config文件
我们需要把
IPTABLES_MODULES=""
修改为:
IPTABLES_MODULES="ip_nat_ftp"
这样重启服务器之后就不必再每次都执行mobprobe。