
Tengo código C# (al final) que:
- Crea un archivo
- Imprime la ACL actual
- Otorga al grupo de usuarios integrado "permisos de escritura" para el archivo creado previamente
- Imprime la ACL modificada actual.
Los permisos de escritura se asignan correctamente mediante código, como puede ver en la salida de la consola.
Mi pregunta es:¿Por qué la pestaña de seguridad del archivo no refleja este cambio de permiso para el grupo Usuarios?
Código 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
Respuesta1
Eso sólo modifica la regla de acceso único en la ACE. Luego sería necesario conservarlo en el archivo. Consulte File.SetAccessControl(filePath, fileSecurity)
https://learn.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesecurity?view=net-7.0