311 votes

Comment accorder la permission aux utilisateurs pour un répertoire en utilisant la ligne de commande dans Windows ?

Comment accorder des permissions à un utilisateur sur un répertoire (lecture, écriture, modification) en utilisant la ligne de commande Windows ?

0 votes

Nous exécutons le service apache sous un compte utilisateur spécifique, cela permettrait-il à apache d'accéder au Root des documents avec tous les droits ?

480voto

Călin Darie Points 1397

A partir de Vista, cacls est déprécié. 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 devez utiliser icacls à la place. C'est ainsi que vous accordez à John un contrôle total sur D:\test et tous ses sous-dossiers :

C:\>icacls "D:\test" /grant John:(OI)(CI)F /T

Selon la documentation de MS :

  • F = Contrôle total
  • CI = Container Inherit - Ce drapeau indique que les conteneurs subordonnés hériteront de cet ACE.
  • OI = Object Inherit - Ce drapeau indique que les fichiers subordonnés hériteront de l'ACE.
  • /T = Appliquer récursivement aux fichiers et sous-dossiers existants. ( OI y CI s'appliquent 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 aquí y aquí

0 votes

Super. Mais comment faire cela de manière récursive ?

4 votes

Felipe : Les paramètres (OI) et (CI) rendent cela récursif.

0 votes

@CalinDarie Merci mon frère... Tu as sauvé ma journée.

84voto

Vin.X Points 776

Vous pouvez également utiliser ICACLS.

Pour accorder le Utilisateurs groupe Contrôle total à un dossier :

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

Pour accorder Modifier aux utilisateurs de IIS pour C:\MyFolder (si vous en avez besoin, votre IIS a la possibilité d'envoyer les fichiers dans un dossier spécifique) :

>icacls "C:\MyFolder" /grant IIS_IUSRS:M

Si vous le faites ICACLS / ? vous pourrez voir toutes les options disponibles.

0 votes

Et étant donné que cacls est parti, c'est même plus raison d'utiliser icacls .

4 votes

Ajouter le contrôle total n'a pas fonctionné pour moi jusqu'à ce que /grant Users:(OI)(CI)F utilisé

0 votes

Dois-je remplacer Users avec quelque chose d'autre ou NON ? D'après icacls "C:\MyFolder" /grant Users:F

22voto

smink Points 39640

Utilice cacls commande. Voir les informations aquí .

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

Où,

/p : Définir une nouvelle permission

/e : Modifier la permission et garder l'ancienne permission telle quelle, c'est-à-dire modifier l'ACL au lieu de la remplacer.

{USERNAME} : Nom de l'utilisateur

{PERMISSION} : La permission peut être :

R - Lire

W - Écriture

C - Changement (écriture)

F - Contrôle total

Par exemple, accordez à Rocky le contrôle total (F) avec la commande suivante (tapez à l'invite de commande de Windows) :

C:> Fichiers CACLS /e /p rocky:f

Lisez l'aide complète en tapant la commande suivante :

C:> cacls / ?

1 votes

Excellente réponse ! La seule chose à noter, c'est que les fichiers sont les fichiers réels sur lesquels vous voulez changer les permissions. Peut-être que [files] ou {files} serait une meilleure explication.

0 votes

cacls est pertinente ; elle est toujours disponible dans Windows 10 ; Microsoft déprécierait cmd.exe en faveur de Powershell également.

1 votes

@Chinggis6 Être "encore disponible" ne signifie pas que quelque chose est une bonne idée à utiliser ou à recommander aux autres. Aussi, cmd.exe n'est pas déprécié et n'est pas susceptible de l'être, donc ce n'est pas un point en faveur de l'option icacls du tout, bien au contraire.

4voto

Gus Points 11

Avec une vba Excel script pour provisionner et créer des comptes. J'avais besoin d'accorder à notre nouvel utilisateur les droits complets sur le dossier et les sous-dossiers qui ont été créés par l'outil en utilisant notre compte 'x' d'administrateur.

cacls ressemblait à quelque chose comme ça : cacls \FileServer\Users\Username /e /g Domaine \Username :C

J'avais besoin de faire migrer ce code vers Windows 7 et au-delà. Ma solution s'est avérée être :

icacls \FileServer\Users\Username /grant:r Domaine \Username :(OI)(CI)F /t

/grant:r - Accorde les droits d'accès à l'utilisateur spécifié. Les permissions remplacent les permissions explicites précédemment accordées. Sans :r, les autorisations sont ajoutées à toutes les autorisations explicites accordées précédemment.

(OI)(CI) - Ce dossier, ses sous-dossiers et ses fichiers.

F - Accès complet

/t - Traverse tous les sous-dossiers pour correspondre aux fichiers/répertoires.

Cela m'a donné un dossier sur ce serveur que l'utilisateur ne pouvait voir que ce dossier et créer des sous-dossiers, qu'il pouvait lire et écrire des fichiers. Ainsi que créer de nouveaux dossiers.

0voto

Yashwanth Points 25
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide

2 votes

Ce sont des attributs du fichier (lecture seule, archive, système, caché) et non des permissions, qui sont liées aux comptes d'utilisateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X