Поделиться через


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 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)
        {
            FileInfo fileInfo = new(fileName);
            FileSecurity fSecurity = fileInfo.GetAccessControl();

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

            // Set the new access settings.
            fileInfo.SetAccessControl(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)
        {
            FileInfo fileInfo = new(fileName);
            FileSecurity fSecurity = fileInfo.GetAccessControl();

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

            // Set the new access settings.
            fileInfo.SetAccessControl(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)

        Dim fileInfo As New FileInfo(fileName)
        Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()

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

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        fileInfo.SetAccessControl(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)

        Dim fileInfo As New FileInfo(fileName)
        Dim fSecurity As FileSecurity = fileInfo.GetAccessControl()

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

        ' Set the new access settings.
        fileInfo.SetAccessControl(fSecurity)

    End Sub
End Module

Комментарии

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

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

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

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

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