linuxNFS服务

举报
嵌入式与Linux那些事 发表于 2022/03/29 01:14:59 2022/03/29
【摘要】 1、NFS简介 1.1 什么是NFS        NFS(Network File System) &nbs...

1NFS简介

1.1 什么是NFS

       NFS(Network File System)      配置简单      权限不太明确

              NFS可以让客户端把服务器的共享目录挂载到本机使用,就想使用本机分区一样,使用非常方便。

1.2 RPC(远程调用)服务

       NFC是被RPC服务管理的,所以必须安装RPC的主程序rpcbind

1.3 NFS端口

       NFS端口:2049

       RPC端口:111

       NFS daemon端口:随机

1.4 和其他文件服务器对比(SFU)

服务名称

适用范围

服务器端

客户端

局限性

FTP

内网和公网

Windows、Linux

Windows、Linux

无法直接在服务器端修改数据

Samba

内网

Windows、Linux

Windows、Linux

只能在内网使用

NFS

内网和公网

Linux

Linux(Windows)

客户端需要挂载使用,对普通用户有一定的技术要求

2NFS权限说明

2.1 权限说明

       Linux系统目录权限会生效

       NFS服务共享权限也会生效

2.2 用户身份映射(系统权限)

       NFS没有用户登录认证机制,所以客户端登录到服务器后,会把客户端的身份映射到服务器端,就会出现四种可能。

2.3 第一种可能

client和server上刚好有相同的账号和用户组(用户名和UID都要相同)

              client上用户可以再server上按照用户权限使用文件

2.4 第二种可能

       当client和server上拥有相同的UID,但是用户名不同

              假设client上有用户aa(UID:500),server上有用户bb(UID:500)。在client在使用server共享目录是,身份识别为bb(因为LInxu权限绑定在UID上)

              此种情况尽量避免出现,容易逻辑混乱

2.5 第三种可能

       server上没有client的UID

              client用户访问server时,server上没有此UID,则把此用户自动转变为nfsnobody(UID:65534)用户

2.6 第四种可能

       client上是root使用共享

              默认把roor也转变为nfsnobody,服务器端可以修改配置文件,允许root访问nfs服务器

3NFS服务器端设置

3.1 服务器端安装

       默认已安装,如需手动安装

              NFS主程序:nfs-utils

              RPC主程序:rpcbind(旧版本 portmap)

3.2 相关文件

       配置文件       /etc/exports

3.3 服务器端管理

       默认已启动,如需手动启动

              $ service nfs start

              $ service rpcbind start

3.4 守护进程

       $ ps aux | grep -E “nfs|rpc”

              rpc.rquotad     NFS配额

              rpc.mountd     处理客户端挂载

              nfsd               NFS守护进程

              rpcbind          RPC守护进程

3.5 RPC服务注册情况

       $ rpcinfo –p IP或主机名

4NFS服务器端配置文件

4.1 配置文件

       /etc/exports

              共享目录 客户端(权限)

4.2 可识别的客户端

       指定IP                 192.168.44.4

       指定网段              192.168.44.0/24 192.168.44.0/255.255.255.0

       指定主机名           www.itxdl.cn

       所有主机              *

4.3 常用权限

       rw                        读写

       ro                         只读

all_squash              不论登录是谁,都压缩为匿名用户nfsnobody

       root_squash           如果登录的是root,压缩为nfsnobody

       no_root_squash      允许root身份登录,不推荐

       anonuid                 把所有的登录用户,不再压缩为nfsnobody用户,而是压缩为指定uid用户

       sync                      将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性

       async                    将数据先保存在内存缓冲区中,必要时才写入磁盘

4.4 举例1

       任何人可以访问,允许root访问

       $ vi /etc/exports

              /home/test *(rw,no_root_squash)

4.5 举例2

       同时共享多个目录

       $ vi /etc/exports

              /home/test 192.168.44.3(rw,no_root_squash) *(ro)

              /home/soft 192.168.44.0/24(rw)

4.6 举例3

       匿名用户访问

       $ vi /etc/exports

              /home/soft 192.168.44.0/24(rw,all_squash,anonuid=600)

4.7 常用命令

       $ exportfs 选项

              -a    按照配置文件挂载/卸载所有目录

-r     重新挂载

-u    卸载

-v    显示详细信息

4.8 exportfs举例

       $ exportfs -arv              重新挂载所有目录,不用重启NFS服务

       $ exportfs -auv       全部卸载所有目录

4.9 showmount命令

       shoumount查看共享目录

              $ shoumount –e IP或主机名

                     -e    产看某个主机的共享目录

5NFS客户端使用

5.1 客户端需要启动的服务

       需要启动rpcbind,默认已经启动

       手工启动命令

              $ service rpcbind start

5.2 查看服务器端共享目录

       $ showmount -e 192.168.44.3              指定服务器端IP即可

5.3 把服务器共享目录挂载到本地

       $ mkdir /home/client            建立挂载点

       $ mount –t nfs 192.168.44.3:/home/soft /home/client         挂在到本地使用

       $ mount                查看挂载

5.4 卸载

       $ umount /home/client

5.5 开机自动挂载

       $ vi /etc/fstab 192.168.44.2:/home/test /home/client nfs defaults 0 0 

6、权限实验

6.1 第一种可能

       client和server上刚好有相同的账号和用户组(用户组名和UID都要相同)

              client上用户可以再server上按照用户权限使用文件

       服务器

              $ useradd –u 600 test1

              $ passwd test1

       客户端

              一样的用户与UID

              $ su - test1

              $ cd /home/test

              $ touch cde

              $ ll cde

                     -rw-rw-r--1 test1 test1 0 11月 14 2016 cde

6.2 第二种可能

       当client和server上拥有相同过的UID,但是用户民不同

              假设client上有用户aa(UID:500),server上有用户bb(UID:500)。在client在使用server共享目录时,身份识别为bb(因为Linux权限绑定在UID上)

              此种情况尽量避免出现,容易逻辑混乱

       服务器端

              用户名:test1 UID:600

       客户端

              $ useradd -u 600 user1

              $ su - user1

              $ cd /home/test

              $ touch def

              $ ll def

                     -rw-rw-r-- 1 user1 user1 0 11月 14 2016 def

       服务器端

              $ ll /tmp/def

                     -rw-rw-r-- 1 test1 test1 0 11月14 05:40 /tmp/def

6.3 第三种可能

       server上没有client的UID

              client用户访问server时,server上没有此UID,则把此用户自动转变为nfsnobody(UID:65534)用户

       服务器端

              没有UID为700的用户

       客户端

              $ useradd -u 700 test2

              $ touch qwe

              $ ll qwe

                     -rw-rw-r-- 1 nobody nobody 0 11月14 2016 qwe

6.4 第四种可能

       client上是root使用共享

              默认把root也转换为nfsnobody。服务器端可以修改配置文件,允许root访问nfs服务器

       服务器端

              不允许root访问

       客户端

              $ cd /home/test

              $ touch asd

              $ ll asd

                     -rw-r--r-- 1 nfsnobody nfsnobody 0 1月14 2016 asd

       服务器端

              允许root访问

              $ vi /etc/exports

                     /tmp 192.168.44.4(rw,no_root_squash)

              $ exportfs -auv

              $ exportfs -arv

       客户端

              $ cd /home/test

              $ touch zxc

              $ ll zxc

文章来源: blog.csdn.net,作者:嵌入式与Linux那些事,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_16933601/article/details/104119401

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。