Showacls.exe et net.exe fournissent la base du script GetAccess.cmd. Celui-ci produit un fichier texte donnant la liste de tous les fichiers et dossiers auxquels l'utilisateur ou le groupe spécifié a accès dans le répertoire spécifié et tous ses sous-répertoires. Quand vous lancez le script, vous devez fournir trois paramètres :
GetAccess.cmd
le nom de l’utilisateur ou
le nom du groupe pour lequel vous effectuez
l’audit (username_or_groupname),
le chemin vers le répertoire
que vous voulez scruter (path_
to_scan) et le nom du fichier de sortie
(outputfile). Vous pouvez inclure le
commutateur /d facultatif si vous voulez
que l’audit ne porte que sur les dossiers
et pas sur les fichiers. Vous pouvez
aussi inclure le commutateur
/verbose facultatif si vous voulez que la
console affiche les actions du script au
fur et à mesure. Ainsi, la commande
qui lance le script a la syntaxe suivante :
GetAccess.cmd
username_or_groupname
path-to-scan outputfile
[/d] [/verbose]
La logique du script est simple. Elle
fonctionne de la manière suivante :
- Le script supprime le fichier de sortie
s’il existe déjà . Pour cela, le script
utilise la commandeIf Exist %outputfile% Del
%outputfile% /q - Le script prépare les commutateurs
pour la commande Dir. Comme le
montre le listing 2, la variable dirflag
définit les commutateurs d’après les
paramètres que vous fournissez
quand vous lancez le script. Le commutateur
/s ordonne à la commande
Dir de montrer tout le contenu, y
compris les sous-répertoires et le
commutateur /b ordonne à la commande
Dir de présenter la sortie
dans le format le plus simple (c’està –
dire, sans information d’en-tête ou
de résumé). Si vous avez défini le paramètre
/d quand vous avez lancé le
script, le script ajoute le commutateur
/ad pour indiquer que vous ne
voulez afficher que les répertoires.
Le script utilise la variable file
folder pour présenter correctement
l’information d’état sur l’écran.
Cette information indique si le script
est en train de traiter des fichiers et
des dossiers ou uniquement des
dossiers. - Le script stocke le nom d’utilisateur
ou le nom de groupe spécifié et
deux noms de groupes intégrés
(c’est-à -dire, Everyone et Authenticated User) dans un fichier temporaire
(%temp%\getaccess.$$$). Le
script utilisera ultérieurement les
noms dans ce fichier conjointement
à showacls.exe pour déterminer si
l’utilisateur ou le groupe spécifié a
accès à un fichier ou dossier.
Comme le montre le listing 3, le
script utilise la commande Net User
pour déterminer si le compte spécifié
est un compte utilisateur ou un
compte groupe. Si la commande Net
User ne renvoie pas une erreur, c’est
qu’on a affaire à un compte utilisateur
; dans le cas contraire, le
compte spécifié est considéré comme
un compte groupe. S’il s’agit
d’un compte utilisateur, le script
passe à l’étape 4. S’il s’agit d’un
compte groupe, le script saute à
l’étape 5. - Quand le compte spécifié est un
compte utilisateur, le script ajoute
au fichier temporaire les groupes
auxquels l’utilisateur appartient. Le
code du listing 1, dont j’ai déjà parlé,
accomplit cette tâche. - Le script obtient les noms des fichiers
et des dossiers (ou des seuls
dossiers si vous avez inclus le commutateur
/d) dans le répertoire spécifié.
Le script utilise la variable dirflag
qu’il a définie précédemment
conjointement aux commandes For
et Dir pour obtenir ces noms :For /f « tokens=* » %%i in (‘Dir
%dirflag% %path_to_scan%’)
Do Call:checkaccess « %%i »La commande For ordonne au script
de prendre chaque ligne dans la sortie
de la commande Dir, de stocker
cette ligne dans la variable %i, et
d’exécuter le code dans le module
:checkaccess pour l’appliquer à
cette ligne. - Les modules :checkaccess et :hasaccess
constituent la partie la plus importante
du script parce qu’ils identifient
les fichiers et les dossiers
auxquels l’utilisateur ou le groupe a
accès. Bien que le code soit important,
il est simple et direct, comme le
montre le listing 4.
Une fois que le script a passé le nom
du fichier ou du dossier au module
:checkaccess, le module stocke
le nom dans une variable nommée
target. Le module :checkaccess fait
ensuite une boucle au travers de
chaque compte dans le fichier temporaire
et lui applique le module :hasaccess.
Le module :hasaccess compare
la sortie de la commande
Showacls pour le fichier ou le dossier
en cours au compte courant
dans le fichier temporaire en filtrant
la sortie par l’intermédiaire de deux
commandes Find.
Si l’une ou l’autre des commandes
Find renvoie un code sortie de 0, il y
a correspondance. Dans ce cas, le
script envoie ce nom de fichier ou
de dossier au fichier de sortie et à
l’écran de console.
Téléchargez cette ressource
Reporting Microsoft 365 & Exchange
Comment bénéficier d’une vision unifiée de vos messageries, protéger vos données sensibles, vous conformer aisément aux contraintes réglementaires et réduire votre empreinte carbone ? Testez la solution de reporting complet de l’utilisation de Microsoft 365 et Exchange en mode Cloud ou on-premise.
Les articles les plus consultés
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Cybersécurité Active Directory et les attaques de nouvelle génération
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Et si les clients n’avaient plus le choix ?
- Chiffrements symétrique vs asymétrique
Les plus consultés sur iTPro.fr
- Les entreprises, victimes des coûts cachés des attaques de ransomwares
- Tendances des budgets des DSI en 2025
- Révolutionner la gestion du stockage à l’ère de l’IA et de la transformation numérique : vers une infrastructure agile et automatisée
- Multicloud Computing : Êtes-vous prêt pour la prochaine nouvelle vague informatique ?
- IA : les PME devraient adopter des outils NoCode appropriés