コードを介してユーザー グループの権限が正常に変更されましたが、ユーザー グループのセキュリティ タブに変更が反映されていません。

コードを介してユーザー グループの権限が正常に変更されましたが、ユーザー グループのセキュリティ タブに変更が反映されていません。

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

関連情報