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.
- Defina o valor
-
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>
).
- Defina o valor
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