Создаем периодическую структуру в файловой системе с тонкой раздачей прав доступа
Создаем общий ресурс Public. В одном из каталогов громадная структура однотипных папок с одинаковой внутренней структурой. На каждую подпапку в этой структуре надо установить индивидуальные права доступа. На каждую папку назначаются через группы доступа - "ТолькоЧтение", "ЧтениеЗапись" и "ЗапретДоступа". В результате, например, для раздачи на восемь подпапок одного элемента этой структуры нужно создать 25 групп доступа и выставить права на все папки. Если таких папок штук 30 ...
У нас есть в задании создание большого количества папок с одной и той же структурой подпапок.
На каждую подпапку надо наложить права доступа Deny Read Write

Таких структур может быть много, соответственно, руками выставлять права сложно.
Будем использовать PowerShell
Скрипт исполняется из каталога, внутри которого надо построить структуру
Создаем общий ресурс Public. В одном из каталогов громадная структура однотипных папок с одинаковой внутренней структурой. На каждую подпапку в этой структуре надо установить индивидуальные права доступа. На каждую папку назначаются через группы доступа - "ТолькоЧтение", "ЧтениеЗапись" и "ЗапретДоступа". В результате, например, для раздачи на восемь подпапок одного элемента этой структуры нужно создать 25 групп доступа и выставить права на все папки. Если таких папок штук 30 ...
У нас есть в задании создание большого количества папок с одной и той же структурой подпапок.
На каждую подпапку надо наложить права доступа Deny Read Write

Таких структур может быть много, соответственно, руками выставлять права сложно.
Будем использовать PowerShell
#
# Создание подпапки и установка прав на нее
# Имена групп доступа создаются по принципу <имя родительского каталога>+" "+<Имя каталога>+" R|W|D"
#
function Set-F {
Param ( [PARAMETER(Mandatory=$True)][String]$Root_, # Имя родительского каталога
[PARAMETER(Mandatory=$True)][String]$Fold # Имя доччернего каталога
)
mkdir $fold # Создаем каталог (если каталог существует, на экран выскочит сообщение об этом, но работе скрипта не помешает
$__f = $fold
$__f1 = "NetbiosDomainName\"+$Root_+" "+$fold+" D" # Собираем полное имя группы доступа
$acl = Get-ACL "$__f" # Считываем ACL таблицу
$Rule=new-object System.Security.AccessControl.FileSystemAccessRule "$__f1","FullControl","ContainerInherit", "None","Deny"
# Заполняем структуру таблицы ACL правами доступа для выбранной папки
$acl.AddAccessRule($Rule) # Добавляем нужные права на папку
Set-Acl "$__f" -AclObject $acl # Применяем изменения
Write-output $__f1 # Выводим имя обработанной папки
# Повторяем для других групп доступа
$acl = Get-ACL "$__f"
$__f1 = $userdomain+"MK\"+$Root_+" "+$fold+" R"
$Rule1=new-object System.Security.AccessControl.FileSystemAccessRule "$__f1","Read","ContainerInherit", "None","Allow"
$acl.AddAccessRule($Rule1)
Set-Acl "$__f" -AclObject $acl
Write-output $__f1
$acl = Get-ACL "$__f"
$__f1 = $userdomain+"MK\"+$Root_+" "+$fold+" W"
$Rule2=new-object System.Security.AccessControl.FileSystemAccessRule "$__f1","Read,Write,Modify,ReadData,CreateFiles,Delete,ExecuteFile,DeleteSubdirectoriesAndFiles","ContainerInherit", "None","Allow"
$acl.AddAccessRule($Rule2)
Set-Acl "$__f" -AclObject $acl
Write-output $__f1
}
#
# Создание элемента периодической структуры
#
Function Set-All {
Param ( [PARAMETER(Mandatory=$True)][String]$RootF ) # Для какого элемента структуры создаем подкаталоги и раздаем права
mkdir $RootF # Создаем этот каталог
cd $RootF # Делаем его текущим
write-output $RootF # Выводим информацию о том, с каким каталогом работаем
$_f1 = "folder 1" # Описываем структуру подкаталогов
$_f2 = "folder 2"
$_f3 = "folder 3"
$_f4 = "folder 4"
$_f5 = "folder 5"
$_f6 = "folder 6"
$_f7 = "folder 7"
$_f8 = "folder 8"
Set-F -Root_ "$RootF" -Fold "$_f1" # Создаем каталог и устанавливаем права
Set-F -Root_ "$RootF" -Fold "$_f2"
Set-F -Root_ "$RootF" -Fold "$_f3"
Set-F -Root_ "$RootF" -Fold "$_f4"
Set-F -Root_ "$RootF" -Fold "$_f5"
Set-F -Root_ "$RootF" -Fold "$_f6"
Set-F -Root_ "$RootF" -Fold "$_f7"
Set-F -Root_ "$RootF" -Fold "$_f8"
cd .. # Возвращаемся в родительский каталог
}
$folder = "Элемент структуры 1"
Set-All -RootF "$folder"
$folder = "Элемент структуры 2"
Set-All -RootF "$folder"
# Сколько нужно одинаковых структур
$folder = "Элемент структуры N"
Set-All -RootF "$folder"
Скрипт исполняется из каталога, внутри которого надо построить структуру
no subject
Date: 2021-02-10 02:54 pm (UTC)Система категоризации Живого Журнала посчитала, что вашу запись можно отнести к категории: IT (https://www.livejournal.com/category/it?utm_source=frank_comment).
Если вы считаете, что система ошиблась — напишите об этом в ответе на этот комментарий. Ваша обратная связь поможет сделать систему точнее.
Фрэнк,
команда ЖЖ.
no subject
Date: 2021-02-10 02:56 pm (UTC)no subject
Date: 2021-02-10 02:58 pm (UTC)no subject
Date: 2021-02-14 07:58 am (UTC)Напишу, пожалуй, сюда.
Помнишь, ты под моим постом в комментарии оставил код, который показывает юзерпик того, кто это читает? А есть что-то подобное с именем пользователя?
И типо зашел и видишь и свой юзерпик и никнейм.
Хочу сегодня всех пранкануть.
no subject
Date: 2021-02-17 02:31 am (UTC)Не, не помню такой штуки