linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区...

对于NFS中权限管理的理解,首先需要熟悉Linux中关于文件或文件夹的访问控制策略,其次要认识NFS中服务器如何控制客户端的访问。

默认情况下,Linux对于文件或文件夹的权限管理分为所属者(ownuser)、所属组(owngroup)和其他(other)三类用户,可以分别对上述三类用户执行不同的访问控制策略,所谓访问策略主要指是否可读、是否可写、是否可执行,如图 1所示。由于对于某一具体文件或文件夹,其所属用户和所属用户组只能存在唯一的一个,所以Linux对于文件或文件夹的权限控制策略,无法满足对于其他用户或用户组的灵活配置。通过安装部署ACL(访问控制列表),可以增加权限给其他用户或组,而不局限于上述三种类型的用户,如图 2所示。例如,利用ACL可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。

linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区..._第1张图片

图1 Linux中默认的访问控制策略

linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区..._第2张图片

图2 ACL提供的灵活访问控制策略

NFS服务器利用配置文件(一般是/etc/exports)实现客户端对于共享文件的访问控制。通过配置文件可以指定访问共享文件客户端的IP、客户端对文件夹的读写权限、是否对客户端用户的访问进行降级(将客户端用户对于共享文件夹的权限压缩成匿名用户,即Noboby用户的访问权限)。

linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区..._第3张图片

图3 NFS的权限访问举例说明环境

符合配置文件中条件的客户端可以通过挂载来实现对文件的访问,但是能否真正的读写文件需要根据客户端中所登录用户的uid和gid是否在服务器端中存在一致用户来能决定。如图 3所示,假设NFS服务器端配置为只对root用户实施权限压缩,并且服务器端对于各个用户的文件访问权限如表格1所示,那么客户端中各个用户对于共享文件夹的访问权限如表格 2所示。

客户端中root用户对于共享文件夹没有读写的访问权限,是因为NFS服务器配置文件中添加了对root用户的权限压缩,导致root用户对于文件夹的访问权限与服务器端的Nobody用户一致。其他用户对于共享文件夹的访问权限是由其uid与gid决定的,而不是账号名称决定。客户端中的Tom账号的uid与服务器端的Tom账号的uid一致,所以客户端中Tom用户对于共享文件夹的访问权限与服务器端的Tom账户是一致。同理,由于客户端中的Gary与服务器端的Fred用户的uid一致,所以Gary对于共享文件夹的访问权限与服务器端的Fred用户对于共享文件夹的访问权限是一致的。

表格1 服务器端共享文件夹的访问权限

linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区..._第4张图片

表格2 客户端共享文件夹的访问权限

linux中nfs存储权限,NFS权限管理 - 麦苗的个人空间 - OSCHINA - 中文开源技术交流社区..._第5张图片

在实际的应用中,无法保证客户端中账户、uid、gid与服务器端的一致性,所以无法仅仅通过账户名称来控制Linux中nfs客户端对于共享文件夹的访问。在必须要求使用账户名称来控制权限的环境,需要通过配置NIS服务器来保证多个Linux主机中账户的一致性。

你可能感兴趣的:(linux中nfs存储权限)