Parar a herança de permissões de todas as subpastas no Windows 7

3

Isso está no Windows 7.

Eu tenho várias pastas de alto nível. Cada pasta de alto nível tem um monte de subpastas.

Eu preciso designar um grupo para ser "somente leitura" nas pastas de alto nível, mas "ler e escrever" em todas as subpastas e tudo mais abaixo.

Eu pensei que poderia fazer isso em duas etapas:

  1. Atribua permissões de "leitura e gravação" no nível de pasta alta, usando "Esta pasta, subpastas e arquivos". Este passo funciona, o grupo recebe o Read & Escreva todo o caminho.

  2. Abra a pasta de alto nível novamente e atribua "Somente leitura" ao grupo que estou tentando restringir, mas, desta vez, escolha "Somente esta pasta" ao aplicá-la. Este passo não funciona.

Eu acho que a Etapa 2 deixaria todas as subpastas como "Ler e gravar" e aplicaria a "somente leitura" somente na pasta de nível superior. Mas todas as subpastas, até o final, tornam-se "somente leitura" também após a etapa 2.

Acho que isso acontece porque todas as subpastas estão herdando permissões. Eu estava esperando configurar permissões diferentes usando "This Folder Only" desabilitaria a herança para permitir as diferentes permissões que estou definindo, mas não está funcionando dessa maneira.

Se eu abrir o diretório, selecionar todas as subpastas e clicar com o botão direito em "Propriedades", não será possível definir permissões em vários arquivos de uma só vez. Isso só me permite definir permissões se eu fizer uma de cada vez.

Eu não quero definir milhares de permissões de arquivo manualmente. Alguma ajuda?

Obrigado,

t.spoon.

    
por Tom Spoon 10.02.2016 / 03:33

2 respostas

0

I have several high level folders. Each high level folder has a whole bunch of subfolders.

I need to assign one group to be "read only" to the high level folders, but "read and write" to every subfolder and everything lower.

Com base na sua pergunta, no esclarecimento do seu comentário e na confirmação de que a (s) pasta (s) de alto nível [pai] terá acesso somente leitura. Além disso, confirmando que todas as subpastas abaixo (e arquivos dentro de cada subpasta) terão acesso de modificação, abaixo estão dois exemplos de como fazer isso em um loop FOR de lote; um um script em lote, e um copiar e colar na linha de comando.

Defina suas variáveis

  • SET TopFolder= :

    • Defina o valor SET TopFolder= para igualar a pasta de nível raiz [pai] com o caminho completo e o nome da pasta. O loop definirá as permissões com base no que existe abaixo dessa pasta, concedendo o acesso explícito de modificação da NFTS à ACL.
  • SET UserOrGroupName= :

    • Defina o valor SET UserOrGroupName= para igualar o nome da conta do usuário ou o nome do grupo de segurança (por exemplo, <LocalUserName> , <LocalGroupName> , <Domain>\<UserName> ou <Domain>\<GroupName> ).

Exemplo de cópia da linha de comando

@ECHO ON

SET TopFolder=C:\Users\User\Desktop\HighLevelFolder\Parent1
SET UserOrGroupName=User
::: Grant top folder read and execute access and have beneath folders and files inherit these permissions.
ICACLS "%TopFolder%" /grant:r "%UserOrGroupName%":(OI)(CI)RX
::: Iterate the subfolders beneath the [parent] root-level folder to grant the explicit modify access
FOR /F "TOKENS=*" %G IN ('DIR /B /AD "%TopFolder%\*"') DO ICACLS "%TopFolder%\%~G" /grant:r "%UserOrGroupName%":(OI)(CI)M
GOTO EOF

Exemplo de script em lote

@ECHO ON

SET TopFolder=C:\Users\User\Desktop\HighLevelFolder\Parent1
SET UserOrGroupName=User
::: Grant top folder read and execute access and have beneath folders and files inherit these permissions.     
ICACLS "%TopFolder%" /grant:r "%UserOrGroupName%":(OI)(CI)RX
::: Iterate the subfolders beneath the [parent] root-level folder to grant the explicit modify access
FOR /F "TOKENS=*" %%G IN ('DIR /B /AD"%TopFolder%\*"') DO ICACLS "%TopFolder%\%%~G" /grant:r "%UserOrGroupName%":(OI)(CI)M
GOTO EOF

Leitura adicional e fontes

Eu usei estas opções ICACLS:

/grant[:r] Sid:perm grants the specified user access rights. With :r,
    the permissions replace any previously granted explicit permissions.
    Without :r, the permissions are added to any previously granted
    explicit permissions.

perm is a permission mask and can be specified in one of two forms:
    a sequence of simple rights:
            M - modify access
            RX - read and execute access

inheritance rights may precede either form and are applied
only to directories:
        (OI) - object inherit
        (CI) - container inherit
    
por 10.02.2016 / 17:51
0

Assign "read and write" permissions at the high folder level, using "This Folder, Subfolders, and Files." This step works, the group gets Read & Write all the way down.

Esta é a parte em que o cartaz "Tom" deu errado.

O que ele deveria ter feito nessa etapa era definir o valor "Aplicar para" como Apenas subpastas e arquivos .

Você pode restringir o acesso do usuário em um diretório definindo seu acesso (por exemplo, RX) a "Somente esta pasta", desde que você defina o acesso em seus subobjetos (por exemplo, COMPLETO) como "Apenas subpastas e arquivos". Caso contrário, as configurações entrarão em conflito e o Windows 7 rejeitará a alteração ou a aplicará de alguma outra maneira que você pretende.

O procedimento manual do Tom é mais fácil do que lidar com os horrores do icacls.exe, mas é possível - em teoria - obter o mesmo resultado com o seguinte (mas nunca o fiz, exceto depois de excluir todos os herdados , e depois também de apagar todos os direitos explícitos , e deletar todos os outros usuários no objeto ou fazer isso para CADA usuário no objeto):

Primeiramente, configurei o acesso FULL somente em SUB-OBJECTS -

icacls.exe "%directory%" /T /grant:r %username%:(OI)(CI)(IO)F

Então eu restringi o acesso do usuário no próprio DIRETÓRIO -

icacls.exe "%directory%" /grant:r %username%:(RX,WDAC,WO,WD,AD,WEA,DC)
    
por 18.10.2016 / 21:52