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

文件共享ftb

一:FTP服务概述

1、任务背景

某创业公司刚刚起步,随着业务量的增多,咨询和投诉的用户也越来越多,公司的客服部门由原来的2个增加到5个。客服部门平时需要处理大量的用户反馈,不管是邮件,还是QQ,还是电话,客服人员都会针对每一次的用户反馈做详细的记录,但是由于客观原因,客服人员没有成熟稳定的客户服务系统,所以希望运维部门能够协助搭建一个文件共享服务来管理这些文档,并且随时跟踪客户的反馈情况。

2、任务要求

  • 客服人员必须使用用户名密码(kefu/123)的方式登录服务器来下载相应文档

  • 不允许匿名用户访问

  • 客服部门的相关文档保存在指定的目录里/data/kefu local_root=/data/kefu

  • 客服用户使用用户kefu/123登录后就只能在默认的/data/kefu目录里活动

3、任务拆解

  • 搭建FTP服务

  • 根据需求修改配置文件

    • 不允许匿名用户访问

    • 指定kefu人员数据目录,并且只能在指定目录活动

二:FTP服务介绍

FTP(File Transfer Protocol)是一种应用非常广泛并且古老的一个互联网文件传输协议。

文件传输:文件上传与文件下载

 

 

  • 主要用于互联网中文件的双向传输(上传/下载)、文件共享

  • 跨平台Linux、Windows

  • FTP是C ==client==/S ==server==架构,拥有一个客户端和服务端,使用TCP协议作为底层传输协议,提供可靠的数据传输

  • FTP的默认端口21号(命令端口)20号(数据端口,主动模式下),默认被动模式下

  • FTP程序(软件)vsftpd

FTP软件名称 => vsftpd =>(very secure ftp daemon)

1、FTP服务的客户端工具

Linux:ftp(密码登录)、lftp(匿名登录)

Windows:FlashFXP(虚拟主机)、FileZilla ==IE、Chrome、Firefox 新版本的浏览器不支持==

lftp和ftp工具区别:

  • lftp:默认是以匿名用户访问

  • ftp:默认是以用户名/密码方式访问

  • lftp可以批量并且下载目录

2、FTP的两种运行模式(了解)

在FTP服务中,其一共拥有两种模式(主动模式+被动模式)

==参考点,FTP的服务器端。==

 如果是FTP服务器端主动连接客户端=>主动模式,如果是客户端主动连接FTP服务器端=>被动模式。

3、主动模式

 

cmd:命令端口(发送FTP请求)

data:数据端口(后期用于传输数据)

1.客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
2.服务端的21号命令端口响应客户端的随机命令端口
3.服务端的20号端口主动==>请求连接客户端的随机数据端口 ==> 经过客户端的防火墙
4.客户端的随机数据端口进行确认

4、被动模式

 

1.客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
2.服务端的21号命令端口响应客户端的随机命令端口
3.客户端主动连接服务端打开的大于1023的随机数据端口 ==> 需要开放端口的操作只需要设置在服务器上
4.服务端进行确认

FTP默认使用的就是被动模式!

比如服务端使用:1024~5000

防火墙设置一个规则1024~5000放行

FTP配置文件中MIN1024 MAX5000

三:搭建FTP服务(重要)

步骤概述:

  • 关闭防火墙和selinux

  • 配置yum源(mount /dev/sr0 /mnt)

  • 软件三部曲

  • 了解配置文件

  • 根据需求修改配置文件来完成服务的搭建

  • 启动服务,开机自启动

  • 测试验证

1、第一步:关闭防火墙与SELinux
systemctl stop firewalldsystemctl disable firewalld
​
setenforce 0
​
vim /etc/selinux/configSELINUX=disabled
2、第二步:配置YUM源
有网配置公网YUM源(阿里、清华、华为),没网就配置本地YUM源
mount /dev/sr0 /mntyum clean allyum makecache
3、第三步:安装vsftpd软件(FTP => vsftpd)
yum install vsftpd -y
4、第四步:启动ftp服务并添加到开机启动项中
systemctl start vsftpd
systemctl enable vsftpd
5、第五步:测试FTP是否安装成功
ifconfig ens33
​
inet 192.168.66.138  netmask 255.255.255.0  broadcast 192.168.66.255
find / -name pub -type d

 基于浏览器的访问(新浏览器不支持)

 

 基础cmd命令行访问

C:\Users\ccdj>ftp 192.168.66.138
连接到 192.168.66.138。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.66.138:(none)): anonymous
331 Please specify the password.
密码:230 Login successful.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Jun 09  2021 pub
226 Directory send OK.
ftp: 收到 64 字节,用时 0.00秒 64.00千字节/秒。

基于Windows资源管理器的访问

基于FlashFxp、FileZilla软件

基于ftp以及lftp命令进行连接(Linux与Linux之间的FTP文件传输)

6、需要单独安装

yum install ftp lftp -y
​
ftp 10.1.1.10
ftp 192.168.66.138
​
Connected to 192.168.66.138 (192.168.66.138).
220 (vsFTPd 3.0.2)
Name (192.168.66.138:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp内输入help可以查看指令帮助

四:FTP的配置文件详解(重要)

在Server服务器端,使用rpm -ql vsftpd

rpm -ql vsftpd
​
/usr/lib/systemd/system/vsftpd.service          启动脚本
/etc/vsftpd                                     配置文件的目录
/etc/vsftpd/ftpusers                            用户列表文件,黑名单
/etc/vsftpd/user_list                           用户列表文件,可黑可白(默认是黑名单)
/etc/vsftpd/vsftpd.conf                         配置文件(主配置文件)
/usr/sbin/vsftpd                                程序本身(二进制的命令)
/var/ftp                                        匿名用户的默认数据根目录
/var/ftp/pub                                    匿名用户的扩展数据目录

1、vsftpd配置文件详解:

  • anonymous_enable=NO

    • 作用:禁止匿名用户登录。

    • 说明:设置为 NO 时,FTP 服务器不允许匿名访问,所有用户必须使用有效的用户名和密码登录。

  • local_enable=YES

    • 作用:允许本地用户登录。

    • 说明:设置为 YES 时,系统上的本地用户可以使用 FTP 登录。

  • write_enable=YES

    • 作用:启用写操作。

    • 说明:设置为 YES 时,允许用户执行上传、删除、重命名等写操作。

  • local_umask=022

    • 作用:设置本地用户的文件权限掩码。

    • 说明:值为 022 表示上传的文件默认权限为 644(rw-r--r--),目录默认权限为 755(rwxr-xr-x)。

  • dirmessage_enable=YES

    • 作用:启用目录消息功能。

    • 说明:当用户进入某个目录时,会显示该目录下的 .message 文件内容。

  • connect_from_port_20=YES

    • 作用:启用从端口 20 进行数据连接。

    • 说明:设置为 YES 时,FTP 数据连接将使用标准端口 20。

  • chroot_local_user=YES

    • 作用:将本地用户限制在其主目录中。

    • 说明:设置为 YES 时,用户无法访问其主目录之外的文件。

  • allow_writeable_chroot=YES

    • 作用:允许 chroot 目录可写。

    • 说明:设置为 YES 时,即使用户的主目录是可写的,也不会触发安全限制。

  • chroot_list_enable=YES

    • 作用:启用 chroot 用户列表功能。

    • 说明:设置为 YES 时,可以通过指定的列表文件控制哪些用户被限制在主目录中。

  • chroot_list_file=/etc/vsftpd/chroot_list

    • 作用:指定 chroot 用户列表文件的位置。

    • 说明:该文件包含需要限制或不限制主目录的用户列表。

  • listen=NO

    • 作用:是否以独立模式运行 vsftpd。

    • 说明:设置为 NO 时,vsftpd 不会直接监听端口,而是依赖于 xinetd 或其他服务管理器。

  • local_root=/data/kefu

    • 作用:设置本地用户的根目录。

    • 说明:所有本地用户登录后,默认进入 /data/kefu 目录。

  • pam_service_name=vsftpd

    • 作用:指定 PAM(Pluggable Authentication Modules)服务名称。

    • 说明:用于定义 vsftpd 使用的 PAM 配置文件。

  • userlist_enable=YES

    • 作用:启用用户列表功能。

    • 说明:设置为 YES 时,可以通过用户列表文件控制哪些用户可以或不可以登录。

  • tcp_wrappers=YES

    • 作用:启用 TCP Wrappers 支持。

    • 说明:设置为 YES 时,vsftpd 会使用 /etc/hosts.allow/etc/hosts.deny 文件进行访问控制。

grep -v ^# /etc/vsftpd/vsftpd.conf
​
grep -v ^# /etc/vsftpd/vsftpd.conf >
/etc/vsftpd/vsftpd.conf

man 5 vsftpd.conf

五:FTP任务解决方案

1、任务背景

简单来说:根据我们所学的内容(FTP)搭建一个客户服务系统(主要涉及客服资料上传与下载)

1.客服人员必须使用用户名密码(kefu/123)的方式登录服务器来下载相应文档
2.不允许匿名用户访问
3.客服部门的相关文档保存在指定的目录里/data/kefu  ==> local_root=/data/kefu
4.客服用户使用用户kefu/123登录后就只能在默认的/data/kefu目录里活动

2、创建客服账号(Server)

useradd kefu
echo 123 | passwd --stdin kefu

3、不允许匿名用户访问

vim /etc/vsftpd/vsftpd.conf
​
anonymous_enable=NO 

配置修改完毕后,一定要重启vsftpd服务

systemctl restart vsftpd

指定账号访问的目录

mkdir /data/kefu -p
​
vim /etc/vsftpd/vsftpd.conf
local_root=/data/kefu

4、限定目录下活动

禁kefu用户只能在/data/kefu目录下

vim /etc/vsftpd/vsftpd.conf
​
chroot_local_user=YES

配置修改完毕后,一定要重启vsftpd服务

systemctl restart vsftpd

5、无法上传

之所以无法上传,主要原因在于kefu这个账号对于/data/kefu文件夹没有w写权限

#setfacl -R -m u:kefu:rwx /data/kefu
systemctl restart vsftpd

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

allow_writeable_chroot=YES

local_root=/data/kefu

chroot_local_user=YES

6、禁锢目录补充

chroot_local_user=YES 禁锢所有用户

需求:我们能不能给一小部分用户开通非禁权限。

vim /etc/vsftpd/vsftpd.confchroot_list_enable=YES                      
开启用户列表文件chroot_list_file=/etc/vsftpd/chroot_list   
指定用户列表文件​echo kefu >>/etc/vsftpd/chroot_list                 代表客服这个账号不会被禁在指定目录​systemctl restart vsftpd

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

相关文章:

  • 多平台屏幕江湖生存指南
  • MongoDB聚合查询:从入门到精通
  • 现代健康生活养生指南
  • nodejs 文件的复制
  • 【人工智能】微调的艺术:将大模型塑造成你的专属智能助手
  • 大模型技术演进与应用场景深度解析
  • Type-C连接器:数字时代接口革命的终极答案
  • C语言中字符串函数的详细讲解
  • 2025年数字孪生技术最新应用案例:跨领域实践与技术趋势
  • OpenAI新发布Codex的全面解析
  • C语言输入函数对比解析
  • GPIO点亮LED
  • 使用UniApi调用百度地图API的需要注意的地方
  • 基于 jQuery 的轻量级在线画册、电子书、产品目录插件及使用
  • 粒子群算法(PSO算法)
  • RAGFlow Arbitrary Account Takeover Vulnerability
  • 广东省省考备考(第十三天5.17)—言语:中心理解题(听课后强化练习)
  • 3、ubantu系统 | 通过vscode远程安装并配置anaconda
  • C++中析构函数不设为virtual导致内存泄漏示例
  • 电子电路:电位器和可变电阻是同一个东西吗?
  • 2025年【道路运输企业安全生产管理人员】考试题库及道路运输企业安全生产管理人员考试内容
  • 获取淘宝店铺所有商品信息接口数据指南
  • JavaScript splice() 方法
  • 【C++】string的使用【上】
  • Linux面试题集合(6)
  • PIC16F18877 ADC 代码
  • Python绘制南丁格尔玫瑰图:从入门到实战
  • 专题四:综合练习(组合总和的暴搜dfs)
  • printf耗时高的原因
  • UE 材质基础 第一天