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. (OI
etCI
applique 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.