
C# コード (末尾) は次のとおりです:
- ファイルを作成する
- 現在のACLを印刷します
- 組み込みユーザーグループに、以前に作成したファイルへの「書き込み権限」を付与します。
- 現在変更されている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