none
Скрипт для назначения прав папок Power shell RRS feed

  • Вопрос

  • здравствуйте, есть сетевой диск автоматически подключаемый при входе в системе, в нем большое количество папок, и на эти папки назначены права разным группам безопасности, вот необходимо  из прав  удалить  несколько групп. помогите реализовать скрипт.
    3 октября 2014 г. 5:11

Ответы

Все ответы

  • будет переменная в которой будет список групп безопасности, которые  надо удалить.

    $Groups = "domain/group1", "domain/group2"

    переменная где храниться путь

    $path="W:\"

     и теперь нужен цикл, который перебирает файлы, и цикл который перебирает группы у файлов и папок и если группа совпадает с групой указаной в папке то группа удаляется, один цикл завершается а другой продолжает перебирать файлы и папки....

    вроде так должно быть, подскажите пожалуйста нужные команды в  powershelle 

    3 октября 2014 г. 6:46
  • $Groups = "domain/group1", "domain/group2"
    $Path = "W:\"
    
    Get-ChildItem $Path -Directory | Foreach {
    	$folder = $_.FullName
    	$Groups | Foreach {
    		icacls $folder /remove:g $_
    	}
    }

    • Предложено в качестве ответа Vector BCOModerator 3 октября 2014 г. 6:54
    3 октября 2014 г. 6:51
    Отвечающий
  • спасибо, но данный скрипт убирает у группы безопасности права, а надо удалить группу безопасности
    3 октября 2014 г. 8:00
  • /remove:g - заменить на /remove - тогда будут удаляться,как allow, так и deny.
    3 октября 2014 г. 8:14
    Отвечающий
  • вот нарыл что-то такое, но оно также ничего не делает хотя говорит true

    $colRights = [System.Security.AccessControl.FileSystemRights]"ReadAndExecute" 

    $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None 
    $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None 

    $objType =[System.Security.AccessControl.AccessControlType]::Allow 

    $objUser = New-Object System.Security.Principal.NTAccount("CMCT\!АСУ ВУЗ Чтение W") 

    $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
        ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType) 

    $objACL = Get-ACL "c:\1" 
    $objACL.RemoveAccessRule($objACE) 

    Set-ACL "C:\1" $objACL

    3 октября 2014 г. 8:15
  •  все равно группа безопасности остается в списке, А ВОТ ЕСЛИ УКАЗЫВАТЬ ПОЛЬЗОВАТЕЛЯ  то он удаляется...


    • Изменено shmelfrol 3 октября 2014 г. 8:30
    3 октября 2014 г. 8:27
  •  все равно группа безопасности остается в списке, А ВОТ ЕСЛИ УКАЗЫВАТЬ ПОЛЬЗОВАТЕЛЯ  то он удаляется...


    Группе явно права на папку назначены или наследуются? Если наследуются:

    1) Или убирать наследование и удалять группу

    2) Удалять права с папки на которой явно заданы разрешения для группы

    • Изменено KazunEditor 3 октября 2014 г. 8:49
    3 октября 2014 г. 8:48
    Отвечающий
  • на папку разрешения добавлял явно, то есть вручную нашел на домене группу и добавил ее на вкладке безопасность в свойствах папки, все вложенные объекты у этой папки наследуют  ее разрешения ...


    3 октября 2014 г. 9:03
  • на папку разрешения добавлял явно, то есть вручную нашел на домене группу и добавил ее на вкладке безопасность в свойствах папки, все вложенные объекты у этой папки наследуют  ее разрешения ...


    Тогда вывод:

    1) icacls W:\Folder

    2) icacls W:\Folder /remove "domain\group1"

    3) icacls W:\Folder
    3 октября 2014 г. 9:14
    Отвечающий
  • Спасибо огромное... еще такой вопросик, хочу проверить теперь, то есть вывести все файлы и папки у которых в правах есть группа безопасности domain/group1
    3 октября 2014 г. 9:39
  • Get-ChildItem $Path -Recurse | Where {(icacls $_.FullName) -match "domain\\group1"}

    3 октября 2014 г. 9:51
    Отвечающий
  • не работает, где-то ошибка

    $Groups = "CMCT\!АСУ ВУЗ Чтение W"
    $Path = "C:\"

    Get-ChildItem $Path -recurse | Foreach {
    if (icacls $_.FullName -eq $Groups){ 
    write $_ 
    }

    }

    3 октября 2014 г. 10:03
  • $Groups = "CMCT\!АСУ ВУЗ Чтение W"
    $Path = "C:\"
    
    Get-ChildItem $Path -Recurse | Where {(icacls $_.FullName) -match [regex]::Escape($Groups)}

    • Помечено в качестве ответа KazunEditor 9 октября 2014 г. 7:21
    3 октября 2014 г. 10:09
    Отвечающий
  • icacls "C:\*" /findsid "domain/group1" /t /c
    • Помечено в качестве ответа KazunEditor 9 октября 2014 г. 7:21
    3 октября 2014 г. 20:41