Set-Acl

Moduł: Microsoft.PowerShell.Security

Zmienia deskryptor zabezpieczeń określonego elementu, takiego jak plik lub klucz rejestru.

Syntax

Set-Acl <String> <Object> >] >] 
Set-Acl <PSObject> <Object> >] >] 
Set-Acl -LiteralPath <String> <Object> >] >] 

Opis

Ccmdlet Set-Acl zmienia deskryptor zabezpieczeń określonego elementu, takiego jak plik lub klucz rejestru, aby dopasować go do wartości w deskryptorze zabezpieczeń dostarczonym przez użytkownika.

Aby użyć Set-Acl, użyj parametru Path lub InputObject do zidentyfikowania elementu, którego deskryptor zabezpieczeń chcesz zmienić. Następnie użyj parametrów AclObject lub SecurityDescriptor, aby dostarczyć deskryptor zabezpieczeń, który ma wartości, które chcesz zastosować. Set-Acl stosuje dostarczony deskryptor bezpieczeństwa. Używa wartości parametru AclObject jako modelu i zmienia wartości w deskryptorze zabezpieczeń elementu, aby dopasować je do wartości w parametrze AclObject.

Przykłady

Przykład 1: Kopiowanie deskryptora zabezpieczeń z jednego pliku do drugiego

$DogACL = Get-Acl -Path "C:\Dog.txt"Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

Te polecenia kopiują wartości z deskryptora zabezpieczeń pliku Dog.txt do deskryptora zabezpieczeń pliku Cat.txt. Po wykonaniu poleceń deskryptory zabezpieczeń plików Dog.txt i Cat.txt są identyczne.

Pierwsze polecenie wykorzystuje cmdlet Get-Acl do uzyskania deskryptora zabezpieczeń pliku Dog.txt.Operator przypisania (=) zapisuje deskryptor zabezpieczeń w wartości zmiennej $DogACL.

Drugie polecenie wykorzystuje Set-Acl do zmiany wartości w ACL pliku Cat.txt na wartości w$DogACL.

Wartością parametru Path jest ścieżka do pliku Cat.txt. Wartością parametru AclObjectparameter jest ACL modelu, w tym przypadku ACL pliku Dog.txt zapisana w zmiennej $DogACL.

Przykład 2: Użyj operatora potokowego do przekazania deskryptora

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

To polecenie jest prawie takie samo jak polecenie w poprzednim przykładzie, z tym że wykorzystuje operator apipeline (|) do przesłania deskryptora zabezpieczeń z polecenia Get-Acl do polecenia Set-Acl.

Pierwsze polecenie wykorzystuje cmdlet Get-Acl do uzyskania deskryptora zabezpieczeń pliku Dog.txt. Operatorpipeline (|) przekazuje obiekt reprezentujący deskryptor zabezpieczeń Dog.txt do cmdletaSet-Acl.

Drugie polecenie używa Set-Acl do zastosowania deskryptora zabezpieczeń pliku Dog.txt do pliku Cat.txt.Po zakończeniu działania polecenia listy ACL plików Dog.txt i Cat.txt są identyczne.

Przykład 3: Zastosuj deskryptor zabezpieczeń do wielu plików

$NewAcl = Get-Acl File0.txtGet-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

Te polecenia stosują deskryptory zabezpieczeń w pliku File0.txt do wszystkich plików tekstowych w katalogu C:\Temp i wszystkich jego podkatalogach.

Pierwsze polecenie pobiera deskryptor zabezpieczeń pliku File0.txt w bieżącym katalogu i wykorzystuje operator przypisania (=) do zapisania go w zmiennej $NewACL.

Pierwsze polecenie w potoku wykorzystuje cmdlet Get-ChildItem do uzyskania wszystkich plików tekstowych w kataloguC:\Temp. Parametr Recurse rozszerza polecenie na wszystkie podkatalogi kataloguC:\temp. Parametr Include ogranicza liczbę pobieranych plików do tych z rozszerzeniem nazwy pliku .txt. Parametr Force pobiera pliki ukryte, które w przeciwnym razie zostałyby wykluczone. (Nie można użyć parametru c:\temp\*.txt, ponieważ parametr Recurse działa na katalogach, a nie na plikach.)

Operator rurociągu (|) wysyła obiekty reprezentujące pobrane pliki do polecenia Set-Acl, które stosuje deskryptor zabezpieczeń w parametrze AclObject do wszystkich plików w rurociągu.

W praktyce najlepiej jest używać parametru WhatIf ze wszystkimi poleceniami Set-Acl, które mogą mieć wpływ na więcej niż jeden element. W tym przypadku, drugim poleceniem w potoku byłobySet-Acl -AclObject $NewAcl -WhatIf. To polecenie zawiera listę plików, na które wpłynęłoby polecenie. Po przejrzeniu wyniku można ponownie uruchomić polecenie bez parametru WhatIf.

Przykład 4: Wyłącz dziedziczenie i zachowaj dziedziczone reguły dostępu

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"$isProtected = $true$preserveInheritance = $true$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

Te polecenia wyłączą dziedziczenie dostępu z folderów nadrzędnych, zachowując jednocześnie istniejące dziedziczone reguły dostępu.

Pierwsze polecenie wykorzystuje cmdlet Get-Acl do uzyskania deskryptora zabezpieczeń pliku Dog.txt.

Następnie tworzone są zmienne do konwersji dziedziczonych reguł dostępu na jawne reguły dostępu. Toprotect protect the access rules associated with this from inheritance, set the $isProtected variable to$true.to allow inheritance, set $isProtected to $false. Aby uzyskać więcej informacji, zobacz Ustaw ochronę reguł dostępu.Zmienna $preserveInheritance ustawiona na $true, aby zachować dziedziczone reguły dostępu; false, aby usunąć dziedziczone reguły dostępu. Następnie ochrona reguł dostępu jest aktualizowana przy użyciu metodySetAccessRuleProtection().

Ostatnie polecenie używa Set-Acl do zastosowania deskryptora zabezpieczeń do pliku Dog.txt. Kiedy polecenie zostanie wykonane, listy ACL dla pliku Dog.txt, które zostały odziedziczone z folderu Pets, zostaną zastosowane bezpośrednio do pliku Dog.txt, a nowe zasady dostępu dodane do folderu Pets nie zmienią dostępu do pliku Dog.txt.

Przykład 5: Przyznanie administratorom pełnej kontroli nad plikiem

$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"# Set properties$identity = "BUILTIN\Administrators"$fileSystemRights = "FullControl"$type = "Allow"# Create new rule$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList# Apply new rule$NewAcl.SetAccessRule($fileSystemAccessRule)Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl

To polecenie przyzna grupie BUILTIN\Administrators pełną kontrolę nad plikiem Dog.txt.

Pierwsze polecenie wykorzystuje cmdlet Get-Acl, aby uzyskać deskryptor zabezpieczeń pliku Dog.txt.

Następnie tworzone są zmienne, aby przyznać grupie BUILTIN\Administrators pełną kontrolę nad plikiem Dog.txt. Zmienna $identity ustawiona na nazwę konta auser. Zmienna$fileSystemRights ustawiona na FullControl i może być dowolną z wartościFileSystemRights, która określa typ operacji związanej z regułą dostępu. Zmienna $type ustawiona na „Allow” określa, czy zezwolić na operację, czy jej odmówić. Zmienna $fileSystemAccessRuleArgumentList jest listą argumentów, które mają być przekazane podczas tworzenia nowego obiektu FileSystemAccessRule. Następnie tworzony jest nowy obiekt FileSystemAccessRule, a obiekt FileSystemAccessRule jest przekazywany do metodySetAccessRule(), dodaje nową regułę dostępu.

Ostatnie polecenie używa Set-Acl do zastosowania deskryptora bezpieczeństwa do Dog.txt. Po zakończeniu działania polecenia grupa BUILTIN Administratorzy będzie miała pełną kontrolę nad plikiem Dog.txt.

Parameters

-AclObject

Wyznacza ACL z żądanymi wartościami właściwości. Set-Acl zmienia ACL elementu określonego przez parametr Path lub InputObject, aby odpowiadał wartościom w określonym obiekcie zabezpieczeń.

Można zapisać dane wyjściowe polecenia Get-Acl w zmiennej, a następnie użyć parametru AclObject do przekazania zmiennej lub wpisać polecenie Get-Acl.

Type: Object
Position: 1
Wartość domyślna: None
Accept pipeline input: True
Accept wildcard characters: False
-ClearCentralAccessPolicy

Usuwa centralną politykę dostępu z określonego elementu.

Począwszy od systemu Windows Server 2012, administratorzy mogą używać usługi Active Directory i zasad grupy do ustawiania centralnych zasad dostępu dla użytkowników i grup. Aby uzyskać więcej informacji, zobaczDynamiczna kontrola dostępu: Scenario Overview.

Ten parametr został wprowadzony w Windows PowerShell 3.0.

Type: SwitchParameter
Position: Named
Wartość domyślna: False
Accept pipeline input: False
Accept wildcard characters: False

-Confirm

Prosi o potwierdzenie przed uruchomieniem cmdleta.

Type: SwitchParameter
Aliases: cf
Position: Named
Wartość domyślna: False
Accept pipeline input: False
Accept wildcard characters: False
-Exclude

Omożliwia usunięcie określonych elementów. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, na przykład *.txt. Dozwolone są symbole wieloznaczne.

Type: String
Position: Named
Wartość domyślna: None
Accept pipeline input: False
Accept wildcard characters: True
-Filter

Określa filtr w formacie lub języku dostawcy. Wartość tego parametru kwalifikuje parametrPath. Składnia filtru, w tym użycie symboli wieloznacznych, zależy od dostawcy. Filtry są bardziej wydajne niż inne parametry, ponieważ dostawca stosuje je podczas pobierania obiektów, a nie jest zmuszany przez PowerShell do filtrowania obiektów po ich pobraniu.

Type: String
Position: Named
Domyślna wartość: None
Accept pipeline input: False
Accept wildcard characters: True
-Include

Zmienia tylko określone elementy. Wartość tego parametru kwalifikuje parametr Path.Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Dozwolone są symbole wieloznaczne.

Type: String
Position: Named
Wartość domyślna: None
Accept pipeline input: False
Accept wildcard characters: True
-InputObject

Zmienia deskryptor zabezpieczeń określonego obiektu. Podaj zmienną, która zawiera obiekt lub polecenie, które pobiera obiekt.

Nie można przesyłać obiektu, który ma zostać zmieniony, do Set-Acl. Zamiast tego należy użyć parametru InputObject parameterexplicitly w poleceniu.

Ten parametr został wprowadzony w Windows PowerShell 3.0.

Type: PSObject
Position: 0
Default value: None
Accept pipeline input: True
Accept wildcard characters: False
-LiteralPath

Zmienia deskryptor zabezpieczeń określonego elementu. W przeciwieństwie do Path, wartość parametruLiteralPath jest używana dokładnie w takiej postaci, w jakiej została wpisana. Żadne znaki nie są interpretowane jako znaki wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów (').Pojedynczy cudzysłów mówi PowerShellowi, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Ten parametr został wprowadzony w Windows PowerShell 3.0.

Type: String
Alias: PSPath
Pozycja: Named
Default value: None
Accept pipeline input: True
Accept wildcard characters: False
-Passthru

Zwraca obiekt reprezentujący deskryptor zabezpieczeń, który został zmieniony. Domyślnie ten cmdlet nie generuje żadnych danych wyjściowych.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Path

Zmienia deskryptor zabezpieczeń określonego elementu. Wprowadź ścieżkę do elementu, taką jak ścieżka do pliku lub klucza rejestru. Dozwolone są symbole wieloznaczne.

Jeśli do Set-Acl zostanie przekazany obiekt zabezpieczeń (za pomocą parametrów AclObject lubSecurityDescriptor albo przez przekazanie obiektu zabezpieczeń z polecenia Get-Acl do Set-Acl), a pominięty zostanie parametr Path (nazwa i wartość), Set-Acl użyje ścieżki zawartej w obiekcie zabezpieczeń.

Type: String
Position: 0
Default value: None
Accept pipeline input: True
Accept wildcard characters: True
-WhatIf

Pokazuje, co by się stało, gdyby cmdlet został uruchomiony. Polecenie nie jest uruchamiane.

Type: SwitchParameter
Aliases: wi
Position: Named
Wartość domyślna: False
Accept pipeline input: False
Accept wildcard characters: False

Inputs

System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor

Do Set-Acl można potokować obiekt ACL lub deskryptor zabezpieczeń.

Outputs

FileSecurity

Domyślnie Set-Acl nie generuje żadnych danych wyjściowych. Jednakże, jeśli użyjesz parametru Passthru, wygeneruje on obiekt bezpieczeństwa. Typ obiektu zabezpieczeń zależy od typu elementu.

Wskazówki

Ten cmdlet jest dostępny tylko na platformach Windows.

Ccmdlet Set-Acl jest obsługiwany przez system plików PowerShell i dostawców rejestru. W związku z tym można go używać do zmiany deskryptorów zabezpieczeń plików, katalogów i kluczy rejestru.

  • Get-Acl
  • FileSystemAccessRule
  • ObjectSecurity.SetAccessRuleProtection
  • FileSystemRights

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.