web-dev-qa-db-fra.com

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

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

47
sunmoon

Gregmentionsattrib - mais attrib n'est pas proche de chmod - attrib peut définir les attributs Lecture/Masqué d'un seul fichier - il ne fournit pas de contrôles détaillés tels que icacls Est-ce que.

icacls dé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 la liste de contrôle de propriété et 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.
/t agit de manière récursive sur tous les fichiers, dossiers et sous-dossiers
/q n'affiche aucun message de réussite
/c continue avec les fichiers restants même en cas d'erreur.

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

19
Sathyajith Bhat

Soit cacls , xcacls , ou mon favori personnel icacls fera probablement ce dont vous avez besoin.

11
Bryan

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 "cachés" (H) et "système" (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'attribut "archive" (A) de Windows.
  • Il n'y a pas d'équivalent aux attributs Linux "exécutable" (x) dans les attributs de fichier DOS/Windows.
  • est un équivalent de l'attribut "répertoire" (D) 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 attribut set est à peu près similaire à l'attribut w pour tous les manquants; mais l'autorisation de modifier cet attribut est soumise aux ACL.

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

7
Tobias
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 supplémentaires concernant cacls et icacls.

5
MDT Guy

La commande attrib est la correspondance la plus proche pour des choses très simples (indicateurs en lecture seule, archive). Ensuite, il y a la commande cacls de la liste de contrôle d'accès (ACL). Dernier point mais non le moindre, puisque Windows est conforme à Posix, les indicateurs de type Unix existent. Si vous installez le jeu d’outils Cygwin, vous obtiendrez une chmod. (Un peu hors 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.)

4
user27570

J'utilise la commande Windows takeown.exe pour modifier les autorisations de fichier sur mon ID d'utilisateur actuellement connecté: http://technet.Microsoft.com/en-us/library/cc753024.aspx

2
Roman Kharkovski

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 commande attrib pour modifier les propriétés des objets. (Mais ils sont plus orientés vers les propriétés globales.)

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.

0
WHOIF