De quais permissões eu preciso para mover uma pasta?

3

Na raiz da minha unidade existe uma pasta chamada SourceControl que contém todas as cópias de todos os meus projetos de programação.

Eu gostaria de mover a pasta para o meu diretório de usuários ( \Users\Me ), mas algo sobre as permissões na pasta me proíbe. Não me lembro como criei a pasta.

Quando executo o comando Mover:

MOVE \SourceControl \Users\Me

Eu recebo o seguinte erro:

Access is denied.

Resolvi um problema semelhante no passado usando a Takeown utilitário para atribuir a propriedade do arquivo para mim, então eu tentei este comando em seguida:

TAKEOWN /F \SourceControl

Ele retorna o seguinte erro:

ERROR: The current logged on user does not have ownership privileges
       on the file (or folder) "C:\SourceControl".

Acabei de aprender sobre o utilitário Icacls , que pode inspecionar e modificar permissões de arquivos.

Eu usei este comando para inspecionar as permissões na pasta:

ICACLS \SourceControl

Produziu esta lista:

\SourceControl BUILTIN\Administrators:(I)(F)
               BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
               NT AUTHORITY\SYSTEM:(I)(F)
               NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
               BUILTIN\Users:(I)(OI)(CI)(RX)
               NT AUTHORITY\Authenticated Users:(I)(M)
               NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)

Acho que isso significa que contas de usuário normais, como a minha, só têm permissão para ler e executar ( RX ) aqui, enquanto as contas de administrador têm controle total ( F ).

Eu usei o Icacls para conferir controle total do diretório à minha conta de usuário com este comando:

ICACLS \SourceControl /grant:r Me:F

O comando produz esta saída:

processed file: \SourceControl
Successfully processed 1 files; Failed processing 0 files

Agora a inspeção das permissões produz esta saída:

\SourceControl Domain\Me:(F)
               BUILTIN\Administrators:(I)(F)
               BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
               NT AUTHORITY\SYSTEM:(I)(F)
               NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
               BUILTIN\Users:(I)(OI)(CI)(RX)
               NT AUTHORITY\Authenticated Users:(I)(M)
               NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)

Mas depois disso, o comando move ainda falha com o mesmo erro.

É possível mover esta pasta sem invocar direitos de administrador? Se não, como devo fazê-lo como administrador?

    
por Iain Samuel McLean Elder 01.07.2012 / 15:03

2 respostas

1

As mensagens de erro são enganosas. O problema real não era permissões insuficientes, mas um identificador de arquivo aberto em um objeto no diretório.

O utilitário Handle de Mark Russinovich, sugerido pelo MDMarra , ajudou a resolver a causa das mensagens de erro.

Diagnostique o erro usando o Handle

Faça o download do Handle do site sysinternals e extraia o arquivo handle.exe para %WINDIR% para colocá-lo em o caminho. Identificador requer direitos de administrador, portanto, abra um novo prompt de comando como administrador. Execute o seguinte comando para procurar por identificadores de arquivos abertos em objetos no diretório SourceControl :

handle SourceControl

A saída mostra que o TSVNCache.exe possui um identificador de arquivo aberto no diretório:

TSVNCache.exe      pid: 2860   type: File           1C8: C:\SourceControl\Project

Feche o identificador de arquivo finalizando o processo

O TSVNCache.exe é um componente do TortoiseSVN , um cliente SVN gráfico, e um conhecido hog de recursos .

Para finalizar o processo TSVNCache.exe, desabilite o cache de status do TortoiseSVN no diálogo de Configurações do TortoiseSVN:

Repita a pesquisa de alças. A saída de handle SourceControl confirma que não há mais identificadores de arquivos abertos no diretório:

No matching handles found.

Mover o diretório

Repita o comando para mover o diretório. A operação é bem-sucedida com a saída esperada:

1 file(s) moved.
    
por 01.07.2012 / 18:04
2

Parece que você provavelmente tem identificadores de arquivo aberto para incluir coisas nele. Mate qualquer um dos seus programas que possam estar usando. Reinicialize no modo de segurança se for necessário.

Se você ainda estiver com problemas, há uma ferramenta sysinternals chamada handles que pode ajudá-lo também.

    
por 01.07.2012 / 16:13