客户端计算机的用户可以使用 chmod 实用程序,为存储在 NTFS 文件系统分区上并通过 NFS 服务器共享的文件或目录,来设置 setuid (set-user-identifier-on-execution)、setgid (set-group-identifier-on-execution) 和 sticky 文件模式位。以后基于 UNIX 的客户端访问该文件或目录时,将应用这些位的标准语义。例如,在执行设置了 setuid 位的可执行文件时,将使用文件所有者的用户 ID (UID),而不是使用正在执行该文件的用户的 UID。

通常,如果为文件设置了 setuid 或 setgid 位,文件的所有者或组将更改为将执行文件的所有者或组的 ID (GID)。除非用户有权还原文件或目录,否则,Windows 安全性会允许用户获得文件的所有权(如果文件权限允许),但是不允许将所有权转交给其他用户。因此,若要使用 chownchgrp 将文件的所有者或组更改为另一个用户或组,必须拥有还原文件和目录的权限。尽管此权限可以分配给其他组或各个用户,但是默认情况下,将分配给 Administrators 和 Backup Operators 组的成员。此外,运行 chown 或 chgrp 的用户帐户,或获得所有权转让的用户或组的帐户,必须通过 Active Directory 查找或用户名映射正确地映射。

有些基于 UNIX 的网络文件系统 (NFS) 服务器对 setuid、setgid 和 sticky 位应用特殊的解释或限制。例如,有些 UNIX 版本对设置了 setgid 位但是没有执行权限的目录实施强制性的锁定。对于如何使用这些位,NFS 服务器不施加特殊的解释或限制。

安全问题

典型的 UNIX setuid 和 setgid 行为在 UNIX 中存在已知的安全问题。入侵者通过使用特洛伊木马程序覆盖可执行文件,然后运行可执行文件,可以利用 setuid 和 setgid 行为。可执行文件以所有者的权限运行,而不是以入侵者的身份运行。

为了避免发生此已知安全问题,默认情况下禁用 setuid 和 setgid,并且不会影响 UID 或 GID 设置(如果文件或目录具有下列两种特性):

  • 设置了以下一个或两个位:setgid 或 setuid。

  • 文件或目录是组可写、组可执行、全局可写或全局可执行。

尽管 UNIX setuid 和 setgid 的典型行为不作为 NFS 协议的一部分执行,有些客户可能会发现此安全措施存在问题,因为它不同于 UNIX 的典型行为。

更改 setuid 和 setgid 行为

使用以下过程更改 setuid 和 setgid 位的行为:

更改 setuid 和 setgid 行为
  1. 打开注册表编辑器。

  2. 设置以下注册表项:

    HKEY_Local_Machine\System\CurrentControlSet\Services\NfsSvr\Parameters\SafeSetUidGidBits = (DWORD)

    • 值为 1 可以使 setuid 和 setgid 行为更安全。

    • 值为 0 可以采用标准的 UNIX 行为。