J'essaie de tester certaines exceptions de système de fichiers dans une application basée sur Java.
Je dois trouver un moyen de créer un répertoire situé sous% TMP% défini en lecture seule.
Essentiellement sur les plateformes UNIX / POSIX, je peux effectuer un chmod -w et obtenir cet effet. Sous Windows 7 / NTFS, ceci est bien sûr une histoire différente.
Je rencontre plusieurs problèmes à ce sujet. Mon utilisateur a le droit "administratif" (bien que cela ne soit pas toujours le cas) et, en tant que tel, le répertoire est créé avec une liste de contrôle d'accès comprenant:
- AUTORITÉ NT \ SYSTÈME
- BUILTIN \ Administrateurs
- <mon utilisateur actuel>
Existe-t-il un moyen d'utiliser icacls pour obtenir essentiellement ce répertoire dans un état où il est en lecture seule? PÉRIODE, effectuer mon test, puis restaurer la liste de contrôle d'accès pour la supprimer?
EDIT Grâce aux informations fournies par @Ansgar Wiechers, j'ai pu proposer une solution.
J'ai utilisé ce qui suit:
icacls dirname /deny %username%:(WD)
Dans la page située ici, j'ai trouvé ceci dans la section des remarques:
icacls preserves the canonical order of ACE entries as:
* Explicit denials
* Explicit grants
* Inherited denials
* Inherited grants
En exécutant la commande icalcs ci-dessus, j'ai pu définir la capacité de l'utilisateur actuel à écrire ou à ajouter des fichiers (WD) au répertoire à refuser.
Ensuite, il était question de le renvoyer à un état post-test:
icacls dirname /reset /t /c
Terminé