Gérer les autorisations avec PowerShell
Le module Microsoft.PowerShell.Security inclut de nombreuses applets de commande intégrées que vous pouvez utiliser pour gérer les fonctionnalités de sécurité de base sur un ordinateur Windows. Pour examiner les cmdlets incluses dans ce module, vous pouvez entrer la commande suivante :
Get-command -module Microsoft.PowerShell.Security
Pour gérer les autorisations d’accès sur un fichier ou un dossier, vous utilisez les applets de commande suivantes incluses dans le module Microsoft.PowerShell.Security .
Tableau 1 : Applets de commande incluses dans le module Microsoft.PowerShell.Security
| Applet de commande | Description |
|---|---|
| Get-Acl | La cmdlet récupère les objets représentant le descripteur de sécurité d’un fichier ou d’une ressource. Le descripteur de sécurité inclut les listes de contrôle d’accès (ACL) de la ressource. La liste de contrôle d’accès répertorie les autorisations d’accès à la ressource dont disposent les utilisateurs et les groupes. |
| Set-Acl | La cmdlet modifie le descripteur de sécurité d’un élément spécifié, par exemple, un fichier, un dossier ou une clé de Registre, pour le faire correspondre aux valeurs d’un descripteur de sécurité que vous fournissez. |
Récupération d’autorisations d’accès
L’applet de commande Get-Acl affiche le descripteur de sécurité d’un objet. Par exemple, vous pouvez récupérer le descripteur de sécurité pour un dossier nommé C :\Folder1. Par défaut, la sortie s’affiche dans un format de table. Si vous canalisez la sortie vers un format de liste, vous pouvez examiner toutes les informations incluses dans le descripteur de sécurité.
Get-Acl -Path C:\Folder1|Format-List
La commande suivante vous permet de récupérer une liste plus détaillée de la propriété d’accès indiquant les droits d’accès au système de fichiers, le type de contrôle d’accès et les paramètres d’héritage pour l’objet spécifié :
(Get-Acl -Path C:\Folder1).Access
Vous pouvez également récupérer uniquement des propriétés d’accès spécifiques dans un format de table, comme illustré dans l’exemple suivant :
(Get-Acl -Path C:\Folder1).Access|Format-Table IdentityReference, FileSystemRights, AccessControlType, IsInherited
Mise à jour des autorisations d’accès aux fichiers et aux dossiers
L’applet de commande Set-Acl est utilisée pour appliquer des modifications à la liste de contrôle d’accès sur un objet spécifique. Le processus de modification des autorisations d’accès aux fichiers ou aux dossiers comprend les étapes suivantes :
- Utilisez Get-Acl pour récupérer les règles de liste de contrôle d’accès existantes pour l’objet.
- Créez une nouvelle FileSystemAccessRule à appliquer à l'objet.
- Ajouter la nouvelle règle au jeu d’autorisations de l’ACL existante.
- Utilisez Set-Acl pour appliquer la nouvelle liste de contrôle d’accès au fichier ou dossier existant.
L’exemple suivant affecte l’autorisation Modify à C :\Folder1 pour un utilisateur local nommé User1.
La première étape consiste à déclarer une variable qui inclut les règles de liste de contrôle d’accès existantes pour Folder1.
$ACL = Get-Acl -Path C:\Folder1
La deuxième étape consiste à créer une variable FileSystemAccessRule définissant les spécifications d’accès à appliquer :
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("User1","Modify","Allow")
La troisième étape consiste à ajouter la nouvelle règle d’accès aux règles de liste de contrôle d’accès existantes pour Folder1 :
$ACL.SetAccessRule($AccessRule)
Enfin, vous devez appliquer la nouvelle liste de contrôle d’accès au Dossier1 :
$ACL | Set-Acl -Path C:\Folder1
Remarque
Vous pouvez également configurer une règle d’accès pour supprimer les autorisations Folder1 pour User1 en modifiant simplement l’étape 3 sur $ACL.RemoveAccessRule($AccessRule).
Copie d’un descripteur de sécurité vers un nouvel objet
Si vous souhaitez copier le descripteur de sécurité exact dans un nouvel objet, vous pouvez utiliser une combinaison des commandes Get-Acl et Set-Acl comme suit :
Get-Acl -Path C:\Folder1|Set-ACL -Path C:\Folder2
Ces commandes copient les valeurs du descripteur de sécurité de C :\Folder1 vers le descripteur de sécurité de Folder2. Une fois l’exécution des commandes terminée, les descripteurs de sécurité des deux dossiers sont identiques.