network file system 网络文件系统
用途:为客户机提供共享使用文件夹
协议:NFS(2049),rpc(111)
所需软件包:nfs-utils
系统服务:nfs-server

1.安装

[root@test3 conf.d]# yum install nfs-utils rpnbind -y
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com

2.写文件测试

#先启动 rpcbind 
systemctl restart rpcbind

/public 代表本机需要把那个目录共享出去   *代表所有的ip (ro)代表所有ip只读
[root@test3 conf.d]# cat /etc/exports
/public     *(ro)

/data 192.168.23.0/24(rw,sync,all_squash)
sync:同时把数据写入到磁盘中,正常情况下,数据时先写入到内存中,在写入到磁盘中,写入到内存中容易丢,只要一重启内存中的数据是不是就没了,这样更安全
all_squash,压缩用户的,mount -t nfs test3:/data  /code/image   此时我们test2执行 touch  /code/image/1.txt  那这个1.txt是以test3机器什么身份运行的呢,不能使用root,如果使用root的话,权限就太大了,只要黑客破解了,那这个就相当于全部都破解了,就是以root用户访问nfs时,将root用户压缩成一个虚拟用户,使用虚拟用户	的身份写入到磁盘中,那会压缩成哪一个虚拟用户呢?将所用用户都压缩成虚拟用户 属组和属主 是以nfsnobody用户


[root@test3 conf.d]# mkdir /data

重启服务
[root@test3 conf.d]# systemctl restart nfs-server
[root@test3 conf.d]# 

客户端测试
首先确认客户端也要装这个软件包,客户端只需要安装,不配置不启动nfs服务,因为需要用到rbcbind
[root@test2 ~]# rpm -q nfs-utils
nfs-utils-1.3.0-0.68.el7.2.x86_64

查看指定ip共享出来的目录
[root@test2 ~]# showmount -e 192.168.23.103
Export list for 192.168.23.103:
/data 192.168.23.0/24


把共享出来的目录挂载到自己的目录下
[root@test2 ~]# mount 192.168.23.103:/data /mnt
[root@test2 ~]# ls /mnt/

[root@test2 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G   12M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root  8.0G  3.2G  4.9G  40% /
/dev/sda1               1014M  151M  864M  15% /boot
tmpfs                    378M     0  378M   0% /run/user/0
192.168.23.103:/data     8.0G  3.0G  5.1G  37% /mnt

[root@test2 ~]# cd /mnt/
[root@test2 mnt]# touch 1.txt
touch: cannot touch ‘1.txt’: Permission denied
此时在里面创建文件时拒绝的,因为用户压缩了


[root@test3 ~]# ll /data/ -d
drwxr-xr-x 2 root root 6 Aug  6 04:28 /data/
test3的属组和属组就只有读和执行的权限,并没有写入的权限


那把他压缩成那个用户了
[root@test3 ~]# cat /var/lib/nfs/etab
/data   192.168.23.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
找到uid和gid
[root@test3 ~]# grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
此时知道是把他压缩成了 nfsnobody 虚拟用户

所以我们需要把/data的属主和属组改成nfsnobody
[root@test3 ~]# chown nfsnobody.nfsnobody /data/
[root@test3 ~]# ll -d /data/
drwxr-xr-x 2 nfsnobody nfsnobody 6 Aug  6 04:28 /data/
此时就可以写入了
[root@test2 ~]# cd /mnt/
[root@test2 mnt]# touch 1.txt
touch: cannot touch ‘1.txt’: Permission denied
[root@test2 mnt]# touch 1.txt


开机自动挂载
[root@test2 mynfs]# cat /etc/fstab 
192.168.23.103:/public /mnt/mynfs nfs _netdev 0 0

nfs _netdev:声明网络设备,系统在具备网络参数后,在进行挂载本设备

在服务端做限制

[root@test3 ~]# cat /etc/exports
/public     192.168.23.0/24(rw)
192.168.23.0/24这个网段的ip拥有这个目录的读、写权限

服务端详细配置

[root@test3 public]# cat /var/lib/nfs/etab 
/public	192.168.23.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

rw:  read write 可以读写的共享目录
ro:   只读read only 
sync:  同步,只要用户上传,就把数据写到磁盘上
async: 异步,用户上传的数据,nfs先临时存放到内存中,过一段时间写入到磁盘,并发高,数据可能丢失

同步:在网站架构中直接访问对应的资源,如12306
异步:在网站架构中利用各种缓存,达到用户优先访问缓存,缓存没有在访问对应的服务(cdn)

root_squash: 如果客户是root访问,则到nfs服务端会被压缩(默认的)匿名用户
no_all_squash: 如果客户端不是root 用户访问,则不进行压缩,(保存原始用户,默认的)
all_squash: 所有用户都进行压缩(设置为匿名用户)(是不太安全)
anonuid和anongid: 用于指定压缩的匿名用户,(默认的nfsnobody)anonuid=65534 anongid=65534
[root@test2 ~]# grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

看客户端配置,比如报错

[root@test2 ~]# cat /proc/mounts 
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,nosuid,size=1918640k,nr_inodes=479660,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_prio,net_cls 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,relatime,attr2,inode64,noquota 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=31,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13880 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
192.168.23.103:/public /mnt/mynfs nfs4 rw,relatime,vers=4.1,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.23.102,local_lock=none,addr=192.168.23.103 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=386132k,mode=700 0 0

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部