部署条件
linux CentOS7系统的虚拟机,需要root用户和密码,可以正常连接。
安装FTP
1. 查看是否安装FTP,执行此命令:rpm -qa | grep vsftpd,无返回值则没有安装,出现如下图所示,则已安装。
2. 如果没安装则执行安装命令:yum -y install vsftpd。出现如下图信息则表示安装成功。
创建FTP用户
- 创建FTP用户。执行命令:useradd -d /home/ftptest ftptest。
- 设置用户密码,执行命令:passwd ftptest。输入密码:123456。
- 限制用户不能telnet只能FTP,执行命令:usermod -s /sbin/nologin ftptest。
- 设置该用户下面的文件其他用户都可读,写,执行。执行命令:chmod -R 777 /home/ftptest。
- 指定允许使用vsftpd 的用户列表文件,将ftptest增加到白名单。vim /etc/vsftpd/user_list。
- 指定允许使用vsftpd 的用户列表文件。 控制名单下的目录能不能离开ftp根目录,将ftptest增加进去。vim /etc/vsftpd/chroot_list
配置FTP环境
1. 检查selinux的状态,执行命令:vim /etc/selinux/config,如果不是disabled状态则需要修改为此状态,关闭后要重启系统,重启命令:reboot和shutdown -r now都可以。
2. 修改FTP的配置文件。执行命令:vim /etc/vsftpd/vsftpd.conf
3. 允许匿名用户访问为了安全选择关闭。
anonymous_enable=NO(修改)
chroot_local_user=YES(修改)
chroot_list_enable=YES(修改)
chroot_list_file=/etc/vsftpd/chroot_list(修改)
4. vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。要修复这个错误,可以用命令chmod a-w /home/ ftptest去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:
allow_writeable_chroot=YES(新增)
在user_list中允许登录,不在user_list中拒绝登录
userlist_enable=YES(新增)
userlist_deny=NO(新增)
5. 与ssh一样,vsftp的配置文件默认开启了DNS反向解析,这可能会造成用户在登陆到FTP服务器的时候奇慢无比,只要在配置文件中禁用DNS反向解析即可解决问题。
reverse_lookup_enable=NO
FTP服务器操作
- 启动FTP服务器,执行命令:/bin/systemctl start vsftpd.service
- 停止FTP服务器,执行命令:/bin/systemctl stop vsftpd.service
- 重启FTP服务器,执行命令:/bin/systemctl restart vsftpd.service
- 查看FTP服务器,执行命令:/bin/systemctl status vsftpd.service
- 开机自动重启FTP服务器,,执行命令:chkconfig vsftpd on
测试FTP服务器
- 安装FTP客户端,执行命令:yum -y install ftp。
- 创建一个测试文件,执行命令:touch /var/ftp/pub/test.txt。
- 使用我们前面新创建的用户连接虚拟机,执行命令:ftp 主机名。
我测试的IP是172.172.1.89,不清楚的可以ifconfig查询,输入账号密码。出现230 Login successful.则表示登录成功
4. 进入cd /var/ftp/pub/目录,执行命令:get test.txt。如下图则下载成功。
5. 下载的存放路径就是当前用户的家目录,可以进入进行查询,至此FTP服务搭建完毕。