Il existe un module nommé NTFSSECURITY permettant une manipulation simplifié des droits NTFS sur des dossiers et/ou fichiers.
Ce module peut être trouvé sur la galerie Technet http://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85/file/48905/1/NTFSSecurity%201.3.zip
Une fois téléchargé, mettez le dossier du module NTFSSecurity ici C:\Windows\System32\WindowsPowerShell\v1.0\Modules
Maintenant, nous allons charger le module dans powershell
Une fois celui-ci chargé, de nouvelles cmdlets sont désormais disponible.
…
Récupération du SID d’un utilisateur dans une variable.
Nous allons définir dans une variable $SamMember le nom de l’utilisateur que nous voulons récupérer.
Ensuite nous allons utiliser l’object System.Security.principal.NtAccount(« domaine »,utilisateur) qui va nous permettre de récupérer notre utilisateur dans un domaine spécifié.
Maintenant, récupérons le SID de notre utilisateur grâce à une méthode de notre variable $account.
Nous avons ainsi récupéré dans notre variable $accountsid le SID de notre utilisateur spécifié dans la variable $SamMember.
Modification du propriétaire d’un répertoire.
Avec le chargement du module NTFSSecurity, une cmdlet get-owner est apparue nous permettant de connaitre simplement le propriétaire d’un élément (fichier ou répertoire).
Exemple :
Nous allons maintenant changer le propriétaire de ce répertoire avec l’utilisateur contenu dans notre variable $accountsid
Voyons maintenant le résultat :
Le propriétaire à bien été changé.
Modification des ACE du répertoire.
Nous allons maintenant modifier les ACE du répertoire de façon à ne laisser que l’utilisateur de notre variable $accountsid en FullControl et aucune autre ACE.
Rajout de l’ACE :
Suppression des autres ACE :
(Ce lien permet de connaitre les SID connu dans les OS Windows http://support.microsoft.com/kb/243330)
Si on consulte maintenant nos ACE, on peut remarquer que notre ajout d’ACE s’est bien passé mais que la suppression des autres ACE ne s’est pas déroulée correctement.
Cela est normal, car ses ACE sont hérité du répertoire parent. Il faut donc pour cela retirer l’héritage.
Et maintenant si on essaie de nouveau de supprimer nos ACE on peut remarquer que celle-ci ont bien disparu.
Il est maintenant facile d’imaginer la création d’un script pouvant réappliquer correctement des droits sur une toute une arborescence de répertoires profils en récupérant par exemple le nom du répertoire profil et en réaffectant celui-ci dans une boucle pour notre variable $account.
Ainsi, l’utilisateur authentifié en user2, ne pourra accéder qu’à son répertoire profil.