AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 727456
Accepted
HopelessN00b
HopelessN00b
Asked: 2015-10-08 12:32:04 +0800 CST2015-10-08 12:32:04 +0800 CST 2015-10-08 12:32:04 +0800 CST

HALP! Eu herdei um pesadelo de permissões para pastas/diretórios iniciais redirecionados

  • 772

Meu novo empregador tem configuração de redirecionamento de pasta para suas centenas de usuários, e a pessoa que a configurou realmente não sabia o que estava fazendo. Como resultado, as práticas recomendadas para permissões em pastas/diretórios iniciais redirecionados não foram seguidas.

A solução para permitir que as pessoas acessem seus locais de pasta redirecionados foi, em vez disso, aplicar Full Controlpermissões (permissões NTFS, não permissões de "compartilhamento", é claro) Everyoneno diretório raiz ("Início") e propagá-lo para todas as subpastas e arquivos abaixo da raiz .

O que poderia dar errado, certo? Não é como se o CEO tivesse informações confidenciais em sua My Documentspasta ou alguém fosse infectado pelo CryptoWall e criptografasse os arquivos de todos os outros. Certo?

Então, de qualquer forma, agora que a infecção do CryptoWall foi removida e os backups restaurados, várias pessoas gostariam que substituíssemos as permissões atuais por algo menos horrível, e eu gostaria de não ter que clicar nos diálogos de permissões em vários cem pastas.

Como o PowerShell pode resolver esse problema para mim e tornar a vida digna de ser vivida novamente?

windows
  • 2 2 respostas
  • 2883 Views

2 respostas

  • Voted
  1. Best Answer
    HopelessN00b
    2015-10-08T12:32:04+08:002015-10-08T12:32:04+08:00

    Agradeço a JScott por me indicar a System.Security.Principal... classe ou método ou o que quer que seja, algum PowerShell para substituir as ACLs em várias subpastas por aquelas que são apropriadas para os diretórios pessoais do usuário:

    $Root = "Path to the root folder that holds all the user home directories"
    
    $Paths = Get-ChildItem $Root | Select-Object -Property Name,FullName
    
    $DAAR = New-Object system.security.accesscontrol.filesystemaccessrule("MyDomain\Domain Admins","FullControl","ContainerInherit, ObjectInherit","None","Allow")
    #Domain Admin Access Rule.
    
    $SysAR = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","ContainerInherit, ObjectInherit","None","Allow")
    #SYSTEM Access Rule.
    
    foreach ($Folder in $Paths)
    {
    
        Write-Host "Generating ACL for $($folder.FullName) ... "
        #For error handling purposes - not all folders will map to a user of the exact same name, this makes them easier to handle when viewing the output.
    
        $ACL = New-Object System.Security.AccessControl.DirectorySecurity
        #Creates a blank ACL object to add access rules into, also blanks out the ACL for each iteration of the loop.
    
        $objUser = New-Object System.Security.Principal.NTAccount("MyDomain\​"+$folder.name)
        #Creating the right type of User Object to feed into our ACL, and populating it with the user whose folder we're currently on.
    
        $UserAR = New-Object system.security.accesscontrol.filesystemaccessrule( $objuser ,"FullControl","ContainerInherit, ObjectInherit","None","Allow")
        #Access Rule for the user whose folder we're dealing with during this iteration.
    
        $acl.SetOwner($objUser)
        $acl.SetAccessRuleProtection($true, $false)
        #Change the inheritance/propagation settings of the folder we're dealing with
    
        $acl.SetAccessRule($UserAR)
        $acl.SetAccessRule($DAAR)
        $acl.SetAccessRule($SysAR)
    
        Write-Host "Changing ACL on $($folder.FullName) to:"
        $acl | fl
        #For error handling purposes - not all folders will map to a user of the exact same name, this makes them easier to handle when viewing the output.
    
        Set-Acl -Path $Folder.Fullname -ACLObject $acl
    
    }
    
    • 18
  2. matt Forchette
    2015-10-16T09:06:55+08:002015-10-16T09:06:55+08:00

    A resposta anterior não funcionará SE as pastas iniciais/pastas redirecionadas forem configuradas com "Conceder direitos exclusivos ao usuário". Isso ocorre porque quando esta opção é selecionada , o que não é recomendado , apenas SISTEMA e O USUÁRIO têm direitos sobre a pasta. Você não pode alterar as permissões (mesmo como administrador) sem se apropriar da pasta.

    Este É um método para contornar isso SEM assumir a propriedade. É um processo de duas etapas.

    Crie um script powershell que execute ICACLS para modificar as permissões nas pastas e subpastas.

    execute o PSexec para iniciar o script do Powershell.

    retirado e modificado de: https://mypkb.wordpress.com/2008/12/29/how-to-restore-administrators-access-to-redirected-my-documents-folder/

    1 Criar/copiar/roubar script powershell (requer PS 3.0 ou superior)

    #ChangePermissions.ps1
    # CACLS rights are usually
    # F = FullControl
    # C = Change
    # R = Readonly
    # W = Write
    
    $StartingDir= "c:\shares\users"   ##Path to root of users home dirs
    $Principal="domain\username"    #or "administrators"
    $Permission="F"
    
    $Verify=Read-Host `n "You are about to change permissions on all" `
    "files starting at"$StartingDir.ToUpper() `n "for security"`
    "principal"$Principal.ToUpper() `
    "with new right of"$Permission.ToUpper()"."`n `
    "Do you want to continue? [Y,N]"
    
    if ($Verify -eq "Y") {
    
    foreach ($FOLDER in $(Get-ChildItem -path $StartingDir -directory -recurse)) {
    
    $temp = $Folder.fullname
    CACLS `"$temp`" /E /P `"${Principal}`":${Permission} >$NULL
    #write-host $Folder.FullName 
    }
    }
    
    1. execute PSEXEC, ele opera como a conta SYSTEM e, portanto, pode alterar as permissões na pasta que somente SYSTEM e o usuário têm acesso. Instale e execute o PSexec. https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

    Na linha de comando:

    psexec -s -i powershell -noexit "& 'C:\Path\To\ChangePermissions.ps1'"
    
    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve