Como se apropriar dos arquivos na linha de comando?

34

De vez em quando eu corro para um arquivo do qual preciso me apropriar. Eu normalmente uso caclspara alterar as permissões de NTFS, mas não parece ser propriedade. Sob * nix, eu executaria algo parecido chown me:me <file>. Existe uma janela equivalente a chown?

Joe
fonte
muito ruim setACL não está funcionando com o script acima. errormessages no Win XP, 7 e 8 e você precisa ser um professor para descobrir o que há de errado com isso #

Respostas:

25

O subinacl é uma ferramenta poderosa do administrador de sistemas do Windows para fazer tudo a ver com propriedade e ACLs. Você pode alterar a propriedade para outra pessoa além de você ( não é possível fazer isso com a GUI ).

subinacl /file test.txt /setowner=domain\foo

Isso permite que você defina a permissão para qualquer usuário que desejar, sem precisar ser administrador (como acredito que o takeown.exe exija).

crb
fonte
Não é válido para o windows xp Posso baixar o SUBINACL.exe (Windows 2003 Resource kit) e usá-lo no Windows XP?
Kiquenet 23/02
Certamente você pode! Provavelmente é de onde eu peguei. Tente aqui .
CRB
26

Você está procurando "TAKEOWN.EXE", que foi o primeiro no Windows Server 2003 como um componente padrão, e acredito que um item do kit de recursos era anterior. Está disponível no Windows 7 e, talvez, em sistemas mais recentes.

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

/rexecuta a operação recursivamente em todos os filhos da pasta especificada. Ao contrário subinacl, você deve fazer login como o usuário com o qual está tentando se apropriar; ou, você pode simplesmente atribuir a propriedade ao grupo "Administradores".

Aqui está uma cópia de sua documentação, conforme preservado no SS64 :

Sintaxe TAKEOWN [/ s Computador [/ u [Domínio] Nome_do_usuário [/ p [Senha]]]] / f Nome_do_Arquivo [/ a] [/ r [/ d {S | N}]]

Teclas / s Computador O nome ou endereço IP de um computador remoto (não use barras invertidas). padrão = computador local. Este parâmetro se aplica a todos os arquivos e pastas especificados no comando.

/ u [Domain] UserName Execute o script com as permissões da conta de usuário especificada. padrão = permissões do sistema.

/ p [Senha] A senha da conta de usuário especificada no parâmetro / u.

/ f Nome_do_Arquivo O nome do arquivo, caminho UNC ou padrão do nome do diretório. Aceita o caractere curinga *

/ a Conceda propriedade ao grupo Administradores em vez do usuário atual.

/ r Execute uma operação recursiva em todos os arquivos no diretório e subdiretórios especificados.

/ d {Y | N} Suprima o prompt de confirmação que é exibido quando o usuário atual não possui a permissão "Listar Pasta" em um diretório especificado e, em vez disso, use um valor padrão: Y: Assuma a propriedade do diretório. N: ignore o diretório. Observe que você deve usar esta opção em conjunto com a opção / r. Se o parâmetro / a não for especificado, a propriedade do arquivo será concedida ao usuário atualmente conectado ao computador.

Padrões mistos usando (? E *) não são suportados pelo comando takeown.

Depois de alterar o proprietário de um arquivo / pasta, você pode atribuir permissões completas aos arquivos e, posteriormente, ler ou excluí-los.

Evan Anderson
fonte
Conteúdo
retirado
SS64 tem uma melhor ligação documentação: ss64.com/nt/takeown.html
jpaugh
17

Assuma a propriedade e todos os direitos da pasta e tudo o que está dentro:

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

Certifique-se de iniciar o prompt de comando como administrador!

Eu tive que iniciar um prompt de comando como administrador, ele funcionou para mim no Windows 8.1. Com o constrangimento do Windows 8.1, tive que procurar por "comando", clique com o botão direito do mouse no ícone do Prompt de Comando. Para mim, a fim de ver a opção "Executar como Administrador". Eu tinha um prompt de comando fixado na minha barra de tarefas, mas clicar com o botão direito do mouse não mostraria a opção "executar como administrador".

No Windows 10, "Executar como Administrador" deve estar disponível para você como uma opção do botão direito.

Sintaxe de Takeown :

takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]

Referência .

Sintaxe 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]]

Referência icacls .

chipiik
fonte
11
Esteja ciente de que icacls engasga com nomes de caminhos longos. A mensagem de erro "arquivo não encontrado" é um pouco enganadora, o que é pior abarca o processamento do restante da árvore sem mensagem. Você pode usar o truque de criar um volume SUBST mais profundo na árvore para solucionar esse problema algumas vezes. Takeown.exe tolera nomes longos.
Andrew Dennison
Não é válido para Windows XP
Kiquenet
8

Eu sei que esta é uma postagem muito antiga, mas existe uma maneira incorporada no Windows 7 e mais recente (pode estar no Windows Vista, mas não tenho certeza). Execute o seguinte em um prompt de comando escalado na pasta que você deseja redefinir. /tdiz icaclspara executar a operação recursivamente.

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t

O primeiro comando redefine o proprietário para quem estiver conectado através das variáveis ​​de ambiente. Obviamente, um nome específico pode ser usado.

O segundo comando força as permissões a serem reinicializadas na árvore em todas as pastas e arquivos filho.

Espero que isso ajude alguém no futuro.

Jim
fonte
O primeiro comando foi suficiente para mim.
Benoit Blanchon
6

Você pode dar uma olhada no SetACL , o canivete suíço de gerenciamento de permissões. Aqui está um exemplo de como atribuir a propriedade de todos os arquivos na unidade C: a "Administradores" e remover a proteção de herança de todos os objetos filho de uma só vez:

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"

Você também pode adicionar -silent.

Helge Klein
fonte
3

No Windows Server 2003 R2 (e posterior), você pode aproveitar a ferramenta interna icacls.exe para alterar a propriedade da linha de comando, bem como todas as manipulações tradicionais do cacls.exe nas quais ela se expande ...

Observe que o icacls.exe usa o modo "editar" como padrão, enquanto o cacls.exe usa o modo "substituir" - uma mudança bem-vinda para aqueles que foram mordidos (mais de uma vez) por essa pequena nuance de cacls!

jnaab
fonte
O icacls é bom porque está incluído nas versões recentes do Windows e permite atribuir propriedade a qualquer usuário.
David
1

Outra alternativa é o fileacl. É pequeno e pode definir / desabilitar o sinalizador "herdar / não herdar" no objeto, diferente da maioria dos utilitários do Windows.

Skelewir
fonte
0

Encontrei uma solução usando as Ferramentas do Windows: cacls

cacls <file or directory> /E /T /G <user>:F
chepseskaf
fonte
0
  1. abra o prompt de comando como usuário administrador e mude para o diretório problemático
  2. assumir a propriedade de todos os arquivos lá ... exemplo: takeown /f *.jpg
  3. conceda direitos de acesso a usuários de sua escolha ... exemplo: icacls *.jpg /grant "Everyone":F(observe que no Windows não inglês "Todo mundo" pode não existir, por exemplo, no Windows alemão, ele funciona apenas com "Jeder" - que chatice real, o Windows traduz opções de comando!)
Jörg
fonte