Équivalent de chmod pour modifier les autorisations de fichiers dans Windows

60

Existe-t-il un équivalent Windows de Linux chmodpour modifier les autorisations d'un fichier?

ne pas penser
la source

Réponses:

26

Greg mentionne attrib - mais attrib n’est pas très proche de chmod- attribpeut définir les attributs Lecture / Masqué d’un seul fichier - il ne fournit pas de contrôles à granularité fine comme c’est le icaclscas.

icaclsdéfinit / réinitialise les listes de contrôle d'accès afin que vous puissiez accorder / refuser des droits pour des SID et des groupes individuels. C'est assez compliqué cependant.

Voici un exemple que j'ai sauvegardé dans mon github gist ; il réinitialise les listes de propriété et de contrôle d'accès pour tous les fichiers d'un dossier et est particulièrement utile pour corriger les problèmes "Vous devez avoir les autorisations de .. pour effectuer cette action", en particulier lors du transfert de fichiers d'une installation précédente:

icacls * /reset /t /c /q 

Réinitialiser remplace celui existant par la liste par défaut.
/tagit de manière récursive sur tous les fichiers, les dossiers et les sous
/q- dossiers n’affiche aucun message de réussite mais
/ccontinue avec les fichiers restants, même si une erreur se produit.

Vous pouvez également faire des choses comme sauvegarder les ACL existantes et les appliquer à tous. Regardez ss64 qui explique très bien les différentes options et commutateurs.

Sathyajith Bhat
la source
Le problème est que je ne peux pas faire cela car pour chaque fichier se trouve le message: "L'accès est refusé". N'y a-t-il pas moyen de contourner cela? Sur un système scolaire qui bloque cela, mais pas cmd?
theonlygusti
Vous avez besoin de privilèges d'administrateur; la "normale" cmdque vous obtenez en appuyant sur [Win] + [R] ne les a pas. Pour ces besoins spécifiques, j'ai un raccourci "Admin shell", avec l'option "Exécuter en tant qu'administrateur" (ou similaire; je suis sur un système Windows allemand) cochée (et avec une couleur de fond rouge foncé).
Tobias
En fait, je suis confronté au problème de l’erreur d’autorisation refusée. Pourquoi diable je peux faire quelque chose si je suis administrateur et que la console fonctionne aussi en tant qu'administrateur. Qu'est-ce que c'est?
Čamo
13

Soit cacls , xcacls , ou mes préférés personnels icacls feront probablement ce dont vous avez besoin.

Bryan
la source
1
Je crois icaclsest uniquement disponible sur Vista / 7.
Bonjour71
9

Malheureusement, il ne peut y avoir d'équivalent exact, car Linux et DOS / Windows utilisent des attributs à des fins différentes, et (comme Chathuranga l'a dit auparavant), le modèle de sécurité est différent:

  • Dans les systèmes de fichiers Windows, il existe des attributs "hidden" ( H) et "system" ( S) qui n'ont pas d'équivalent sous Linux; là, les fichiers sont cachés en ajoutant le point au début du nom ( .).
  • Il n'y a pas non plus d'équivalent à l' Aattribut "archive" ( ) de Windows .
  • Il n'y a pas d'équivalent aux xattributs Linux "executable" ( ) dans les attributs de fichier DOS / Windows.
  • Il existe un équivalent à l' Dattribut "directory" ( ) de Windows (mais il ne peut pas être changé de toute façon).
  • Dans les systèmes de fichiers Linux, chaque entrée appartient à exactement un utilisateur et à un groupe, et les opérations de lecture / écriture / exécution peuvent être autorisées pour chacun d'eux et pour les autres. Les ACL (comme celles utilisées par Windows) sont encore plus flexibles, mais plus compliquées également, et la syntaxe en ligne de commande est un PITA (à mon humble avis, bien sûr).

L'attribut de fichier DOS R(en lecture seule) est celui qui peut être considéré comme ayant un équivalent: cet ensemble d' attributs est à peu près similaire à l' wattribut correspondant à tous les manquants; mais la permission de changer cet attribut est soumise aux ACL.

Il peut être intéressant d’avoir un chmod/ chownéquivalent sous Windows, peut-être écrit dans un langage de script, qui appelle à son tour attribet cacls(ou ses successeurs), mais je n’en ai pas.

Tobias
la source
Bon premier post!
slm
Vous confondez les attributs de fichier et les autorisations. Linux possède des attributs de fichier qui peuvent être modifiés via chattr . Linux dispose d’un contrôle d’accès affiné pour les attributs (l’attribut [i] mmutable, par exemple, ne peut être défini que par root ou par un CAP_LINUX_IMMUTABLEprocessus), alors que l’accès aux attributs définis dans Windows est tout ou rien. C'est une erreur courante dans les implémentations de chmodWindows d'utiliser cette commande pour définir l'attribut de fichier en lecture seule. Malheureusement, les systèmes sont aussi bien informés que les programmeurs qui les développent.
Eryk dim.
@eryksun: Intéressant - Je n'étais pas au courant de cette chattrcommande. Mais vous ne vouliez pas dire "confondre les attributs de fichier et les autorisations", n'est-ce pas? AFAICS, chaque mot que j'ai écrit à propos des attributs DOS est toujours correct.
Tobias
Un fichier est composé de nombreux attributs (étendus). Sous Unix, le jeu d’attributs principal est stocké dans l’inode, y compris le mode de fichier (autorisations). D'autres attributs étendus (par exemple, ACL) peuvent être stockés en externe. Windows n'a pas d'équivalent à l'attribut "mode" d'Unix. De plus, il n’a pas d’enregistrement inode commun pour les systèmes de fichiers. Un enregistrement NTFS MFT est similaire. À partir de son POV, les attributs de fichier Windows standard sont un attribut unique de l'enregistrement de fichier. Ceux-ci correspondent aux attributs de fichier Linux définis via chattr, sauf que Windows possède un attribut de répertoire car il n'y a pas d'inode.
Eryk Sun
La question concerne "un équivalent de chmod pour modifier les autorisations de fichiers dans Windows". Il n'y a pas d'équivalent direct à chmodWindows car rien ne ressemble à l'attribut "mode" du fichier. L'ensemble standard d'attributs de fichier Windows n'a rien à voir avec cela. L'attribut en lecture seule n'est pas une autorisation de fichier. Il dit en gros que le fichier est gravé dans la pierre, donc toutes les tentatives pour le modifier doivent échouer. L'attribut de fichier "immuable" de Linux est similaire. Windows utilise uniquement les ACL pour les autorisations. Par conséquent, icacls.exe et autres sont les seules commandes similaires sur le sujet des autorisations.
Eryk Sun
6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Fonctionne comme un charme pour modifier les autorisations sur un dossier pour les utilisateurs du domaine. Informations complémentaires concernant caclset icacls.

MDT Guy
la source
Nice premier post! Jamais entendu parler de icacls.
slm
5

La attribcommande est la correspondance la plus proche pour des choses très basiques (en lecture seule, indicateurs d'archive). Ensuite, il y a la commande ACL (liste de contrôle d'accès) cacls. Dernier point mais non le moindre, comme Windows est conforme à Posix, les indicateurs de type Unix existent. Si vous installez le jeu d’outils Cygwin, vous obtiendrez un chmod. (Un peu en dehors du sujet, puisque vous recherchez un équivalent d'une commande unix, télécharger et installer Cgygwin pourrait être quelque chose d'intéressant pour vous.)

utilisateur27570
la source
2

Il n'y a rien appelé chmod dans Windows car le modèle de sécurité de Windows est différent de celui de Linux. Vous pouvez utiliser la attribcommande pour modifier les propriétés des objets. (Mais ils sont plus envers les propriétés globales.)

Chathuranga Chandrasekara
la source
2

Pour moi, la solution consiste à installer Cygwin et à ajouter son dossier bin au chemin système. Ensuite, si vous exécutez "chmod" en ligne de commande, cela fonctionnera. Bien que je n’ai pas vérifié son exactitude.

WHOIF
la source
1
Référence: simple et détaillée
Bob