当前位置: 首页 > ops >正文

23.Linux : ftp服务及配置详解

Linux : ftp服务及配置详解

FTP 基本概念
  • 定义:文件传输协议(File Transfer Protocol),采用 C/S 模式工作。
  • 端口
    • 控制端口:21
    • 数据端口:20
FTP 工作原理
模式工作流程连接发起方
主动模式 (Standard)1. 客户端从随机高端口 N 发送 PORT 命令到服务端 21 端口 2. PORT 命令包含客户端数据端口 N+1 3. 服务端用 20 端口连接客户端的 N+1 端口,如果传输数据则需要重新与客户端建立新的连接传输数据服务端 → 客户端
被动模式 (Passive)1. 客户端发送 PASV 命令到服务端 21 端口 2. 服务端随机开启高端口 P,并通过 PORT 命令告知客户端 3. 客户端用 N+1 端口连接服务端的 P 端口,被动模式不需要重新与服务器建立新连接客户端 → 服务端

不同点:
传输数据的连接方式不同:主动模式是服务端向客户端发起数据连接,
而被动模式是客户端向服务端发起数据连接。

相同点:
都是使用21号控制端口进行用户验证和管理。

FTP服务部署

关闭防火墙和selinux

1.安装vsftpd软件包

yum install vsftpd -y
rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64 #查看是否安装

2.vsftpd的主配置文件

vim /etc/vsftpd/vsftpd.confanonymous_enable=YES  #是否允许匿名用户登录
local_enable=YES 	#允许本地用户登录ftp
write_enable=YES	#ftp用户是否有写入权限
local_umask=022		#创建文件的umask值
anon_upload_enable=YES	#是否允许匿名用户上传文件
anon_mkdir_write_enable=YES  #是否允许匿名用户创建目录
anon_other_write_enable=YES	 #是否允许匿名用户能够删除或者重命名文件,目录
xferlog_enable=YES      #控制文件在传输过程中是否被日志记录
connect_from_port_20=YES	#使用20端口传输
chown_uploads=YES       #匿名用户上传文件的所有者为FTP
chown_username=whoever  #whoever修改为ftp用户,匿名用户上传文件的所有者将变成该FTP用户。
xferlog_file=/var/log/xferlog #设置传输文件日志的位置
idle_session_timeout=600   #超过600s空闲自动断开连接
data_connection_timeout=120   #控制数据连接建立后120秒内无交互时,自动断开连接。
deny_email_enable=YES   #禁止下载文件到邮箱
chroot_local_user=YES   #ftp用户是否能够离开自己的家目录,yes表示禁止ftp用户离开自己的家目录
chroot_list_enable=YES  #列表中的ftp用户能否离开家目录,通常与下条命令配合使用
chroot_list_file=/etc/vsftpd/chroot_list #ftp的用户列表如果想要单个ftp用户能够访问其他目录,其他所有ftp用户只能在自己的家目录,则开启上面三条命令,并且在ftp用户列表中写上能够访问其他目录的ftp用户,如果chroot_local_user=YES和chroot_list_enable=YES都是yes,则只有用户列表中的用户能够访问其他目录;如果chroot_local_user=YES,chroot_list_enable=NO,则所有用户都不能离开自己的家目录;
如果chroot_local_user=NO,chroot_list_enable=YES,则只有用户列表中的用户不允许访问其他目录,其他用户都能够访问其他目录

方法2:

[root@xieyuhui vsftpd]# ls
chroot_list  ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

查看/etc/vsftpd/目录下的文件,ftpusers和user-list是ftp用户黑名单,默认禁止列表里的这些用户访问ftp,如果想要个别用户能够访问ftp,需要在user-list中写下这个用户,ftpusers中不写这个用户,然后在在vsftpd.conf配置文件中写入userlist_deny=NO,拒绝访问的优先级>允许访问的优先级,所以原来的用户依旧不能访问ftp,而新用户因为不在ftpusers里面,所以能够访问ftp服务

练习

在FTP服务器创建3个用户分别为ftpuser1 ,ftpuser2,ftpuser3,密码设置为redhat

在客户端安装lftp软件包

在这里插入图片描述

1.设置允许匿名用户访问FTP服务器(本次使用centos7版本,默认允许匿名用户访问ftp服务器,因此不做更改)

2.设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下进行文件上传

首先需要让/var/ftp/pub的其他用户有对此目录的写入权限,但如果直接给其他用户权限就太大了,我们可以直接设置ftp用户有对此目录的读写权限

setfacl -m u:ftp:rwx /var/ftp/pub/

修改配置文件

vim  /etc/vsftpd/vsftpd.conf
write_enable=YES  	#写入权限
anon_upload_enable=YES	#匿名用户上传文件的权限

重启服务

systemctl restart vsftpd

在这里插入图片描述

匿名用户成功上传文件

3,设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下创建目录

编辑vsftpd配置文件

vim /etc/vsftpd/vsftpd.confanon_mkdir_write_enable=YES  #允许匿名用户创建目录

重启服务

在这里插入图片描述

成功创建目录(不能创建文件)

4.设置允许匿名用户访问FTP服务器时能够对/var/ftp/pub目录中的文件或目录进行重命名或删除操作

编辑vsftpd配置文件

vim /etc/vsftpd/vsftpd.confanon_other_write_enable=YES  #允许匿名用户进行重命名或删除

重启服务

在这里插入图片描述

在这里插入图片描述

5.设置允许FTP用户访问FTP服务器(默认允许访问,因此不做配置)

6.设置FTP用户访问FTP服务器时,将部分FTP用户访问的目录限制在自己的主目录中,其他FTP用户仍然可以访问其他目录

将ftpuser1和ftpuser2限制,ftpuser3可以访问其他目录

方法1:

编辑ftp用户列表,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了
如果检查发现还有写权限,就会报该错误。

cd /etc/vsftpd/
vim chroot_listftpuser1ftpuser2  #一行一个用户

编辑vsftpd配置文件

vim vsftpd.confchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listallow_writeable_chroot=YES #列表中的用户不允许访问其他目录

重启服务

在这里插入图片描述

在这里插入图片描述

方法2:

在ftpusers里面写上ftpuser1和ftpuser2,在user-list里面写上ftpuser3,然后在配置文件里面加上userlist_deny=NO

在这里插入图片描述

在这里插入图片描述

http://www.xdnf.cn/news/17742.html

相关文章:

  • C语言指针使用
  • Python网络爬虫(二) - 解析静态网页
  • 【ai写代码】lua-判断表是否被修改
  • 分布式事务、锁、链路追踪
  • 地测管理部绩效考核关键指标与地质数据分析
  • 嵌入式 - Linux软件编程:进程
  • C01:内存操作函数
  • Origin绘制正态分布直方图+累积概率图|科研论文图表教程(附数据格式模板)
  • 可信搜索中的多重签名
  • mysql——count(*)、count(1)和count(字段)谁更快?有什么区别?
  • QLab Pro for Mac —— 专业现场音频与多媒体控制软件
  • Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
  • 【代码随想录day 20】 力扣 669. 修剪二叉搜索树
  • 【CLR via C#(第3版)阅读笔记】类型基础
  • PostgreSQL——视图
  • 嵌入式C/C++面试大全
  • Gradle(四)Maven 项目迁移 Gradle 项目实践
  • spring mvc HttpMessageConverter 消息转换器
  • 【KALI】第一篇 安装Kali Linux虚拟机之详细操作步骤讲解
  • CNN - 卷积层
  • 利用 Java 爬虫按图搜索 1688 商品(拍立淘)实战指南
  • 高效TypeScript开发:VSCode终极配置指南
  • Varjo XR虚拟现实军用车辆驾驶与操作培训
  • 【MATLAB代码】滑动窗口均值滤波、中值滤波、最小值/最大值滤波对比。订阅专栏后可查看完整代码
  • OpenCV中对图像进行平滑处理的4种方式
  • 《多级缓存架构设计与实现全解析》
  • 【跨越 6G 安全、防御与智能协作:从APT检测到多模态通信再到AI代理语言革命】
  • 机器视觉的磁芯定位贴合应用
  • GraphRAG查询(Query)流程实现原理分析
  • Java+Vue构建的MES信息管理系统,含完整源码,功能涵盖生产跟踪、质量管控等,助力企业实现精细化、智能化生产管理