网络文件共享服务
一.存储类型
存储类型为三种
直连式存储(DAS):DAS是指存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连接,其他主机不能使用这个存储设备
网络附加存储(NAS):NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上,NAS是文件级的存储方法
存储区域网络(SAN):存储区域网络,这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络
特点:
DAS虽然偏旧,但是适用于数据量不大,对磁盘访问要求较高的中小企业
NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,部署灵活,成本低
SAN适用于大型应用或数据库系统,成本高,复杂
二.FTP文件传输协议
1.FTP工作原理
FTP基于C/架构,数据传输格式为二进制或文本,使用双通道协议:命令端口:21(权限,认证)数据端口:20(传输真实数据)
两种模式:从服务器角度
主动模式:服务端主动连接客户端
客户端通过服务端的21端口进行权限认证,服务端主动开启20端口与客户端进行连接
被动模式:服务端被动等待客户端连接
客户端通过服务端21端口进行权限认证,服务端开启随机的端口,等待客户端连接进行传输数据
2.用户认证
你妈用户:ftp,anonymous对应ftp用户
系统用户:linux用户,用户/etc/passwd
虚拟用户:特定服务的专用用户
3.FTP软件
vsftpd:Centos默认FTP服务器,高速稳定
4.FTP软件介绍
用户认证配置文件:/etc/pam.d/vsftpd
配置文件:
/etc/vsftpd/vsftpd.conf
用户和其共享目录:
匿名用户(映射为系统用户ftp)共享文件位置:/var/ftp
系统用户:用户家目录
虚拟用户:为其映射的系统用户的家目录
5.基础操作
安装客户端
yum install vsftpd -y
//安装 ftp 服务器
systemctl start vsftpd
//开启服务
注意关闭双端防火墙
客户端连接服务端
[root@localhost /]#ftp 192.168.82.100
Connected to 192.168.82.100 (192.168.82.100).
220 (vsFTPd 3.0.2)
Name (192.168.82.100:root): ftp
//ftp为匿名用户,默认没有密码
ftp> help
Commands may be abbreviated. Commands are:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
//help显示可以命令
!ls显示当前客户端目录,ls为服务端家目录
匿名用户家目录/var/ftp
passive可以改变主被动模式
6.服务端配置
修改默认端口
listen_port=555
修改此行知道连接时的端口,重启(属于安全加固操作)
客户端连接时需要指明端口
[root@localhost /]lftp 192.168.91.101 555
主动模式端口
connect_from_port_20=YES
ftp_data_port=20 默认配置
被动模式端口
pasv_min_port=6000
pasv_max_port=6010
//0表示随机分配,端口的范围会影响客户端并发数
使用当地时间
use_localtime=YES 使用当地时间(默认为NO,使用GMT)
匿名用户登录限制
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO
匿名用户上传
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
//chmod 777 /var/ftp/pub
不能给FTP根目录写权限,只能给下级子目录写权限
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
指定匿名用户上传文件的默认所有者和权限
chown_uploads=YES #默认NO
chown_username=zhangsan
chown_upload_mode=0644
Linux系统用户
local_enable=YES 是否允许linux用户登录
write_enable=YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限对应umask
使用系统用户登录是在系统用户的家目录下
[root@localhost /]#ftp 192.168.91.100
Connected to 192.168.91.100 (192.168.91.100).
220 (vsFTPd 3.0.2)
Name (192.168.91.100:root): zhangsan
331 Please specify the password.
Password:
ftp> pwd
257 "/home/zhangsan"
//默认是可以上传下载
//也可以 去别的目录下载
让每个用户拥有独有配置
user_config_dir=/etc/vsftpd/conf.d/
//可以新建用户文件夹,存放用户的个性化配置
[root@localhost /]#mkdir -p /etc/vsftpd/conf.d
[root@localhost /]#vim /etc/vsftpd/conf.d/zhangsan
local_root=/home/zhangsan //限制zhangsan只能在自己的家目录下操作
禁锢系统用户
禁锢所有系统用户在家目录中
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中用户禁锢,即黑名单
日志
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@localhost /]#vim /etc/vsftpd/vsftpd.conf
anon_max_rate=1024000 //匿名用户
local_max_rate=10240000 //本地用户
//限制用户下载速度1024000表示1m/s
三.NFS
1.NFS工作原理
服务端启动NFS服务会将端口信息发送给PRC,当客户端访问服务端时PRC会告知NFS的端口号,NFS以访问本地文件的形式访问一块磁盘,客户端通过网络将客户端的文件挂载到自己的文件夹,实现访问服务端的文件
NFS优势:节省本地存储空间,将常用的数据,如:/home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用。
2.NFS软件介绍
软件包:nfs-utils
相关软件包:rpcbind(必须)
kernel支持:nfs.ko
端口:2049(nfsd), 其它端口由portmap(111)分配
NFS服务主要进程:
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
rpc.lockd 非必要,管理文件锁,避免同时写出错
rpc.statd 非必要,检查文件一致性,可修复文件
日志:/var/lib/nfs/
NFS配置文件:/etc/exports
/etc/exports.d/*.exports
3.共享配置文件格式
/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...
可用通配符*表示所有客户端
IP networks:两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
opt选项:
默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
async 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性
低
sync(1.0.0后为默认)同步,数据在请求时立即写入共享存储磁盘,性能低,安全性高
root_squash (默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 7以前的版本为nfsnobody
no_root_squash 远程root映射成NFS服务器的root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
no_all_squash (默认)保留共享文件的UID和GID
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
4.NFS工具
exportfs
exportfs:可用于管理NFS导出的文件系统
选项 | 说明 |
---|---|
-v | 查看本机所有NFS共享 |
-r | 重读配置文件,并共享目录 |
showmount
showmount -e hostname
查看挂载的文件夹
开机挂载
vim /etc/fstab
ip:/public /mnt/nfs nfs defaults,_netdev 0 0
挂载的文件 挂载点 文件系统
实际操作
//服务端
[root@localhost ftp]#cd /
[root@localhost /]#mkdir test
[root@localhost /]#cd /test
[root@localhost test]#touch aaa
[root@localhost test]#vim /etc/exports
/test *
将test共享给所有主机
[root@localhost test]#systemctl start nfs
[root@localhost test]#systemctl start rpcbind
[root@localhost test]#exportfs -v //查看本机所有NFS共享
/test <world>(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
[root@localhost test]#
//客户端
[root@localhost /]#systemctl start nfs
[root@localhost /]#systemctl start rpcbind
[root@localhost /]#mount 192.168.82.100:/test /mnt
//将服务端的文件挂载过来
[root@localhost /]#cd /mnt
[root@localhost mnt]#ls
aaa