网络文件共享ftp

一,存储类型

(一)三种存储类型介绍

  • 直连式存储:Direct-Attached Storage,简称DAS

直连:硬盘加服务器

  • 存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理)

  • 网络附加存储:Network-Attached Storage,简称NAS(存储和管理空间都在远程)

理解为百度云盘 只能下载存储,不能管理文件系统

(二)三种存储类型对比

DASNASSAN
传输类型SCSI  ,  FCIPIP,FC,SAS
数据类型数据块文件数据块
典型应用任何文件服务器数据库应用
优点磁盘与服务器分离,便于统一管理不占用应用服务器资源广泛支持损作系统扩展较容易即插即用,安装简单方便高扩展性高可用性
数据集中,易管理
缺点连接距离短,数据分散,共享困难,存储间利用率不高,扩展性有限不适合存储量大的块级应用数据备份及恢复占用网络带宽相比NAS成本较高,安装和升级比NAS复杂

(三)三种存储类型应用场景

  • DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业

  • NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低

  • SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂

本次介绍的ftp  nfs 均为NAS存储类型

二,FTP 文件传输协议

(一)FTP工作原理介绍

文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构

数据传输格式:二进制(默认)和文本

双通道协议:命令和数据连接    21 命令端口(权限,认证)       20数据端口(真实传数据)

(二)FTP 模式

两种模式:都是从服务器角度

1,主动模式:

 服务端主动开启 tcp/20端口 去传输数据给客户端,客户端 端口随机

2,被动模式:

被动模式:服务器会开启一个随机端口,被动等待客户端来连接。

(三)服务端,客户端软件

1,服务端软件 vsftpd

2,客户端软件 ftp

(四)vsftp相关配置文件位置

1,用户认证配置文件:/etc/pam.d/vsftpd

2,配置文件:/etc/vsftpd/vsftpd.conf

3,可执行程序:  /usr/sbin/vsftpd

4,service 文件:    /usr/lib/systemd/system/vsftpd.service

5,服务机放共享文件的地方: /var/ftp/pub/

(五)用户和其共享目录

1,用户认证

  • 匿名用户:ftp,anonymous,对应Linux用户ftp root

  • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow

  • 虚拟用户:特定服务的专用用户,独立的用户/密码文件,

虚拟用户指专门给ftp 用的用户

2,用户和其共享目录

- 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp

就是匿名用户连接成功后,在的位置就是/var/ftp,这个位置相当于匿名用户的  /


- 系统用户共享文件位置:用户家目录

就是匿名用户连接成功后,在的位置就是/home/lisi


- 虚拟用户共享文件位置:为其映射的系统用户的家目录

注意!匿名用户登服务机后,/ 不是真正的根        /  是   /var/ftp

(六)ftp 基础操作

1,ftp 连接步骤

1.1  服务机开启vsftpd

1.2

2, ftp常用命令

2.1 help

可用help 查看

2.2 ls

#可以使用 ls  查看文件列表   查看的是服务器上的列表

2.3passive  

可以人为指定被动主动

 
2.4  get 

#下载文件,  后可以  使用  ss  -nt   看到又打开一个通道

注意:默认下载到客户端当前目录,所以在ftp前先去到一个合适的目录位置

2.5 cd

切换目录

2.6 put

上传

3,ftp 退出

quit

4,!在本地使用命令

命令前加!

(七)windos 的ftp 软件

1,filezila

直接输入ip  就可以了

2,用windos  自带的cmd 命令

3,在计算机搜索栏  直接敲ftp://

(八)vsftpd服务常见配置

1,修改默认命令端口

(一般不会改,这个ftp 基本上只在内网使用,外网需要防火墙,而防火墙需要基于端口 ftp 端口号随机)

随便一行插入

注意!  指定端口号  直接输入端口号即可

2,匿名用户需要输入密码

默认是    匿名不要输入密码

no_anon_password=YES 匿名用户略过口令检查,就是需要输入密码

anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名

3,主动模式端口

connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口

4,被动模式端口

pasv_min_port=6000   0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010

5,使用当地时间

use_localtime=YES 使用当地时间(默认为NO,使用GMT)
格林威治        +8   

6,匿名用户上传

6,1 

    配置文件输入vim /etc/vsftpd/vsftpd.conf

   anon_upload_enable=YES 匿名上传,注意:文件系统权限
   anon_mkdir_write_enable=YES 匿名建目录

6.2  客户机上传文件,还是拒接

   

6.3, 为什么呢,我们查看  /var/ftp/pub/ 的文件属性

ftp    作为other   对pub 文件只有读的权限

是下到客户机自己的当前文件夹,但是匿名用户属于other,要对服务机/var/ftp/pub 这个文件夹有读 和执行权限,所以要加x权限

6.4setfacl 给单独用户修改权限    -m修改权限

注意注意!  不要修改  /var/ftp/ 的权限   这相当于匿名(ftp)用户的根  改了之后ftp 就连不上来了

根目录不可以有写的权限否则登录不上,根目录不要随便更改权限, 只可以给根 (/var/ftp) 下的文件夹有写的权限

getfacl   可查看ACL 访问控制列表

6.5    服务机重启 vsftpd

6.6   上传文件

注意注意!!!  要先去到pub 文件,再使用put命令

因为客户机只有pub 文件夹的读写执行  权限

6.7 匿名上传

anon_world_readable_only=no 只能下载全部读的文件, 默认YES
anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES 可删除和修改上传的文件,默认NO

7,匿名用户 下载 删除文件

在 vsftpd 软件中 只可以 下载有 读权限的文件, 没有读权限的文件时不可以直接下载的需要修改下面的选项

anon_world_readable_only=NO  只能下载全部读的文件, 默认YES
anon_umask=0333              指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES  可删除和修改上传的文件,默认NO

8,指定匿名用户的上传文件的默认的所有者和权限

匿名用户上传文件默认的所有者是ftp 用户 是可以修改的

chown_uploads=YES        #默认NO
chown_username=zhangsan
chown_upload_mode=0644

9,Linux系统用户

local_enable=YES 是否允许linux用户登录
write_enable=YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限对应umask

10,将所有系统用户映射为指定的guest用户

10.1  将服务机配置文件加上这两句

10.2      服务机重启服务

10.3客户机登录   非ftp  用户

10.4  上传一个777文件 

10.5  服务机查看该文件   属主是ftp

11,禁锢系统用户

就是只允许账户 去家目录以下

11,1   改三个:

chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢

chroot_list_enable=YES    #默认是NO    (开启名单)

chroot_list_file=/etc/vsftpd/chroot_list  #默认值

11.2  白名单里写入  lisi

11.3   在客户机和服务机  新建一个 lisi   用户  ,在客户机登录,失败

11.4   去到服务机家目录    发现lisi    文件夹没有权限

11.5  文件夹最小权限为x   所以给  lisi 文件夹加上X

 

11.6  此时再用李四账户  登录,成功

pwd  发现系统账户默认在  用户的家目录下

 11.7lisi   账户在白名单   可以去到真正的/

一开始默认在  /home/lisi

11.8  同理,服务机  给另一个账户 wuyunqing  加x权限后,

服务机在  /home/wuyunqing   新建一个  123.txt

11.9   回到客户机,  wuyunqing  账户切换到根后  ,ls  发现能看到123.txt

说明wuyunqing  被禁锢了,他的/   其实就是/home/wuyunqing

12,ftp 日志

在  /var/log/xferlog

ftp  默认启动日志

#wu-ftp 日志:默认启用
xferlog_enable=YES #启用记录上传下载日志,此为默认值
xferlog_std_format=YES #使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog #可自动生成, 此为默认值

#vsftpd日志:默认不启用
dual_log_enable=YES 使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log 可自动生成, 此为默认值

例子:

###默认格式
[root@node2 zhangsan]#tail -f /var/log/xferlog 
Sat Aug  5 08:48:43 2023 1 ::ffff:192.168.91.100 471 /pub/dm.sh b _ o a <no_password> ftp 0 * c
Sat Aug  5 08:56:46 2023 1 ::ffff:192.168.91.100 0 /pub/abc.txt b _ i a <no_password> ftp 0 * i


###第二种格式
[root@node2 zhangsan]#cat  /var/log/vsftpd.log
Sat Aug  5 15:49:36 2023 [pid 2056] CONNECT: Client "::ffff:192.168.91.100"
Sat Aug  5 15:49:39 2023 [pid 2055] [ftp] OK LOGIN: Client "::ffff:192.168.91.100", anon password "<no_password>"

13,提示信息

14,ftp 禁止root登录

ftp 不能用root登录

ftp 明文 怕root密码暴露

如果想让root 登

15,下载速度

 

anon_max_rate=0 匿名用户的最大传输速率,以字节为单位,比如:1024000表示1MB/s
local_max_rate=0 本地用户的最大传输速率

#限速
[root@centos8 ~]#vim /etc/vsftpd/vsftpd.conf
anon_max_rate=1024000
local_max_rate=102400


[root@centos7 ~]#systemctl restart vsftpd
#生成测试文件
[root@centos7 ~]#dd if=/dev/zero of=/var/ftp/pub/bigfile bs=1M count=100
[root@centos7 ~]#dd if=/dev/zero of=/home/wang/bigfile bs=1M count=100
#测试匿名下载速度
[root@centos7 ~]#wget ftp://192.168.91.101/pub/bigfile
--2020-10-30 18:09:02-- ftp://10.0.0.8/pub/bigfile
           => ‘bigfile.3’
Connecting to 10.0.0.8:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub ... done.
==> SIZE bigfile ... 104857600
==> PASV ... done.    ==> RETR bigfile ... done.
Length: 104857600 (100M) (unauthoritative)

#测试本地用户下载速度
[root@centos7 ~]#wget ftp://wang:magedu@10.0.0.8/bigfile
--2020-10-30 18:08:04-- ftp://wang:*password*@10.0.0.8/bigfile
           => ‘bigfile’
Connecting to 10.0.0.8:21... connected.
Logging in as wang ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD not needed.
==> SIZE bigfile ... 104857600
==> PASV ... done.    ==> RETR bigfile ... done.
Length: 104857600 (100M) (unauthoritative)
100%
[===============================================================================
======================>] 104,857,600 9.78MB/s   in 10s    
2020-10-30 18:08:14 (9.77 MB/s) - ‘bigfile’ saved [104857600]

 

16, pam模块实现用户访问

pam_service_name=vsftpd
#pam配置文件:/etc/pam.d/vsftpd

/etc/vsftpd/ftpusers 默认文件中用户拒绝登录,默认是黑名单,但也可以是白名单

例子:

由于ftp是明文传输, 抓取是可可以获取密码的 默认是不让使用root 用户登录de

[root@centos7 ~]#ldd /usr/sbin/vsftpd |grep pam
       libpam.so.0 => /lib64/libpam.so.0 (0x00007fb286c34000)
#修改PAM配置,使ftpusers成为白名单
[root@centos8 ~]#vim /etc/pam.d/vsftpd
#%PAM-1.0
session   optional     pam_keyinit.so   force revoke
#将sense=deny默认是deny 修改为 sense=allow
auth       required     pam_listfile.so item=user sense=allow  file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include     password-auth
account   include     password-auth
session   required     pam_loginuid.so
session   include     password-auth

 [root@node2 ~]#vim /etc/vsftpd/ftpusers
#加入此文件默认是 拒绝
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
lisi

 [root@node2 vsftpd]#vim /etc/vsftpd/user_list

把root  去掉

三,权限问题

1,文件,文件夹

根目录不可以有写的权限否则登录不上,根目录不要随便更改权限, 只可以给根 (/var/ftp) 下的文件夹有写的权限

上传:

1.程序开放权限

2.文件夹要有权限

下载:

文件一定要有读的权限

2,root 权限

大家都没有 读和写 root有

大家都没有执行 root也没有

要是有一个人有x权限 root才有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/336327.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3 + antd 封装动态表单组件(一)

前置条件&#xff1a; vue版本 v3.3.11 ant-design-vue版本 v4.1.1 创建动态组件配置文件config.js import { Input, Textarea, InputNumber, Select, RadioGroup, CheckboxGroup, DatePicker } from ant-design-vue;// 表单域组件类型 export const componentsMap {Text: …

还在手动复制文章吗?教你如何一键将文章从notion同步到WordPress

本文会给大家介绍如何在WordPress上安装一个插件&#xff0c;实现将notion上写的文章自动同步到WordPress上&#xff0c;从而提高写作效率&#xff0c;接下来请跟随我的脚步一起来操作吧&#xff01; 一、插件安装 在WordPress后台添加新插件页面中搜索“notion”&#xff0c;…

实验六 模式对象管理与安全管理

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件&#xff1a;标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

Linux——进程等待

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、为什么要进程等待二、进程等待的方法1、wait方法2、waitpid方法 三、获取子进程status 一…

2008年苏州大学837复试机试C语言

2008年苏州大学复试机试C 题目 编写程序充成以下功能: 一、从键盘上输入随机变量x的 10个取样点。X0&#xff0c;X1—X9 的值; 1、计算样本平均值 2、判定x是否为等差数列 3、用以下公式计算z的值(t0.63) 注。请对程序中必要地方进行注释 补充&#xff1a;个人觉得这个题目回…

【51单片机】矩阵按键

0、前言 参考&#xff1a;普中 51 单片机开发攻略 1、硬件 2、软件 main.c #include <reg52.h> #include <intrins.h> #include "delayms.h"typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; #define GPIO_KEY P1 #d…

leetcode:每日温度---单调栈

题目&#xff1a; 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例&…

浪花 - 用户信息展示+更新

1. 用户登录获取登录凭证 已登录的用户才能获取个人信息发送 Aixos 请求登录 const user ref();onMounted(async () > {const res await myAxios.get(/user/current);if (res.code 0) {console.log("获取用户信息成功");user.value res.data;} else {consol…

python_selenium自动化测试框架

设计思路 本文整理归纳以往的工作中用到的东西&#xff0c;现汇总成基础测试框架提供分享。 框架采用python3 selenium3 PO yaml ddt unittest等技术编写成基础测试框架&#xff0c;能适应日常测试工作需要。 1、使用Page Object模式将页面定位和业务操作分开&#xff0…

自然语言处理(Natural Language Processing,NLP)解密

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

多维表格产品vika多维表、Flowus、Wolai体验记录

昨天从下午6点肝到凌晨2点多体验低代码平台多维表格产品&#xff0c;体验了3个国内产品&#xff0c;vika多维表、Flowus、Wolai。 具有多维表格新型关系数据库的鼻祖是 Airtable&#xff0c;国内模仿产品有vika多维表、飞书多维表格等。 还有一种类型就是以在国内鼎鼎大名的N…

流式湖仓增强,Hologres + Flink构建企业级实时数仓

云布道师 2023 年 12 月&#xff0c;由阿里云主办的实时计算闭门会在北京举行&#xff0c;阿里云实时数仓Hologres 研发负责人姜伟华现场分享 HologresFlink 构建的企业级实时数仓&#xff0c;实现全链路的数据实时计算、实时写入、实时更新、实时查询。同时&#xff0c;随着流…

实验七 RMAN恢复管理器

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

Python笔记10-数据可视化练习折线图

文章目录 JSON数据Python数据和Json数据的相互转化pyecharts模块构建折线图全局配置绘制疫情数据折线图 JSON数据 JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据 。本质上是一个带有特定格式的字符串 主要功能&#xff1a;可以在各个编程语言中流通…

JumpServer 堡垒机安装指南

介绍 什么是JumpServer JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产&#xff0c;包括&#xff1a; SSH (Linux / Unix / 网络设备 等)Windows (Web 方式连接 / 原生 R…

Wpf 使用 Prism 实战开发Day13

配置 AutoMapper 关系映射 在上一节 ToDoController 控制器&#xff0c;或 IToDoService 服务接口中&#xff0c;方法的传参都是直接传的实体类。但在实际开发过程中&#xff0c;这样是不允许的。标准且规范的做法是&#xff0c;定义一个数据传输层&#xff0c;即Dto层。 一.在…

forEach如何跳出或中断循环

文章目录 概要使用try...catch抛出错误设置数组长度为0使用splice删除数组的元素 概要 在Javascript中&#xff0c;我们使用forEach遍历循环的时候&#xff0c;往往会面临跳出循环和中断循环&#xff0c;我们可以采取以下几种方式&#xff1a; 使用try…catch抛出错误 const …

智能音箱喇叭杂音问题

智能音箱喇叭杂音问题 智能音箱生厂或出货过程会遇到多种喇叭播放有杂音的问题&#xff0e; 螺丝不匹配 智能音箱设备在生产过程&#xff0c;会有SPL测试喇叭失真&#xff0c;发现不良率8%的杂音问题&#xff0e; 分析原因是来料导入了新螺丝&#xff0c; 使用过程进入异物…

GO 中如何防止 goroutine 泄露

文章目录 概述如何监控泄露一个简单的例子泄露情况分类chanel 引起的泄露发送不接收接收不发送nil channel真实的场景 传统同步机制MutexWaitGroup 总结参考资料 今天来简单谈谈&#xff0c;Go 如何防止 goroutine 泄露。 概述 Go 的并发模型与其他语言不同&#xff0c;虽说它…