一,存储类型
(一)三种存储类型介绍
- 直连式存储:Direct-Attached Storage,简称DAS
直连:硬盘加服务器
- 存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理)
- 网络附加存储:Network-Attached Storage,简称NAS(存储和管理空间都在远程)
理解为百度云盘 只能下载存储,不能管理文件系统
(二)三种存储类型对比
DAS | NAS | SAN | |
传输类型 | SCSI , FC | IP | IP,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
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才有