FileSystemRights Перечисление

Определение

Определяет права доступа, которые используются при создании правил доступа и аудита.

Это перечисление поддерживает побитовую комбинацию значений его членов.

public enum class FileSystemRights
[System.Flags]
public enum FileSystemRights
[System.Flags]
[System.Security.SecurityCritical]
public enum FileSystemRights
[<System.Flags>]
type FileSystemRights = 
[<System.Flags>]
[<System.Security.SecurityCritical>]
type FileSystemRights = 
Public Enum FileSystemRights
Наследование
FileSystemRights
Атрибуты

Поля

AppendData 4

Право добавлять данные в конец файла.

ChangePermissions 262144

Право на изменение правил безопасности и аудита, связанных с файлом или папкой.

CreateDirectories 4

Задает право на создание папки. Для этого права требуется значение Synchronize.

CreateFiles 2

Право на создание файла. Для этого права требуется значение Synchronize.

Delete 65536

Право на удаление папки или файла.

DeleteSubdirectoriesAndFiles 64

Право на удаление папки и всех файлов в ней.

ExecuteFile 32

Право на запуск файла приложения.

FullControl 2032127

Право на полный контроль над папкой или файлом, а также на изменение правил управления доступом и аудита. Это значение представляет право выполнять над файлом любые операции и является объединением всех входящих в перечисление прав.

ListDirectory 1

Право на чтение содержимого каталога.

Modify 197055

Право на чтение, запись, получение содержимого папки, удаление папок и файлов, а также на запуск файлов приложений. Это право включает права ReadAndExecute, Write и Delete.

Read 131209

Право открывать и копировать папки и файлы с разрешением только для чтения. Это право включает в себя права ReadData, ReadExtendedAttributes, ReadAttributes и ReadPermissions.

ReadAndExecute 131241

Право открывать и копировать и файлы с разрешением только для чтения, а также запускать файлы приложений. Это право включает права Read и ExecuteFile.

ReadAttributes 128

Право открывать и копировать атрибуты файловой системы для папки или файла. Например, это значение дает право на просмотр даты создания или изменения файла. Оно не включает в себя право на чтение данных, дополнительных атрибутов файловой системы или правил доступа и аудита.

ReadData 1

Право открывать и копировать файл или папку. Оно не включает в себя право на чтение атрибутов файловой системы, дополнительных атрибутов файловой системы или правил доступа и аудита.

ReadExtendedAttributes 8

Право открывать и копировать дополнительные атрибуты файловой системы для папки или файла. Например, оно позволяет просматривать сведения об авторе или содержимом. Оно не включает в себя право на чтение данных, атрибутов файловой системы или правил доступа и аудита.

ReadPermissions 131072

Право открывать и копировать правила доступа и аудита для папки или файла. Оно не включает в себя право на чтение данных, атрибутов файловой системы и дополнительных атрибутов файловой системы.

Synchronize 1048576

Указывает, может ли приложение ждать синхронизации дескриптора файла с завершением операции ввода-вывода. Это значение автоматически задается при разрешении доступа и автоматически исключается при отклонении доступа.

TakeOwnership 524288

Право менять владельца файла или папки. Следует иметь в виду, что владельцы ресурса имеют полный доступ к этому ресурсу.

Traverse 32

Право на получение списка содержимого папки и на запуск содержащихся в этой папке приложений.

Write 278

Право создавать папки и файлы, а также добавлять данные в файлы и удалять данные из файлов. Это право включает в себя права WriteData, AppendData, WriteExtendedAttributes и WriteAttributes.

WriteAttributes 256

Право открытия и записи атрибутов файловой системы для папки или файла. Оно не включает в себя право на запись данных, дополнительных атрибутов файловой системы или правил доступа и аудита.

WriteData 2

Право открытия и записи для файла или папки. Оно не включает в себя право на открытие и запись атрибутов файловой системы, дополнительных атрибутов файловой системы или правил доступа и аудита.

WriteExtendedAttributes 16

Право открытия и записи дополнительных атрибутов файловой системы для папки или файла. Оно не включает в себя право на запись данных, атрибутов файловой системы или правил доступа и аудита.

Примеры

В следующем примере перечисление FileSystemRights используется для указания правила доступа, а затем удаления правила доступа из файла. Для выполнения этого примера необходимо указать допустимую учетную запись пользователя или группы.

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified file for the specified account.

void AddFileSecurity(String^ fileName, String^ account, 
                        FileSystemRights rights, AccessControlType controlType)
{
    // Get a FileSecurity object that represents the 
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    // Add the FileSystemAccessRule to the security settings. 
    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

// Removes an ACL entry on the specified file for the specified account.

void RemoveFileSecurity(String^ fileName, String^ account, 
                        FileSystemRights rights, AccessControlType controlType)
{

    // Get a FileSecurity object that represents the 
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    // Remove the FileSystemAccessRule from the security settings. 
    fSecurity->RemoveAccessRule(gcnew FileSystemAccessRule
                                      (account,rights, controlType));

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.xml";

        Console::WriteLine("Adding access control entry for " + fileName);

        // Add the access control entry to the file.
        AddFileSecurity(fileName, "MYDOMAIN\\MyAccount", 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from " + fileName);

        // Remove the access control entry from the file.
        RemoveFileSecurity(fileName, "MYDOMAIN\\MyAccount", 
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string fileName = "test.xml";

                Console.WriteLine("Adding access control entry for "
                    + fileName);

                // Add the access control entry to the file.
                AddFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from "
                    + fileName);

                // Remove the access control entry from the file.
                RemoveFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        // Adds an ACL entry on the specified file for the specified account.
        public static void AddFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);
        }

        // Removes an ACL entry on the specified file for the specified account.
        public static void RemoveFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Remove the FileSystemAccessRule from the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);
        }
    }
}
Imports System.IO
Imports System.Security.AccessControl



Module FileExample

    Sub Main()
        Try
            Dim fileName As String = "test.xml"

            Console.WriteLine("Adding access control entry for " & fileName)

            ' Add the access control entry to the file.
            AddFileSecurity(fileName, "DomainName\AccountName", _
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " & fileName)

            ' Remove the access control entry from the file.
            RemoveFileSecurity(fileName, "DomainName\AccountName", _
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub


    ' Adds an ACL entry on the specified file for the specified account.
    Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, _
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
  
        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

        ' Add the FileSystemAccessRule to the security settings. 
        Dim accessRule As FileSystemAccessRule = _
            New FileSystemAccessRule(account, rights, controlType)

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub


    ' Removes an ACL entry on the specified file for the specified account.
    Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String, _
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        ' Get a FileSecurity object that represents the 
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

        ' Remove the FileSystemAccessRule from the security settings. 
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(account, _
            rights, controlType))

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub
End Module

Комментарии

Перечисление FileSystemRights указывает, какие действия файловой системы разрешены для определенной учетной записи пользователя и какие действия файловой системы проверяются для определенной учетной записи пользователя.

Используйте перечисление FileSystemRights при создании правила доступа с классом FileSystemAccessRule или при создании правила аудита с классом FileSystemAuditRule .

Это перечисление содержит несколько значений прав детализированной системы и несколько значений, которые являются сочетанием этих детализированных значений. Проще использовать такие сочетания значений, как FullControl, Readи Write, а не указывать каждое значение компонента отдельно.

Права CreateDirectories и CreateFiles права требуют права Synchronize . Если при создании файла или каталога явно не задано Synchronize значение, оно автоматически задается автоматически.

Применяется к