关闭

NFS基本知识汇总-(2)

376人阅读 评论(0) 收藏 举报
分类:

NFS 的文件存取权限(以linux为例)

假如我们在 NFS client 1 上面以dmtsai这个使用者身份想要去访问 /home/data/sharefile/ 这个来自 NFSserver 所提供的文件系統时,NFS server 所提供的文件系统会让我们以什么身份去访问,是dmtsai还是其它什么呢?

NFS 服务本身并没有进行身份登入的识别所以说,当你在客户端以dmtsai的身份想要存取服务器端的文件系統时,服务器端会以客户端的使用者 UID GID 等身份来尝试读取服务器端的档案系統。这时候如果客户端与服务器端的使用者身份并不一致怎么办?


当我们以 dmtsai这个一般身份使用者要去访问来自服务器端的文件时,你要先注意到的是: 文件系統的 inode 所记录的属性为UID,GID 而非账号与组名。 那一般Linux 主机会主动的以自己的/etc/passwd, /etc/group 来查询对应的使用者和其组的名称。 所以当 dmtsai 进入到该目录后,会参照NFS client 1 的使用者与群组名称。 但是由于该目录的文件主要来自 NFS server ,所以可能就会出现几个情況:

l   NFS server/NFS client 刚好有相同的账号与组

则此时使用者可以直接以dmtsai 的身份进行服务器所提供的文件系統的存取。

l   NFS server 上的UID=501这个UID 账号对应为vbird

若 NFS 服务器上的 /etc/passwd 里面 UID 501 的使用者名称为 vbird时, 则客户端的 dmtsai 可以存取服务器端的vbird 这个使用者的文件!只因为二者具有相同的 UID 。这就造成很大的問題了!因为没有人可以保证客户端的 UID 所对应的账号会与服务器端相同, 那服务器所提供的资料不就可能会被错误的使用者乱改?

l   NFS server 上没有501 这个UID

另一个极端的情況是,在服务器端并没有 501 这个UID 的存在,则此时dmtsai 的身份在该目录下会被会变成匿名者, 一般 NFS 的匿名者会以 UID =65534为其使用者,早期的 Linux distributions 这个 65534 的账号名称通常是 nobody ,CentOS 则取名为nfsnobody。

l   如果使用者身份是 root 时

有个比较特殊的使用者,那就是每个Linux 主机都有的 UID 为0 的 root 。 想一想,如果客户端可以用 root 的身份去存取服务器端的档案系统的时候,那服务器端的资料那还有什么保护性? 所以在预设的情況下,root 的身份会被主动的变成匿名者。

总之,客户端使用者能做的事情是与 UID 及其 GID 有关的,那当客户端与服务器端的 UID 及账号的对应不一致的时候, 可能就会造成文件系統使用上的困扰,这个就是 NFS 档案系統在使用上面的一个很重要的地方! 而在了解使用者账号与 UID 及文件系统的关系之后,要实际在客户端以 NFS 取用服务器端的文件系統时, 还需要具有:

l   NFS服务器有可写入的权限 (与/etc/exports 设定有关);

l  实际的档案具有可写入 (w) 的权限。

也就是说 (1)、使用者账号,亦即 UID 的相关身份; (2)、NFS服务器允许有写入的权限; (3)、文件确实具有 w 的权限时,你才具有该文件的可写入权限。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:66485次
    • 积分:1282
    • 等级:
    • 排名:千里之外
    • 原创:57篇
    • 转载:26篇
    • 译文:0篇
    • 评论:1条
    最新评论