存储类型有三种:
直连式存储:Direct-Attached Storage,简称DAS
网络附加存储:Network-Attached Storage,简称NAS(存储和管理空间都在远程)
存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理)
DAS存储是最常见的一种存储方式,尤其是在中小企业应用中。PC中的硬盘或只有一个外部SCSI接口的JBOD都属于DAS架构。DAS是指存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连接,其他主机不能使用这个存储设备。DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID: Redundant Arrays of Independent Disks)、磁盘簇JBOD:Just a Bunch Of Disks)等。
NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上。与DAS以及SAN不同,NAS是文件级的存储方法。采用NAS较多的功能是用来进行文件共享。NAS存储也通常被称为附加存储,顾名思义,就是存储设备通过标准的网络拓扑结构(例如以太网)添加到一群计算机上。NAS是文件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。如今更多的亲们采用NAS较多的功能是用来文档共享、图片共享、电影共享等等,而且随着云计算的发展,一些NAS厂商也推出了云存储功能,大大方便了企业和亲们等个人用户的使用。NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。但NAS有一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求
存储区域网络,这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)
文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构
数据传输格式:二进制(默认)和文本
双通道协议:命令和数据连接 21 命令端口(权限,认证) 20数据端口(真实传数据)
主动(PORT style):服务器主动连接客户端
命令(控制):客户端:随机port ---> 服务器:21/tcp
数据:客户端:随机port <---服务器:20/tcp
被动(PASV style):服务器被动等待客户端连接
命令(控制):客户端:随机port ---> 服务器:21/tcp
数据:客户端:随机port ---> 服务器:随机port /tcp
用户认证:
匿名用户:ftp,anonymous,对应Linux用户ftp
系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
虚拟用户:特定服务的专用用户,独立的用户/密码文件
Wu-ftpd,Proftpd,Pureftpd,Filezilla Server,Serv-U,Wing FTP Server,IIS
vsftpd:Very Secure FTP Daemon,CentOS 默认FTP服务器
高速,稳定,下载速度是WU-FTP的两倍
ftp.redhat.com数据:单机最多可支持15000个并发
vsftpd官网: https://security.appspot.com/vsftpd.html
配置文件:
/etc/vsftpd/vsftpd.conf
ftp
vsftpd
由 vsftpd 包提供,不再由xinetd管理
用户认证配置文件:/etc/pam.d/vsftpd
用户和其共享目录
匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
系统用户共享文件位置:用户家目录
虚拟用户共享文件位置:为其映射的系统用户的家目录
安装服务端
yum install vsftpd -y
#安装 ftp 服务器
systemctl start vsftpd
#开启服务
客户端连接服务端
[root@localhost ~]#ftp 192.168.91.101
# ftp 客户端 工具 服务端地址
onnected to 192.168.91.101 (192.168.91.101).
220 (vsFTPd 3.0.2)
Name (192.168.91.101:root): anonymous #此处填写用户名 默认使用 ftp 或者匿名用户
#默认没有密码
登陆成功
ftp> help
#可以使用help 查看帮助
ftp> ls
#可以使用 ls 查看文件列表
ftp> ls
227 Entering Passive Mode (192,168,91,101,24,148)
# Passive 消极被动 默认使用 被动模式
ftp> passive
#可以人为指定被动主动
ftp> get bigfile
#下载大文件, 后可以 使用 ss -nt 看到又打开一个通道
[root@localhost ~]#ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 4384648 0 192.168.91.100:37722 192.168.91.101:43911
ESTAB 0 0 192.168.91.100:48250 192.168.91.101:21
[root@localhost ~]#ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.91.100:40574 192.168.91.101:20
ESTAB 0 0 192.168.91.100:48250 192.168.91.101:21
修改默认命令端口
listen_port=2121 默认值为21
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
#随便一行插入
listen_port=2121
[root@node2 pub]#systemctl restart vsftpd
#重启服务
[root@node2 pub]#ss -ntl
#查看端口
客户端连接时需要指明端口号!
[root@centos7 ~]#ftp 192.168.91.101 2121
[root@centos7 ~]#lftp 192.168.91.101 -p 2121
[root@centos7~]#ss -nt
connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口
pasv_min_port=6000 0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
chmod 777 /var/ftp/pub
########客户端#########
ftp> !ls #使用! 代表 在本地使用命令
abc.txt anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
ftp> cd pub
ftp>put abc.txt #上传 文件, ftp 默认不允许上传文件, 安全考虑, 人人都传空间,病毒等问题
local: abc.txt remote: abc.txt
227 Entering Passive Mode (192,168,91,101,126,214).
550 Permission denied.
#########服务端#####
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
#此处是被注释开启就可以了
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@node2 pub]#ll /var/ftp/pub/
#没权限写 ,在传文件时需要考虑 文件系统权限, 你是远程用户吧文件放在磁盘上,需要考虑文件系统的权限
#程序权限,文件系统权限
总用量 1048576
-rw-r--r--. 1 root root 1073741824 8月 4 16:02 bigfile
[root@node2 pub]#setfacl -m u:ftp:rwx /var/ftp/pub/
#添加ftp 用户的权限
[root@node2 pub]#setfacl -m u:ftp:rwx /var/ftp
[root@node2 pub]#setfacl -m u:ftp:rwx /var/ftp
######客户端#####
ftp> cd pub ####注意文件夹位置
250 Directory successfully changed.
ftp> put abc.txt
local: abc.txt remote: abc.txt
227 Entering Passive Mode (192,168,91,101,181,62).
150 Ok to send data.
226 Transfer complete.
### 是可以对ftp的根目录设置权限的 一般是不对根最操作的
### 但是再次登录会有问题
注意:还需要开启文件系统访问的权限,不能给FTP根目录写权限,只能级子目录写权限,否则报如下错误
[root@centos7 ~]#ftp 10.0.0.8
Connected to 10.0.0.8 (10.0.0.8).
220 (vsFTPd 3.0.3)
Name (10.0.0.8:root): ftp
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
anon_world_readable_only=NO 只能下载全部读的文件, 默认YES
anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能
省略
anon_other_write_enable=YES 可删除和修改上传的文件,默认NO
在 vsftpd 软件中 只可以 下载有 读权限的文件, 没有读权限的文件时不可以直接下载的需要修改下面的选项
anon_world_readable_only=NO 只能下载全部读的文件, 默认YES
anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES 可删除和修改上传的文件,默认NO
例:
可以下载上传上去的文件
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO
anon_umask=0333
可以删除文件
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES
ftp> cd pub.
ftp> ls
ftp> delete abc.txt
ftp> ls
227 Entering Passive Mode (192,168,91,101,112,18).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 1073741824 Aug 04 08:02 bigfile
-rw------- 1 14 50 471 Aug 04 09:20 dm.sh
226 Directory send OK.
匿名用户上传文件默认的所有者是ftp 用户 是可以修改的
chown_uploads=YES #默认NO
chown_username=zhangsan
chown_upload_mode=0644
guest_enable=YES 所有系统用户都映射成guest用户
guest_username=ftp 配合上面选项才生效,指定guest用户
local_root=/ftproot 指定guest用户登录所在目录,但不影响匿名用户的登录目录
user_config_dir=/etc/vsftpd/conf.d/ 每个用户独立的配置文件目录
guest_enable=YES
guest_username=ftp
local_root=/ftproot
user_config_dir=/etc/vsftpd/conf.d/
例:控制 系统用户等信息
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
#最后加入 复制注意空格
guest_enable=YES
guest_username=ftp
#local_root=/ftproot 可以注释此行,默认所有用户都在 ftp用户的家目录
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (192,168,91,101,169,174).
150 Here comes the directory listing.
drwxrwxr-x 2 0 0 34 Aug 05 01:02 pub
226 Directory send OK.
例:让每个用户拥有独有配置
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/conf.d/
#可以自由指定
针对 zhangsan lisi 用户
[root@node2 data]#mkdir -p /etc/vsftpd/conf.d
#先建立好配置文件夹
#编写子配置文件
[root@node2 data]#vim /etc/vsftpd/conf.d/lisi
local_root=/data/lisi
[root@node2 data]#vim /etc/vsftpd/conf.d/zhangsan
local_root=/data/zhangsan
[root@node2 data]#mkdir -p /data/{zhangsan,lisi}
[root@node2 data]#touch /data/zhangsan/zs.txt
[root@node2 data]#touch /data/lisi/lisi.txt
#建立两个文件测试使用
#再次登录就不能乱跑了
禁锢所有系统用户在家目录中
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
禁锢用户开启白名单和黑名单
chroot_list_enable=YES #默认是NO
chroot_list_file=/etc/vsftpd/chroot_list #默认值
当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单
例:
[root@localhost ~]#ftp 192.168.91.101
#禁锢后 会 将lisi用户 的家目录作为根, 默认ftp服务的加目录是不能有些权限
Connected to 192.168.91.101 (192.168.91.101).
220 (vsFTPd 3.0.2)
Name (192.168.91.101:root): lisi
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
##此处 所有的 用户 家目录权限需要修改
pam_service_name=vsftpd
#pam配置文件:/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers 默认文件中用户拒绝登录,默认是黑名单,但也可以是白名单
例:
由于ftp是明文传输, 抓取是可可以获取密码的 默认是不让使用root 用户登录的
[root@centos8 ~]#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 去掉
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=10240000
[root@centos8 ~]#systemctl restart vsftpd
#生成测试文件
[root@centos8 ~]#dd if=/dev/zero of=/var/ftp/pub/bigfile bs=1M count=100
[root@centos8 ~]#dd if=/dev/zero of=/home/wang/bigfile bs=1M count=100
#测试匿名下载速度
[root@centos7 ~]#wget ftp://10.0.0.8/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]