invité - Comment accorder l'autorisation aux utilisateurs pour un répertoire en utilisant la ligne de commande dans Windows?




windows 10 choix utilisateur au demarrage (10)

Comment puis-je accorder des autorisations à un utilisateur sur un répertoire (lecture, écriture, modification) à l'aide de la ligne de commande Windows?


Avec un script Excel vba pour provisionner et créer des comptes. Je devais accorder des autorisations de droits complets sur le dossier et les sous-dossiers créés par l'outil en utilisant le compte x de nos administrateurs pour notre nouvel utilisateur.

cacls ressemblait à ceci: cacls \ FileServer \ Users \ 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 \ FileServer \ Users \ Nom d'utilisateur / grant: r Domaine \ Nom d'utilisateur: (OI) (CI) F / t

/ grant: r - Attribue 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 à toutes les 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 qu'ils correspondent aux fichiers / répertoires.

Ce que cela m'a donné était un dossier sur ce serveur que l'utilisateur pouvait seulement voir ce dossier et créer des sous-dossiers, qu'ils pouvaient lire et écrire des fichiers. Ainsi que de créer de nouveaux dossiers.


Bien que la plupart des réponses publiées en réponse à la question ont un certain mérite, à mon humble avis aucun d'entre eux 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

Remarques:

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

  2. Spécifier 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 DENY explicites qui peuvent exister, car ils remplacent les paramètres explicites ALLOW: un préalable nécessaire à la création d'un nouveau paramètre ALLOW.

  4. L'option "/ grant" crée un nouveau paramètre ALLOW, une autorisation explicite qui remplace (": r") tous les paramètres explicites ALLOW qui peuvent exister.

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

  6. Le paramètre "/ T" ajoute la récursivité, en appliquant ces changements à tous les sous-objets actuels dans le répertoire spécifié (c'est-à-dire les fichiers et sous-dossiers), ainsi que le dossier lui-même.

  7. Les paramètres "(OI)" et "(CI)" ajoutent également la récursivité, en appliquant ces changements aux sous-objets créés dans le futur.


J'ai lutté avec cela pendant un moment et seulement en combinant les réponses dans ce fil travaillé pour moi (sur Windows 10):
1. Ouvrez cmd ou PowerShell et accédez au dossier avec des fichiers
2. takeown / R / F.
3. icacls * / T / grant dan: F

Bonne chance!


J'essaye la manière ci-dessous et cela fonctionne pour moi:
1. Ouvrez cmd.exe
2. takeown /R /F *.*
3. icacls * /T /grant [username]:(D)
4. del *.* /S /Q

Alors que les fichiers peuvent devenir mon propre accès et l'assigner à "Supprimer", puis je peux supprimer les fichiers et les dossiers.


Juste au cas où quelqu'un d'autre trébucherait sur cette page, si vous voulez enchaîner plusieurs permissions dans la même 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.


La création de dossier en bloc et l'autorisation d'autorisation me permettent d'utiliser le script powershell ci-dessous.

Importer-Csv "D: \ Scripts \ foldernames.csv" | foreach-object {$ nom d'utilisateur = $ _.

# 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


Utilisez la commande cacls . Voir les informations here .

Fichiers CACLS / e / p {USERNAME}: {PERMISSION}

Où,

/ p: Définir une nouvelle autorisation

/ e: Modifie l'autorisation et conserve l'ancienne autorisation telle qu'elle est, par exemple, modifier la liste de contrôle d'accès au lieu de la remplacer.

{USERNAME}: nom de l'utilisateur

{PERMISSION}: La permission peut être:

R - Lire

W - Écrire

C - Changer (écrire)

F - Contrôle total

Par exemple accorder 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 /?


Vous pouvez également utiliser ICACLS.

Pour accorder le contrôle total du groupe Utilisateurs à un dossier:

>icacls "C:\MyFolder" /grant Users:F

Pour accorder l'autorisation Modifier 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 serez en mesure de voir toutes les options disponibles.


excellent point Călin Darie

J'ai eu beaucoup de scripts pour utiliser cacls je les déplace vers icacls comment jamais je ne pouvais trouver un script pour modifier l'exemple de volumes de montage racine: d: \ datafolder. J'ai finalement mis en caisse le script ci-dessous, qui monte le volume comme un disque temporaire puis applique sec. puis le démonte. C'est la seule façon que j'ai trouvé que vous pouvez mettre à jour la sécurité de montage racine.

1 obtient le dossier GUID de montage dans un fichier temporaire puis lit le GUID pour monter le volume comme un 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 puis la seconde appliquée.

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**

À partir de Vista, cacls est obsolète. Voici le premier couple de 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 place. C'est ainsi que vous accordez à John un 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 = Inherit du conteneur - Ce drapeau indique que les conteneurs subordonnés hériteront de cet ACE.
  • OI = Object Inherit - Cet indicateur indique que les fichiers subordonnés hériteront de l'ACE.
  • /T = Appliquer récursivement aux fichiers et sous-dossiers existants. ( OI et CI ne s'appliquent qu'aux nouveaux fichiers et sous-dossiers). Crédit: commentaire de @AlexSpence.

Pour une documentation complète, vous pouvez exécuter " icacls " sans arguments ou voir la documentation de Microsoft here et here







file-permissions