UncleFather » 22 ноя 2010 15:38, Пн
Проблема:
Имеется файловый сервер с папкой, в которой лежит множество пользовательских папок. По условиям задачи - права от родительской папки на пользовательские папки наследовать нельзя! Необходимо добавить нового пользователя с правами на изменение ко всем пользовательским папкам так, чтобы эти права распространились и на дочерние папки.
Решение:
Создаем PowerShell скрипт (файлик с именем ChgPerm.ps1)
Код: Выделить всё
$inheritCO = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagationIO = [system.security.accesscontrol.PropagationFlags]"InheritOnly"
$PropagationN = [system.security.accesscontrol.PropagationFlags]"None"
foreach ($item in Get-ChildItem -LiteralPath D:\Users_Dirs\ -Force | Where-Object {!$item.PSIsContainer}) {
echo $item
$ACL = Get-Acl D:\Users_Dirs\$item
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule(
"Domain\User1", "Modify", $inheritCO, $propagationN, "Allow"
)
$ACL.SetAccessRule($AccessRule)
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule(
"Domain\User2", "Modify", $inheritCO, $propagationN, "Allow"
)
$ACL.SetAccessRule($AccessRule)
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule(
"SYSTEM", "FullControl", $inheritCO, $propagationN, "Allow"
)
$ACL.SetAccessRule($AccessRule)
$ACL | Set-Acl D:\Users_Dirs\$item
}
здесь:
-
$propagationIO - используем в случае, если права нужно ставить ТОЛЬКО на дочерние папки пользовательских папок;
-
$propagationN - используем в случае, если права нужно ставить и на дочерние папки и на пользовательские папки;
Этот пример добавит к существующим следующие права с наследованием на все дочерние подпапки папки "D:\Users_Dirs\":
[b]Проблема:[/b]
Имеется файловый сервер с папкой, в которой лежит множество пользовательских папок. По условиям задачи - права от родительской папки на пользовательские папки наследовать нельзя! Необходимо добавить нового пользователя с правами на изменение ко всем пользовательским папкам так, чтобы эти права распространились и на дочерние папки.
[b]Решение:[/b]
Создаем PowerShell скрипт (файлик с именем [i]ChgPerm.ps1[/i])
[code]$inheritCO = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagationIO = [system.security.accesscontrol.PropagationFlags]"InheritOnly"
$PropagationN = [system.security.accesscontrol.PropagationFlags]"None"
foreach ($item in Get-ChildItem -LiteralPath D:\Users_Dirs\ -Force | Where-Object {!$item.PSIsContainer}) {
echo $item
$ACL = Get-Acl D:\Users_Dirs\$item
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule(
"Domain\User1", "Modify", $inheritCO, $propagationN, "Allow"
)
$ACL.SetAccessRule($AccessRule)
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule(
"Domain\User2", "Modify", $inheritCO, $propagationN, "Allow"
)
$ACL.SetAccessRule($AccessRule)
$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule(
"SYSTEM", "FullControl", $inheritCO, $propagationN, "Allow"
)
$ACL.SetAccessRule($AccessRule)
$ACL | Set-Acl D:\Users_Dirs\$item
}
[/code]
здесь:[list]
[*] [b]$propagationIO[/b] - используем в случае, если права нужно ставить ТОЛЬКО на дочерние папки пользовательских папок;
[*] [b]$propagationN[/b] - используем в случае, если права нужно ставить и на дочерние папки и на пользовательские папки;[/list]
Этот пример [b]добавит к существующим[/b] следующие права с наследованием на все дочерние подпапки папки [i]"D:\Users_Dirs\"[/i]:[list][*] Domain\User1 - на изменение[*] Domain\User12- на изменение[*] System - полные права[/list]