1.什么是FTP协议
ftp的定义:ftp://##文件传输协议
-
FTP(File Transfer Protocol, 文件传输协议) 时TCP/IP协议组中的协议之一
-
FTP 协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端
-
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源
-
在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上
-
由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议
-
默认情况下FTP协议使用TCP端口中的20和21 这两个端口,其中20用来传输数据,21用来传输控制信息
-
但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关
-
如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定
-
同大多数Internet服务一样,FTP也是一个客户/服务器系统
-
用户通过一个客户机程序连接至在远程计算机上运行的服务器系统
-
依照FTP协议提供服务,经性文件传输的计算机就是FTP服务器
-
而连接FTP协议提供服务,遵循FTP协议与服务器传输文件的电脑就是FTP客户端
-
用户要来连上FTP服务器,就要用到FTP的客户端软件,通过lftp命令连接
2.实验环境
(1)打开ping虚拟机
并reset虚拟机,保证有一个全新的实验环境
(2)给ping 配置网络
- cd /etc/sysconfig/network-scripts/
- ls
- vim ifcfg
设置为静态ip,设置ip地址与子网掩码
重启网络
查看网络是否配置成功
查看是否可以ping通真机
(3)改主机名
- hoetnamectl set-hostname ftp_server.westos.com 其实是一个FTP服务器
(4)看yum仓库有没有
- cd /etc/yum.repos.d/
- ls
- 有的话直接用,没有的话配置本地yum源
(5)执行getenforce命令 - 如果是disabled则不用管
- 如果是Enforcing则需要用 vim /etc/sysconfig/selinux 改SELINUX=disabled
- 关闭内核加强型防火墙,编辑完需要reboot重启
可以看到修改成功了
3.使用FTP的原因
ftp在文件传输方面有很大的优势,企业中常用vsftpd
http:// ftp://
tftp, fastftp qftp vsftpd 均要了解
yum search ftp 找到可以安装ftp服务的软件包
软件安装包 | vsftpd |
---|---|
默认发布目录 | /var/ftp |
默认发布目录的子目录 | /var/ftp/pub/ |
协议接口 | 21/tcp |
服务配置文件 | /etc/vsftpd/vsftpd.conf |
报错解析:
500 | 文件系统权限过大 |
---|---|
530 | 用户认证失败 |
550 | 服务本身功能为未开放 |
553 | 本地文件系统权限过小 |
5.安装ftp服务,以及进行测试
步骤一:寻找安装ftp服务的安装包
步骤二:yum install lftp -y 安装vsftpd服务与lftp客户端
安装成功
步骤三:systemctl start vsftpd 开启vsftpd服务,systemclt enable vsftpd 设置开机启动
步骤四:rpm -ql vsftpd 看该服务的安装目录 /var/ftp /var/ftp/pub
步骤五:rpm -qc vsftpd 看该服务的配置文件/etc/vsftpd/vsftpd.conf
步骤六:在火墙里ftp服务
步骤七:验证
6.vsftpd服务的配置参数
(1)匿名用户的相关设定
匿名用户登录限制
- anonymous_enable=YES|NO
可以看到匿名用户可以访问ftp服务器
现将修改匿名用户权限
改为匿名用户不可访问
重启服务
我们可以看到匿名用户已经不能访问了
匿名用户上传
我们可以看到不能上传 - vim /etc/vsftpd/vsftpd.conf
- write_enable=YES
- anon_upload_enable=YES
- chgrp ftp /var/ftp/pub
- chmod 775 /var/ftp/pub
###因为默认是以ftp用户的身份访问ftp服务器,所以将ftp目录的所有组改为ftp以及赋予它较高的权限,这样匿名用户才可以进行上传
匿名用户家目录修改
- anon_root=/directory
重启服务
匿名用户上传文件默认权限修改
可看到权限是600
anon_umask=XXX
匿名用户建立目录
可以看到匿名用户不能建立目录 - anon_mkdir_write_enable=YES|NO
可以看到目录成功建立 - 匿名用户下载
- anno_world_readable_only=YES|NO
匿名用户删除
可以看到匿名用户并不能删除东西 - anon_other_write_enable=YES|NO
可以看到成功删除
匿名用户使用的用户身份修改 - chown_uploads=YES
- chown_username=student
最大上传速率
我们先划一个1.5G的文件,然后在没有限制速度的情况下,上传速度非常快平均83.2M/s,然后更改完配置文件后重新启动服务,发现匿名用户上传的速度变成了设置的102400k左右。
最大连接数
max_client=2 ##设置最大连接为2
由于更换主机,我们修改ip地址为172.25.254.115
本地用户设定
本地用户登录设定
student用户可以登陆且访问
在配置文件中,修改
重启服务
本地用户写权限限制
编辑配置文件
重启服务
本地用户家目录修改
local_root=/yty 重启服务
先在student用户的家目录下创建file{1…3},再创建一个新的/yty目录当作修改的家目录,然后创建file{1…10}
本地用户上传文件权限
local_umask=
可见我们上传的/etc/group的权限是600
限制本地用户浏览/目录
chroot_local_user=YES
chmod u-w /home/student
用户被锁定在家目录中不能cd切换到/目录下
本地用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
重启服务
建立两个新用户westos,lee,并给与密码
vim /etc/vsftpd/chroot_list 黑名单加入westos和student,表示westos和student不能登陆
测试:
student不能登陆
westos不能登陆
lee可以登陆
本地用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 重启服务
白名单加入westos和student,表示westos和student可以登陆,其他用户都不能登陆
student可以登陆
westos可以登陆
lee不能登陆
限制本地用户登陆(永久)
vim /etc/vsftpd/ftpusers ##用户黑名单
cd /etc/vsftpd/ 然后 vim ftpusers,加入student用户
用户临时黑名单
vim /etc/vsftpd/user_list
加入westos用户,表示westos用户不能访问ftp服务器
student用户和lee用户可以
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在文件中出现的用户才可以登陆ftp服务器
可见在名单中的westos用户可以登陆
而不在白名单的lee和student用户就不可以登陆ftp服务器
ftp虚拟用户的设定(创建虚拟帐号身份)
给ftp服务器创建虚拟帐号身份,这样更安全。
vim /etc/vsftpd/westosfile ##文件名称任意,创建一个虚拟帐号的名单,里面的帐号是不存在的
vim /etc/vsftpd/westosfile 文件名称任意 设定虚拟用户和登陆密码
db_load 加密命令
-T 转换
-t 建立
-f 指定文件
/etc/vsftpd/westosfile被加密文件
/etc/vsftpd/westosfile.db加密的文件
查看vsftpd.conf认证时用的是pam认证
在/etc/pam.d/下创建westos(文件名称任意)对应westosfile
account auth 帐号和密码
required 请求访问允许或拒绝
pam_userdb.so 验证程序
db=/etc/vsftpd/westosfile(.db) 在该文件里面验证
将pam_service_name的指向改为westos原本(vsftpd),使westos中的账户和密码生效,再加入guest_enable=YES 允许游客登陆
重启服务
然后分别用user1,user2,user3登陆均可以登陆ftp服务器
并且是已匿名用户的虚拟帐号,默认家目录在/var/ftp/
虚拟帐号家目录独立设定(使虚拟用户登陆进去不再使ftp用户的默认家目录)
mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p
chmod 775 /ftphome/user1/user1dir
chmod 775 /ftphome/user2/user2dir
- vim /etc/vsftpd/vsftpd.conf
重启服务:
验证,此时可以看到此时user1的家目录是他自己家目录
虚拟帐号独立配置(想让哪个用户干什么就干什么)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
重启服务
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1 ==在此文件中设定配置文件的参数,此文件的优先级最高
允许user1匿名上传
测试user2是否可以
也可以
之前的anon_upload_enable=YES没有变成NO
修改 vim /etc/vsftpd/vsftpd.conf
重启服务,此时user1可以上传,user2不可以