Comment s'approprier des fichiers en ligne de commande?

34

De temps en temps, je rencontre un fichier dont je dois prendre possession. J'utilise normalement caclspour modifier les autorisations ntfs, mais cela ne semble pas rendre la propriété. Sous * nix je voudrais exécuter quelque chose comme chown me:me <file>. Y a-t-il une fenêtre équivalente à chown?

Joe
la source
Dommage que setACL ne fonctionne pas avec le script ci-dessus. errormessages sur Win XP, 7 et 8 et vous devez être un professeur pour trouver ce qui ne va pas avec cela

Réponses:

25

subinacl est un outil puissant du système Windows sysadmin pour tout faire avec la propriété et les ACL. Vous pouvez changer le propriétaire à qui que ce soit 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 de n’importe quel utilisateur de votre choix, sans être administrateur (comme je le suppose, takeown.exe).

crb
la source
Non valide pour les fenêtres Puis - je télécharger le SubInAcl.exe (Windows 2003 Resource Kit) et de l' utiliser dans Windows XP?
Kiquenet
Sûr que vous pouvez! C'est probablement d'où je l'ai eu. Essayez ici .
Crb
26

Vous recherchez "TAKEOWN.EXE", qui était la première fois dans Windows Server 2003 en tant que composant standard et, à mon avis, un élément de la trousse de ressources auparavant. Il est disponible sur Windows 7 et peut-être sur des systèmes plus récents.

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

/reffectue l'opération de manière récursive sur tous les enfants du dossier spécifié. Contrairement à cela 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 Ordinateur [/ u [Domaine] Nom d'utilisateur [/ p [Mot de passe]]]] / f Nom de fichier [/ a] [/ r [/ d {Y | N}]

Key / s Computer Nom ou adresse IP d'un ordinateur distant (n'utilisez pas de barres obliques inverses). défaut = ordinateur local. Ce paramètre s'applique à tous les fichiers et dossiers spécifiés dans la commande.

/ u [Domaine] Nom d'utilisateur Exécutez le script avec les autorisations du compte d'utilisateur spécifié. défaut = autorisations système.

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

/ f NomFichier Nom de fichier, chemin UNC ou modèle de nom de répertoire. Accepte le caractère générique *

/ a Donner 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 affichée lorsque l'utilisateur actuel ne dispose pas de l'autorisation "Répertorier le dossier" sur un répertoire spécifié. Utilisez plutôt une valeur par défaut: Y: Devenez propriétaire du répertoire. N: Passer 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 takeown.

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.

Evan Anderson
la source
SS64 a un meilleur lien de documentation: ss64.com/nt/takeown.html
jpaugh
17

Prenez possession et les droits complets du dossier et de tout ce qu'il contient:

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

Assurez-vous de lancer l'invite de commande en tant qu'administrateur!

Je devais démarrer une invite de commande en tant qu'administrateur, cela fonctionnait pour moi dans Windows 8.1. Avec Windows 8.1 maladresse, je devais rechercher "commande", cliquez avec le bouton droit sur l'icône d'invite de commande. Pour moi afin de voir l'option "Exécuter en tant qu'administrateur". Une invite de commande était liée à la barre des tâches, mais un clic droit dessus n’indiquait pas l’option «Exécuter en tant qu’administrateur».

Dans Windows 10, l'option "Exécuter en tant qu'administrateur" devrait être disponible sous forme d'option de clic droit.

Syntaxe de Takeown :

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 .

chipiik
la source
1
Sachez que les icacls étranglent les noms de chemin longs. Le message d'erreur "fichier non trouvé" est un peu trompeur, mais pire encore, icalcs abandonne le traitement du reste de l'arbre sans message. Vous pouvez parfois utiliser l'astuce de créer un volume SUBST plus profondément dans l'arborescence pour contourner ce problème. Takeown.exe tolère les noms longs.
Andrew Dennison
Non valable pour Windows XP
Kiquenet le
8

Je sais que c’est un très vieux message, mais il existe un moyen intégré à Windows 7 et aux versions plus récentes (peut-être dans Windows Vista, mais je ne suis pas sûr). Exécutez les opérations suivantes à partir d'une invite de commande remontée dans le dossier que vous souhaitez réinitialiser. /tindique icaclsd'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 à qui jamais 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 rediffusées dans l’arborescence sur tous les dossiers et fichiers enfants.

J'espère que cela aidera quelqu'un dans le futur.

Jim
la source
La première commande me suffisait.
Benoit Blanchon
6

Vous voudrez peut-être jeter un coup d'œil à SetACL , le couteau suisse de la gestion des autorisations. Voici un exemple montrant comment attribuer à des "administrateurs" la propriété de tous les fichiers du lecteur C: et supprimer la protection de l'héritage de tous les objets enfants en une 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 aussi ajouter -silent.

Helge Klein
la source
3

Dans Windows Server 2003 R2 (et versions ultérieures), vous pouvez tirer parti 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 développe ...

Notez que icacls.exe utilise par défaut le mode "edit", tandis que cacls.exe utilise le mode "replace" - un changement bienvenu pour ceux qui se font piquer (plus d'une fois) par cette petite nuance de cacls!

Jnaab
la source
icacls est bien parce qu’il est inclus dans les versions récentes de Windows et permet d’attribuer la propriété à n’importe quel utilisateur.
David
1

Une autre alternative est fileacl. Il est petit et peut définir / désactiver le drapeau " inherit / ne pas hériter" sur l'objet, contrairement à la plupart des utilitaires Windows.

Skelewir
la source
0

J'ai trouvé une solution avec les outils Windows: cacls

cacls <file or directory> /E /T /G <user>:F
chepseskaf
la source
0
  1. ouvrez l'invite de commande en tant qu'administrateur et passez au répertoire posant problème
  2. prendre possession de tous les fichiers là-bas ... exemple: takeown /f *.jpg
  3. accordez des droits d'accès aux utilisateurs de votre choix ... exemple: icacls *.jpg /grant "Everyone":F(notez que dans Windows non anglais, "Tout le monde" pourrait ne pas exister, par exemple, dans Windows allemand, cela ne fonctionne qu'avec "Jeder", ce qui est bien dommage que Windows traduise les options de commande!)
Jörg
la source