Mi è capitato che un virus cambiasse tutti i permessi dei files EXE nella cartella di Windows, con le conseguenze che potete immaginare.
Quindi ho creato questa funzione per Powershell che modifica i premessi di un file.
La sintassi è questa:
ImpostaAutorizzazioni -Percorso "percorso_del_file" -IdentitaDaAutorizzare "Utente_o_gruppo" -TipoAutorizzazione "Tipo_di_permesso"
Dove il tipo di permesso può essere: FullControl, ReadAndExecute, Read.
Ecco come realizzare la funzione in Powershell:
function ImpostaAutorizzazioni() { Param( [Parameter(Mandatory=$True,Position=1)] [string]$Percorso, [Parameter(Mandatory=$True,Position=2)] [string]$IdentitaDaAutorizzare, [Parameter(Mandatory=$True,Position=3)] [ValidateSet("FullControl", "ReadAndExecute", "Read")] [string]$TipoAutorizzazione ) $Acl = (Get-Item $Percorso).GetAccessControl('Access') Write-Host "Percorso:" $Percorso "Utente da autorizzare:" $IdentitaDaAutorizzare "Tipo autorizzazione:" $TipoAutorizzazione $RegolaAccesso = New-Object system.security.accesscontrol.filesystemaccessrule( $IdentitaDaAutorizzare,$TipoAutorizzazione,"Allow" ) $Acl.SetAccessRule($RegolaAccesso) Write-Host $Acl $Acl | Set-Acl $Percorso }
Esempi:
Per permettere all’utente TrustedInstaller il controllo completo del file attrib.exe:
ImpostaAutorizzazioni "C:\Windows\System32\attrib.exe" "NT SERVICE\TrustedInstaller" "FullControl"
Per permettere al gruppo di utenti NOMEDOMINIO\Domain Admins il permesso di lettura/scrittura del file attrib.exe:
ImpostaAutorizzazioni "C:\Windows\System32\attrib.exe" "NOMEDOMINIO\Domain Admins" "ReadAndExecute"
Per cambiare il permesso a tutti i files exe presenti nella cartella c:\programmi\adobe e relative sottocartelle ed assegnare a Everyone il controllo di sola lettura:
get-childitem "c:\programmi\adobe" -recurse -include *.exe | % {ImpostaAutorizzazioni $_.fullname "Everyone" "Read"}
P.S.
Per cambiare i permessi potrebbe essere necessario anche assumere la proprietà (ownership) del file.
In questo caso basterà usare il comando takeown /f nomefile