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.搭建ftp服务
(1)配置本地yum源
(2)下载ftp服务器与ftp客户端测试软件
(3)启动ftp服务
(4)设置火墙
firewall-config
(5)查看火墙
查看火墙状态
firewall-cmd --list-all
(6)验证ftp服务是否搭建成功
2.ftp服务基本信息:
- 查看vsftpd 涉及的文件
/var/ftp | 默认发布目录 |
---|---|
/etc/vsftpd/vsftpd.conf | 主配置文件 |
/etc/vsftpd | 主配置目录 |
- 数据访问端口
主动访问 | 数据传输端口为20,访问端口为21 |
---|---|
被动访问 | 随即开启大于1024端口,访问端口为21 |
- 报错id的解析
500 | 文件系统权限过大 |
---|---|
530 | 用户认证失败 |
550 | 服务本身功能未开放 |
553 | 表示权力过小或者所访问的服务器的文件系统有问题 |
3.查看主配置文件
vim /etc/vsftpd/vsftpd.conf
(1)匿名用户
- 匿名用户登陆限制
anonymous_enable=YES|NO
注:可以列出,表示登陆成功
- 匿名用户上传
write_enable=YES
anon_upload_enable=YES|NO
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
- 匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
- 匿名用户建立目录
anon_mkdir_enable=YES
- 匿名用户删除
anon_other_write_enable=YES|NO
- 匿名用户修改文件权限
anon_uamsk=022
- 匿名用户家目录修改
anon_root=/westos
- 匿名用户最大上传速率
anon_max_rate=102400
- 匿名用户最大连接数
max_clients=2
(2)本地用户
- 本地用户登陆限制
local_enable=YES|NO
- 本地用户可写
write_enable=YES|NO
- 本地用户文件权限
local_umak=022
- 本地用户家目录
local_root=/westods
- 所有用户被锁定到自己的家目录中
chroot_local_user=YES
-黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chmod u-w /home/*
-白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
-永久黑名单
/etc/vsftpd/ftpusers
-临时黑名单
/etc/vsftpd/ftpusers
-临时黑名单变为白名单
userlist_deny=NO
4.ftp虚拟用户的设定(创建虚拟帐号身份)
注:该虚拟用户只有登陆ftp的权力。
(1)认证列表(pam)
pam认证:
- 账户与密码:
vim /etc/vsftpd/vuer
- 对认证列表进行将将加密
db_load -T -t hash -f vuser vuser.db
- 认证文件规则
书写规范:
vim /etc/pam.d/vuer_pam ##文件名称任意(设置转换桥梁)
account required pam_userdb.so db=/etc/vsftpd/vuer
auth required pam_userdb.so db=/etc/vsftpd/vuer
帐号和密码 请求访问允许 验证程序 在该文件里面验证
或拒绝
- 将策略与ftp关联
- 验证虚拟用户认证是否成功
5.ftp虚拟用户的家目录设置与授权
- 家目录设置
(1)建立虚拟用户各自的家目录
mkdir /var/ftpdir/user{1..3}/pub -p
(2)固定各自虚拟用户的家目录(
U
S
E
R
,
适
用
于
s
h
e
l
l
)
必
须
引
用
s
h
e
l
l
的
环
境
变
量
(
u
s
e
r
s
u
b
t
o
k
e
n
=
USER,适用于shell) 必须引用shell的环境变量(user_sub_token=
USER,适用于shell)必须引用shell的环境变量(usersubtoken=USER)
(3)上传文件(更改权限)【所有用户可以上传】
chgrp ftp /var/ftpdir/ -R
chmod 775 /var/ftpdir/user{1..3}/pub
- 授权
特定用户可以上传(独立用户配置文件)
man 5 vsftpd.conf
(1)主配置文件上传功能关闭
(2)在主配置文件上开启子配置文件
user_config_dir=/var/vsftpd/user_config【自定义文件名称】
(3)进入子配置文件,开放指定用户的上传功能
vim /var/vsftpd/user_config/user2
anon_upload_enable=YES
(4)验证