Avec l'outil Subinacl (se trouve dans le ressource KIT Windows2000 Server) est à la fois un outil de sécurité et de migration
Il permet de créer et de supprimer des permissions et de permuter des SID pour faciliter des migrations
Subinacl permet aussi de changer de propriétaire, de changer les ACE (access control entries), de tester l'accès et de sauvegarder et de restaurer des ACL
L'administrateur peux normalement examiner le fichier d'un utilisateur qu'en prenant possession, puis en s'octroyant un droit de regard. Ce faisant l'administrateur laisserait des indices de son passage, parce qu'il possèderait désormais le fichier et qu'il ne pourrait pas changer cette propriété parce que, en tant qu'administrateur, il peut seulement prendre la propriété, pas la donner ! GUI ne permet que la prise de propriété.
Mais SUBINACL oh miracle il fait les deux, OUI OUI VOUS AVEZ BIEN ENTENDU et bien d'autre chose!
Avec la commande /setowner, on peut changer la propriété d'un fichier, Ainsi pour faire de Léon le propriétaire du fichier testfile.txt dans un domaine nommé ADAM
Le point fort de Subinacl se situe dans ses vues des permissions et de la sécurité des objets en général. Les ACL régissent les permissions : chaque entrée sur un ACL est appelée ACE (Access Control Entry). Si, par exemple, les permissions sur un fichier dans un domaine donnent Full Control aux administrateurs et à Mary et donnent No Access à Jack, l’ACL du fichier contient trois ACE, qui décrivent l’accès pour les administrateurs, Mary et Jack. Pour afficher l’ACL d’un fichier, utilisez la commande
subinacl /verbose=1 /file c:\testfile.txt \display
où testfile.txt est le nom du fichier.
La figure 1 montre la sortie obtenue avec cette commande.
Figure 1 : ACL de Textfile.txt
====================
+File C:\testfile.txt
====================
/owner =builtin\administrators
/primary group =win2ktest\domain users
/audit ace count =Ø
/perm. ace count =3
/pace =win2ktest\jack Type=Øx1 Flags=Øx3
AccessMask=ØxfØ1ff
/pace =builtin\administrators Type=ØxØ Flags=Øx3
AccessMask=Øx1fØ1ff
/pace =win2ktest\mary Type=ØxØ Flags=Øx3
AccessMask=Øx1fØ1ff
On y voit le nom du fichier puis le nom du propriétaire. L’information de groupe primaire n’est généralement pertinente
que pour les applications POSIX. Ensuite, la sortie montre le nombre d’ACE d’audit (c’està- dire, les aaces) et les ACE
de permission (c’est-à-dire, perm, aces ou paces), puis donne des informations sur ces ACE. Win2K et NT vous permettent
de préciser exactement ce qu’il faut auditer - par exemple, quand Mary ne parvient pas à écrire dans le fichier ou que
John ne parvient pas à lire le fichier. Subinacl explique ces termes comme des ACE d’audit. Les ACE de permissions sont
les permissions qui permettent aux utilisateurs d’examiner ou de modifier un fichier ou un répertoire.
L’exemple contient trois ACE de permission parce que l’ACL contient un ACE pour les administrateurs, un pour Mary,
et un pour John. Chacune des trois lignes suivantes s’applique à un ACE de permission. La valeur Type indique si
l’ACE est un Deny ACE ou un Allow ACE : 0x1 représente un Deny ACE, 0x0 représente un Allow ACE. La valeur AccessMask
définit les permissions de l’ACE. Pour décoder la valeur AccessMask en permissions spécifiques, vous pouvez examiner
les bits présents dans la valeur ou exécuter la commande Subinacl avec l’option /verbose= 2, qui affiche la permission
sous forme de texte, au lieu de l’option /verbose=1. Ces valeurs représentent les permissions de plus bas niveau possibles
pour les fichiers. Les administrateurs tendent à raisonner en termes de permissions plus agrégées, qui comprennent une ou
plusieurs permissions de bas niveau. Par exemple, la permission Read est constituée des permissions de bas niveau Read Data,
Read Attributes, Read Extended Attributes et Read Permissions. (Pour visualiser les permissions de bas niveau par
l’intermédiaire de l’ACL GUI d’un fichier, ouvrez Windows Explorer, ouvrez la boîte de dialogue Properties de n’importe
quel fichier ou dossier NTFS et allez à l’onglet Security. Cliquez sur Advanced pour ouvrir la boîte de dialogue Advanced
Control Settings, cliquez sur n’importe quel ACE puis cliquez sur View/Edit.)
Subinacl permet de modifier des permissions de fichiers et de répertoires. Subinacl peut faire tout ce que peuvent faire
Xcacls et Cacls : il peut modifier un ACE existant ou créer un nouveau Allow ou Deny ACE. La commande suivante ajoute
un ACE accordant la permission Read à un nouvel utilisateur, Larry, dans une société nommée Example.
subinacl /file c:\testfile.txt
/grant=example\larry=R
L’option /file indique à subinacl que la commande agira sur un fichier ACE. Les autres options sont un service système
(/service), une clé de registre (/keyreg ou /subkeyreg), un ensemble de dossiers et les éventuels sous-dossiers qu’ils
contiennent (/subdirectories), un dossier partagé (/share), un share de fichier cluster (/clustershare), un objet kernel
(/kernelobject), ou la métabase IIS (/metabase). Le paramètre c:\testfile.txt précise le fichier sur lequel la commande
agira ; le nom de fichier peut contenir des jokers.
L’option /grant ordonne à subinacl de créer un nouveau Allow ACE plutôt que de créer un nouveau Deny ACE (/deny) ou de
modifier un ACE existant (/replace). Le paramètre suivant indique le nom du compte, et le dernier caractère indique
la permission à accorder. Subinacl reconnaît R (Read), F (full control), C (change, identique modify),
P (change permissions), O (take ownership), X (execute), E (read and execute), W (write) et D (delete).
Bien que Subinacl ne vous permette de voir que les permissions de bas niveau, vous ne pouvez octroyer que
des permissions de haut niveau. Le paramètre modèle /grant=example\larry=R ordonne à Subinacl de créer un ACE qui
donne la permission Read (C) au compte example\larry.
Pour dénier les permissions, utilisez la commande /deny. La commande suivante interdit à Larry d’écrire dans le fichier :
subinacl /file c:\testfile.txt
/deny=example\larry=W
Vous pouvez spécifier de multiples Allow ACE ou Deny ACE. Par exemple, pour accorder un accès Read et Write à Larry,
il suffit d’accoler les paramètres de permission, comme
dans example\larry=RW. Toutefois, Subinacl peut traiter les deux types d’ACE pour la même personne – ainsi, vous pourriez vouloir
donner à Larry l’accès Read, mais pas l’accès Write, mais vous ne pouvez pas utiliser une combinaison de Allow et Deny ACE.
(Xcacls et Cacls partagent cette limitation, probablement parce que les trois outils sont apparus pour la première fois dans NT 4.0,
dans laquelle la notion d’Allow et Deny ACE n’était pas courante. Peutêtre que la prochaine livraison d’outils du kit
de ressources comblera cette lacune.)
Vous pouvez utiliser des jokers pour changer des permissions sur plusieurs fichiers d’un répertoire, mais qu’advient-il si
vous voulez apporter des modifications à tout un disque ou à tout un arbre de répertoires dans un disque ? Dans ce cas,
utilisez l’option /subdirectories de Subinacl. Supposons que vous vouliez accorder à Mary Full Control de tous les
sousdossiers et fichiers qui se trouvent dans C:\testfolder. Tapez
subinacl /subdirectories
c:\testfolder\* /grant=example\mary=F
Notez que vous devez placer la barre oblique inverse et le joker après c:\testfolder, faute de quoi Subinacl appliquera
la permission au dossier spécifié plutôt qu’à tous les fichiers et sous-dossiers qu’il contient.
Supposons que vous ayez un certain nombre de fichiers auxquels une seule employée – Laurie – peut accéder. Laurie démissionne
et est remplacée par Janet, laquelle a besoin d’accéder à tous ces fichiers. La solution de ce problème est parfois appelée
re-ACLing parce qu’elle oblige à modifier les ACL du fichier un à un à partir de la GUI – très très embêtant.
Je suppose que vous possédez les fichiers. Dans le cas contraire, vous devez en prendre possession – puis user votre souris
à faire le re-ACLing à partir de la GUI.) Alors qu’avec Subinacl, vous pouvez faire la même chose dans une seule ligne :
subinacl /file * /replace
example\laurie=example\janet
Cette commande examine tous les ACE sur tous les fichiers du répertoire courant et remplace le SID de Laurie par le SID de
Janet dans chaque ACE qui fait référence à Laurie. Vous pouvez même utiliser un SID de remplacement provenant d’un autre
domaine, à la condition que les deux domaines se fassent mutuellement confiance.
Supposons qu’au lieu de remplace le SID de Laurie par celui de Janet, vous vouliez supprimer tous les ACE qui font référence
à Laurie. Vous pouvez alors utiliser l’option /revoke de Subinacl. Ainsi, pour supprimer toutes les traces de Laurie dans
le lecteur C:d’un serveur, tapez
subinacl /subdirectories c:\*
/revoke=example\laurie
Subinacl possède aussi une option presque identique, /suppresssid, dotée d’une fonction supplémentaire. Avec ce commutateur,
quand le compte utilisateur révoqué possède le fichier, Subinacl remplace le propriétaire du fichier par le groupe Everyone.
Il vous est peut-être arrivé d’examiner la liste de permissions d’un fichier et de voir, à la place de l’icône utilisateur
habituelle, la silhouette d’une tête avec le nom Account Unknown? Cette icône signifie que le compte qui bénéficiait de la
permission a été supprimé.
Supposons qu’au lieu de désactiver le compte utilisateur de Laurie, vous l’ayez supprimé. Quand vous ouvrez la GUI ACL sur
un fichier qui avait un ACE pour Laurie, Windows Explorer voit un ACE avec un SID particulier – celui provenant de l’ancien
compte de Laurie – et interpelle le DC (domain controller) : « Eh ! J’ai obtenu ce SID... Quel est le nom humain de ce compte ?
» (Vous constaterez peut-être ce comportement sur un domaine occupé : quand vous ouvrez la boîte de dialogue Properties
d’un fichier et allez à l’onglet Security, vous voyez d’abord des SID puis, après quelques secondes, les SID sont remplacés
par des noms de comptes. Le délai résulte du temps qu’il faut au serveur pour demander au DC d’examiner les noms de comptes
et le temps qu’il faut au DC pour répondre.) Comme le compte de Laurie est supprimé, il n’existe pas de nom à associer
au SID spécifié – d’où le label Account Unknown. Au bout d’un certain temps, les ACL de votre entreprise risquent d’être
surchargés par ces reliquats. Subinacl peut les nettoyer avec l’option /cleandeletedsidsfrom (qui doit préciser le domaine) :
subinacl /subdirectories c:\*
/cleandeletedsidsfrom=example
Subinacl est une commande extrêmement utile qui peut d’ailleurs faire beaucoup plus que ce que je viens de décrire.
Je reviendrai sur d’autres possibilités de cet outil dans mon prochain article. Mais n’attendez pas jusque-là – utilisez
le commutateur /help de Subinacl pour faire votre propre découverte. Vous pouvez aussi utiliser le commutateur /testmode
de Subinacl pour essayer la commande en mode test :
subinacl /testmode /subdirectories
c:\testfolder\* /grant=example\mary=F
Ce mode donne la même sortie que le mode normal, mais Subinacl n’effectue aucun changement sur le disque.
Usage : SubInAcl [/view_mode] [/test_mode] [/output=FileName] /object_type object_name
[/action[=parameter] [/action[=parameter]]...