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?

213
demandé sur Braiam 2010-05-28 15:59:07

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 et CI 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

327
répondu Călin Darie 2016-05-03 15:30:06

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.

61
répondu Vin.X 2013-03-26 01:37:16

Utilisez la commande cacls. Voir les informations ici.

Fichiers CACLS / e / p {nom D'utilisateur}: {PERMISSION}

/ 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 /?

16
répondu Jorge Ferreira 2010-05-28 12:01:02

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.

13
répondu Sireesh Yarlagadda 2017-06-29 15:06:26

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.

10
répondu Ray Huang 2015-07-13 19:00:35

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!

3
répondu Daniil Shevelev 2015-12-27 15:08:05

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.

2
répondu Gus 2014-04-23 16:38:09

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.

2
répondu Ads 2015-03-23 02:06:57

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:

  1. La commande est appliquée au répertoire spécifié.

  2. La spécification de l'utilisateur "tout le monde" définit l'autorisation la plus large possible, car elle inclut Tous les utilisateurs possibles.

  3. 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.

  4. 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.

  5. Le paramètre " F " (c'est-à-dire l'autorisation créée) en fait une attribution de contrôle total.

  6. 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.

  7. Les paramètres" (OI) "et" (CI) " ajoutent également de la récursivité, en appliquant ces modifications aux sous-objets créés à l'avenir.

2
répondu Ed999 2017-12-15 00:55:53

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

1
répondu g222 2017-04-17 00:05:50

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

1
répondu user2934980 2017-05-25 04:43:58
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
0
répondu Yashwanth 2011-11-24 10:07:28

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**
0
répondu HandyMannyHE 2015-02-03 22:31:00

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.

0
répondu B. Zoli 2016-02-18 15:27:16

C'est ce qui a fonctionné pour moi:

  1. Ouvrir Manuellement le dossier pour lequel l'accès est refusé.

  2. Sélectionnez le fichier exécutable / application dans ce dossier.

  3. Faites un clic Droit dessus et allez à la Propriétés -> Compatibilité

  4. Maintenant voir la Niveau de Privilège et vérifiez qu'il Exécuter en tant Qu'Administrateur

  5. Cliquez sur Modifier les Paramètres pour tous les utilisateurs de.

Le le problème est résolu maintenant.

-4
répondu MAYUR 2013-03-31 05:57:42