文件共享服务FTP介绍
FTP(File Transfet Protocol):文件传输协议
FTP是一种在互联网中基于TCP协议端到端的数据传输协议
基于C/S架构,默认使用20、21号端口
端口20(数据端口)用于数据传输
端口21(命令端口)用于接收客户端发出的相关FTP命令
FTP工作模式
主动模式:FTP客户端从本机的非特殊端口(>1023)连接FTP服务器的命令端口21,服务端通过本地的20号端口主动向客户端的随机端口发起连接请求,开始传输数据
被动模式:FTP客户端通过向FTP服务器发送PASV命令进入被动模式,FTP服务器会另开一个随机端口,客户端主动连接到随机端口后,开始传输数据
可以实现ftp功能的软件:
- WU-ftpd:
- proftpd:专业的FTP软件
- pureftp:纯粹的FTP软件
- vsftpd:非常安全的ftp软件
- ServU:windows里的一款FTP软件
客户端访问ftp服务器工具:
- ftp
- lftp、lftpget
- wget
- curl
- FileZilla:windows客户端工具,可从软件商店直接下载
- 浏览器
vsftpd介绍
- vsftpd(very secure ftp daemon)非常安全的FTP守护进程
- 是一款运行在Linux操作系统上开源且免费FTP服务程序
- 不仅完全开源而且免费,还为我们提供了一个快速的、稳定并且安全的FTP服务
vsftpd用户模式
- 本地用户
- 虚拟用户
- 匿名用户:默认的客户端访问模式
vsftpd服务相关参数
- /var/ftp #匿名用户共享目录
- /etc/vsftpd #配置文件所在目录
- /etc/vsftpd/vsftpd.conf #主配置文件
- /usr/sbin/vsftpd #主程序文件
- /etc/vsftpd/ftpusers #黑名单
- /etc/vsftpd/user_list #控制名单(配置文件控制白名单与黑名单)
- /var/log/xferlog #日志目录
vsftpd匿名用户模式
shell
#修改FTP服务端主机名
[root@ftp-server ~]# hostnamectl set-hostname ftp-server
#搭建本地yum仓库
[root@ftp-server ~]# mkdir /mnt/centos
[root@ftp-server ~]# mount /dev/cdrom /mnt/centos
[root@ftp-server ~]# rm -rf /etc/yum.repos.d/*
[root@ftp-server ~]# vim /etc/yum.repos.d/local.repo
[centos_file]
name=centos7
baseurl=file:///mnt/centos
enabled=1
gpgcheck=0
#关闭防火墙
[root@ftp-server ~]# systemctl stop firewalld
[root@ftp-server ~]# systemctl disable firewalld
#临时关闭SELinux
[root@ftp-server ~]# setenforce 0
#修改配置文件永久关闭SELinux
[root@ftp-server ~]# vim /etc/selinux/config
...
SELINUX=disabled
#安装软件
[root@ftp-server ~]# yum -y install vsftpd
#启动服务
[root@ftp-server ~]# systemctl start vsftpd
#查看服务运行状态
[root@ftp-server ~]# systemctl status vsftpd
#客户端下载连接工具
[root@client ~]# yum -y install ftp lftp
#客户端访问FTP服务端
[root@client ~]# ftp 192.168.0.26
#匿名用户权限介绍
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
...
12 anonymous_enable=YES #是否允许匿名用户访问,yes允许,no不允许
29 #anon_upload_enable=YES #是否允许匿名用户上传,yes允许,no不允许
33 #anon_mkdir_write_enable=YES #是否允许匿名用户创建目录,yes允许,no不允许
...
anon_other_write_enable=yes #是否允许匿名用户写权限,yes允许,no不允许(手动添加)
vsftpd本地用户模式
shell
#创建本地用户
[root@localhost ~]# useradd ftpuser
[root@localhost ~]# passwd ftpuser
#修改主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
...
12 anonymous_enable=NO #关闭匿名用户访问
16 local_enable=YES #是否允许本地用户访问,yes允许,no不允许
19 write_enable=YES #是否允许本地用户有写权限,yes允许,no不允许
23 local_umask=022 #本地用户上传文件默认权限为755
37 dirmessage_enable=YES #当用户第一次进入新目录时显示消息(了解)
40 xferlog_enable=YES #启动xferlog日志记录,该文件记录传输数据
53 #xferlog_file=/var/log/xferlog #日志文件位置,需删除注释
43 connect_from_port_20=YES #启用数据传输端口
49 #chown_username=whoever #改变上传文件的属主与属组
60 #idle_session_timeout=600 #客户端连接超时时间
63 #data_connection_timeout=120 #数据连接超时时间
101 chroot_local_user=YES #是否允许本地用户切换目录,yes不允许,no允许
115 listen=NO #是否开启监听IPV4的连接,默认没开启,改为yes
126 pam_service_name=vsftpd #启用pam认证的文件名称,路径为/etc/pam.d/vsftpd
127 userlist_enable=YES #是否启用控制名单文件,yes启用,no不启用,文件为/etc/vsftpd/user_list,如果启用控制名单功能,需要指定该文件为黑名单|白名单
128 userlist_deny=no #yes拒绝user_list文件中用户登录ftp服务器(黑名单),no允许登录(白名单)
max_clients= #限制最大并发连接数量