Показать полную графическую версию : [решено] Создать папки и раздать им права
MMariarti
05-02-2016, 07:54
Здравствуйте, помогите с решением проблемы, мне нужно создать ряд папок, скажем 1,2,3 ....(отделы), в каждой папке 3-4 папки с фамилиями и к папкам с фамилиями дать полные права всем, а папкам 1,2,3... (названия отделов) дать только на чтение всем, я полазал по форуму и нашел статью где скрипт берет из текстового файла имена папок и создает их (мне это понравилось и подходит, при необходимости можно в txt добавить новое ФИО или удалить старое или перенести в другой отдел), но там они не стали расписывать всю технологию и ушли в аську. Помогите пожалуйста написать скрипт
P.S. вот тема которую я нашел http://forum.oszone.net/thread-147058.html
PowerShell:
# Создадим папки для примера
md D:\Отделы
# Название отделов
1,2,3 | Foreach {md "D:\Отделы\$_"}
# Фамилии
"Иванов","Петров","Сидоров" | Foreach {md "D:\Отделы\1\$_"}
Get-ChildItem D:\Отделы | Where {$_.PsIsContainer} | Foreach {
icacls $_.FullName /inheritance:r /grant "Все:(OI)(CI)(IO)F" /grant "Все:R"
}
icacls $_.FullName /inheritance:r /grant "Все:(OI)(CI)(IO)F" /grant "Все:R" - убираем наследования и удаляем все предыдущие права, на основную паку дает Всем - чтение, на подпапки - Всем - Полный доступ.
MMariarti
08-02-2016, 06:13
Все отлично создается, прям то что нужно, с правами только затык, я поменял группу ВСЕ на Обмен (в ней сидят пользователи которым будет разрешен этот ресурс), в безопасности все права появились, вот только пользователи не могут ничего создать или удалить в папках "Иванов","Петров","Сидоров" хотя они состоят в группе Обмен и у них полные права. Может стоит добавить "прошедшие проверку" и "система" ? я по аналогии добавил "Администратор"
icacls $_.FullName /inheritance:r /grant "Администратор:R" /grant "Администратор:R", но на именных папках он не встал, подскажете что не так сделал?
MMariarti
08-02-2016, 06:30
Вот то что я изменил, 2-ую строку закоментил, чтобы он не пере создавал мой ресурс(может в этом проблема)
# Создадим папки для примера
#md D:\Exchange\Администрация\Обмен
# Название отделов
"Руководство","ОИТ","ОКС" | Foreach {md "D:\Exchange\Администрация\Обмен\$_"}
# Фамилии
"Иванов","Петров","Сидоров" | Foreach {md "D:\Exchange\Администрация\Обмен\Руководство\$_"}
"Иванов","Петров" | Foreach {md "D:\Exchange\Администрация\Обмен\ОИТ\$_"}
"Иванов" | Foreach {md "D:\Exchange\Администрация\Обмен\ОКС\$_"}
Get-ChildItem D:\Exchange\Администрация\Обмен | Where {$_.PsIsContainer} | Foreach {
icacls $_.FullName /inheritance:r /grant "Обмен:(OI)(CI)(IO)F" /grant "Обмен:R"
icacls $_.FullName /inheritance:r /grant "Администратор:R" /grant "Администратор:R"
}
папок будет больше, поэтому мне и нужно понять что я делаю не так, огромное человеческое спасибо за понимание и помощь
Вот то что я изменил, 2-ую строку закоментил, чтобы он не пере создавал мой ресурс(может в этом проблема) »
«Пересоздать» уже существующий каталог невозможно, не переживайте.
MMariarti
10-02-2016, 04:40
Прошу прощения за излишнею самоуверенность, сам накосячил с правами доступа к папке "Обмен", разобрался. Но у меня еще одна дилемма: конечный пользователь имеет полный доступ на папки "Иванов","Петров","Сидоров", а это означает что, скажем Петров "неумышленно" может удалить папку "Иванова" и тот в какой-то промежуток времени не получит или потеряет важную информацию. И тут я недостойный и тщедушный, раболепно и с безмерным уважением к Вам о Великие знатоки тысяч и тысяч языков программирования, прошу подсказать что нужно добавить в скрипт, чтобы запретить удаление конечной папки "Иванов","Петров","Сидоров".
Теперь четко и ясно сформулируйте задачу по пунктам.
- Структура папок
- Права на каждую папку и подпапку
- Как соотносится папка-пользователь
MMariarti
11-02-2016, 03:46
1.Обмен
____|___2.Приемная
___________|__3.Иванов
___________|__3.Петров
Петров и Иванов имеют полный доступ во всех папках третьего уровня, но удалять эти папки они не должны, в папках 1 и 2 уровня могут только читать.
Скрипт который вы написали все делает как надо, создает отделы (1,2,3,) -> в каждом отделе создает именные папки (Иванов, Петров, Сидоров) дает права на отделы "только чтение" (правильно) и именные папки "полный доступ". Нужно чтобы пользователь не мог удалить именные папки (Иванов, Петров, Сидоров). я руками добавил запрет, удалять, в безопасности (скрин прилагаю). То есть у папок Иванов, Петров, Сидоров нужны права на полный доступ и запрет на удаление самой папки Иванов, Петров, Сидоров, и получается что пользователь не может удалить именную папку , а внутри нее может делать все что ему вздумается. Заранее спасибо.
# Создадим папки для примера
md D:\Отделы
# Название отделов
1,2,3 | Foreach {md "D:\Отделы\$_"}
# Фамилии
"Иванов","Петров","Сидоров" | Foreach {md "D:\Отделы\1\$_"}
Get-ChildItem D:\Отделы | Where {$_.PsIsContainer} | Foreach {
icacls $_.FullName /inheritance:r /grant "Все:R"
}
Get-ChildItem D:\Отделы\*\* | Where {$_.PsIsContainer} | Foreach {
icacls $_.FullName /inheritance:r /grant "Все:(OI)(CI)(F)" /T
$acl = Get-ACl $_.FullName
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Все","DeleteSubdirectoriesAndFiles, Delete, ChangePermissions, TakeOwnership","None","None","Deny")
$acl.AddAccessRule($rule)
Set-Acl -Path $_.FullName -AclObject $acl
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.