De temps en temps, je rencontre un fichier dont je dois m'approprier. J'utilise normalement cacls
pour modifier les autorisations ntfs, mais il ne semble pas en être propriétaire. Sous * nix, je lancerais quelque chose comme chown me:me <file>
. Existe-t-il une fenêtre équivalente à chown
?
subinacl est l'outil puissant d'un administrateur système Windows pour tout faire avec la propriété et les ACL. Vous pouvez changer la propriété de 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 tout utilisateur que vous aimez, sans avoir à être administrateur (comme je pense que takeown.exe l'exige).
Vous recherchez "TAKEOWN.EXE", qui était le premier dans Windows Server 2003 en tant que composant standard, et je crois un élément du kit de ressources avant. Il est disponible sur Windows 7 et peut-être sur les 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 à subinacl
, vous devez vous connecter en tant qu'utilisateur avec lequel vous essayez de vous approprier; ou, vous pouvez simplement attribuer la propriété au groupe "Administrateurs".
Voici une copie de sa documentation, telle que conservée sur SS64 :
Syntaxe TAKEOWN [/ s Computer [/ u [Domain] UserName [/ p [Password]]]]/f FileName [/ a] [/ r [/ d {Y | N}]]]
Key/s Computer Le nom ou l'adresse IP d'un ordinateur distant (n'utilisez pas de barres obliques inverses). par défaut = ordinateur local. Ce paramètre s'applique à tous les fichiers et dossiers spécifiés dans la commande.
/ u [Domain] UserName Exécutez le script avec les autorisations du compte d'utilisateur spécifié. par défaut = autorisations système.
/ p [Mot de passe] Mot de passe du compte utilisateur spécifié dans le paramètre/u.
/ f FileName Nom de fichier, chemin UNC ou modèle de nom de répertoire. Accepte le caractère générique *
/ a Attribuez la propriété au groupe Administrateurs au lieu de l'utilisateur actuel.
/ r Effectue une opération récursive sur tous les fichiers du répertoire et des sous-répertoires spécifiés.
/ d {Y | N} Supprimez l'invite de confirmation qui s'affiche lorsque l'utilisateur actuel ne dispose pas de l'autorisation "Liste des dossiers" sur un répertoire spécifié et utilise à la place une valeur par défaut: Y: s'approprier le 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 actuellement connecté à l'ordinateur.
Les modèles mixtes utilisant (? Et *) ne sont pas pris en charge par la commande de retrait.
Après avoir changé le propriétaire d'un fichier/dossier, vous pouvez ensuite attribuer des autorisations complètes aux fichiers, puis les lire ou les supprimer.
Prenez possession et tous les droits du dossier et tout ce qu'il contient:
takeown /F somedir /A /R
icacls somedir /grant:r User:F /T
Assurez-vous de démarrer l'invite de commande en tant qu'administrateur!
J'ai dû démarrer une invite de commande en tant qu'administrateur, cela a fonctionné pour moi dans Windows 8.1. Avec la maladresse de Windows 8.1, je devais rechercher "commande", faire un clic droit sur l'icône d'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 dessus ne montrerait pas l'option "exécuter en tant qu'administrateur".
Dans Windows 10, "Exécuter en tant qu'administrateur" devrait être à votre disposition en tant qu'option de clic droit.
Syntaxe de retrait :
takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]
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]]
Je sais que c'est un vraiment ancien message, mais il existe un moyen intégré à Windows 7 et plus récent (peut-être dans Windows Vista, mais je ne suis pas sûr). Exécutez ce qui suit à partir d'une invite de commande escaladée dans le dossier que vous souhaitez réinitialiser. /t
indique à icacls
d'exécuter 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 à qui est connecté via les variables d'environnement. Bien sûr, un nom spécifique peut être utilisé à la place.
La deuxième commande force ensuite les autorisations à être ré-héritées dans l'arborescence à tous les dossiers et fichiers enfants.
J'espère que cela aidera quelqu'un à l'avenir.
Vous voudrez peut-être jeter un œil à SetACL , le couteau suisse de gestion des autorisations. Voici un exemple de la façon d'attribuer la propriété de tous les fichiers sur le lecteur C: aux "Administrateurs" et de 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
.
Pour Windows 2003, 2008 ou Vista ou 7, utilisez Takeown .
Pour Windows 2000, utilisez Fileowners.pl .
Dans Windows Server 2003 R2 (et versions ultérieures), vous pouvez profiter de l'outil intégré icacls.exe pour modifier la propriété à partir de la ligne de commande, ainsi que de toutes les manipulations traditionnelles de cacls.exe sur lesquelles il se dilate ...
Notez que icacls.exe utilise par défaut le mode "édition", tandis que cacls.exe utilise par défaut le mode "remplacement" - un changement bienvenu pour ceux d'entre nous mordus (plus d'une fois) par cette petite nuance de cacls!
Une autre alternative est fileacl Il est petit et peut activer/désactiver l'indicateur "hériter/ne pas hériter" de l'objet, contrairement à la plupart des utilitaires Windows.
takeown /f *.jpg
icacls *.jpg /grant "Everyone":F
(notez que dans Windows non anglais, "Tout le monde" peut ne pas exister, par exemple dans Windows allemand, il ne fonctionne qu'avec "Jeder" - un vrai truc que Windows traduit les options de commande!)J'ai trouvé une solution en utilisant les outils Windows: cacls
cacls <file or directory> /E /T /G <user>:F