![]() |
автоматизация разграничения прав файлового сервера в АД
Добрый день. Возник вопрос с переносом и дальнейшим контролем базы на файловый сервер винды. Предыдущая база очень большая, с сложной многуровневой структурой, и необходимо перенестив сё так, что бы редактировать верхние каталоги каким либо образом могла только группа1, а группа2 могла бы только ходить по этим каталогам, но, попадая в самый нижний созданный группой1 каталог (примерно 3-6 уровень) группа2 так же получала возможность создавать там папки, добавлять и редактировать файлы.
Сталкивался ли кто-то с подобным? Неужели придется всё делать руцями? |
1. Создайте в домене потребное количество групп пользователей.
2. Пропишите в каталогах права доступа для этих групп 3. Внесите в эти группы нужных пользователей (или группы пользователей) 4. PROFIT!!! Для автоматизации п.2 можно использовать команды FOR и CACLS командной строки CMD |
Спасибо за быстрый ответ, собственно проблемма именно в автоматизации п.2.
Если обобщить, то группе 2 примерно до 3го уровня в любом случае нельзя ничего кроме чтения. И вот в конце уровней есть четыре папки, они всегда имеют одинаковое название во всех подкаталогах - папка1 папка2 папка3 папка4, возможно где-то есть ещё папка5 и далее по необходимости, и вот внутри этих папок уже могут действовать другие пользователи. (папки5 могут создавать пользователи из группы1) но к созданным ими папкам в идеале должны бы применяться права аналогичные структуре. Не понимаю как такое можно сделать через cacls и for? Возможно есть какое-то программное решение, которое можно поставить на сервер? |
Прошу прощения. Сейчас посидел подумал, всё на деле обстоит немного иначе. Идеальным вариантом было бы сделать как-то так:
1 - на весь файловый сервер ставится право на чтение и редактирование для группы1, и только чтение для группы 2 2 - скриптом или ПО на этом сервере находится 4 папки которые находятся на разных уровнях но неизменно носят одинаковые названия - папка1 папка2 папка3 папка4 3 - на все эти найденные папки и всё их содержимое права удаляются и устанавливаются новые - на разрешения чтения и редактирования для группы1 и 2 ( ну или можно просто поменять права для группы2) Собственно вопрос, как воплотить пункт 2, нужна помощь или с советом по ПО, которое может это сделать или с составлением скрипта который сможет выполнить такую задачу. |
Так как народ, сможет кто помочь со скриптом или ПО которое задает права для всех папок и подпапок с определенным именем?
|
И вопрос всё ещё актуален :(
|
Используйте Posh.
Код:
Import-Csv "C:\folder_user" -Delimiter ";" | foreach{ Код:
folder;usergg |
Спасибо, я уже почти близок к пониманию. Один момент, тут же нужно вручную указывать на конкретную папку? --->>
E:\folder1;domain\user1 E:\folder2;domain\group1 А можно как-то задать для всех папок и её подпапок с одинаковым именем, где бы они не находились. Есть ли какая-то переменная для обозначения подобного? аля ---> E:\xxx\xxx\xxx\folder1 E:\xxx\xxx\folder1 E:\xxx\folder1 |
nokogerra Большое Большое ПРИБОЛЬШОЕ спасибо! За основу был взят ваш скрипт.
Пришлось подменить вместо usrgg - вставь usergg , наверное опечатка была. Далее вопрос относительно расположения папок - решение пришло после долгого стучания головой об стену. С помощью какой-нибудь программы, которая может выгружать результаты поиска вместе с расположением искомого ( в моём случае был сделан поиск папки folder1 и делал при помощи ПО ThreeSize - так как она уже была у нас приобретена ( из встроеного поиска винды результат выгрузить похоже нельзя)) Так вот, эту выгрузку открывал в екселе ( я ещё добавлял в конце строки нужную папку с помощью формулы =A1&"Folder1") ну и по такому же принципу ( либо автозаменой потом) все нужные папки - Folder2 Folder3 и т.д, благоу меня их всего 6 было. Затем получившийся список сохранял в csv ( сначала скрипт бил кирилицу, пришлось пересохранить csv файл с кодировкой UTF-8 почему-то сразу оно не отработало при первом сохранении) И затем уже скрипт пошёл в работу. Сейчас база выгружается, врядли будут ещё какие-то проблемы. Ещё раз огромное-огромное спасибо nokogerra - без этого скрипта ничего бы не вышло. |
хм, я слишком долго плавал.
Да, с usrgg опечаточка вышла. Я не совсем понял по поводу выгрузки папок, но я создавал список каталогов с помощью get-childitem командлета, например: Код:
PS C:\Users\xxx> Get-ChildItem -Path C:\ -Force | ?{$_.psiscontainer} | select fullname |
Подскажите, сейчас всплыл ещё один не приятный момент.Скрипт запускаем с файлового сервера под доменной учетной записью администратора. Если владелец папки к которой применяется скрипт не администратор ( другой доменный пользователь) скрипт выдает ошибку Set-Acl : The security identifier is not allowed to be the owner of this object.
Это как-то решается? |
Это решается принудительным изменением владельца.
Можно вообще принудительно задать владельца для самого верхнего каталога с параметром "применять ко всем вложенным файлам и папкам". Если существующие права доступа объекта файловой системы не позволяют администратору просматривать права файла/каталога, то после такой смены эти права будут сброшены: данный файл/каталог будет иметь только полные права для SYSTEM и для администратора, выполнившего данную операцию. Впрочем в вашем случае это не страшно, поскольку вы всё равно все нужные права назначите автоматически. |
Менять владельца принудительно можно, и это поможет, но такой вариант не подходит, так как иногда спрашивают "А кто создал этот файл?"
|
Keraberos, иначе - никак.
Что касается вопроса "кто создал", то во многих типах документов эта информация сохраняется в метаданных (тегах, свойствах) |
Цитата:
|
Цитата:
Жаль конечно если иначе всё же не как... Да и в "многих типах файлов можно посмотреть владельца" это всё же не все... Хотя мы сейчас думаем, как бы сделать более удобное отображение владельца и изменившего.. если выйдет, вопрос отпадёт... |
Время: 02:01. |
Время: 02:01.
© OSzone.net 2001-