Equivalente ao chmod para alterar as permissões de arquivo no Windows


Respostas:


25

Greg menciona attrib - mas attrib não está nem perto chmod- attribpode definir atributos Somente leitura / Oculto de um único arquivo - ele não fornece controles refinados como icaclsfaz.

icaclsdefine / redefine as listas de controle de acesso, para que você possa conceder / negar direitos para SIDs e grupos individuais. É bastante complicado.

Aqui está um exemplo que eu salvei na minha lista do github ; redefine a propriedade e a lista de controle de acesso para todos os arquivos em uma pasta e é particularmente útil para corrigir aqueles irritantes "Você precisa de permissões de .. para executar esta ação", especialmente ao mover arquivos de uma instalação anterior:

icacls * /reset /t /c /q 

Redefinir substitui o existente pela lista padrão.
/tage recursivamente em todos os arquivos, pastas e subpastas
/qnão exibe nenhuma mensagem de sucesso
/ccontinua com os arquivos restantes, mesmo que ocorra um erro.

Você também pode fazer backup de ACLs existentes e aplicá-las a todos. Dê uma olhada no ss64, que explica muito bem as diferentes opções e opções.


O problema é que não posso fazer isso, para cada arquivo existe a mensagem: "Acesso negado". Não há maneira de contornar isso? Em um sistema escolar que bloqueia isso, mas não o cmd?
— theonlygusti

Você precisa de privilégios de administrador; o "normal" cmdque você obtém pressionando [Win] + [R] não possui. Para essas necessidades especiais, tenho um atalho "Admin shell", com "Executar como administrador" (ou semelhante; estou em um sistema Windows alemão) marcado (e com uma cor de fundo vermelho escuro).
— Tobias

Na verdade, eu enfrento o problema com o erro de permissão negada. Por que diabos eu posso fazer algo se eu sou um administrador e um console que eu corro também é executado como administrador. O que é isso?
— camo


9

(Infelizmente) não pode haver um equivalente exato, pois o Linux e o DOS / Windows usam atributos para propósitos diferentes e (como Chathuranga disse antes) o modelo de segurança é diferente:

  • Nos sistemas de arquivos do Windows, existem atributos "hidden" ( H) e "system" ( S) que não têm equivalente no Linux; lá, os arquivos são ocultados acrescentando o nome com um ponto ( .).
  • Também não há equivalente ao Aatributo "archive" ( ) do Windows .
  • Não há equivalente aos xatributos "executáveis" ( ) do Linux nos atributos de arquivo do DOS / Windows.
  • Não é um equivalente ao Windows "diretório" ( D) atributo (mas não pode ser alterado de qualquer maneira).
  • Nos sistemas de arquivos Linux, cada entrada pertence a exatamente um usuário e exatamente um grupo, e a leitura / gravação / execução pode ser permitida para cada um deles e para outros. As ACLs (como usadas pelo Windows) são ainda mais flexíveis, mas também mais complicadas, e a sintaxe da linha de comando é uma PITA (na minha humilde opinião, é claro)

O atributo de arquivo do DOS R(somente leitura) é aquele que pode ser considerado como tendo um equivalente: esse conjunto de atributos é aproximadamente o watributo de todos que estão faltando; mas a permissão para alterar esse atributo está sujeita às ACLs.

Pode ser legal ter um chmod/ chownequivalente no Windows, talvez escrito em alguma linguagem de script, que por sua vez chama attribe cacls(ou sucessores), mas eu não tenho um.


Bom primeiro post!
— Slm

Você está confundindo atributos e permissões de arquivo. O Linux possui atributos de arquivo que podem ser alterados via chattr . O Linux possui controle de acesso refinado para atributos (por exemplo, o atributo [i] mmutable pode ser definido apenas pela raiz ou por um CAP_LINUX_IMMUTABLEprocesso), enquanto o acesso aos atributos definidos no Windows é tudo ou nada. É um erro comum nas implementações do chmodWindows usar este comando para definir o atributo de arquivo somente leitura. Infelizmente, os sistemas são tão informados quanto os programadores que os desenvolvem.
— Eryk Sun

@eryksun: Interessante - eu não estava ciente desse chattrcomando. Mas você não quis dizer "confundir atributos e permissões de arquivos", certo? AFAICS, todas as palavras que escrevi sobre atributos do DOS ainda estão corretas.
— Tobias

Um arquivo consiste em muitos atributos (estendidos). No Unix, o conjunto principal de atributos é armazenado no inode, incluindo o modo de arquivo (permissões). Outros atributos estendidos (por exemplo, ACLs) podem ser armazenados externamente. O Windows não tem equivalente ao atributo "modo" do Unix. Ele também não possui um registro de inode comum para sistemas de arquivos. Um registro NTFS MFT é semelhante. No seu POV, os atributos de arquivo padrão do Windows são um único atributo do registro do arquivo. Eles correspondem aos atributos de arquivo do Linux configurados via chattr, exceto que o Windows possui um atributo de diretório, pois não há inode.
— Eryk Sun

A pergunta é sobre um "[e] equivalente ao chmod para alterar as permissões de arquivo no Windows". Não há equivalente direto chmodno Windows porque não há nada como o atributo "mode" do arquivo. O conjunto padrão de atributos de arquivo do Windows não tem nada a ver com isso. O atributo somente leitura não é uma permissão de arquivo. Ele basicamente diz que o arquivo está escrito em pedra, portanto, todas as tentativas de modificá-lo devem falhar. O atributo de arquivo "imutável" do Linux é semelhante. O Windows usa apenas ACLs para permissões, portanto, icacls.exe e similares são os únicos comandos semelhantes no assunto de permissões.
— Eryk Sun

6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Funciona como um encanto para alterar as permissões em uma pasta para usuários do domínio. Informações adicionais sobre caclse icacls.


Bom primeiro post! Nunca ouvi falar de icacls.
— Slm

5

O attribcomando é a correspondência mais próxima para itens muito básicos (somente leitura, sinalizadores de arquivamento). Depois, há o comando ACL (lista de controle de acesso) cacls. Por último, mas não menos importante, como o Windows é realmente compatível com Posix, os sinalizadores do tipo unix existem. Se você instalar o conjunto de ferramentas Cygwin, receberá um chmod. (Um pouco fora de tópico, já que você está procurando o equivalente a um comando unix, fazer o download e instalar o Cgygwin pode ser algo interessante para você.)



2

Não há nada chamado chmod no windows porque o modelo de segurança do Windows é diferente do Linux. Você pode usar o attribcomando para alterar as propriedades dos objetos. (Mas eles são mais direcionados às propriedades globais.)


2

Para mim, a solução alternativa é instalar o Cygwin e adicionar sua pasta bin ao caminho do sistema. Então, se você executar "chmod" na linha de comando, ele funcionará. Embora eu não tenha verificado sua correção.


1
Referência: simples e detalhada
— Bob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.