用戶端電腦的使用者可使用 chmod 公用程式,在存放於 NTFS 檔案系統磁碟分割上的檔案或目錄,以及透過 Server for NFS 所共用的檔案或目錄上,設定 setuid (執行時設定使用者識別碼)、setgid (執行時設定群組識別碼) 及 sticky 檔案模式位元。當 UNIX 型用戶端後續存取檔案或目錄時,將套用這些位元的標準語意。例如,具有 setuid 位元集的執行檔將在檔案擁有者的使用者識別碼 (UID) (而非正在執行檔案之使用者的 UID) 下執行。

一般來說,在檔案上設定 setuid 或 setgid 位元時,會將檔案的擁有者或群組,變更成將執行檔案所在的擁有者或群組識別碼 (GID)。除非使用者具有還原檔案或目錄的權限,否則 Windows 安全性會允許使用者取得檔案的擁有權 (如果檔案的權限允許),但不會允許該使用者將擁有權轉移給第二位使用者。因此,若要使用 chownchgrp 將檔案的擁有者或群組變更成另一個使用者或群組,您必須擁有還原檔案和目錄的特殊權限。預設會將此特殊權限指派給 Administrators 和 Backup Operators 群組的成員,但也可以將權限指派給其他群組或個別使用者。此外,執行 chown 或 chgrp 的使用者帳戶,以及正在接受擁有權轉移的使用者或群組的帳戶,都必須透過 Active Directory 查閱服務或使用者名稱對應來適當對應。

部分 UNIX 型的網路檔案系統 (NFS) 伺服器會為 setuid、setgid 和 sticky 位元套用特殊的解譯或限制。例如,某些 UNIX 版本會對具有 setgid 位元集,但沒有執行權限的目錄強制鎖定。Server for 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 行為。