nfs

网络文件系统(NFS)是Unix系统和网络附加存储文件管理器常用的网络文件系统,允许多个客户端通过网络共享文件访问。它可用于提供对共享二进制目录的访问,也可用于允许用户在同一工作组中从不同客户端访问其文件。NFS协议有多个版本:Linux支持版本4、版本3和版本2, 而大多数系统管理员熟悉的是NFSv3。默认情况下,该协议并不安全,但是更新的版本(如NFSv4)提供了对更安全的身份验证的支持,甚至可以通过kerberos进行加密

若要配置基本NFS服务器,您应该安装nfs-utils软件包。然后,您应该编辑/etc/exports以列出您希望通过网络与客户端系统共享的文件系统,并指出哪些客户端对导出具有何种访问权限。例如:
/var/ftp/pub
192.168.0.0/24(ro,sync)
将目录/var/ftp/pub导出至192.168.0.0/24网络上的所有主机(对目录具有只读权限)。
/export/homes *.example.com(rw,sync)
将目录/export/homes导出至exmaple.com中的所有主机(对目录具有读写权限)。当NFS服务器运行时,每次您编辑/etc/exports后,都应通过在保存更改后执行exportfs -r来确保应用这些更改。您可以使用exportfs -v显示所有导出。
NFSv4还导出pseudo-root(所有导出的文件系统的root)。如果客户端挂载nfs-server:/ ,这将在NFS服务器上的/下面相对于其位置挂载所有导出文件系统。这对于浏览从客户端的服务器导出的所有文件系统有用。您仍可单独挂载文件系统。
www.westos.org
5默认情况下,NFS服务器将NFS客户端上的root视为用户nfsnobody。即,如果root尝试访问挂载的导出中的文件,服务器会将其视作用户nfsnobody访问。在NFS导出被无磁盘客户端用作/和root需要被视作root的情况中,这种安全措施存在隐患。若要禁用此保护,服务器需要将no_root_squash添加到在/etc/exports中导出设置的选项列表:
/exports/root
192.168.0.1(rw,no_root_squash)
对于NFSv4,必须在服务器上打开端口2049/TCP(对于nfsd)。对于NFSv3和更早版本,必须为rpcbind、rpc.mountd、lockd和rpc.rquotad打开更多端口,而在“随机”选择的端口上启动其中许多服务这一事实又增加了复杂性。此外,NFSv2和NFSv3支持UDP传输,还要求打开相应的端口。本课程中我们将关注NFSv4。

安装服务:

yum install nfs-utils -y

增加火墙策略:

[root@desktop44 ~]# systemctl start nfs-server.service
[root@desktop44 ~]# systemctl status firewalld
[root@desktop44 ~]# firewall-cmd --permanent --add-service=nfs
success
[root@desktop44 ~]# firewall-cmd --permanent --add-service=rpc-bind
success
[root@desktop44 ~]# firewall-cmd --permanent --add-service=mountd
success
[root@desktop44 ~]# firewall-cmd --reload
测试:



[root@server44 ~]# mkdir /public
[root@server44 ~]# chmod 777 /public/
[root@server44 ~]# vim /etc/exports               #man 5 exportfs
###############################################
/public      *(sync)        ##public 共享给所有人并且数据同步
/public      172.25.44.10(ro,sync) ##public 共享给44.10并且数据同步 只读权限
/public      172.25.44.0/24(rw,sync)##public 共享给44网段并且数据同步 读写权限
/public      *(rw,sync,anonuid=1000,anongid=1000) public 共享给所有人并且数据同步 以1000为uid和gid 创建文件为student
/public      *(rw,sync,no_root_squash)##public 共享给所有人并且数据同步 客户端root挂载不转换身份 即 root用户挂载建立文件为root
[root@server44 ~]# exportfs -rv
测试:

kerberos认证:

yum install sssd krb5-workstation authconfig-gtk -y

authconfig-gtk

apply添加:通过 su - student   su - ldapuser1    password:kerberos  登录:

wget http://172.25.254.254/pub/keytabs/desktop44.keytab -O /etc/krb5.keytab  ##通过此命令下载key认证

ktutil                                           ##查看下载的key

ktutil:   rkt   /etc/krb5.keytab

ktutil:  list                                                    

vim /etc/exports 

/public    *(rw,sec=krb5p)   ##通过krb5p认证方式

exportfs -rv                               ##立即更改生效

测试:

mount 172.25.44.11:/public /mnt -o sec=krb5p   

df 查看是否挂载成功

su - student   su - ldapuser1    password:kerberos  ##查看kerberos认证是否成功

输入密码  即 给予证书


server与desktop同样操作  下载对应key


<think>好的,我现在需要回答用户关于NFS网络文件系统的介绍、原理、使用和配置的问题。首先,我应该先回顾用户提供的引用内容,确保信息准确并正确引用。 首先,用户提供了三个引用。引用[1]提到NFS是网络文件系统,用于共享文件和目录,类似于Windows的网络共享,但用于企业集群,并提到了其他分布式文件系统。引用[2]说明NFS服务器配置主要通过/etc/exports文件,需要手动配置。引用[3]指出NFS允许透明访问远程文件,并具有跨平台性。 接下来,我需要组织这些信息,按照用户的要求分四个部分:介绍、原理、使用、配置。同时,需要遵循系统级指令,比如行内数学表达式用$...$,但这里可能用不上数学公式。不过要确保LaTeX语法正确,不过NFS的内容可能不涉及数学表达式,但需要检查是否有需要的地方。比如在配置示例中可能需要代码块,用户示例中的代码块是用```python,这里配置示例可能需要用类似的方式。 需要生成相关问题,放在最后。同时,回答要使用中文,结构清晰,分步骤说明。引用标识要自然地加在引用内容的末尾,例如[^1]。 首先,介绍部分,需要定义NFS,功能,类比Windows共享,应用场景,如企业集群,并引用[^1]和[^3]。 原理部分,可能需要解释NFS如何工作,比如基于RPC协议,客户端-服务器模型,透明访问,跨平台性,引用。 使用部分,包括如何挂载NFS共享,命令行示例,如mount命令,可能需要代码块。 配置部分,重点在/etc/exports文件的配置,说明语法,示例,然后如何启动服务,引用[^2]。 最后生成相关问题,比如与其他分布式系统的区别,权限管理,常见故障排除,安全性等。 需要检查是否符合所有系统级指令,特别是引用是否正确,是否有遗漏,以及结构是否清晰。确保每个引用只在第一次出现时标注,比如介绍部分引用[1]和[3],配置部分引用[2]。 另外,用户示例中的快速排序部分有代码块,所以配置示例也应该使用代码块,比如/etc/exports的配置示例和挂载命令的示例。 可能需要补充一些用户引用中没有提到的内容,比如NFS版本(如NFSv3、NFSv4),但用户引用中没有提到,所以可能不添加,或者简要提及。但根据用户提供的引用,可能不需要扩展太多,保持基于引用内容。 现在开始组织内容: 1. 介绍:定义NFS,功能,应用场景,类比Windows共享,引用[^1]。 2. 原理:客户端-服务器模型,RPC协议,透明访问,跨平台,引用。 3. 使用:挂载命令示例,使用mount。 4. 配置:/etc/exports文件格式,示例配置,启动服务步骤,引用。 然后生成相关问题,比如如何配置exports文件,权限设置,与其他文件系统的比较,故障排查等。 确保每个部分引用正确,例如在介绍末尾加上[^1],原理部分末尾,配置部分末尾。 现在开始撰写回答,注意使用中文,结构清晰,代码块正确,引用标识正确放置。</think>### NFS 网络文件系统介绍、原理、使用与配置 #### 一、NFS 简介 NFS(Network File System,网络文件系统)是一种基于网络的分布式文件系统协议,允许不同主机系统之间共享文件和目录。其核心功能是**透明访问远程文件**,用户操作远程文件时如同操作本地文件一样。NFS 常用于企业集群架构中,尤其适合需要多台服务器协同工作的场景。相较于 Windows 的网络共享(如 SMB/CIFS 协议),NFS 更注重跨平台兼容性,广泛应用于 Linux/Unix 环境。 #### 二、NFS 工作原理 1. **客户端-服务器模型** NFS 采用客户端-服务器架构,服务器端导出共享目录,客户端通过挂载(Mount)方式访问这些目录。 2. **RPC 协议支持** NFS 依赖 RPC(Remote Procedure Call)协议实现通信,客户端通过 RPC 查询服务器支持的共享目录信息。 3. **透明访问机制** 客户端挂载远程目录后,读写操作由内核转发到服务器,用户无需感知文件存储位置。 4. **跨平台性** NFS 支持异构系统(如 Linux 与 Unix、Linux 与 macOS)间的文件共享。 #### 三、NFS 使用示例 1. **挂载远程目录** 客户端通过 `mount` 命令挂载服务器共享目录: ```bash # 挂载命令格式 mount -t nfs 服务器IP:/共享目录路径 /本地挂载点 # 示例 mount -t nfs 192.168.1.100:/data /mnt/nfs_data ``` 2. **验证挂载** 使用 `df -h` 或 `mount | grep nfs` 查看已挂载NFS 共享。 #### 四、NFS 服务器配置 1. **配置文件 `/etc/exports`** 定义共享目录及访问权限,格式为:`共享目录路径 客户端IP(权限选项)`。 ```bash # 示例:允许192.168.1.0/24网段读写,其他只读 /data 192.168.1.0/24(rw,sync) *(ro) ``` - **常用选项**: - `rw`:读写权限 - `ro`:只读权限 - `sync`:同步写入磁盘 - `no_root_squash`:允许客户端 root 用户保留权限。 2. **启动 NFS 服务** ```bash # 重启NFS服务(以Linux为例) systemctl restart nfs-server # 设置开机自启 systemctl enable nfs-server ``` #### 五、注意事项 - **权限管理**:需确保服务器与客户端的用户/组 ID 一致,避免权限冲突。 - **防火墙**:开放 NFS 相关端口(如 2049)及 RPC 端口(如 111)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值