DirectorySecurity Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa el control de acceso y la seguridad de auditoría de un directorio. Esta clase no puede heredarse.
public ref class DirectorySecurity sealed : System::Security::AccessControl::FileSystemSecurity
public sealed class DirectorySecurity : System.Security.AccessControl.FileSystemSecurity
[System.Security.SecurityCritical]
public sealed class DirectorySecurity : System.Security.AccessControl.FileSystemSecurity
type DirectorySecurity = class
inherit FileSystemSecurity
[<System.Security.SecurityCritical>]
type DirectorySecurity = class
inherit FileSystemSecurity
Public NotInheritable Class DirectorySecurity
Inherits FileSystemSecurity
- Herencia
-
DirectorySecurity
- Atributos
Ejemplos
En el ejemplo de código siguiente se usa la DirectorySecurity clase para agregar y, a continuación, quitar una entrada de lista de control de acceso (ACL) de un directorio. Para ejecutar este ejemplo, debe proporcionar una cuenta de usuario o grupo válida.
using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
// Adds an ACL entry on the specified directory for the
// specified account.
void AddDirectorySecurity(String^ directoryName, String^ account,
FileSystemRights rights, AccessControlType controlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity^ dSecurity = dInfo->GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity->AddAccessRule( gcnew FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
dInfo->SetAccessControl(dSecurity);
}
// Removes an ACL entry on the specified directory for the
// specified account.
void RemoveDirectorySecurity(String^ directoryName, String^ account,
FileSystemRights rights, AccessControlType controlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity^ dSecurity = dInfo->GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
rights, controlType));
// Set the new access settings.
dInfo->SetAccessControl(dSecurity);
}
int main()
{
String^ directoryName = "TestDirectory";
String^ accountName = "MYDOMAIN\\MyAccount";
if (!Directory::Exists(directoryName))
{
Console::WriteLine("The directory {0} could not be found.",
directoryName);
return 0;
}
try
{
Console::WriteLine("Adding access control entry for {0}",
directoryName);
// Add the access control entry to the directory.
AddDirectorySecurity(directoryName, accountName,
FileSystemRights::ReadData, AccessControlType::Allow);
Console::WriteLine("Removing access control entry from {0}",
directoryName);
// Remove the access control entry from the directory.
RemoveDirectorySecurity(directoryName, accountName,
FileSystemRights::ReadData, AccessControlType::Allow);
Console::WriteLine("Done.");
}
catch (UnauthorizedAccessException^)
{
Console::WriteLine("You are not authorised to carry" +
" out this procedure.");
}
catch (System::Security::Principal::
IdentityNotMappedException^)
{
Console::WriteLine("The account {0} could not be found.", accountName);
}
}
using System;
using System.IO;
using System.Security.AccessControl;
namespace FileSystemExample
{
class DirectoryExample
{
public static void Main()
{
try
{
string DirectoryName = "TestDirectory";
Console.WriteLine("Adding access control entry for " + DirectoryName);
// Add the access control entry to the directory.
AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);
Console.WriteLine("Removing access control entry from " + DirectoryName);
// Remove the access control entry from the directory.
RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);
Console.WriteLine("Done.");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadLine();
}
// Adds an ACL entry on the specified directory for the specified account.
public static void AddDirectorySecurity(
string DirectoryName,
string Account,
FileSystemRights Rights,
AccessControlType ControlType
)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new(DirectoryName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
// Removes an ACL entry on the specified directory for the specified account.
public static void RemoveDirectorySecurity(
string DirectoryName,
string Account,
FileSystemRights Rights,
AccessControlType ControlType
)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new(DirectoryName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
}
}
Imports System.IO
Imports System.Security.AccessControl
Module DirectoryExample
Sub Main()
Try
Dim DirectoryName As String = "TestDirectory"
Console.WriteLine("Adding access control entry for " + DirectoryName)
' Add the access control entry to the directory.
AddDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)
Console.WriteLine("Removing access control entry from " + DirectoryName)
' Remove the access control entry from the directory.
RemoveDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)
Console.WriteLine("Done.")
Catch e As Exception
Console.WriteLine(e)
End Try
Console.ReadLine()
End Sub
' Adds an ACL entry on the specified directory for the specified account.
Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
' Create a new DirectoryInfoobject.
Dim dInfo As New DirectoryInfo(FileName)
' Get a DirectorySecurity object that represents the
' current security settings.
Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()
' Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))
' Set the new access settings.
dInfo.SetAccessControl(dSecurity)
End Sub
' Removes an ACL entry on the specified directory for the specified account.
Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
' Create a new DirectoryInfo object.
Dim dInfo As New DirectoryInfo(FileName)
' Get a DirectorySecurity object that represents the
' current security settings.
Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()
' Add the FileSystemAccessRule to the security settings.
dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))
' Set the new access settings.
dInfo.SetAccessControl(dSecurity)
End Sub
End Module
Comentarios
La DirectorySecurity clase especifica los derechos de acceso de un directorio del sistema y cómo se auditan los intentos de acceso. Esta clase representa los derechos de acceso y auditoría como un conjunto de reglas. Cada regla de acceso se representa mediante un FileSystemAccessRule objeto , mientras que cada regla de auditoría está representada por un FileSystemAuditRule objeto .
La DirectorySecurity clase es una abstracción del sistema de seguridad de archivos de Windows subyacente. En este sistema, cada directorio tiene una lista de control de acceso discrecional (DACL), que controla el acceso al directorio y una lista de control de acceso del sistema (SACL), que especifica los intentos de control de acceso que se auditan. Las FileSystemAccessRule clases y FileSystemAuditRule son abstracciones de las entradas de control de acceso (ACE) que componen DACL y SACL.
La DirectorySecurity clase oculta muchos de los detalles de las DACL y SACL; no tiene que preocuparse por el orden ACE o DACLS null.
Use la FileSecurity clase para recuperar, agregar o cambiar las reglas de acceso que representan daCL y SACL de un archivo.
En las tablas siguientes se enumeran los métodos que puede usar para acceder y mantener la seguridad del directorio.
Tarea | Métodos |
---|---|
Agregar reglas | FileSystemSecurity.AddAccessRule FileSystemSecurity.AddAuditRule |
Quitar reglas | FileSystemSecurity.RemoveAccessRule FileSystemSecurity.RemoveAuditRule |
Recuperar el control de acceso a un directorio | FileSystemAclExtensions.GetAccessControl(DirectoryInfo) DirectoryInfo.GetAccessControl |
Conservar el control de acceso en un directorio | FileSystemAclExtensions.SetAccessControl(DirectoryInfo, DirectorySecurity) DirectoryInfo.SetAccessControl |
Constructores
DirectorySecurity() |
Inicializa una nueva instancia de la clase DirectorySecurity. |
DirectorySecurity(String, AccessControlSections) |
Inicializa una nueva instancia de la clase DirectorySecurity de un directorio especificado utilizando los valores especificados de la enumeración AccessControlSections. |
Propiedades
AccessRightType |
Obtiene la enumeración que la clase FileSystemSecurity utiliza para representar los derechos de acceso. (Heredado de FileSystemSecurity) |
AccessRulesModified |
Obtiene o establece un valor booleano que especifica si se han modificado las reglas de acceso asociadas a este objeto ObjectSecurity. (Heredado de ObjectSecurity) |
AccessRuleType |
Obtiene la enumeración que la clase FileSystemSecurity utiliza para representar las reglas de acceso. (Heredado de FileSystemSecurity) |
AreAccessRulesCanonical |
Obtiene un valor booleano que especifica si las reglas de acceso asociadas con este objeto ObjectSecurity están en orden canónico. (Heredado de ObjectSecurity) |
AreAccessRulesProtected |
Obtiene un valor booleano que especifica si la lista de control de acceso discrecional (DACL) asociada a este objeto ObjectSecurity está protegida. (Heredado de ObjectSecurity) |
AreAuditRulesCanonical |
Obtiene un valor booleano que especifica si las reglas de auditoría asociadas a este objeto ObjectSecurity están en orden canónico. (Heredado de ObjectSecurity) |
AreAuditRulesProtected |
Obtiene un valor booleano que especifica si la lista de control de acceso del sistema (SACL) asociada a este objeto ObjectSecurity está protegida. (Heredado de ObjectSecurity) |
AuditRulesModified |
Obtiene un valor booleano que especifica si las reglas de auditoría asociadas a este objeto ObjectSecurity se han modificado. (Heredado de ObjectSecurity) |
AuditRuleType |
Obtiene el tipo que utiliza la clase FileSystemSecurity para representar las reglas de auditoría. (Heredado de FileSystemSecurity) |
GroupModified |
Obtiene o establece un valor booleano que especifica si se ha modificado el grupo asociado al objeto protegible. (Heredado de ObjectSecurity) |
IsContainer |
Obtiene un valor booleano que especifica si este objeto ObjectSecurity es un objeto de contenedor. (Heredado de ObjectSecurity) |
IsDS |
Obtiene un valor booleano que especifica si este objeto ObjectSecurity es un objeto de directorio. (Heredado de ObjectSecurity) |
OwnerModified |
Obtiene o establece un valor booleano que especifica si se ha modificado el propietario del objeto que se puede proteger. (Heredado de ObjectSecurity) |
SecurityDescriptor |
Obtiene el descriptor de seguridad de esta instancia. (Heredado de ObjectSecurity) |
Métodos
AccessRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AccessControlType) |
Inicializa una nueva instancia de la clase FileSystemAccessRule que representa una nueva regla de control de acceso para el usuario indicado con los derechos de acceso, el control de acceso y los marcadores especificados. (Heredado de FileSystemSecurity) |
AddAccessRule(AccessRule) |
Agrega la regla de acceso especificada a la lista de control de acceso discrecional (DACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
AddAccessRule(FileSystemAccessRule) |
Agrega el permiso de la lista de control de acceso (ACL) especificado al archivo o directorio actual. (Heredado de FileSystemSecurity) |
AddAuditRule(AuditRule) |
Agrega la regla de auditoría especificada a la lista de control de acceso de sistema (SACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
AddAuditRule(FileSystemAuditRule) |
Agrega la regla de auditoría especificada al archivo o directorio actual. (Heredado de FileSystemSecurity) |
AuditRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AuditFlags) |
Inicializa una nueva instancia de la clase FileSystemAuditRule que representa la regla de auditoría especificada para el usuario especificado. (Heredado de FileSystemSecurity) |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetAccessRules(Boolean, Boolean, Type) |
Obtiene una colección de las reglas de acceso asociadas al identificador de seguridad especificado. (Heredado de CommonObjectSecurity) |
GetAuditRules(Boolean, Boolean, Type) |
Obtiene una colección de las reglas de auditoría asociadas al identificador de seguridad especificado. (Heredado de CommonObjectSecurity) |
GetGroup(Type) |
Obtiene el grupo primario asociado al propietario especificado. (Heredado de ObjectSecurity) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetOwner(Type) |
Obtiene el propietario asociado al grupo primario especificado. (Heredado de ObjectSecurity) |
GetSecurityDescriptorBinaryForm() |
Devuelve una matriz de valores de byte que representa la información del descriptor de seguridad para este objeto ObjectSecurity. (Heredado de ObjectSecurity) |
GetSecurityDescriptorSddlForm(AccessControlSections) |
Devuelve la representación del Lenguaje de definición de descriptores de seguridad (SDDL) de las secciones especificadas del descriptor de seguridad asociado a este objeto ObjectSecurity. (Heredado de ObjectSecurity) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ModifyAccess(AccessControlModification, AccessRule, Boolean) |
Aplica la modificación especificada a la lista de control de acceso discrecional (DACL) (DACL) asociada a este objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
ModifyAccessRule(AccessControlModification, AccessRule, Boolean) |
Aplica la modificación especificada a la lista de control de acceso discrecional (DACL) (DACL) asociada a este objeto ObjectSecurity. (Heredado de ObjectSecurity) |
ModifyAudit(AccessControlModification, AuditRule, Boolean) |
Aplica la modificación especificada a la lista de control de acceso del sistema (SACL) asociada a este objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
ModifyAuditRule(AccessControlModification, AuditRule, Boolean) |
Aplica la modificación especificada a la lista de control de acceso del sistema (SACL) asociada a este objeto ObjectSecurity. (Heredado de ObjectSecurity) |
Persist(Boolean, String, AccessControlSections) |
Guarda las secciones especificadas del descriptor de seguridad asociado a este objeto ObjectSecurity en el almacenamiento permanente. Se recomienda que los valores de los parámetros |
Persist(SafeHandle, AccessControlSections) |
Guarda las secciones especificadas del descriptor de seguridad asociado a este objeto NativeObjectSecurity en el almacenamiento permanente. Se recomienda que los valores de los parámetros |
Persist(SafeHandle, AccessControlSections, Object) |
Guarda las secciones especificadas del descriptor de seguridad asociado a este objeto NativeObjectSecurity en el almacenamiento permanente. Se recomienda que los valores de los parámetros |
Persist(String, AccessControlSections) |
Guarda las secciones especificadas del descriptor de seguridad asociado a este objeto NativeObjectSecurity en el almacenamiento permanente. Se recomienda que los valores de los parámetros |
Persist(String, AccessControlSections, Object) |
Guarda las secciones especificadas del descriptor de seguridad asociado a este objeto NativeObjectSecurity en el almacenamiento permanente. Se recomienda que los valores de los parámetros |
PurgeAccessRules(IdentityReference) |
Quita todas las reglas de acceso asociadas al objeto IdentityReference especificado. (Heredado de ObjectSecurity) |
PurgeAuditRules(IdentityReference) |
Quita todas las reglas de auditoría asociadas con el IdentityReference especificado. (Heredado de ObjectSecurity) |
ReadLock() |
Bloquea este objeto ObjectSecurity para acceso de lectura. (Heredado de ObjectSecurity) |
ReadUnlock() |
Desbloquea este objeto ObjectSecurity para acceso de lectura. (Heredado de ObjectSecurity) |
RemoveAccessRule(AccessRule) |
Quita las reglas de acceso que contienen el mismo identificador de seguridad y máscara de acceso que la regla de acceso especificada de la lista de control de acceso discrecional (DACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
RemoveAccessRule(FileSystemAccessRule) |
Quita todos permisos de la lista de control de acceso (ACL) Allow o Deny coincidentes del archivo o directorio actual. (Heredado de FileSystemSecurity) |
RemoveAccessRuleAll(AccessRule) |
Quita todas las reglas de acceso que tienen el mismo identificador de seguridad que la regla de acceso especificada de la lista de control de acceso discrecional (DACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
RemoveAccessRuleAll(FileSystemAccessRule) |
Quita todos los permisos de la lista de control de acceso (ACL) para el usuario especificado del archivo o directorio actual. (Heredado de FileSystemSecurity) |
RemoveAccessRuleSpecific(AccessRule) |
Quita todas las reglas de acceso que coinciden exactamente con la regla de acceso especificada de la lista de control de acceso discrecional (DACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
RemoveAccessRuleSpecific(FileSystemAccessRule) |
Quita un solo permiso de la lista de control de acceso (ACL) Allow o Deny coincidente del archivo o directorio actual. (Heredado de FileSystemSecurity) |
RemoveAuditRule(AuditRule) |
Quita las reglas de auditoría que contienen el mismo identificador de seguridad y máscara de acceso que la regla de auditoría especificada de la lista de control de acceso de sistema (SACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
RemoveAuditRule(FileSystemAuditRule) |
Quita todas las reglas de auditoría Allow o Deny coincidentes del archivo o directorio actual. (Heredado de FileSystemSecurity) |
RemoveAuditRuleAll(AuditRule) |
Quita todas las reglas de auditoría que tienen el mismo identificador de seguridad que la regla de auditoría especificada de la lista de control de acceso de sistema (SACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
RemoveAuditRuleAll(FileSystemAuditRule) |
Quita todas las reglas de auditoría para el usuario especificado del archivo o directorio actual. (Heredado de FileSystemSecurity) |
RemoveAuditRuleSpecific(AuditRule) |
Quita todas las reglas de auditoría que coinciden exactamente con la regla de auditoría especificada de la lista de control de acceso de sistema (SACL) asociada al objeto CommonObjectSecurity. (Heredado de CommonObjectSecurity) |
RemoveAuditRuleSpecific(FileSystemAuditRule) |
Quita una regla de auditoría Allow o Deny coincidente del archivo o directorio actual. (Heredado de FileSystemSecurity) |
ResetAccessRule(AccessRule) |
Quita todas las reglas de acceso de la lista de control de acceso discrecional (DACL) asociada al objeto CommonObjectSecurity y, a continuación, agrega la regla de acceso especificada. (Heredado de CommonObjectSecurity) |
ResetAccessRule(FileSystemAccessRule) |
Agrega el permiso de la lista de control de acceso (ACL) especificado al archivo o directorio actual y quita todos los permisos de ACL coincidentes. (Heredado de FileSystemSecurity) |
SetAccessRule(AccessRule) |
Quita todas las reglas de acceso que contienen el mismo identificador de seguridad y calificador que la regla de acceso especificada en la lista de control de acceso discrecional (DACL) asociada al objeto CommonObjectSecurity y, a continuación, agrega la regla de acceso especificada. (Heredado de CommonObjectSecurity) |
SetAccessRule(FileSystemAccessRule) |
Establece el permiso de la lista de control de acceso (ACL) especificado para el archivo o directorio actual. (Heredado de FileSystemSecurity) |
SetAccessRuleProtection(Boolean, Boolean) |
Establece o quita la protección de las reglas de acceso asociadas a este objeto ObjectSecurity. Los objetos primarios no pueden modificar las reglas de acceso protegido a través de la herencia. (Heredado de ObjectSecurity) |
SetAuditRule(AuditRule) |
Quita todas las reglas de auditoría que contienen el mismo identificador de seguridad y calificador que la regla de auditoría especificada en la lista de control de acceso de sistema (SACL) asociada al objeto CommonObjectSecurity y, a continuación, agrega la regla de auditoría especificada. (Heredado de CommonObjectSecurity) |
SetAuditRule(FileSystemAuditRule) |
Establece la regla de auditoría especificada para el archivo o directorio actual. (Heredado de FileSystemSecurity) |
SetAuditRuleProtection(Boolean, Boolean) |
Establece o quita la protección de las reglas de auditoría asociadas a este objeto ObjectSecurity. Los objetos primarios no pueden modificar las reglas de auditoría protegidas a través de la herencia. (Heredado de ObjectSecurity) |
SetGroup(IdentityReference) |
Establece el grupo primario del descriptor de seguridad asociado a este objeto ObjectSecurity. (Heredado de ObjectSecurity) |
SetOwner(IdentityReference) |
Establece el propietario del descriptor de seguridad asociado a este objeto ObjectSecurity. (Heredado de ObjectSecurity) |
SetSecurityDescriptorBinaryForm(Byte[]) |
Establece el descriptor de seguridad para este objeto ObjectSecurity de la matriz especificada de valores de bytes. (Heredado de ObjectSecurity) |
SetSecurityDescriptorBinaryForm(Byte[], AccessControlSections) |
Establece las secciones especificadas del descriptor de seguridad para este objeto ObjectSecurity de la matriz especificada de valores de bytes. (Heredado de ObjectSecurity) |
SetSecurityDescriptorSddlForm(String) |
Establece el descriptor de seguridad para este objeto ObjectSecurity de la cadena de Lenguaje de definición de descriptores de seguridad (SDDL) especificada. (Heredado de ObjectSecurity) |
SetSecurityDescriptorSddlForm(String, AccessControlSections) |
Establece las secciones especificadas del descriptor de seguridad para este objeto ObjectSecurity de la cadena de Lenguaje de definición de descriptores de seguridad (SDDL) especificada. (Heredado de ObjectSecurity) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
WriteLock() |
Bloquea este objeto ObjectSecurity para el acceso de escritura. (Heredado de ObjectSecurity) |
WriteUnlock() |
Desbloquea este objeto ObjectSecurity para el acceso de escritura. (Heredado de ObjectSecurity) |
Métodos de extensión
CreateDirectory(DirectorySecurity, String) |
Crea un directorio y lo devuelve, asegurándose de que se crea con la seguridad de directorio especificada. Si el directorio ya existe, se devuelve el directorio existente. |