Usando o ICACLS para definir permissões em diretórios de usuários

16

Estou tentando redefinir as permissões nos diretórios do usuário e ter um pouco de dificuldade com a última etapa do meu script. Meu script basicamente apropria-se de todo o diretório de usuários, redefine as permissões em todos os arquivos e pastas do diretório, concede explicitamente as permissões necessárias, interrompe toda a herança de permissões das pastas pai, define o proprietário correto para todos os arquivos e pastas e, em seguida, remove a permissão que eu dei para mim mesmo para que eu pudesse operar nos arquivos. Eu preciso desta última etapa para remover-me de todos os arquivos e subpastas, mas no momento apenas me remove do% userDir% e deixa todas as permissões herdadas abaixo. Esta é uma lacuna aparente no ICACLS. Alguém sabe de alguma outra maneira de conseguir isso?

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /inheritance:r
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%"
    
por pk. 21.07.2009 / 23:38

3 respostas

18

Uma observação primeiro: Toda vez que você bloquear a herança, estará se livrando da flexibilidade futura. Evito bloquear a herança a todo custo.

Se você precisar que os usuários possam listar o conteúdo da pasta "E: \ Home Directories" de nível superior, por exemplo, considere a seguinte permissão:

  • SISTEMA - Controle total - Aplicado a esta pasta, subpastas e arquivos
  • BUILTIN \ Administradores - Controle total - Aplicado a esta pasta, subpastas e arquivos
  • BUILTIN \ Usuários autenticados - Ler e executar - Aplicados somente a esta pasta

A última permissão não herda as subpastas. Em cada subpasta, a herança permanece habilitada e você simplesmente especifica o usuário com os direitos "Modificar" ou "Controle total" (dependendo de como você se sente sobre os usuários poderem definir permissões dentro de seu diretório pessoal). (Em geral, configuro essa última permissão adicionando "Usuários autenticados" na folha de propriedades não-"Avançadas" de segurança, desmarcando as caixas de seleção "Ler" e "Ler e executar". Em seguida, prossigo para a caixa de diálogo "Avançado" e altero a caixa de diálogo "Aplicar em" configuração para que ACE para "Esta pasta apenas". Isso é sobre a maneira mais fácil, em termos de número de cliques, para defini-lo.)

Em seguida, seu script se torna:

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T

Suspeito veementemente que a adição da permissão "Usuários autenticados" que descrevi acima com a herança definida como "Somente esta pasta" fornecerá o que você está procurando em funcionalidade e oferecerá flexibilidade futura se você descobre que precisa definir uma permissão que talvez precise herdar todos os diretórios pessoais do usuário no futuro.

Este é o meu SOP para diretórios home de usuários, diretórios "Meus Documentos", "Desktop", etc, e para diretórios de perfis de usuários móveis. Isso funciona muito bem.

Editar

re: seu comentário sobre o acesso BUILTIN \ Administrators

Eu tive vários argumentos com as pessoas sobre a minha aceitação em conceder acesso BUILTIN \ Administrators ao longo dos anos, e minha opinião é a seguinte:

  • É mais fácil resolver uma certa classe de problemas do usuário se você puder acessar seus arquivos. É uma dor "tomar posse" e pode ser bastante lento se houver um grande número de arquivos presentes também.

  • Como você viu no ICACLS, BUILTIN \ Administrators pode "atribuir" a propriedade (além de "pegá-la"), portanto não há "segurança" adicionada por não ter os arquivos acessíveis para BUILTIN \ Administrators em primeiro lugar .

  • A menos que você esteja usando auditoria (e peneirando um número potencialmente grande de entradas falso-positivas), não haverá uma trilha de auditoria quando um usuário BUILTIN \ Administrators apropriar-se dos arquivos que eles não deveriam estar acessando copia-os e, em seguida, retorna os arquivos de volta ao proprietário e à permissão "adequados".

  • No mundo da Microsoft, o sistema de arquivos com criptografia (EFS, Encrypting filesystem) destina-se a resolver o problema de impedir o acesso não autorizado de BUILTIN \ Administrators. ACLs NTFS não resolvem esse problema. (Obviamente, o EFS não é o único show na cidade. A criptografia é a verdadeira resposta para resolver o problema de "limitar o acesso do Administrador da rede", independentemente de como você o divide.)

Em minha opinião, não especificar BUILTIN \ Administrators com acesso aos diretórios pessoais do usuário (e, na verdade, qualquer pasta) significa que você aumenta a complexidade e o tempo necessários para resolver problemas, fornecendo menos do que nenhuma segurança real (" menos que nenhum "porque transmite uma falsa sensação de segurança onde não há nenhum).

Eu desisti de tentar ganhar o argumento com as pessoas por meio da lógica. Parece ser um problema emocional com algumas pessoas. É como a simples ACE "Negar / Receber como" que é colocada na raiz de uma organização do Exchange para impedir que determinados grupos privilegiados abram as caixas de correio dos usuários. Ele não oferece segurança real (já que, sem uma auditoria, é possível remover / reaplicar a ACE, conforme necessário), uma falsa sensação de segurança e atrapalhar a solução de problemas reais.

Mesmo se você não gostar do meu argumento sobre BUILTIN \ Administrators ter acesso você deseja manter a hierarquia de herança intacta usando a herança "This folder only" onde apropriado. Bloquear herança em hierarquias de permissão é um sinal claro de que algo sobre o design é "quebrado" (invertido, etc).

    
por 22.07.2009 / 03:03
1

Primeiro, obrigado pelo trecho do script. Eu tenho trabalhado na mesma coisa, mas estava preso em um lugar diferente. Na minha caixa do SBS 2008, o código abaixo funciona para mim (supondo que ele seja executado de forma elevada, é claro). Eu fiz um icacls% userdir% / t de uma pasta de usuário nova (padrão) criada pelo SO, e a comparei ao icacls% userdir% / t de uma pasta depois de executar este script e parece que todos os "O's e Eu estou "correto. Espero que também funcione para você.

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(oi)(ci)f
ICACLS "E:\Home Directories\%userDir%\*.*" /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%\*.*" /inheritance:r
ICACLS "E:\Home Directories\%userDir%\*.*" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%" /t

Atenciosamente,

 -d
    
por 14.08.2009 / 00:42
-1

Preciso da sua ajuda para modificar este comando de acordo com a minha exigência, se isso for tecnicamente possível.

Aqui está a estrutura

\ Servidor \ Parent \ UserA \ unix

\ Servidor \ Parent \ UserB \ unix

\ Servidor \ Parent \ UserC \ unix .... e assim por diante.

Sob cada pasta User $ existe uma pasta chamada "unix".

Eu quero adicionar um usuário ou grupo com permissões completas em todas as pastas User $ listadas na pasta "Parent" (nomes tomados como na estrutura acima), mas deseja excluir permissões somente na pasta "unix".

Eu tenho este comando que funciona bem para mim na perspectiva da aplicabilidade das permissões necessárias, mas não posso adicionar a função excluir neste.

icacls "\\ Servidor \ Pai \ UsuárioA" / concessão Domínio \ Grupo: (OI) (CI) F / T

Você será capaz de orientar neste cenário?

    
por 18.09.2018 / 15:59