透過程式碼成功修改了使用者群組的權限,但變更未反映在使用者群組的「安全性」標籤中

透過程式碼成功修改了使用者群組的權限,但變更未反映在使用者群組的「安全性」標籤中

我有 C# 程式碼(最後):

  1. 建立一個文件
  2. 列印當前 ACL
  3. 授予內建使用者群組對先前建立的檔案的“寫入權限”
  4. 列印目前修改的 ACL

正如您在控制台輸出中看到的那樣,寫入權限已透過程式碼成功分配。

在此輸入影像描述

我的問題是:為什麼檔案的安全性選項卡沒有反映使用者群組的權限變更?

在此輸入影像描述

C#程式碼:

var file = "sectest.txt";
File.WriteAllText(file, "File security test.");
var sid = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);

string strBuiltInUsersAccount = sid.Translate(typeof(NTAccount)).ToString();
  
FileSecurity fileSecurity = new FileSecurity(file,
AccessControlSections.Owner |
AccessControlSections.Group |
AccessControlSections.Access);

Console.WriteLine("AFTER CREATE:");

ShowSecurity(fileSecurity); // BUILTIN\Users group doesn't have Write permission

// short: give "builtin\users" write permissions
var fsAccessRule = new FileSystemAccessRule(strBuiltInUsersAccount,
                                            FileSystemRights.Write,
                                            AccessControlType.Allow);

fileSecurity.ModifyAccessRule(AccessControlModification.Add, fsAccessRule, out bool modified);

Console.WriteLine();

Console.WriteLine("AFTER MODIFY:");
ShowSecurity(fileSecurity); // BUILTIN\Users has Write permission

答案1

這僅修改 ACE 中的單一存取規則。然後需要將其保存到文件中。請參閱 File.SetAccessControl(filePath, fileSecurity)

https://learn.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesecurity?view=net-7.0

相關內容