Показать полную графическую версию : автоматизация разграничения прав файлового сервера в АД
Keraberos
11-04-2016, 21:52
Добрый день. Возник вопрос с переносом и дальнейшим контролем базы на файловый сервер винды. Предыдущая база очень большая, с сложной многуровневой структурой, и необходимо перенестив сё так, что бы редактировать верхние каталоги каким либо образом могла только группа1, а группа2 могла бы только ходить по этим каталогам, но, попадая в самый нижний созданный группой1 каталог (примерно 3-6 уровень) группа2 так же получала возможность создавать там папки, добавлять и редактировать файлы.
Сталкивался ли кто-то с подобным? Неужели придется всё делать руцями?
El Scorpio
12-04-2016, 01:24
1. Создайте в домене потребное количество групп пользователей.
2. Пропишите в каталогах права доступа для этих групп
3. Внесите в эти группы нужных пользователей (или группы пользователей)
4. PROFIT!!!
Для автоматизации п.2 можно использовать команды FOR и CACLS командной строки CMD
Keraberos
12-04-2016, 10:00
Спасибо за быстрый ответ, собственно проблемма именно в автоматизации п.2.
Если обобщить, то группе 2 примерно до 3го уровня в любом случае нельзя ничего кроме чтения. И вот в конце уровней есть четыре папки, они всегда имеют одинаковое название во всех подкаталогах - папка1 папка2 папка3 папка4, возможно где-то есть ещё папка5 и далее по необходимости, и вот внутри этих папок уже могут действовать другие пользователи. (папки5 могут создавать пользователи из группы1) но к созданным ими папкам в идеале должны бы применяться права аналогичные структуре.
Не понимаю как такое можно сделать через cacls и for?
Возможно есть какое-то программное решение, которое можно поставить на сервер?
Keraberos
12-04-2016, 10:52
Прошу прощения. Сейчас посидел подумал, всё на деле обстоит немного иначе. Идеальным вариантом было бы сделать как-то так:
1 - на весь файловый сервер ставится право на чтение и редактирование для группы1, и только чтение для группы 2
2 - скриптом или ПО на этом сервере находится 4 папки которые находятся на разных уровнях но неизменно носят одинаковые названия - папка1 папка2 папка3 папка4
3 - на все эти найденные папки и всё их содержимое права удаляются и устанавливаются новые - на разрешения чтения и редактирования для группы1 и 2 ( ну или можно просто поменять права для группы2)
Собственно вопрос, как воплотить пункт 2, нужна помощь или с советом по ПО, которое может это сделать или с составлением скрипта который сможет выполнить такую задачу.
Keraberos
18-04-2016, 17:06
Так как народ, сможет кто помочь со скриптом или ПО которое задает права для всех папок и подпапок с определенным именем?
Keraberos
26-04-2016, 18:02
И вопрос всё ещё актуален :(
nokogerra
27-04-2016, 09:36
Используйте Posh.
Import-Csv "C:\folder_user" -Delimiter ";" | foreach{
$acl = Get-Acl $_.folder
$usr = $_.usrgg.trim()
$acl.AddAccessRule((New-Object System.Security.AccessControl.FileSystemAccessRule("$usr","Read, ExecuteFile", "ContainerInherit, ObjectInherit", "None", "Allow")))
$acl | Set-Acl
}
где в csv (юникод) список каталогов и пользователей или групп в таком формате:
folder;usergg
E:\folder1;domain\user1
E:\folder2;domain\group1
О разрешениях можно здесь подробнее прочитать например тут http://coolcode.ru/razdacha-prav-na-ntfs-iz-powershell/
Keraberos
29-04-2016, 12:07
Спасибо, я уже почти близок к пониманию. Один момент, тут же нужно вручную указывать на конкретную папку? --->>
E:\folder1;domain\user1
E:\folder2;domain\group1
А можно как-то задать для всех папок и её подпапок с одинаковым именем, где бы они не находились. Есть ли какая-то переменная для обозначения подобного? аля --->
E:\xxx\xxx\xxx\folder1
E:\xxx\xxx\folder1
E:\xxx\folder1
Keraberos
03-05-2016, 18:48
nokogerra Большое Большое ПРИБОЛЬШОЕ спасибо! За основу был взят ваш скрипт.
Пришлось подменить вместо usrgg - вставь usergg , наверное опечатка была. Далее вопрос относительно расположения папок - решение пришло после долгого стучания головой об стену.
С помощью какой-нибудь программы, которая может выгружать результаты поиска вместе с расположением искомого ( в моём случае был сделан поиск папки folder1 и делал при помощи ПО ThreeSize - так как она уже была у нас приобретена ( из встроеного поиска винды результат выгрузить похоже нельзя)) Так вот, эту выгрузку открывал в екселе ( я ещё добавлял в конце строки нужную папку с помощью формулы =A1&"Folder1") ну и по такому же принципу ( либо автозаменой потом) все нужные папки - Folder2 Folder3 и т.д, благоу меня их всего 6 было. Затем получившийся список сохранял в csv ( сначала скрипт бил кирилицу, пришлось пересохранить csv файл с кодировкой UTF-8 почему-то сразу оно не отработало при первом сохранении) И затем уже скрипт пошёл в работу. Сейчас база выгружается, врядли будут ещё какие-то проблемы.
Ещё раз огромное-огромное спасибо nokogerra - без этого скрипта ничего бы не вышло.
nokogerra
04-05-2016, 07:14
хм, я слишком долго плавал.
Да, с usrgg опечаточка вышла. Я не совсем понял по поводу выгрузки папок, но я создавал список каталогов с помощью get-childitem командлета, например:
PS C:\Users\xxx> Get-ChildItem -Path C:\ -Force | ?{$_.psiscontainer} | select fullname
FullName
--------
C:\$Recycle.Bin
C:\Boot
C:\Documents and Settings
C:\downloads
C:\FirefoxPortable30
C:\ftp
C:\Games
C:\Intel
C:\MSOCache
C:\PerfLogs
C:\Program Files
C:\Program Files (x86)
C:\ProgramData
C:\Recovery
C:\System Volume Information
C:\temp
C:\Users
C:\Windows
можно добавить "-recurse" для рекурсивного выбора элементов, ?{$_.psiscontainer} - поиск только каталогов.
Keraberos
19-05-2016, 12:22
Подскажите, сейчас всплыл ещё один не приятный момент.Скрипт запускаем с файлового сервера под доменной учетной записью администратора. Если владелец папки к которой применяется скрипт не администратор ( другой доменный пользователь) скрипт выдает ошибку Set-Acl : The security identifier is not allowed to be the owner of this object.
Это как-то решается?
El Scorpio
20-05-2016, 00:56
Это решается принудительным изменением владельца.
Можно вообще принудительно задать владельца для самого верхнего каталога с параметром "применять ко всем вложенным файлам и папкам".
Если существующие права доступа объекта файловой системы не позволяют администратору просматривать права файла/каталога, то после такой смены эти права будут сброшены: данный файл/каталог будет иметь только полные права для SYSTEM и для администратора, выполнившего данную операцию.
Впрочем в вашем случае это не страшно, поскольку вы всё равно все нужные права назначите автоматически.
Keraberos
20-05-2016, 15:18
Менять владельца принудительно можно, и это поможет, но такой вариант не подходит, так как иногда спрашивают "А кто создал этот файл?"
El Scorpio
23-05-2016, 01:42
Keraberos, иначе - никак.
Что касается вопроса "кто создал", то во многих типах документов эта информация сохраняется в метаданных (тегах, свойствах)
Это как-то решается? »
А разве у Вас группа локальных администраторов (в которую входят администраторы домена) не имеет полного доступа к файлам и\или отключено наследование? Если нет, добавьте\включите, или меняйте владельцев.
Keraberos
24-05-2016, 10:34
А разве у Вас группа локальных администраторов (в которую входят администраторы домена) не имеет полного доступа к файлам и\или отключено наследование? Если нет, добавьте\включите, или меняйте владельцев.
В том то и дело что администратор имеет полные права - руками всё меняется отлично, а вот через скрипт не хочет.
Жаль конечно если иначе всё же не как... Да и в "многих типах файлов можно посмотреть владельца" это всё же не все... Хотя мы сейчас думаем, как бы сделать более удобное отображение владельца и изменившего.. если выйдет, вопрос отпадёт...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.