Como se apropriar dos arquivos da linha de comando?

34

De vez em quando, deparo com um arquivo do qual preciso ser proprietário. Eu normalmente uso cacls para alterar as permissões do ntfs, mas isso não parece fazer parte da propriedade. Sob * nix, eu executaria algo como chown me:me <file> . Existe uma janela equivalente a chown ?

    
por Joe 17.06.2009 / 16:55

10 respostas

24

subinacl é uma ferramenta poderosa do Windows sysadmin para fazer tudo a ver com propriedade e ACLs. Você pode alterar a propriedade para qualquer pessoa que não seja apenas você ( você não pode 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 um administrador (como eu acredito que o takeown.exe requer).

    
por 17.06.2009 / 17:05
24

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

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

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

Esta é uma cópia de sua documentação, conforme preservada em SS64 :

Syntax TAKEOWN [/s Computer [/u [Domain]UserName [/p [Password]]]] /f FileName [/a] [/r [/d {Y|N}]]

Key /s Computer The name or IP address of a remote computer (do not use backslashes). default = local computer. This parameter applies to all of the files and folders specified in the command.

/u [Domain]UserName Run the script with the permissions of the specified user account. default = system permissions.

/p [Password] The password of the user account that is specified in the /u parameter.

/f FileName The file name, UNC path or directory name pattern. Accepts the wildcard character *

/a Give ownership to the Administrators group instead of the current user.

/r Perform a recursive operation on all files in the specified directory and subdirectories.

/d {Y | N} Suppress the confirmation prompt that is displayed when the current user does not have the "List Folder" permission on a specified directory, and instead use a default value: Y: Take ownership of the directory. N: Skip the directory. Note that you must use this option in conjunction with the /r option. If the /a parameter is not specified, file ownership is given to the user who is currently logged on to the computer.

Mixed patterns using (? and *) are not supported by the takeown command.

After changing the owner for a file/folder, you can then assign full permissions to the files and subsequently read or delete them.

    
por 17.06.2009 / 17:00
15

Assuma a propriedade e os direitos totais da pasta e tudo dentro dela:

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

Eu tive que iniciar um prompt de comando como administrador, mas funcionou para mim no Windows 8.1. Com o desconforto do Windows 8.1, eu tive que procurar por "comando", clique direito no ícone do prompt de comando, 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 nele não mostraria a opção "executar como administrador".

Icacls [/ GRANT [: r]: [...]] [/ Denegar: [...]] [/ Remover [: g |: d]] [...]] [/ t] [ / c] [/ l] [/ q] [/ setintegritylevel: [...]] Icacls [/ sustituir [...]] [/ restaurar [/ c] [/ l] [/ q]]

    
por 31.08.2013 / 18:41
5

Eu sei que este é um post realmente antigo, mas há uma maneira de incorporar o Windows 7 e mais recente (pode estar no Windows Vista, mas não tenho certeza). Execute o seguinte em um prompt de comando escalonado na pasta que você deseja redefinir. /t informa icacls para executar a operação recursivamente.

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

O primeiro comando redefine o proprietário para quem já está conectado através das variáveis de ambiente. Claro, um nome específico pode ser usado em seu lugar.

O segundo comando força as permissões a serem reinfectadas pela árvore para todas as pastas e arquivos filhos.

Espero que isso ajude alguém no futuro.

    
por 09.11.2013 / 16:35
5

Você pode querer dar uma olhada em SetACL , o canivete suíço do gerenciamento de permissão. Aqui está um exemplo como atribuir a propriedade de todos os arquivos na unidade C: para "Administradores" e remover a proteção da herança de todos os objetos filhos 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 .

    
por 14.01.2011 / 09:53
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 todos os tradicionais cacls.exe manipulações em que se expande ...

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

    
por 22.03.2011 / 15:06
3

Para Windows 2003, 2008 ou Vista ou 7, use Takeown .

Para o Windows 2000, use Fileowners.pl .

    
por 17.06.2009 / 17:03
1

Outra alternativa é fileacl Ele é pequeno e pode definir / desmarcar a opção "herdar / não herdar" no objeto, ao contrário da maioria dos utilitários do Windows.

    
por 05.05.2011 / 23:28
0

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

cacls <file or directory> /E /T /G <user>:F
    
por 18.07.2013 / 15:49
0
  1. abra o prompt de comando como usuário admin e mude para o diretório problemático
  2. apropriar-se de todos os arquivos lá ... exemplo: takeown /f *.jpg
  3. conceder direitos de acesso a usuários de sua escolha ... exemplo: icacls *.jpg /grant "Everyone":F (observe que no Windows em inglês "Everyone" pode não existir, por exemplo, no Windows em alemão, ele só funciona com "Jeder" - uma verdadeira chatice que o Windows traduz opções de comando!)
por 26.08.2013 / 16:55