Set-Acl

Modulo: Microsoft.PowerShell.Security

Cambia il descrittore di sicurezza di un elemento specificato, come un file o una chiave di registro.

Sintassi

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

Descrizione

La cmdlet Set-Acl cambia il descrittore di sicurezza di un elemento specificato, come un file o una chiave di registro, per farlo corrispondere ai valori di un descrittore di sicurezza fornito.

Per usare Set-Acl, usate il parametro Path o InputObject per identificare l’elemento il cui descrittore di sicurezza volete cambiare. Poi, usate i parametri AclObject o SecurityDescriptor per fornire un descrittore di sicurezza che abbia i valori che volete applicare. Set-Acl applica il descrittore di sicurezza fornito. Usa il valore del parametro AclObject come modello e cambia i valori nel descrittore di sicurezza dell’elemento per corrispondere ai valori nel parametro AclObject.

Esempi

Esempio 1: Copiare un descrittore di sicurezza da un file ad un altro

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

Questi comandi copiano i valori dal descrittore di sicurezza del file Dog.txt al descrittore di sicurezza del file Cat.txt. Quando i comandi sono completi, i descrittori di sicurezza dei file Dog.txt e Cat.txt sono identici.

Il primo comando usa il cmdlet Get-Acl per ottenere il descrittore di sicurezza del file Dog.txt.L’operatore di assegnazione (=) memorizza il descrittore di sicurezza nel valore della variabile $DogACL.

Il secondo comando usa Set-Acl per cambiare i valori nell’ACL di Cat.txt ai valori in$DogACL.

Il valore del parametro Path è il percorso del file Cat.txt. Il valore del parametro AclObjectparameter è l’ACL del modello, in questo caso, l’ACL di Dog.txt come salvato nella variabile $DogACL.

Esempio 2: usare l’operatore pipeline per passare un descrittore

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

Questo comando è quasi uguale al comando dell’esempio precedente, tranne che usa l’operatore apipeline (|) per inviare il descrittore di sicurezza da un comando Get-Acl a un comando Set-Acl.

Il primo comando usa il cmdlet Get-Acl per ottenere il descrittore di sicurezza del file Dog.txt. L’operatorepipeline (|) passa un oggetto che rappresenta il descrittore di sicurezza di Dog.txt alla cmdletSet-Acl.

Il secondo comando usa Set-Acl per applicare il descrittore di sicurezza di Dog.txt a Cat.txt.Quando il comando viene completato, le ACL dei file Dog.txt e Cat.txt sono identiche.

Esempio 3: applicare un descrittore di sicurezza a più file

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

Questi comandi applicano i descrittori di sicurezza del file File0.txt a tutti i file di testo nella C:\Tempdirectory e a tutte le sue sottodirectory.

Il primo comando ottiene il descrittore di sicurezza del file File0.txt nella directory corrente e usa l’operatore di assegnazione (=) per memorizzarlo nella variabile $NewACL.

Il primo comando nella pipeline usa il cmdlet Get-ChildItem per ottenere tutti i file di testo nellaC:\Temp directory. Il parametro Recurse estende il comando a tutte le sottodirectory diC:\temp. Il parametro Include limita i file recuperati a quelli con l’estensione .txt. Il parametro Force ottiene i file nascosti, che altrimenti sarebbero esclusi. (Non potete usare c:\temp\*.txt, perché il parametro Recurse funziona sulle directory, non sui file.)

L’operatore della pipeline (|) invia gli oggetti che rappresentano i file recuperati al Set-Aclcmdlet, che applica il descrittore di sicurezza nel parametro AclObject a tutti i file nella pipeline.

In pratica, è meglio usare il parametro WhatIf con tutti i comandi Set-Acl che possono interessare più di un elemento. In questo caso, il secondo comando nella pipeline sarebbeSet-Acl -AclObject $NewAcl -WhatIf. Questo comando elenca i file che sarebbero influenzati dal comando. Dopo aver esaminato il risultato, puoi eseguire nuovamente il comando senza il parametro WhatIf.

Esempio 4: Disabilita l’ereditarietà e preserva le regole di accesso ereditate

$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

Questi comandi sono disabiliteranno l’ereditarietà dell’accesso dalle cartelle genitori, pur preservando le regole di accesso ereditate esistenti.

Il primo comando usa il cmdlet Get-Acl per ottenere il descrittore di sicurezza del file Dog.txt.

In seguito, vengono create delle variabili per convertire le regole di accesso ereditate in regole di accesso esplicite. Per proteggere le regole d’accesso associate a questo dall’ereditarietà, impostate la variabile $isProtected su$true.Per permettere l’ereditarietà, impostate $isProtected su $false. Per maggiori informazioni, vedi protezione delle regole d’accesso. La variabile $preserveInheritance impostata su $true per preservare le regole d’accesso ereditate; false per rimuovere le regole d’accesso ereditate. Poi la protezione della regola d’accesso viene aggiornata usando il metodoSetAccessRuleProtection().

L’ultimo comando usa Set-Acl per applicare il descrittore di sicurezza di a Dog.txt. Quando il comando viene completato, le ACL di Dog.txt che sono state ereditate dalla cartella Pets saranno applicate direttamente a Dog.txt, e le nuove politiche di accesso aggiunte a Pets non cambieranno l’accesso a Dog.txt.

Esempio 5: concedere agli amministratori il pieno controllo del file

$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

Questo comando concederà al gruppo BUILTIN\Administrators il pieno controllo del file Dog.txt.

Il primo comando usa il cmdlet Get-Acl per ottenere il descrittore di sicurezza del file Dog.txt.

Sono create le variabili successive per garantire al gruppo BUILTIN\Administrators il controllo completo del file Dog.txt. La variabile $identity impostata sul nome dell’account auser. La variabile $fileSystemRights impostata su FullControl, e può essere uno qualsiasi dei valori diFileSystemRights che specifica il tipo di operazione associata alla regola di accesso. La variabile $type impostata su “Allow” specifica se permettere o negare l’operazione. La variabile $fileSystemAccessRuleArgumentList è un elenco di argomenti da passare quando si crea il nuovo oggetto FileSystemAccessRule. Poi viene creato un nuovo oggetto FileSystemAccessRule, e l’oggetto FileSystemAccessRule viene passato al metodoSetAccessRule(), aggiunge la nuova regola di accesso.

L’ultimo comando usa Set-Acl per applicare il descrittore di sicurezza di Dog.txt. Quando il comando viene completato, il gruppo BUILTIN\Administrators avrà il pieno controllo di Dog.txt.

Parameters

-AclObject

Specifica un ACL con i valori delle proprietà desiderate. Set-Aclcambia l’ACL dell’elemento specificato dal parametro Path o InputObject in modo che corrisponda ai valori nell’oggetto di sicurezza specificato.

Puoi salvare l’output di un comando Get-Aclin una variabile e poi usare il parametro AclObject per passare la variabile, o digitare un comando Get-Acl.

Tipo: Oggetto
Posizione: 1
Valore predefinito: Nessuno
Accetta ingresso pipeline: Vero
Accetta caratteri jolly: Falso

-ClearCentralAccessPolicy

Rimuove la politica di accesso centrale dall’elemento specificato.

A partire da Windows Server 2012, gli amministratori possono usare Active Directory e Group Policy per impostare i criteri di accesso centrali per utenti e gruppi. Per ulteriori informazioni, vedere Controllo dinamico dell’accesso: Panoramica dello scenario.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Tipo: SwitchParameter
Posizione: Nominato
Valore predefinito: Falso
Accetta ingresso pipeline: Falso
Accetta caratteri jolly: Falso
-Confirm

Vi chiede conferma prima di eseguire il cmdlet.

Type: SwitchParameter
Alias: cf
Posizione: Nominato
Valore predefinito: Falso
Accetta input pipeline: Falso
Accetta caratteri jolly: Falso
-Exclude

Omette gli elementi specificati. Il valore di questo parametro qualifica il parametro Path. Inserisci un elemento o uno schema apath, come *.txt. I caratteri jolly sono permessi.

Type: String
Posizione: Named
Valore predefinito: None
Accetta l’input della pipeline: False
Accetta caratteri jolly: True
-Filter

Specifica un filtro nel formato o nella lingua del provider. Il valore di questo parametro qualifica il parametroPath. La sintassi del filtro, compreso l’uso di caratteri jolly, dipende dal fornitore. I filtri sono più efficienti di altri parametri, perché il provider li applica quando recupera gli oggetti, piuttosto che avere PowerShell che filtra gli oggetti dopo che sono stati recuperati.

Type: Stringa
Posizione: Nominato
Valore predefinito: Nessuno
Accetta ingresso pipeline: False
Accetta caratteri jolly: True
-Include

Cambia solo gli elementi specificati. Il valore di questo parametro qualifica il parametro Path. Inserisci un elemento o uno schema di percorso, come *.txt. I caratteri jolly sono permessi.

Tipo: Stringa
Posizione: Nominato
Valore predefinito: Nessuno
Accetta ingresso pipeline: False
Accetta caratteri jolly: True
-InputObject

Cambia il descrittore di sicurezza dell’oggetto specificato. Inserisci una variabile che contenga l’oggetto o un comando che ottenga l’oggetto.

Non puoi inserire l’oggetto da cambiare in Set-Acl. Invece, usa il parametro InputObject esplicitamente nel comando.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Tipo: PSObject
Posizione: 0
Valore predefinito: Nessuno
Accetta input pipeline: True
Accetta caratteri jolly: False
-LiteralPath

Cambia il descrittore di sicurezza dell’elemento specificato. A differenza di Path, il valore del parametroLiteralPath è usato esattamente come viene digitato. Nessun carattere viene interpretato come un carattere jolly. Se il percorso include caratteri di escape, racchiudilo tra virgolette singole (').Le virgolette singole dicono a PowerShell di non interpretare alcun carattere come sequenze di escape.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Type: String
Alias: PSPath
Posizione: Nominato
Valore predefinito: Nessuno
Accetta ingresso pipeline: Vero
Accetta caratteri jolly: Falso
-Passthru

Ritorna un oggetto che rappresenta il descrittore di sicurezza modificato. Per impostazione predefinita, questo cmdlet non genera alcun output.

Tipo: SwitchParameter
Posizione: Nominato
Valore predefinito: Nessuno
Accetta ingresso pipeline: Falso
Accetta caratteri jolly: Falso
-Path

Cambia il descrittore di sicurezza dell’elemento specificato. Inserisci il percorso di un elemento, come il percorso di un file o di una chiave di registro. I caratteri jolly sono permessi.

Se passi un oggetto di sicurezza a Set-Acl (usando i parametri AclObject o SecurityDescriptor o passando un oggetto di sicurezza da Get-Acl a Set-Acl), e ometti il parametro Path (nome e valore), Set-Acl usa il percorso che è incluso nell’oggetto di sicurezza.

Type: String
Position: 0
Valore predefinito: None
Accetta ingresso pipeline: Vero
Accetta caratteri jolly: Vero
-WhatIf

Mostra cosa accadrebbe se il cmdlet fosse eseguito. Il cmdlet non viene eseguito.

Type: SwitchParameter
Alias: wi
Posizione: Nominato
Valore predefinito: False
Accetta input pipeline: False
Accetta caratteri jolly: False

Inputs

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

Puoi inviare un oggetto ACL o un descrittore di sicurezza a Set-Acl.

Outputs

FileSecurity

Di default, Set-Acl non genera alcun output. Tuttavia, se usi il parametro Passthru, genera un oggetto di sicurezza. Il tipo di oggetto di sicurezza dipende dal tipo di oggetto.

Note

Questo cmdlet è disponibile solo su piattaforme Windows.

Il cmdlet Set-Acl è supportato dal file system PowerShell e dai provider del registro. Come tale, puoi usarlo per cambiare i descrittori di sicurezza di file, directory e chiavi di registro.

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.