Remover recursivamente permissões de gravação no Windows?

1

Caixa antiga do Windows 2003 que contém pastas compartilhadas que estão sendo desatribuídas. Há uma pasta sendo compartilhada, dentro dessa pasta há uma pasta por usuário. Cada pasta tem esse usuário adicionado à segurança com permissões completas. Então qualquer usuário criou subpastas abaixo disso ...

Eu quero fazer com que eles só possam ler as pastas deles no próximo mês antes do descomissionamento. Portanto, remova permissões completas e de gravação para cada usuário.

No linux isso seria chmod -R 550. (onde eles tinham algo como 770 antes)

Parece que o CACLS seria o que eu quero usar no mundo do Windows, mas parece que você teria que especificar um nome de usuário para ele. Eu não posso apenas retirar permissão para escrever *. Então eu precisaria de algum tipo de script de lote recursivo em uma caixa do Windows 2003 para vários milhares de pastas para ler o nome de usuário, arquivo e modificar as permissões de arquivos para esse nome de usuário.

Isso parece uma dor de cabeça, mesmo que funcione (não estou convencido de que isso não quebraria tudo).

Existe um caminho mais fácil? Por exemplo, se eu adicionasse permissões para o objeto a todos na pasta raiz e negasse permissões de gravação, isso teria precedência sobre as permissões individuais de usuários abaixo? Ou há uma maneira que eu não estou vendo para desmembrar as permissões de gravação sem definir cada usuário / pasta em um script?

    
por BeanBagKing 08.06.2015 / 17:17

3 respostas

0

Uma maneira de fazer isso seria conceder ao grupo Domain Users as permissões apropriadas na pasta pai e verificar a caixa de seleção Replace all existing inheritable permissions on all descendants with inheritable permissions from this object nas Configurações Avançadas de Segurança na pasta pai. Isso substituirá as permissões em todas as pastas filhas pelas permissões da pasta pai.

    
por 08.06.2015 / 17:51
0

Acredito que encontrei um script adequado e não complicado, capaz de fazer o que eu preciso.

for /F "tokens=1,2,3 delims=:" %%i in (fixacl.lst) do xcacls d:\share\%%i /T /g CONTOSO\%%i:R Administrators:F /Y

Isso deve levar uma lista de nomes de usuários (ou uma lista de diretórios, já que cada diretório tem um usuário associado e vice-versa, 1: 1) e sobrescrever as permissões, recursivamente com o domínio \ username: readonly e Administrator: full control. Como é baseado em uma lista, não preciso se preocupar com subdiretórios com nomes diferentes.

Em código psudo aproximado ...

For each line in the file fixacl.lst
Grab the name and set it to the variable %%i
then xcalcs on the directory of that name
With xcalcs options for recursive and replace
Read Only for that user
Full control for the administrator
and Yes to everything
    
por 08.06.2015 / 21:47
0

A resposta mais simples é alterar as permissões no próprio compartilhamento. Altere o grupo de usuários ou os usuários individualmente se eles foram adicionados ao compartilhamento dessa maneira, de qualquer coisa que eles sejam para Read.

    
por 08.06.2015 / 22:16