Lesson17 Linux系统中的 FTP服务
文章目录
1. ftp的基础知识
FTP(File Transfer Protocol,文件传输协议) 是 INTERNET上仍常使用的最老的网络协议之一,也是TCP/IP 协议组中的协议之一它为系统提供了通过网络与远程服务器进行传输的简单方法
在 RED HAT ENTREPRISE LINUX 6中 ,FTP服务器包的名称为VSFTPD,它代表Very Secure File TransferProtocol Damon服务器名称也叫做 vsftpd
默认配置文件让Anonymous用户只能下载位于chroot目录中的内容。/var/ftp/这意味着远程FTP客户端能以用户anonymous或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上
由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息
是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定
依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP服务器
而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端
用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通过lftp命令连接
2. ftp协议提供的软件
在rhel7.0中:vsftpd
3. 部署ftp服务
实验准备:
在部署ftp服务之前,首先给自己的server虚拟机配置一个静态ip为172.25.254.114
ip addr show br0
#查看ip是否配置成功
hostnamectl set-hostname ftpserver
#更改server虚拟机名称为ftpserver
配置好对应版本的yum源
selinux设置为disabled模式getenforce
#查看selinux的状态
这里查看状态时如果是disabled就可以,如果是enforceing则要vim /etc/sysconfig/selinux`更改状态为disabled,更改完毕之后需要reboot才能生效
4. ftp服务的基本信息
4.1 基本信息
ftp服务名称(软件安装包):vsftpd
ftp默认发布目录: /var/ftp
默认发布目录的子目录: /var/ftp/pub/
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
4.2 报错id解析
错误id | 说明 |
---|---|
500 | 文件系统权限过大 |
530 | 用户认证失败 |
550 | 服务本身功能未开启 |
553 | 本地文件系统权限过小 |
5. ftp服务的安装
ftp服务的安装,实际上就是搭建一个ftp服务器,lftp作为客户端连接ftp服务器,lftp也需要单独安装
yum search ftp
#寻找安装ftp服务的软件包
yum install vsftpd -y
#安装vsftpd服务
可以看到,vsftpd软件已成功安装
yum install lftpd -y
#安装lftpd服务
systemctl start vsftpd
#开启vsftpd服务
systemctl enable vsftpd
#设置开机启动
firewall-cmd --list-all
#查看火墙里是否添加了ftp服务
firewall-cmd --permanent --add-service=ftp
#在火墙里面永久添加ftp服务
firewall-cmd --reload
#重新加载使其生效
firewall-cmd --list-all
#查看火墙里里已经添加了ftp服务
lftp 172.25.254.114
连接成功后ls 查看,测试ftp服务器是否搭建成功
注:1.只要不是指定用户(使用lftp 172.25.254.114 -u 用户名)的方式登录的用户都属于匿名用户,匿名用户默认以ftp的身份登录
2.在配置文件修改任何配置参数,wq退出保存之后都要重启服务才能生效,命令如下:
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
6. ftp配置参数的修改
6.1 匿名用户登陆限制
anonymous_enable=YES
#允许匿名用户登录ftp服务器,默认为YES
可以看到此时匿名用户可以登陆ftp服务器
anonymous_enable=NO
#不允许匿名用户登录ftp服务器
此时可以看到,匿名用户无法登陆,一直处于读秒连接状态
6.2 匿名用户上传
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
#匿名用户默认是以ftp用户身份访问ftp服务器的,所以将ftp目录的所有组修改为ftp,并且赋予较大的权限,匿名用户才能上传
chmod 775 /var/ftp/pub
6.2 匿名用户家目录的修改
anon_root=/westos
6.3 匿名用户上传文件默认权限修改
anon_umask=xxx
6.4 匿名用户建立目录
anon_mkdir_write_enable=YES
6.5 匿名用户下载
anon_world_readable_only=YES|NO #NO表示匿名用户可以下载
6.6 匿名用户删除
anon_other_write_enable=YES|NO
6.7 匿名用户用户身份修改
chown_uploads=YES
chown_username=student
6.8 最大上传速率
anon_max_rate=102400
#最大上传速率
6.9 最大链接数
max_clients=2
#能够登陆此服务器的最大数量为2
当修改此参数为2时,则链接到该FTP服务器的客户端最多为2个,第三个无法连接
7. 本地用户设定
7.1 本地用户登录权限设定
local_enable=YES
#允许本地用户登录
local_enable=NO
#不允许本地用户登录
可以看到,此时不允许本地用户登陆,当匿名用户登陆的参数设为YES,而本地用户登陆的参数设为NO,则会出现上图的报错
7.2 本地用户写权限限制
write_enable=YES|NO #
#本地用户写权限限制
7.3 本地用户家目录修改
local_root=/dir
7.4 本地用户上传文件权限限制
local_umask=xxx
7.5 限制本地用户浏览
chroot_local_user=YES
chmod u-w /home/*
7.6 本地用户黑名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
7.7 本地用户白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim chroot_list
7.8 限制本地用户登陆
vim /etc/vsftpd/ftpusers
#用户永久黑名单
vim /etc/vsftpd/user_list
#用户临时黑名单
7.9 用户白名单
userlist_deny=NO
/etc/vsftpd/user_list
#只有白名单中出现的用户可以登陆ftp
8. ftp虚拟用户的设定
为ftp用户创建虚拟账号身份,避免用户以本地用户的身份登陆ftp服务器。避免了权利过大的问题,提高了安全性
vim /etc/vsftpd/westosfile
#文件名称任意,设定虚拟机的登录用户名和密码这个虚拟账号实际上不存在
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
db_load | -T | -t | hash | -f | /etc/vsftpd/westosfile | /etc/vsftpd/westosfile.db |
---|---|---|---|---|---|---|
加密命令 | 转换 | 建立 | 加密方式 | 文件 | 被加密文件 | 加密过的文件 |
vim /etc/pam.d/westos
#文件名称任意(设置转换桥梁)
account(绿色) | required (紫色) | pam_userdb.so(红色) | db=/etc/vsftpd/westosfile(黑色) |
---|---|---|---|
auth(绿色) | required (紫色) | pam_userdb.so(红色) | db=/etc/vsftpd/westosfile(黑色) |
帐号和密码 | 请求访问允许或者拒绝 | 验证程序 | 在该文件里面验证 |
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
#查看vsftpd.conf文件,认证的时候使用pam认
证,将指向改为westos文件,使westos文件中的账号和密码生效
guest_enable=YES
#允许游客登录
重启vsftp服务,可以看到,lftp 172.25.254.114 -u user1/user2/user3 均可以访问服务器,此时以匿名用户的身份登录,默认的家目录在/var/ftp/
9. ftp虚拟帐号身份指定
guest_username=ftp
#默认使用虚拟用户时,登录后在pub目录,要想改变此参数,修改此参数,修改后登录到westos家目录
chmod u-w /home/westos
#给虚拟用户去掉写权限
10. ftp虚拟帐号家目录的独立设定(虚拟用户登陆后不再是ftp用户的默认家目录)
虚拟用户登陆不再处在以ftp用户的身份登陆默认的目录下
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
mkdir /ftpuserhome/user1/user1dir -p
mkdir /ftpuserhome/user2/user2dir -p
9. ftp虚拟帐号配置独立(指定某个用户完成指定任务)
chgrp ftp /ftpuserhome -R
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1
此文件的优先级最高
chmod 775 /ftpuserhome/user1/user1dir
chmod 755 /ftpuserhome/user1
chmod 775 /ftpuserhome/user2/user2dir
chmod 755 /ftpuserhome/user2
此时user1用户可以上传文件,user2不能上传文件,当给user2配置后,则user2用户也可以完成上传文件的操作