17. Linux系统的ftp服务

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端口中的 2021这两个端口,其中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-thash-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用户也可以完成上传文件的操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值