Comment accorder l'autorisation aux utilisateurs pour un répertoire en utilisant la ligne de commande dans Windows?
Comment puis-je accorder des autorisations à un utilisateur sur un répertoire (lecture, écriture, modification) en utilisant la ligne de commande Windows?
15 réponses
Depuis Vista, cacls est obsolète. Voici les deux premières lignes d'aide:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
Vous devriez utiliser icacls à la place. Voici comment vous accordez à John le contrôle total sur le dossier D:\test et tous ses sous-dossiers:
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
Selon la documentation MS:
-
F= Contrôle Total -
CI= Container Inherit-cet indicateur indique que les conteneurs subordonnés hériteront de cet AS. -
OI= objet hériter-cet indicateur indique que les fichiers subordonnés va hériter de l'ACE. -
/T= Appliquer récursivement aux fichiers et sous-dossiers existants. (OIetCIapplique uniquement aux nouveaux fichiers et sous-dossiers). Crédit: commentaire de @ AlexSpence.
Pour une documentation complète, vous pouvez exécuter "icacls" sans arguments ou consultez la documentation de Microsoft ici et ici
Vous pouvez également utiliser ICACLS.
Accorder la Utilisateurs le groupe Contrôle total pour un dossier:
>icacls "C:\MyFolder" /grant Users:F
Pour accorder Modifier autorisation aux utilisateurs IIS pour C:\MyFolder (Si vous avez besoin de votre IIS a la capacité de fichiers R/W dans un dossier spécifique):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
Si vous faites ICACLS /? vous pourrez voir toutes les options disponibles.
Utilisez la commande cacls. Voir les informations ici.
Fichiers CACLS / e / p {nom D'utilisateur}: {PERMISSION}
Où
/ p: définir une nouvelle autorisation
/ e: modifier l'autorisation et conserver l'ancienne autorisation telle qu'elle est, c'est-à-dire modifier ACL au lieu de la remplacer.
{Nom D'utilisateur}: nom de l'utilisateur
{PERMISSION}: L'autorisation peut être:
R - Lire
W-Écrire
C-Change (écriture)
F-contrôle total
Par exemple, accordez le contrôle Rocky Full (F) avec la commande suivante (tapez à L'invite de commande Windows):
C: > fichiers CACLS /e / P rocky: f
Lisez l'aide complète en tapant la commande suivante:
C:> cacls /?
Ouvrez une invite de commande, puis exécutez cette commande:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F donne un Accès Complet.
/q /c /t applique les autorisations aux sous-dossiers.
Note: parfois, "exécuter en tant Qu'administrateur" aidera.
J'essaie la manière ci-dessous et cela fonctionne pour moi:
1. ouvrir cmd.exe
2. takeown /R /F *.*
3. icacls * /T /grant [username]:(D)
4. del *.* /S /Q
Afin que les fichiers puissent devenir mon propre accès et qu'ils soient affectés à "supprimer", puis je peux supprimer les fichiers et les dossiers.
J'ai lutté avec cela pendant un moment et seule la combinaison des réponses dans ce fil a fonctionné pour moi (sur Windows 10):
1. Ouvrez cmd ou PowerShell et allez dans le dossier avec files
2. takeown /R / F .
3. icacls * / t / grant dan: F
Bonne chance!
Avec un script Excel VBA pour provisionner et créer des comptes. J'avais besoin d'accorder des autorisations complètes sur le dossier et les sous-dossiers créés par l'outil à l'aide de notre compte administrateur 'x' à notre nouvel utilisateur.
Les CaCl ressemblaient à ceci: cacls \Fichiers\Utilisateurs\nom d'utilisateur /e /g Domaine\nom d'utilisateur:C
J'avais besoin de migrer ce code vers Windows 7 et au-delà. Ma solution s'est avérée être:
Icacls \Fichiers\Utilisateurs\nom d'utilisateur /de la subvention:r Domaine \ Nom D'utilisateur: (OI) (CI)F /t
/ grant: R-accorde des droits d'accès utilisateur spécifiés. Les autorisations remplacent les autorisations explicites précédemment accordées. Sans: r, les autorisations sont ajoutées aux autorisations explicites précédemment accordées
(Oi) (CI) - ce dossier, sous-dossiers et fichiers.
F-Accès Complet
/ T-Traverse tous les sous-dossiers pour faire correspondre les fichiers / répertoires.
Ce Que cela m'a donné était un dossier sur ce serveur que l'utilisateur ne pouvait voir que le dossier créé et sous-dossiers, qu'ils pourraient lire et écrire des fichiers. Ainsi que de créer de nouveaux dossiers.
Juste au cas où il y aurait quelqu'un d'autre qui trébuche sur cette page, si vous voulez enchaîner diverses autorisations ensemble dans la seule commande, j'ai utilisé ceci:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
Notez la chaîne csv pour les différentes autorisations.
Bien que la plupart des réponses postées en réponse à la question aient un certain mérite, à mon humble avis, aucune d'entre elles ne donne une solution complète. Ce qui suit est une solution parfaite:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
Notes:
La commande est appliquée au répertoire spécifié.
La spécification de l'utilisateur "tout le monde" définit l'autorisation la plus large possible, car elle inclut Tous les utilisateurs possibles.
L'option "/remove:d" supprime tous les paramètres de refus explicites qui peuvent exister, comme ceux-ci remplacent les paramètres D'autorisation explicites: un préalable nécessaire à la création d'un nouveau paramètre D'autorisation.
L'option "/ grant " crée un nouveau paramètre D'autorisation, une autorisation explicite qui remplace (": r") Tous les paramètres d'autorisation explicites qui peuvent exister.
Le paramètre " F " (c'est-à-dire l'autorisation créée) en fait une attribution de contrôle total.
Le paramètre" /T " ajoute la récursivité, en appliquant ces modifications à tous les sous-objets actuels dans le répertoire spécifié (c'est-à-dire les fichiers et les sous-dossiers), ainsi que le dossier lui-même.
Les paramètres" (OI) "et" (CI) " ajoutent également de la récursivité, en appliquant ces modifications aux sous-objets créés à l'avenir.
XCACLS.VBS est un script très puissant qui va changer / modifier les informations ACL. c:\windows\system32\cscript.exe xcacls.VBS help renvoie tous les commutateurs et options.
Vous pouvez obtenir la distribution officielle à partir de Microsoft Support Page
La création de dossier en bloc et l'autorisation d'octroi me fonctionnent en utilisant le script powershell ci-dessous.
Importer-Csv "D:\Scripts\foldernames.csv " / foreach-objet { $utilisateur = $_.nom du dossier
# foldername is the header of csv file
$domain = “example.com”
$folder= "D:\Users"
$domainusername = $domain+“\”+$username
New-Item $folder\$username –Type Directory
Get-Acl $folder\$username
$acl = Get-Acl $folder\$username
$acl.SetAccessRuleProtection($True, $False)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$domain\Domain Admins","Read", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($domainusername,"Modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl $folder\$username $acl
}
Remarque: Vous devez créer le même nom d'utilisateur de domaine dans le fichier csv sinon vous obtiendrez des problèmes d'autorisation
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
Excellent point Călin Darie
J'avais beaucoup de scripts à utiliser cacls je les déplace vers icacls comment jamais je n'ai pas pu trouver un script pour changer les volumes de montage racine exemple: d:\datafolder. J'ai finalement crated le script ci-dessous, qui monte le volume comme un lecteur temporaire puis applique sec. puis le démonte. C'est le seul moyen que j'ai trouvé que vous pouvez mettre à jour la sécurité du montage racine.
1 obtient le GUID de montage du dossier dans un fichier temporaire puis lit le GUID pour monter le volume en tant que lecteur temporaire X: applique sec et enregistre les modifications puis démonte le Volume uniquement à partir du lecteur X: afin que le dossier monté ne soit pas modifié ou interrompu autre que le sec appliqué.
Voici un exemple de mon script:
**mountvol "d:\%1" /L >tempDrive.temp && FOR /f "tokens=*" %%I IN (tempDrive.temp) DO mountvol X: %%I
D:\tools\security\icacls.exe %~2 /grant domain\group:(OI)(CI)F /T /C >>%~1LUNsec-%TDWEEK%-%TMONTH%-%TDAY%-%TYEAR%-%THOUR%-%TMINUTE%-%TAM%.txt
if exist x:\*.* mountvol X: /d**
Je suis administrateur et un script a placé l'autorisation "Deny" sur mon nom sur tous les fichiers et sous-dossiers d'un répertoire. L'exécution de la commande icacls "D:\test" /grant John:(OI)(CI)F /T n'a pas fonctionné, car il semblait qu'elle n'avait pas supprimé le droit" Deny " de mon nom de cette liste.
La seule chose qui a fonctionné pour moi est de réinitialiser toutes les autorisations avec la commande icacls "D:\test" /reset /T.
C'est ce qui a fonctionné pour moi:
Ouvrir Manuellement le dossier pour lequel l'accès est refusé.
Sélectionnez le fichier exécutable / application dans ce dossier.
Faites un clic Droit dessus et allez à la Propriétés -> Compatibilité
Maintenant voir la Niveau de Privilège et vérifiez qu'il Exécuter en tant Qu'Administrateur
Cliquez sur Modifier les Paramètres pour tous les utilisateurs de.
Le le problème est résolu maintenant.