1 votes

Utilisation de XCACLS pour définir des permissions avec des noms de fichiers longs

Nous devons définir les permissions sur les répertoires des utilisateurs sur un serveur Windows 2000. Cela se produit assez régulièrement et ils doivent également être définis dans l'ordre ci-dessous ou les sauvegardes se plantent. Ceci est le script de base :

XCACLS foldername /g Administrators:OF /T /C /Y  
XCACLS foldername /E /g "DOM\Enterprise Admins":OF /T /C /Y  
XCACLS foldername /E /g SYSTEM:OF /T /C /Y  
XCACLS foldername /E /g STAFF\username:ORWEDC /T /C /Y  

Mon problème est que ce script ne fonctionne pas sur tous les fichiers de certains répertoires. Les fichiers sur lesquels il semble échouer sont les noms de fichiers longs et les répertoires profondément imbriqués.

Quelqu'un connaît-il un script qui n'a pas peur des longs noms de fichiers et qui prend les grands chemins dans son élan ?

Je suis tombé sur un XCACLS.vbs script de Microsoft, mais il fonctionne différemment et je ne suis pas sûr qu'il fonctionne également avec ces grands noms de fichiers.

4voto

John Rennie Points 7728

Il existe une limite d'environ 260 caractères pour la longueur des noms de fichiers, mais il existe un moyen très astucieux et sournois de contourner cette limite :-)

La limite se situe dans le sous-système Win32 et non dans le noyau. Si vous préfixez le nom d'un fichier par \?\, le sous-système Win32 transmet le nom directement au noyau sans aucun prétraitement, et la limite ne s'applique pas. Le noyau a toujours une limite, mais c'est quelque chose de stupide comme 65 553 caractères.

Alors que :

xcacls C:\verylongname.txt

ne fonctionne pas, vous devriez trouver :

xcacls \\?\C:\verylongname.txt

fonctionne. Si vous utilisez un nom UNC, la syntaxe est la suivante :

xcacls \\?\UNC\server\share\verylongname.txt

NB : cela ne fonctionne qu'avec des noms entièrement qualifiés, c'est-à-dire commençant par une lettre de lecteur. Cela ne fonctionne pas avec toutes les applications de ligne de commande de Windows, mais avec beaucoup d'entre elles.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X