目录
一、FTP服务
1、FTP协议介绍
FTP即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。
使用端口TCP的20、21端口:
20端口:用于建立数据连接,传输文件数据。
21端口:用于建立控制连接。
缺点:不能主动同步数据需要手动同步。
2、FTP服务原理
FTP服务分为2种类型,主动连接和被动连接。
主动连接原理:
被动连接原理:
3、配置文件路径
服务配置文件:/etc/vsftpd/vsftpd.conf
黑名单配置文件:/etc/vsftpd/user_list
匿名用户FTP服务的默认根目录:/var/ftp
本地用户FTP服务的默认根目录:/home/账户同名文件
错误日志路径:/var/log/messages
二、FTP服务器搭建
1、搭建环境
centos 7.4 系统虚拟机一台,配置关闭防火墙和selinux。
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux
2、检测环境并安装ftp服务
rpa -q vsftpd #检查是否安装ftp服务
yum -y install vsftpd #安装ftp服务
3、备份配置文件并添加用户
useradd lisi #添加lisi用户
useradd liwu #添加liwu用户
echo '123456' |passwd --stdin lisi #设置账户lisi的密码为123456
echo '123456' |passwd --stdin liwu #设置账户lisi的密码为123456
cd /etc/vsftpd/ #进入ftp配置文件目录
cp vsftpd.conf vsftpd.conf.bak #备份配置文件
4、ftp配置文件解析
anonymous_enable=YES
#允许匿名用户访问(账户名为ftp,不需要密码),默认允许建议关闭
local_enable=YES
#允许本地用户访问(本地可登录账户)
write_enable=YES
#开放服务器的写权限,上传文件到服务器必须开启,默认开启
local_umask=022
#本地用户文件权限反掩码,文件权限777-umask,文件权限666-umask
dirmessage_enable=YES
#开启日志消息,默认开启
xferlog_enable=YES
#开启上传现在日志,默认开启
connect_from_port_20=YES
#确保端口数据传输来自20端口,默认开启
xferlog_std_format=YES
#日志文件设置为标准ftpd xferlog格式,默认开启,日志位置/var/log/xferlog
chroot_local_user=YES
#将用户访问权限限制在用户自己的根目录下,默认关闭。
allow_writeable_chroot=YES
#允许被限制用户对自己根目录进行写操作
anon_root=/var
#设置本地用户的默认根目录为/var,注意需要此目录给其他用户读写权限才可上传下载
userlist_enable=YES
#开启user_list用户列表,文件位置/etc/vsftpd/user_list,默认关闭
userlist_deny=YES
#若user_list是开启状态userlist_deny=YES是黑名单文件中的用户不能登录,默认关闭
#若user_list是开启状态,userlist_deny=NO则只允许user_list中的用户登录
5、配置本地用户访问ftp
6、开启ftp服务
systemctl start vsftpd #开启vsftpd服务
systemctl status vsftpd #查看vsftpd服务状态
7、验证服务
①将/mnt目录其他用户权限配置读写权限
chmod 766 -R /mnt #修改/mnt目录用户其他权限具有读写权限
②将liwu用户配置到黑名单中user_list文件中,文件位置/etc/vsftpd/user_list
③在/mnt下创建一个a.txt文件内容为123
④打开自己的windows计算机cmd窗口输入ftp +服务器ip 进行账户密码登录
⑤下载到本地的文件路径在C:\Users\下
⑥将/mnt下的a.txt删除然后将本地的a.txt上传上去。
⑦、使用黑名单用户liwu尝试登录
8、排错思路
①首先查看本机防火墙以及ftp防火墙和selinux是否关闭
②检查配置文件内容是否有错误
③查看服务状态是否正常,不正常查看/var/log/messages日志排错
④匿名用户的默认根目录不能有读权限否则连接不上ftp服务器
⑤可以get但是不能put查看根目录的权限和属主情况