linuxNFS服务

网友投稿 521 2022-05-29

1、NFS简介

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

linuxNFS服务

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

Samba

内网

Windows、Linux

Windows、Linux

只能在内网使用

NFS

内网和公网

Linux

Linux(Windows)

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

2、NFS权限说明

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服务器

3、NFS服务器端设置

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或主机名

4、NFS服务器端配置文件

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    产看某个主机的共享目录

5、NFS客户端使用

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

Linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[华为云在线课程][Linux基础入门和帮助][第三章Linux常见命令及字符集和编码][学习笔记]
下一篇:关于大数据hadoop的35个科普小知识
相关文章