112 votes

Changer de propriétaire de manière récursive windows 7

Par inadvertance, j'ai défini tous les fichiers dans un sous-dossier comme "Sans propriétaire" et je ne semble pas pouvoir changer toutes les autorisations. Je peux en changer une à la main en modifiant le propriétaire puis en définissant les autorisations, mais comment puis-je changer le propriétaire de tous les fichiers de ce répertoire en une seule fois ?

126voto

laurent Points 5747

Pour résoudre les autorisations vraiment cassées, le mieux est d'exécuter ces deux commandes l'une après l'autre :

takeown /f "C:\chemin\vers\dossier" /r
icacls "C:\chemin\vers\dossier" /reset /T

La première vous donnera la propriété de tous les fichiers, cependant cela pourrait ne pas suffire, par exemple si les autorisations de lecture/écriture/exécution des fichiers sont définies sur "refuser". Vous possédez les fichiers mais vous ne pouvez toujours rien en faire.

Dans ce cas, exécutez la seconde commande, qui réparera les autorisations cassées.

3 votes

Excellent conseil technique ... votre solution était la seule qui a fonctionné. Merci encore.

4 votes

Meilleur conseil, il est nécessaire d'utiliser à la fois takeown et icacls.

0 votes

Cela résoudra les problèmes même s'il y a une autorisation de refus.

115voto

zobie Points 539

Utilisez takeown à partir de l'invite de commande pour prendre possession d'un dossier, de tous ses sous-dossiers et fichiers de manière récursive:

takeown /f "c:\dossier\sous-dossier" /r

Cela fonctionne bien, mais si vous n'exécutez pas votre console de commande en tant qu'administrateur, cela peut échouer pour les fichiers que vous ne possédez pas.

27voto

Notez que cacls est obsolète (depuis Windows Vista?) et il vous conseille d'utiliser icacls.

Cette commande réinitialisera récursivement les autorisations sur un dossier :

icacls "C:\chemin\vers\dossier" /reset /T

5voto

Dalroth Points 2468

Vous pouvez utiliser cacls à partir de l'invite de commandes :

cacls "C:\\chemin\\vers\\dossier" /E /T /C /G "Administrateur":F

Le commutateur /T lui permet de fonctionner de manière récursive. Remplacez Administrateur par l'utilisateur auquel vous souhaitez accorder des autorisations.

1voto

Thesle Williams Points 81

J'avais des problèmes avec des fichiers dont les chemins étaient très longs (supérieurs à 256 caractères). Les deux commandes

takeown /f "C:\chemin\vers\nom_de_dossier_vraiment_long" /r
icacls "C:\chemin\vers\nom_de_dossier_vraiment_long" /reset /T

ont fonctionné sauf pour ces fichiers avec des chemins et des noms vraiment longs. J'ai fini par renommer

"C:\chemin\vers\nom_de_dossier_vraiment_long"

en

"C:\chemin\vers\r"

et ensuite j'ai exécuté

takeown /f "C:\chemin\vers\r" /r /D Y
icacls "C:\chemin\vers\r" /grant Everyone:(F) /t /c /q

après quoi j'ai pu renommer les dossiers en quelque chose de plus sensé. L'option /D Y de takeown répond oui aux invitations. Pour icacls, j'ai utilisé /grant pour donner un accès complet à tout le monde (car j'essayais simplement d'accéder aux données d'un disque dur d'un PC hors service), avec /t pour traiter les sous-dossiers et les fichiers, /q pour s'exécuter en mode silencieux (cacher les succès) et /c pour afficher les erreurs. J'ai répété le processus, en renommant les dossiers jusqu'à ce que les autorisations des fichiers soient mises à jour avec succès.

J'espère que cela aidera quelqu'un qui a rencontré des erreurs similaires aux erreurs "échec d'énumération des objets dans le conteneur l'accès est refusé" que j'obtenais en essayant d'accéder aux données d'un ancien disque dur.

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