Set-Acl

Modul: Microsoft.PowerShell.Security

Schimbă descriptorul de securitate al unui element specificat, cum ar fi un fișier sau o cheie de registru.

Sintaxa

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

Descriere

Cmodelul Set-Acl modifică descriptorul de securitate al unui element specificat, cum ar fi un fișier sau o cheie de registru, pentru a se potrivi cu valorile dintr-un descriptor de securitate pe care îl furnizați.

Pentru a utiliza Set-Acl, utilizați parametrul Path sau InputObject pentru a identifica elementul al cărui descriptor de securitate doriți să îl modificați. Apoi, utilizați parametrii AclObject sau SecurityDescriptor pentru a furniza un descriptor de securitate care are valorile pe care doriți să le aplicați. Set-Acl aplică descriptorul de securitate care este furnizat. Folosește valoarea parametrului AclObject ca model și modifică valorile din descriptorul de securitate al elementului pentru a se potrivi cu valorile din parametrul AclObject.

Exemple

Exemplu 1: Copierea unui descriptor de securitate dintr-un fișier în altul

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

Aceste comenzi copiază valorile din descriptorul de securitate al fișierului Dog.txt în descriptorul de securitate al fișierului Cat.txt. La finalizarea comenzilor, descriptorii de securitate ai fișierelor Dog.txtși Cat.txt sunt identici.

Prima comandă utilizează cmdlet-ul Get-Acl pentru a obține descriptorul de securitate al fișierului Dog.txt.Operatorul de atribuire (=) stochează descriptorul de securitate în valoarea variabilei $DogACL.

Cea de-a doua comandă utilizează Set-Acl pentru a schimba valorile din ACL a fișierului Cat.txt cu valorile din$DogACL.

Valoarea parametrului Path este calea către fișierul Cat.txt. Valoarea parametrului AclObjectparametru este ACL-ul modelului, în acest caz, ACL-ul din Dog.txt, așa cum este salvat în variabila $DogACL.

Exemplu 2: Utilizați operatorul pipeline pentru a transmite un descriptor

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

Această comandă este aproape la fel ca și comanda din exemplul anterior, cu excepția faptului că utilizează operatorul apipeline (|) pentru a trimite descriptorul de securitate de la o comandă Get-Acl la o comandă Set-Acl.

Prima comandă utilizează cmdlet-ul Get-Acl pentru a obține descriptorul de securitate al fișierului Dog.txt. Operatorulpipeline (|) transmite un obiect care reprezintă descriptorul de securitate al fișierului Dog.txt către cmdlet-ul Set-Acl.

Cea de-a doua comandă utilizează Set-Acl pentru a aplica descriptorul de securitate al fișierului Dog.txt la Cat.txt.La finalizarea comenzii, ACL-urile fișierelor Dog.txt și Cat.txt sunt identice.

Exemplu 3: Aplicarea unui descriptor de securitate la mai multe fișiere

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

Aceste comenzi aplică descriptorii de securitate în fișierele File0.txt la toate fișierele text din directorul C:\Temp și la toate subdirectoarele acestuia.

Prima comandă obține descriptorul de securitate al fișierului File0.txt din directorul curent și utilizează operatorul de atribuire (=) pentru a-l stoca în variabila $NewACL.

Prima comandă din conductă utilizează cmdlet Get-ChildItem pentru a obține toate fișierele text din directorulC:\Temp. Parametrul Recurse extinde comanda la toate subdirectoarele dinC:\temp. Parametrul Include limitează fișierele recuperate la cele cu extensia de nume de fișier .txt. Parametrul Force obține fișierele ascunse, care altfel ar fi excluse. (Nu puteți utiliza c:\temp\*.txt, deoarece parametrul Recurse funcționează asupra directoarelor, nu asupra fișierelor.)

Operatorul pipeline (|) trimite obiectele care reprezintă fișierele recuperate către Set-Aclcmdlet, care aplică descriptorul de securitate din parametrul AclObject tuturor fișierelor din pipeline.

În practică, cel mai bine este să utilizați parametrul WhatIf cu toate comenzile Set-Acl care pot afecta mai mult de un element. În acest caz, a doua comandă din pipeline ar fiSet-Acl -AclObject $NewAcl -WhatIf. Această comandă enumeră fișierele care ar fi afectate decomandă. După ce examinați rezultatul, puteți rula din nou comanda fără parametrul WhatIf.

Exemplu 4: Dezactivarea moștenirii și păstrarea regulilor de acces moștenite

$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

Aceste comenzi este vor dezactiva moștenirea accesului de la folderele părinte, păstrând în același timp regulile de acces moștenite existente.

Prima comandă utilizează cmdlet-ul Get-Acl pentru a obține descriptorul de securitate al fișierului Dog.txt.

În continuare, se creează variabile pentru a converti regulile de acces moștenite în reguli de acces explicite. Pentru a proteja regulile de acces asociate cu acesta de moștenire, setați variabila $isProtected la $true. pentru a permite moștenirea, setați $isProtected la $false. Pentru mai multe informații, a se vedea setul de protecție a regulilor de acces.variabila $preserveInheritance setată la $true pentru a păstra regulile de acces moștenite; false pentru a elimina regulile de acces moștenite. Apoi, protecția regulilor de acces este actualizată folosind metodaSetAccessRuleProtection().

Ultima comandă folosește Set-Acl pentru a aplica descriptorul de securitate din la Dog.txt. La finalizarea comenzii, ACL-urile din Dog.txt care au fost moștenite de la folderul Pets vor fi aplicate direct la Dog.txt, iar noile politici de acces adăugate la Pets nu vor modifica accesul la Dog.txt.

Exemplu 5: Acordarea controlului total al fișierului pentru administratori

$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

Această comandă va acorda grupului BUILTIN\Administrators controlul total al fișierului Dog.txt.

Prima comandă utilizează cmdlet-ul Get-Acl pentru a obține descriptorul de securitate al fișierului Dog.txt.

Sunt create următoarele variabile pentru a acorda grupului BUILTIN\Administrators controlul deplin al fișierului Dog.txt. Variabila $identity setată la numele contului auser. Variabila$fileSystemRights setată la FullControl și poate fi oricare dintre valorile FileSystemRights care specifică tipul de operațiune asociat cu regula de acces. Variabila $type setată la „Allow” pentru a preciza dacă se permite sau nu operațiunea. Variabila $fileSystemAccessRuleArgumentListeste o listă de argumente care trebuie transmisă la crearea noului obiect FileSystemAccessRule. Apoi se creează un nou obiect FileSystemAccessRule, iar obiectul FileSystemAccessRule este trecut la metodaSetAccessRule(), adaugă noua regulă de acces.

Ultima comandă folosește Set-Acl pentru a aplica descriptorul de securitate din la Dog.txt. Când comanda se finalizează, grupul BUILTIN\Administrators va avea control total asupra Dog.txt.

Parameters

-AclObject

Specifică o ACL cu valorile proprietăților dorite. Set-Aclmodifică ACL-ul elementului specificat de parametrul Path sau InputObject pentru a se potrivi cu valorile din obiectul de securitate specificat.

Puteți salva ieșirea unei comenzi Get-Acl într-o variabilă și apoi să utilizați parametrul AclObject pentru a trece variabila, sau să tastați o comandă Get-Acl.

Tip: Object
Poziție: 1
Valoare implicită: None
Acceptă intrarea în conductă: True
Acceptă caractere wildcard: False
-ClearCentralAccessPolicy

Înlătură politica de acces central de la elementul specificat.

Începând cu Windows Server 2012, administratorii pot utiliza Active Directory și Group Policy pentru a setapolitici de acces centralizate pentru utilizatori și grupuri. Pentru mai multe informații, consultațiControlul dinamic al accesului: Prezentare generală a scenariului.

Acest parametru a fost introdus în Windows PowerShell 3.0.

Tip: SwitchParameter
Poziție: Denumit
Valoare implicită: False
Acceptă intrarea în conductă: False
Accept wildcard characters: False
-Confirm

Vă solicită confirmarea înainte de a rula cmdlet-ul.

Type: SwitchParameter
Aliase: cf
Position: Named
Valoare implicită: False
Acceptă intrări de tip pipeline: False
Acceptă caractere wildcard: False
-Exclude

Omite elementele specificate. Valoarea acestui parametru califică parametrul Path. Introduceți elementul sau modelul apath, cum ar fi *.txt. Sunt permise caractere wildcards.

Tip: Șir de caractere
Poziție: Numit
Valoare implicită: Nimic
Aceptă intrarea în conductă: False
Acceptă caractere wildcard: True
-Filter

Specifică un filtru în formatul sau limba furnizorului. Valoarea acestui parametru califică parametrulPath. Sintaxa filtrului, inclusiv utilizarea caracterelor sălbatice, depinde de furnizor. Filtrele sunt mai eficiente decât alți parametri, deoarece furnizorul le aplică atunci când recuperează obiectele, în loc ca PowerShell să filtreze obiectele după ce acestea sunt recuperate.

Type: String
Position: Numit
Valoare implicită: None
Acceptă intrarea în conductă: False
Acceptă caractere wildcard: True
-Include

Modifică numai elementele specificate. Valoarea acestui parametru califică parametrul Path. introduceți un element sau un model de cale, cum ar fi *.txt. Sunt permise caractere wildcards.

Tip: Șir de caractere
Poziție: Numit
Valoare implicită: Nimic
Aceptă intrarea în conductă: False
Acceptă caractere wildcard: True
-InputObject

Schimbă descriptorul de securitate al obiectului specificat. Introduceți o variabilă care conține obiectulsau o comandă care obține obiectul.

Nu se poate pipeta obiectul care urmează să fie modificat la Set-Acl. În schimb, utilizați parametrul InputObjectexplicit în comandă.

Acest parametru a fost introdus în Windows PowerShell 3.0.

Tip: PSObject
Poziție: 0
Valoare implicită: None
Acceptă intrarea în conductă: True
Acceptă caractere wildcard: False
-LiteralPath

Schimbă descriptorul de securitate al elementului specificat. Spre deosebire de Path, valoarea parametruluiLiteralPath este utilizată exact așa cum este tastată. Niciun caracter nu este interpretat cawildcards. Dacă calea include caractere de evadare, includeți-o între ghilimele simple (').Ghilimelele simple îi spun lui PowerShell să nu interpreteze niciun caracter ca secvență de evadare.

Acest parametru a fost introdus în Windows PowerShell 3.0.

Type: String
Aliase: PSPath
Positie: Numit
Valoare implicită: Nimic
Acceptă intrare în conductă: True
Acceptă caractere wildcard: False
-Passthru

Întoarce un obiect care reprezintă descriptorul de securitate care a fost modificat. În mod implicit, acest cmdletnu generează niciun rezultat.

Tip: SwitchParameter
Poziție: Numit
Valoare implicită: None
Acceptă intrarea în conductă: False
Acceptă caractere wildcard: False
-Path

Schimbă descriptorul de securitate al elementului specificat. Introduceți calea către un element, cum ar fi calea către un fișier sau o cheie de registru. Sunt permise caractere wildcards.

Dacă treceți un obiect de securitate către Set-Acl (fie prin utilizarea parametrilor AclObject sauSecurityDescriptor, fie prin trecerea unui obiect de securitate din Get-Acl către Set-Acl) și omiteți parametrul Path (nume și valoare), Set-Acl utilizează calea care este inclusă în acest obiect de securitate.

Type: String
Position: 0
Valoare implicită: None
Acceptă intrarea în conductă: True
Accept wildcard characters: True
-WhatIf

Află ce s-ar întâmpla dacă cmdlet-ul ar fi executat. Nu se execută cmdlet-ul.

Type: SwitchParameter
Aliase: wi
Position: Named
Valoare implicită: False
Acceptă intrare pipeline: False
Acceptă caractere wildcard: False

Intrări

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

Puteți direcționa un obiect ACL sau un descriptor de securitate către Set-Acl.

Outputs

FileSecurity

În mod implicit, Set-Acl nu generează nicio ieșire. Cu toate acestea, dacă utilizați parametrul Passthru,acesta generează un obiect de securitate. Tipul obiectului de securitate depinde de tipul elementului.

Note

Acest cmdlet este disponibil numai pe platformele Windows.

Ccmdlet Set-Acl este suportat de sistemul de fișiere PowerShell și de furnizorii de registru. Ca atare, îl puteți utiliza pentru a modifica descriptorii de securitate ai fișierelor, directoarelor și cheilor de registru.

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

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.