ubuntu server 10.4下NFS服务的配置

简介:

前言:

1,NFS与samba有什么区别?

(1)NFS基于RPC协议,samba应用SMB协议。

(2)NFS(Network File System)主要用在UNIX/LINUX操作系统之间共享文件,Samba即可以用在unix/linux操作系统之间,也可以用在unix/linux与微软的操作系统(windows)之间。经过google看到现在windows 7支持NFS了,但是中文会乱码,不支持UTF-8。

我知道的就这么多。

2,为什么NFS需要使用RPC协议?

因为 NFS 用来传输的 端口 是随机选择小于 1024 以下的端口来使用的,这样就使的客户端不知道服务端使用哪个端口,所以此时就得要远程过程调用 (Remote Procedure Call, RPC) 的协议来辅助。

3,RPC协议的功能及如何工作?

RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的端口, 所以当然可以让 NFS 的启动更为轻松愉快了

4,为什么先启动RPC,后启动NFS?

因为启动NFS时,就要向RPC进行注册,如果RPC没有先启动,NFS当然就注册不成功,客户端无法获取服务端的端口号,NFS就无法正常工作。所以,RPC先于NFS启动。另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,他管理的所有程序都需要重新启动以重新向 RPC 注册。

5,NFS对文件权限的控制是如何进行的?会发生哪些问题,这些问题会产生什么结果?如何解决这些问题?

NFS服务器是以用户在客户端机器中的UID,与以自己的 /etc/passwd, /etc/group 来查询对应的UID进行比对,进行文件权限的控制;这样一来,就会发生以下问题:

(1)用户A的UID在NFS服务器的/etc/passwd, /etc/group 中刚好存在。

那A就能访问具有相应权限的文件

(2)用户A的UID在NFS服务器的/etc/passwd, /etc/group 中不存在。

那A就变成匿名用户

(3)用户A的UID是NFS服务器上B的UID

那A就能访问B所具有权限的文件。

(4)特殊用户root如何处理

在默认的情况下,变成匿名用户。关于root ,在/etc/exports中有两个相关的设置

no_root_squash:

登入 NFS 主机使用分享目录的用户,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限! 这个项目『极不安全』,不建议使用!

root_squash: 
在登入 NFS 主机使用分享之目录的用户如果是 root 时,那么这个使用者的权限将被压缩成为匿名用户

解决以上用户账号不同步的问题,有以下三种方法:

(1)手工同步/etc/passwd文件

(2)使用LDAP服务

(3)使用NIS服务

6,在NFS服务端,客户端都需要安装哪些软件包?

在ubuntu 操作系统下,NFS服务端需要nfs-kernel-server,nfs-common,portmap;客户端需要nfs-common,portmap。

实例应用 :

配置一台NFS服务器(IP地址为192.168.2.87),共享一个目录nfstest,从客户端访问的用户都被映射成NFS服务器中UID=1000的用户admin01,可以读写文件。

1,配置NFS服务器

(1)安装NFS

#sudo apt-get install nfs-kernel-server

NFS01

可以看出,同时也会安装相关的nfs-common,portmap软件包。

(2)配置 /etc/exports文件

#mkdir nfstest

#sudo vim /etc/exports

nfs03 

#sudo /etc/init.d/nfs-kernel-server restart

注释:

/home/admin01/nfstest 就是要共享出来的目录或文件

* 代表所有的主机,这里可以是一个IP(192.168.2.32)或是主机名或是域名*.labtest.com,也可以是一个范围(192.168.2.0/24)

rw:read-write,可擦写的权限;

ro:read-only,只读的权限;

sync:数据同步写入到内存与硬盘当中;

async:数据会先暂存于内存当中,而非直接写入硬盘!

no_root_squash: 
登入 NFS 主机使用分享目录的用户,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限! 这个项目『极不安全』,不建议使用!

root_squash: 
在登入 NFS 主机使用分享之目录的用户如果是 root 时,那么这个使用者的权限将被压缩成为匿名用户,通常他的 UID 与 GID 都会变成 nobody(nfsnobody) 那个系统账号的身份;

all_squash: 
不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦!

anonuid: 
anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是您可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于您的 /etc/passwd 当中!

anongid:同 anonuid ,但是变成 group ID 就是了!

这是几个比较常见的权限参数,如果你有兴趣玩其他的参数时,请自行 man exports 可以发现很多有趣的数据

2,客户端,使用传统的方法挂载

#sudo apt-get install nfs-common

nfs04

会安装相应的软件包portmap

查看NFS服务器上共享出来的文件

#sudo showmount –e 192.168.2.87

挂载到本地的nfs目录上

#sudo mount 192.168.2.87:/home/admin01/nfstest nfs

nfs05

一个简单的NFS应用就完成了。

在客户端是以xcj用户访问,但在NFS服务器端test的拥有者及组都是UID=1000,GID=1000的admin01

3,在客户端使用autofs,把服务器端的nfstest目录挂载到客户端的/home/xuchengji/tempnfs上。

使用autofs要达到目的是:

(1)让客户端在有使用到 NFS 文件系统的需求时才挂载

(2)并且不需要事先建立挂载点

(3)另外,当 NFS 文件系统使用完毕后,让 NFS 自动卸除,以避免可能的 RPC 错误

安装autofs

#sudo apt-get install autofs

配置auto.master

#sudo vim /etc/auto.master

nfs06

auto.nfstest这个文件名可以自定

建立/etc/auto.nfstest文件

#sudo vim /etc/auto.nfstest

nfs07

这时只要访问tempnfs,就会自动挂载上NFS服务器的上nfstest

#sudo /etc/init.d/autofs restart

#cd tempnfs

结束语:

NFS服务配置起来还是比较简单的,使用也很方便,但是客户端与服务端的账号同步的问题较难处理,能把LDAP或NIS结合进来是个不错的选择。autofs使用起来,真的是不错。

 

本文的相关理论主要来源于《鸟哥的linux私房菜》的NFS


本文转自xcjgutong 51CTO博客,原文链接:http://blog.51cto.com/xuchengji/397588


相关文章
|
4月前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
1085 1
|
5月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
6月前
|
Ubuntu 安全 Docker
Ubuntu Server上安装配置Docker的详细步骤
如果一切设置正确,这将下载一个测试镜像,并在容器中运行它,打印一条问候消息。
928 76
|
4月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
329 18
|
4月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
444 17
|
4月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
543 7
|
5月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
410 16
|
4月前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
1053 6
|
5月前
|
缓存 监控 Ubuntu
在Ubuntu 16.04上配置GitLab Runner以激活GitLab CI/CD流程
完成以上步骤后,每当代码被推送到远端仓库中相对应分支上时,GitLb CI / CD 流水线就会自动触发,并由之前注册好了 GitLb runner 的机器去完成定义好了 ` .gitlabcicd.yml ` 文件里面定义好各种任务(如编译测试部署等).
298 13
|
5月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
277 13