前言:
1NFSsamba有什么区别?
1NFS基于RPC协议,samba应用SMB协议。
2NFS(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) 的协议来辅助。
3RPC协议的功能及如何工作?
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 注册。
5NFS对文件权限的控制是如何进行的?会发生哪些问题,这些问题会产生什么结果?如何解决这些问题?
NFS服务器是以用户在客户端机器中的UID,与以自己的 /etc/passwd, /etc/group 来查询对应的UID进行比对,进行文件权限的控制;这样一来,就会发生以下问题:
1)用户AUIDNFS服务器的/etc/passwd, /etc/group 中刚好存在。
A就能访问具有相应权限的文件
2)用户AUIDNFS服务器的/etc/passwd, /etc/group 中不存在。
A就变成匿名用户
3)用户AUIDNFS服务器上BUID
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
可以看出,同时也会安装相关的nfs-common,portmap软件包。
2)配置 /etc/exports文件
#mkdir nfstest
#sudo vim /etc/exports
 
#sudo /etc/init.d/nfs-kernel-server restart
注释:
/home/admin01/nfstest 就是要共享出来的目录或文件
* 代表所有的主机,这里可以是一个IP192.168.2.32)或是主机名或是域名*.labtest,也可以是一个范围(192.168.2.0/24)
rwread-write,可擦写的权限;
roread-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 ,但是变成ubuntu vim命令 group ID 就是了!
这是几个比较常见的权限参数,如果你有兴趣玩其他的参数时,请自行 man exports 可以发现很多有趣的数据
2,客户端,使用传统的方法挂载
#sudo apt-get install nfs-common
会安装相应的软件包portmap
查看NFS服务器上共享出来的文件
#sudo showmount –e 192.168.2.87
挂载到本地的nfs目录上
#sudo mount 192.168.2.87:/home/admin01/nfstest nfs
一个简单的NFS应用就完成了。
在客户端是以xcj用户访问,但在NFS服务器端test的拥有者及组都是UID=1000,GID=1000admin01
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
auto.nfstest这个文件名可以自定
建立/etc/auto.nfstest文件
#sudo vim /etc/auto.nfstest
这时只要访问tempnfs,就会自动挂载上NFS服务器的上nfstest
#sudo /etc/init.d/autofs restart
#cd tempnfs
结束语:
NFS服务配置起来还是比较简单的,使用也很方便,但是客户端与服务端的账号同步的问题较难处理,能把LDAPNIS结合进来是个不错的选择。autofs使用起来,真的是不错

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。