NFS /etc/export配置【转】

本文深入解析了NFS服务器配置文件/etc/exports的使用方法,包括权限设置、用户映射、同步策略等关键信息,并指导如何在客户端进行挂载与安全配置。

nfs服务器的配置,配置文件/etc/exports:

复制代码
ro 该主机对该共享目录有只读权限

rw 该主机对该共享目录有读写权限

root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

no_root_squash 客户机用root访问该共享文件夹时,不映射root用户

all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户

anonuid 将客户机上的用户映射成指定的本地用户ID的用户

anongid 将客户机上的用户映射成属于指定的本地用户组ID

sync 资料同步写入到内存与硬盘中

async 资料会先暂存于内存中,而非直接写入硬盘

insecure 允许从这台机器过来的非授权访问
复制代码

 例子

/  zhang (rw) wang (rw,no_root_squash)

表示共享服务器上的根目录(/)只有zhang和wang两台主机可以访问,且有读写权限;

zhang主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;

wang主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目


/root/share/ 192.168.1.20 (rw,insecure,sync,all_squash)

表示共享服务器上的/root/share/目录只有192.168.1.20主机可以访问,且有读写权限;

此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)

/home/ljm/ *.gdfs.edu.cn (rw,insecure,sync,all_squash)

表示共享/home/ljm/目录,*.gdfs.edu.cn域中所有的主机都可以访问该目录,且有读写权限

/home/share/ .gdfs.edu.cn (ro,sync,all_squash,anonuid=student,anongid=math) 

表示共享目录/home/share/,*.gdfs.edu.cn域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为student、gid为math的用户


启动nfs后又修改了/etc/exports,不用重启该服务,使用exports命令即可:

复制代码
exports [-aruv]

-a 全部mount或umount文件/etc/exports中的内容

-r 重新mount文件/etc/exports中的共享内容

-u umount目录

-v 在export的时候,将详细的信息输出到屏幕上
复制代码


例:

[root@localhost ~]#/usr/sbin/exportfs –rv 全部重新export一次
[root@localhost ~]#/usr/sbin/exportfs –au 全部卸载


nfs客户端的配置:

若是临时使用可直接执行mount命令:mount servername(or IP): 共享目录 本地挂载目录

若客户机启动就自动挂载服务器的共享目录,则需修改客户机上的/etc/fstab文件

复制代码
/etc/fstab格式:

(192.168.233.139:/share /mnt nfs defaults 0 2)

  fs_spec fs_file fs_type fs_options fs_dump fs_pass

fs_spec:定义希望加载的文件系统所在的设备或远程文件系统,对于nfs则设为IP:/共享目录

fs_file:本地挂载点

fs_type:挂载类型

fs_options:挂载参数

fs_dump:该选项被“dump”命令使用来检查一个文件系统该以多快频率进行转储,若不需转储即为0

fs_pass:该字段被fsck命令使用来决定在启动时需要被扫描的文件系统的顺序,根文件系统“/”对应该字段值为1,其他文件系统为2,若该文件系统无需在启动时被扫描则为0
复制代码

 

[root@localhost ~]#vi /etc/hosts.allow
Portmap:192.168.5.123:allow
[root@localhost ~]#vi /etc/hosts.deny
Portmap:ALL:deny

 

安全提醒:确保网络安全,使用nfs时结合tcp_wrappers来限制使用范围(如只想192.168.5.123主机可挂载nfs服务器上的共享目录),另外还可结合iptables来加强
关机时若nfs server上有client联机时,先关掉portmap与nfs两个系统服务。若无法正确将此2项服务关掉,用netstat –utlp找出PID,然后用kill杀掉进程才关机

nfsstat查看NFS的运行状态,调整NFS运行大有帮助
rpcinfo查看rpc执行信息,用于检测rpc运行情况


挂载格式:

mount –t nfs hostname(or IP):/directory /mount point

卸载:

umount /本地挂载目录(本地client卸载方法,但用exports –au为server卸载)

 

showmount –e IP(查看NFS服务器上共享了那些目录)
showmount –a IP(用于nfs server上,显示已经mount上本机NFS服务器的client(客户机))
分类:  Linux

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7191998/viewspace-753405/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7191998/viewspace-753405/

<think>好的,用户现在遇到了一个具体的NFS挂载问题,错误信息是“can't find in /etc/fstab”。我需要先理解这个错误的原因,然后给出解决方案。 首先,用户尝试用命令`mount -t nfs 127.0.0.1:/root/nfs_export`挂载NFS共享,但系统提示找不到/etc/fstab中的条目。这可能是因为用户没有指定挂载点,或者命令格式不正确。通常在mount命令中需要同时指定源和挂载点,但用户可能只提供了源,没有挂载点,导致系统去查找/etc/fstab中的配置,但没找到。 接下来,我需要检查用户可能的操作步骤。正确的挂载命令应该包括源地址和挂载点目录,比如`mount -t nfs 127.0.0.1:/root/nfs_export /mnt/mount_point`。用户可能漏掉了挂载点参数,导致命令不完整,从而系统尝试从/etc/fstab中寻找对应的配置,但因为没有预先配置,所以报错。 另外,还要考虑NFS服务器配置是否正确。用户需要确认是否已经正确导出/root/nfs_export目录,并且在/etc/exports文件中配置了允许本地挂载的权限。例如,检查是否有类似`/root/nfs_export 127.0.0.1(rw,sync,no_root_squash)`的条目,并且执行了exportfs -ra使配置生效。 此外,用户的权限问题也可能导致挂载失败。特别是如果导出目录是/root下的,可能需要确保NFS服务器配置允许root访问,比如使用no_root_squash选项,否则可能会因为权限问题无法挂载。 还需要考虑SELinux或防火墙的影响,虽然因为是本地挂载,防火墙可能不会阻止,但SELinux可能会限制NFS的访问。用户可能需要暂时禁用SELinux或调整策略。 总结下来,用户的问题可能出在:1)命令缺少挂载点参数;2)NFS导出配置不正确;3)权限问题;4)SELinux限制。需要逐步引导用户检查这些方面,并提供相应的解决步骤。同时,需要给出具体的命令示例和配置示例,确保用户能够一步步解决问题。</think>--- ### **问题分析** 你尝试使用 `mount -t nfs 127.0.0.1:/root/nfs_export` 挂载 NFS 共享,但系统提示 `can't find in /etc/fstab`。这是因为: 1. **未指定挂载点**:`mount` 命令需要同时指定**源路径**和**目标挂载点**。 2. **依赖 `/etc/fstab`**:如果不指定挂载点,系统会尝试从 `/etc/fstab` 中查找匹配项,但未找到相关配置。 --- ### **解决方案** #### **方法 1:直接指定挂载点** 1. **创建挂载目录**: ```bash mkdir -p /mnt/nfs_local # 创建一个本地挂载点(例如 `/mnt/nfs_local`) ``` 2. **重新执行挂载命令**: ```bash mount -t nfs -o vers=4 127.0.0.1:/root/nfs_export /mnt/nfs_local ``` - `vers=4`:指定 NFS 协议版本(推荐 v4)。 - `127.0.0.1:/root/nfs_export`:NFS 服务器导出的路径。 - `/mnt/nfs_local`:本地挂载点。 3. **验证挂载**: ```bash df -h | grep nfs_local ``` 若成功,会显示挂载信息。 --- #### **方法 2:通过 `/etc/fstab` 持久化挂载** 1. **编辑 `/etc/fstab`**: ```bash echo "127.0.0.1:/root/nfs_export /mnt/nfs_local nfs vers=4,defaults 0 0" | sudo tee -a /etc/fstab ``` 2. **挂载并生效**: ```bash mount -a # 自动挂载所有 `/etc/fstab` 中定义的条目 ``` --- ### **常见错误排查** #### **1. NFS 未正确导出目录** - **检查 `/etc/exports`**: ```bash cat /etc/exports ``` 确保包含以下内容: ```bash /root/nfs_export 127.0.0.1(rw,sync,no_root_squash) ``` - `no_root_squash`:允许 root 用户访问(需谨慎使用)。 - `sync`:同步写入磁盘。 - **重新加载 NFS 配置**: ```bash exportfs -ra ``` #### **2. 权限问题** - **目录所有权**: ```bash chown -R root:root /root/nfs_export # 确保导出目录权限正确 chmod 755 /root/nfs_export ``` - **SELinux 或 AppArmor**: ```bash setenforce 0 # 临时禁用 SELinux(仅用于测试) systemctl stop apparmor # 临时禁用 AppArmor(Ubuntu/Debian) ``` #### **3. 协议版本兼容性** - 如果挂载失败,尝试指定协议版本: ```bash mount -t nfs -o vers=3 127.0.0.1:/root/nfs_export /mnt/nfs_local ``` --- ### **示例验证** 1. **在导出目录创建文件**: ```bash touch /root/nfs_export/test.txt ``` 2. **检查挂载点是否同步**: ```bash ls /mnt/nfs_local # 应显示 test.txt ``` --- ### **总结** - **直接挂载**:需明确指定源路径和挂载点。 - **持久化配置**:通过 `/etc/fstab` 实现开机自动挂载。 - **关键排查点**:NFS 导出配置、权限、协议版本。
<think>好的,我现在需要帮用户解决在/etc/nfsmount.conf中配置NFS默认挂载版本的问题。首先,我得回想一下关于NFS配置文件的知识。根据用户提供的引用,特别是引用[2]提到了/etc/nfsmount.conf是NFS挂载的配置文件,用于定义默认选项。所以这个文件确实是关键。 接下来,用户问的是如何设置默认挂载版本。我需要确定在nfsmount.conf中对应的参数是什么。记得在NFS配置中,版本通常通过mount命令的选项指定,比如nfsvers或vers。但是在配置文件中,应该有一个类似的参数。查阅资料的话,可能是在[Defaults]部分设置NFS版本,例如Defaultvers=4.2或者类似的格式。 然后,我需要检查用户提供的引用是否有相关线索。引用[3]提到/etc/nfs.conf中的配置,但用户明确问的是nfsmount.conf,所以应该区分这两个文件。nfs.conf可能更多是服务器端的配置,而nfsmount.conf是客户端挂载时的配置。因此,正确的参数应该在nfsmount.conf里。 接下来,步骤应该是:首先找到[Defaults]部分,然后添加或修改Defaultvers参数,比如Defaultvers=4.2。保存文件后,重新挂载或重启服务使配置生效。可能还需要验证配置是否生效,使用mount命令查看挂载选项。 另外,需要考虑版本兼容性问题,比如如果服务器不支持指定的版本,客户端可能需要回退。所以用户可能需要了解如何指定多个版本或回退机制。同时,确保语法正确,避免注释符号或格式错误导致配置无效。 最后,生成相关问题,帮助用户深入理解,比如其他配置参数、版本差异、调试方法等。确保回答结构清晰,步骤明确,用户能够按照指导操作。</think>### 如何在 /etc/nfsmount.conf 中配置 NFS 默认挂载版本? #### 配置步骤说明 1. **定位配置文件** 打开 `/etc/nfsmount.conf`,这是NFS客户端挂载时的核心配置文件[^2]。 2. **设置默认版本参数** 在文件中的 `[Defaults]` 部分添加或修改 `nfsvers=` 参数。例如,强制使用NFSv4.2: ```ini [Defaults] nfsvers=4.2 ``` - `nfsvers` 是版本控制参数,可选值:`3`/`4`/`4.0`/`4.1`/`4.2` - 若未显式配置,客户端会尝试与服务端协商版本 3. **关联参数补充(可选)** 若需指定传输协议,可配合 `proto=` 参数: ```ini [Defaults] nfsvers=4.2 proto=tcp ``` 4. **验证配置生效** 执行挂载命令后通过 `mount -v` 检查实际使用的版本: ```bash mount -t nfs <server_ip>:/export/path /mnt -v mount | grep nfs ``` 输出应包含 `vers=4.2` #### 注意事项 1. **版本兼容性** - 服务端必须支持配置NFS版本(通过 `rpcinfo -p` 查看服务端支持版本) - 若版本不匹配,可添加 `,vers=3` 到挂载命令临时覆盖配置[^3] 2. **配置文件优先级** - 命令行参数 > `/etc/nfsmount.conf` > 内核默认值 - 通过 `man 5 nfsmount.conf` 查看完整参数说明 3. **语法规范** - 参数值无需引号 - 确保参数位于正确的配置段(如 `[Defaults]` 对所有挂载生效)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值