recursivamente alterar janelas do proprietário 7

87

De alguma forma, eu acidentalmente configurei todos os arquivos em uma subpasta para "Sem proprietário" e não consigo alterar todas as permissões. Posso alterar uma delas manualmente, alterando o proprietário e definindo as permissões, mas como posso alterar o proprietário? todos os arquivos neste diretório de uma só vez?

    
por this.lau_ 05.03.2010 / 19:23

6 respostas

83

Use takeown no prompt de comando para apropriar-se de uma pasta, todas as suas subpastas e arquivos recursivamente:

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

Isso funciona bem, mas se você não executar o console da linha de comando como administrador, ele poderá falhar em arquivos que você não possui.

    
por 05.03.2010 / 19:37
94

Para corrigir permissões realmente quebradas, o melhor é executar esses dois comandos um após o outro:

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

O primeiro lhe dará a propriedade de todos os arquivos, mas isso pode não ser suficiente, por exemplo, se todos os arquivos tiverem as permissões read / write / exec definidas como "negar". Você possui os arquivos, mas ainda não pode fazer nada com eles.

Nesse caso, execute o segundo comando, que corrigirá as permissões quebradas.

    
por 01.01.2014 / 12:16
26

Observe que o cacls está obsoleto (desde o Windows Vista?) e recomenda o uso de icacls .

Este comando redefinirá recursivamente as permissões em uma pasta:

icacls "C:\path\to\folder" /reset /T
    
por 05.10.2011 / 09:47
5

Você pode usar cacls no prompt de comando:

cacls "C:\path\to\folder" /E /T /C /G "Administrator":F

A opção /T permite que ela funcione recursivamente. Substitua Administrator pelo usuário que você deseja conceder permissões.

    
por 05.03.2010 / 19:37
1

Eu tive problemas com arquivos com caminhos muito longos (maiores que 256 caracteres). Os dois comandos

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

funcionou, exceto por esses arquivos com caminhos e nomes realmente longos. Acabei renomeando

"C:\path\to\really_long_folder_name"

para

"C:\path\to\r"

e depois executando

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

após o qual eu poderia renomear as pastas para algo mais sensato. takeown's / D Y responde sim aos prompts. Para icacls eu usei / grant para dar acesso total a todos (como eu estava apenas tentando acessar dados em um disco rígido de um PC morto), com / t para processar subpastas e arquivos, / q para executar em modo silencioso (hide sucessos) e / c para mostrar erros. Eu repeti o processo, renomeando as pastas até que todas as permissões dos arquivos fossem atualizadas com sucesso.

Espero que isso ajude alguém que tenha encontrado erros semelhantes aos erros "falha ao enumerar objetos contidos no acesso ao contêiner" que eu estava recebendo ao tentar obter acesso aos dados de um disco rígido antigo.

    
por 11.01.2017 / 11:36
0

Obrigado @ this.lau_ pela dica / reset, isso é exatamente o que eu precisava para concluir meu script para apropriar-se do CSC e fazer um backup dele. Depois de assumir a propriedade de C: \ Windows \ CSC, as permissões tendem a ficar muito inconsistentes em relação à herança - o parâmetro / reset corrigiu isso para mim.

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 - se você verificar a variável $ icaclsource acima, você verá que eu adiciono "\? \" na frente do caminho de origem. Ao adicionar isso na frente, ele aceitará nomes de arquivos mais longos. Este é também um problema que eu tive, mas isso resolveu isso! Felicidades.

Josh

    
por 16.06.2018 / 01:16