Solaris NFS:用户权限

我对NFS很新。 我想确保我清楚。

如果NFS服务器共享目录rw,并且目录中的所有文件都是权限700,并且这些文件的用户/组是root / root ,,,

在客户端上,您将不得不以root身份login才能看到它。 它是否正确?

我知道,客户端上的非root用户可以直接连接来覆盖这个。 (因为不使用挂载,只需使用NFS客户端黑客)。

这似乎是任何人有权访问客户端机器应该有权访问这些文件,并且客户端机器应该忽略权限。 只有服务器应该处理权限。

我的理解是否正确? 有这种布局是正常的吗? 有没有办法忽略客户端的权限?

我会说,你对NFS的理解是正确的。 以下是您提到的几点细节:

NFSv3服务器仅提供文件所有权和访问权限。 客户端要为特定的用户强制执行这些权限(例如,当具有特定UID的进程请求和执行fs操作时)。

即使您使用encryption,Kerberos授权和LDAP (以及Krb和LDAP服务器正在运行其他主机)来设置NFSv4,那么客户端的root仍然可能具有与所有允许的用户和组一样多的fs权限。 但是你可以再次得到保护非root用户的活动,甚至私人networking上的其他主机。

通常,客户在强制执行用户权限时会非常成功。 我没有意识到有一个简单的方法让文件权限忽略NFS挂载。 如果这就是你想要的,那么只需将所有文件的权限设置为u=rwx,g=rwx,o=rwx对于所有文件,设置u=rw,g=rw,o=rw

无关:

但是要小心,不要翻转setuid位 – 这实际上最终会给客户端上的普通用户(例如www-data)给出一个root shell。 对于NFS和非NFS挂载,可以使用“-o nosuid”选项完全禁用Setuid。

有一种方法可以禁用/启用Solaris服务器的rootquash(在Solaris术语中称为rootquash之外的东西 – 我忘了它是什么)。

您可以让Solaris服务器将整个共享标记为只读,例如:

 zfs set sharenfs="[email protected]/16" tank/home/tabriz 

那么不pipe客户做什么,fs都是不可写的。

即使程序可以使用NFS协议,客户机上的非root用户也可能无法打开与NFS服务器的直接连接。 这是因为NFS客户端通常被迫连接表单特权端口,而在健康的客户端上,只有root可以做到这一点。

NFS安全性在客户端上执行。

NFS是在任何连接到NFS共享的人都在可信networking中的时候创build的。 如果有任何可能发送数据包到NFS服务的不受信任的实体,你真的不应该使用NFS。

因此,NFS通常默认为rootquash,这意味着客户端(uid 0)上的根在服务器上被解释为nobody(uid 65535)。

磁盘上的文件并不真正与用户关联(这是一个通用规则,不是特定于NFS的)。 他们与一个用户关联。 如果用户alice在NFS服务器上有uid 100,而用户bob在NFS客户端上有uid 100,那么bob将能够访问alice的文件。 事实上,在客户端上,所有的文件都会显示,就好像它们是由bob所有的一样。 也就是说,NFS服务器仅向客户端呈现原始元数据。 不pipe客户认为合适,客户都可以解释。

NFS不是为安全而devise的。 不要在有不受信任方的networking上使用NFS。

共享目录rw表示服务器应该允许具有合适凭据的任何人对该目录及其内容具有读写访问权限。

通过改变目录的权限,它的内容为700,所有权为root / root,然后有效地拒绝任何人访问。 这是因为默认情况下,Solaris NFS将root用户从客户机映射到nobody。

您可以在这里findSolars share_nfs的手册页