Question modifier de manière récursive les fenêtres du propriétaire 7


D'une certaine manière, j'ai accidentellement défini tous les fichiers d'un sous-dossier sur "No Owner" et je ne peux pas sembler modifier toutes les permissions. Je peux en changer un à la main en changeant le propriétaire puis en définissant les permissions mais comment changer de propriétaire dans ce répertoire à la fois?


86
2018-03-05 18:23


origine




Réponses:


Utilisation takeown depuis l'invite de commande pour s'approprier un dossier, tous ses sous-dossiers et fichiers de manière récursive:

takeown /f "c:\folder\subfolder" /r

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


82
2018-03-05 18:37





Pour corriger les autorisations réellement endommagées, le mieux est d’exécuter ces deux commandes les unes après les autres:

takeown /f "C:\path\to\folder" /r
icacls "C:\path\to\folder" /reset /T

Le premier vous donnera la propriété de tous les fichiers, mais cela pourrait ne pas suffire, par exemple si tous les fichiers ont les autorisations de lecture / écriture / exécution définies sur "deny". Vous possédez les fichiers mais ne pouvez toujours rien faire avec eux.

Dans ce cas, exécutez la deuxième commande, qui corrigera les autorisations interrompues.


92
2018-01-01 11:16



Excellent conseil technique ... votre solution était la seule qui fonctionnait. Merci encore. - carrabino
Le meilleur conseil, besoin d'utiliser à la fois le tirage au sort et les icacls. - gnac
/ Une option est utile si vous souhaitez attribuer la propriété au groupe d'administrateurs au lieu du propriétaire actuel. Vous devez disposer des privilèges d'administrateur pour ce faire. Il peut être nécessaire d'ouvrir la fenêtre cmd en utilisant Ctrl-Maj-Entrée. - PeterVermont
J'ai ajouté le /D Y paramètre à takeown ainsi, il confirme automatiquement les répertoires récursifs pour lesquels vous ne disposez pas des autorisations "répertoire de liste". - Jeroen Wiert Pluimers
@JeroenWiertPluimers, même si c’est un bon conseil, j’ai enlevé l’édition car elle est (assez bêtement) un paramètre localisé. /D Y, en français /D O, peut-être en espagnol /D S, etc. - this.lau_


Notez que cacls est obsolète (depuis Windows Vista?) Et vous conseille d’utiliser icacls.

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

icacls "C:\path\to\folder" /reset /T

26
2017-10-05 07:47





Vous pouvez utiliser cacls depuis l'invite de commande:

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

le /T switch lui permet de fonctionner récursivement. Remplacer Administrator avec l'utilisateur auquel vous souhaitez accorder des autorisations.


5
2018-03-05 18:37





J'ai eu des problèmes avec les fichiers avec des chemins très longs (plus de 256 caractères). Les deux commandes

takeown /f "C:\path\to\really_long_folder_name" /r
icacls "C:\path\to\really_long_folder_name" /reset /T

travaillé sauf pour ces fichiers avec des chemins et des noms très longs. J'ai fini par renommer

"C:\path\to\really_long_folder_name"

à

"C:\path\to\r"

puis en cours d'exécution

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

après quoi je pourrais renommer les dossiers à quelque chose de plus sensible. takeown 's / D Y répond oui aux invites. Pour icacls j'ai utilisé / grant pour donner un accès complet à tout le monde (comme j'essayais juste d'accéder aux données sur un disque dur à partir d'un PC mort), avec / t pour traiter les sous-dossiers et les fichiers, / q pour fonctionner en mode silencieux succès) et / c pour afficher les erreurs. J'ai répété le processus en renommant les dossiers jusqu'à ce que toutes les autorisations des fichiers soient correctement mises à jour.

J'espère que cela aidera quelqu'un qui a rencontré des erreurs semblables à celles qui ont échoué à «énumérer les objets dans l'accès au conteneur» est refusé lorsque j'essayais d'accéder aux données d'un ancien disque dur.


1
2018-01-11 10:36





Merci @ this.lau_ pour le / reset tip, c'est exactement ce dont j'avais besoin pour terminer mon script pour prendre possession du CSC et en faire une sauvegarde. Après avoir pris possession de C: \ Windows \ CSC, les autorisations ont tendance à être très incohérentes en ce qui concerne l'héritage - le commutateur / reset a résolu ce problème pour moi.

Function Copy-CSCData {
    $Datetime = Get-Date -Format yyyyMMdd.hhmmss
    $LogPath = 'PATH TO LOG'
    $CSCSource = 'C:\Windows\CSC\v2.0.6\namespace'
    $Dest = 'DESTINATION PATH'
    $icaclsource = "\\?\" + $CSCSource

    $CSCLogfile = "$LogPath\" + "$Datetime" + "_CSCRobocopy.log"

    icacls.exe $icaclsource /reset /T
    icacls.exe $icaclsource /grant :r "Everyone:(OI)(CI)F"

    Robocopy $CSCSource $Dest /Copy:DATSO /E /XO /Z /LOG+:$CSCLogfile /V /FP /NP /R:2 /W:2 /XF "~$*","*.tmp"
}

@Thesle Williams - Si vous consultez la variable $ icaclsource ci-dessus, vous remarquerez que j'ajoute "\? \" Devant le chemin source. En ajoutant ceci à l'avant, il acceptera les noms de fichiers plus longs. C'est aussi un problème que j'ai eu mais cela a résolu le problème! À votre santé.

Josh


0
2018-06-15 23:16



Bienvenue sur Super User! Juste pour vous faire savoir que "ping" les utilisateurs ne fonctionne que dans les commentaires sur les messages, pas dans les messages réels Malheureusement, vous ne pouvez pas commenter des messages autres que les vôtres, ou des réponses à vos questions, jusqu'à ce que vous ayez 50+ réputation. Voir Comment fonctionnent les commentaires @parplies?. Notez que vous ne pouvez pas simplement envoyer une requête ping à quiconque dans un commentaire. Seul l'auteur du message et tout autre utilisateur qui a déjà commenté. - robinCTS