38 votes

Comment prendre la propriété de fichiers à partir de la ligne de commande ?

De temps en temps, je tombe sur un dossier que je dois m'approprier. J'utilise normalement cacls pour changer les permissions ntfs, mais il ne semble pas faire de la propriété. Sous *nix, je lancerais quelque chose comme chown me:me <file> . Existe-t-il un équivalent Windows de chown ?

32voto

Evan Anderson Points 140581

Vous recherchez "TAKEOWN.EXE", qui a été introduit pour la première fois dans Windows Server 2003 en tant que composant standard, et je crois qu'il s'agissait auparavant d'un élément du kit de ressources. Il est disponible sur Windows 7, et peut-être sur des systèmes plus récents.

takeown /f <some-file-or-folder> /r

/r effectue l'opération de manière récursive sur tous les enfants du dossier spécifié. Contrairement aux subinacl Vous devez vous connecter en tant qu'utilisateur avec lequel vous essayez d'obtenir la propriété ; ou vous pouvez simplement attribuer la propriété au groupe "Administrateurs".

Voici une copie de sa documentation, telle qu'elle est conservée sur SS64 :

S [ ] /f Nom de fichier [/a] [/r [/d {Y|N}]].

K Le nom ou l'adresse IP d'un ordinateur distant (ne pas utiliser de barres obliques inverses). [ ] Ce paramètre s'applique à tous les fichiers et dossiers spécifiés dans la commande.

/ Exécute le script avec les permissions du compte utilisateur spécifié. par défaut = permissions du système.

/p [Mot de passe] Le mot de passe du compte utilisateur spécifié dans le paramètre /u.

/ Nom du fichier, chemin d'accès UNC ou nom du répertoire. Accepte le caractère générique *

/ l'utilisateur actuel.

/ spécifié et des sous-répertoires spécifiés.

/ Supprime la demande de confirmation qui s'affiche lorsque l'utilisateur actuel n'a pas le droit de "Lister les dossiers" sur un répertoire spécifié, et utiliser à la place une valeur par défaut : Y : Prendre possession du répertoire. N : Ignorer le répertoire. Notez que vous devez utiliser cette option conjointement avec l'option /r. Si le paramètre /a n'est pas spécifié, la propriété du fichier est attribuée à l'utilisateur qui est actuellement connecté. fichier est attribué à l'utilisateur actuellement connecté à l'ordinateur.

Les motifs mixtes utilisant ( ? et *) ne sont pas pris en charge par la commande takeown ne prend pas en charge les motifs mixtes utilisant ( ? et *).

A aux fichiers, puis les lire ou les supprimer.

25voto

crb Points 7900

subinacl est un outil puissant de l'administrateur système de Windows pour tout ce qui concerne la propriété et les ACL. Vous pouvez changer la propriété d'un fichier pour qu'il appartienne à quelqu'un d'autre que vous ( vous ne pouvez pas le faire avec l'interface graphique ).

subinacl /file test.txt /setowner=domain\foo

Cela vous permet de définir l'autorisation pour n'importe quel utilisateur, sans avoir à être un administrateur (comme je crois que takeown.exe l'exige).

19voto

tokland Points 29813

Prendre la propriété et les pleins droits du dossier et de tout ce qui s'y trouve :

takeown /F somedir /A /R
icacls somedir /grant:r User:F /T

Veillez à démarrer l'invite de commande en tant qu'administrateur !

J'ai dû démarrer l'Invite de Commande en tant qu'Administrateur, cela a fonctionné pour moi sous Windows 8.1. Avec la maladresse de Windows 8.1, j'ai dû chercher "commande", faire un clic droit sur l'icône de l'Invite de commande. Pour moi, afin de voir l'option "Exécuter en tant qu'administrateur". J'avais une invite de commande épinglée dans ma barre des tâches, mais un clic droit sur celle-ci n'affichait pas l'option "Exécuter en tant qu'administrateur".

Sous Windows 10, l'option "Exécuter en tant qu'administrateur" devrait être disponible en cliquant sur le bouton droit de la souris.

Syntaxe de l'enlèvement :

takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]

takeown Référence .

Syntaxe Icacls :

icacls <FileName>[/GRANT [: r] <Sid>: <Perm> [...]] [/ Denegar <Sid>: <Perm> [...]] [/Remove [:g|:d]] <Sid> [...]] [/ t] [/ c] [/ l] [/ q] [/ setintegritylevel <Level>: <Policy> [...]]Icacls <Directory>[/ sustituir <SidOld><SidNew>[...]] [/ restore <ACLfile>[/ c] [/ l] [/q]]

icacls Référence .

10voto

Je sais qu'il s'agit d'une realmente vieux post, mais il y a un moyen intégré dans Windows 7 et plus récents (peut-être dans Windows Vista, mais je ne suis pas sûr). Exécutez la commande suivante à partir d'une invite de commande escaladée dans le dossier que vous voulez réinitialiser. /t raconte icacls pour effectuer l'opération de manière récursive.

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t

La première commande réinitialise le propriétaire à la personne connectée via les variables d'environnement. Bien entendu, un nom spécifique peut être utilisé à la place.

La deuxième commande force ensuite la réintégration des autorisations dans l'arborescence de tous les dossiers et fichiers enfants.

J'espère que cela aidera quelqu'un à l'avenir.

6voto

number5 Points 3749

Vous pouvez consulter les sites suivants SetACL La gestion des autorisations est un couteau suisse. En voici un exemple exemple Comment attribuer la propriété de tous les fichiers du lecteur C : aux "Administrateurs" et supprimer la protection de l'héritage de tous les objets enfants en une seule fois :

SetACL.exe -on "C:\\" -ot file -actn setprot
           -op "dacl:np;sacl:nc"
           -rec cont_obj
           -actn setowner -ownr "n:S-1-5-32-544;s:y"

Vous pouvez également ajouter -silent .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X