PDA

Показать полную графическую версию : [решено] назначить нужные права на папки в каталоге


Страниц : [1] 2

batyaPS
10-09-2014, 15:29
помогите решить такую задачу:
имеем каталог mail в котором лежат почтовые профили
вася
федя
....
дима
яна

сейчас ntfs права на данные папки(вася, федя) полные для всех.
этих папок (профилей почтовых) около 300 штук.
требуется для каждой из данных папок раздать полные права для группы администраторов и полные права для соответствующего пользователя
т.е. имя папки и есть доменное имя

сгодиться любой скрипт, наработка или что то способное упростить данную работу.
руками перебирать хватило на 20 профилей

batyaPS
10-09-2014, 15:31
группа доменных администраторов заранее известна, а пользователя требуется получить на основе имени соответствующей папки

да, и, галочку наследования с данных папок требуется убрать
так как после раздачи прав на под-папки для корневой папки mail будут даны права полные для администраторов(группа) и только чтение просмотр всем остальным доменным пользователям(группа)

Elven
10-09-2014, 16:10
Когда-то писал нечто подобное когда из-за изменения имен пользователей перебатонило права. Для админов и для простоюзеров лучше задать права для корневой папки с наследованием, далее (если я правильно понял) имя папки = %username% в домене. т.о. это будет как-то так:

@echo off
FOR /f %%a IN ('dir * /b /a:d') do icacls %%a /grant:r domain\%%a:(oi)(ci)f 2>>restore_control_error.log
domain подставляем свой.
что касается (oi)(ci)f то здесь лучше посмотреть icacls /? (указанные параметры я использовал у себя, насколько они подойдут в данной задаче сказать не могу)
restore_control_error.log смотрим после того как отработает, некоторые папки пришлось редактировать вручную из-за несоответствия папок именам.

это если кого беспокоит вероятность того что права по непонятным причинам могут слететь и/или поломаться от неудачно поставленного чекбокса. Батник пробегается по всей папке с шарами и бэкапит acl. Запускается глубокой ночью из шедулера, ну и работает соответсвенно количеству файлов и папок.
@echo off
set DAT=%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%
icacls d:\shares\* /save d:\acl_backup\d_shares_acl_backup.bak /t /c /q 2>> d:\acl_backup\d_shares_acl_backup_error.log
"C:\Program Files\WinRAR\WinRAR.exe" a d:\acl_backup\%dat%.rar e:\acl_backup\*.bak -df
"C:\Program Files\WinRAR\WinRAR.exe" a d:\acl_backup\%dat%.rar e:\acl_backup\*.log -df

batyaPS
10-09-2014, 16:44
не совсем понял как запускать
пишет Непредвиденное появление: %%a.

сохранил в бат запустил
в лог выдал процесс не может получить доступ к файлу так как файл занят другим процессом

FOR /f %%a IN ('dir * /b /a:d') do icacls %%a /grant:r domain\%%a:(oi)(ci)f 2>>restore_control_error.log »
не понял куда %username% приставить

Elven
10-09-2014, 16:53
batyaPS, сохранить текст как BAT'ник/CMD'шник и запустить. Если запускать из командной строки то заменить %% на %.
Забыл написать в предыдущем посте: батник ориентирован на запуск из папки содержащей папки пользователей, в данном примере:

mail\вася\
mail\федя\
mail\дима\
mail\яна\
mail\restore_control.cmd

batyaPS
10-09-2014, 16:54
Elven, уже понял так и сделал, %username% надо куда вписывать ?

версия icacls.exe важна ? у меня такая 5.2.3790.3959

Elven
10-09-2014, 17:10
(если я правильно понял) имя папки = %username% в домене »
он вот здесь подставляется
@echo off
FOR /f %%a IN ('dir * /b /a:d') do icacls %%a /grant:r domain\%%a:(oi)(ci)f 2>>restore_control_error.log

если папке федя соответствует в домене пользователь fedia то нужно будет усложнять соответственно.

версия icacls вроде играть не должна.

batyaPS
10-09-2014, 17:10
я не понял что он делает, почему то прогоняет по два раза
E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp.tander.ru\%a:(
oi)(ci)f 2>>error.log

E:\TEST>icacls almazova_iv /grant:r corp.tander.ru\almazova_iv:(oi)(ci)f 2>>err
or.log

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp.tander.ru\%a:(
oi)(ci)f 2>>error.log

E:\TEST>icacls almazova_iv /grant:r corp.tander.ru\almazova_iv:(oi)(ci)f 2>>err
or.log

E:\TEST>icacls amelina_nv /grant:r corp.tander.ru\amelina_nv:(oi)(ci)f 2>>error
.log

E:\TEST>pause
Для продолжения нажмите любую клавишу . . .

E:\TEST>icacls amelina_nv /grant:r corp.tander.ru\amelina_nv:(oi)(ci)f 2>>error
.log

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp.tander.ru\%a:(
oi)(ci)f 2>>error.log

E:\TEST>icacls almazova_iv /grant:r corp.tander.ru\almazova_iv:(oi)(ci)f 2>>err
or.log

E:\TEST>icacls amelina_nv /grant:r corp.tander.ru\amelina_nv:(oi)(ci)f 2>>error
.log

E:\TEST>pause
Для продолжения нажмите любую клавишу . . .


если папке федя соответствует в домене пользователь fedia то нужно будет усложнять соответственно. »
нет папка называется pupkin_pp пользователь так же pupkin_pp


Microsoft Windows [Версия 5.2.3790]
(С) Корпорация Майкрософт, 1985-2003.

E:\TEST>dir
Том в устройстве E имеет метку FILES
Серийный номер тома: 5811-4D32

Содержимое папки E:\TEST

10.09.2014 17:12 <DIR> .
10.09.2014 17:12 <DIR> ..
10.09.2014 16:41 <DIR> bezgin_ab
10.09.2014 17:08 103 ICACLS.CMD
10.09.2014 16:41 <DIR> popow_sn
1 файлов 103 байт
4 папок 313*184*882*688 байт свободно

E:\TEST>




E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp.tander.ru\%a:(oi)(ci)f 2>>error.l
og

E:\TEST>icacls bezgin_ab /grant:r corp.tander.ru\bezgin_ab:(oi)(ci)f 2>>error.log

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp.tander.ru\%a:(oi)(ci)f 2>>error.l
og

E:\TEST>icacls bezgin_ab /grant:r corp.tander.ru\bezgin_ab:(oi)(ci)f 2>>error.log

E:\TEST>icacls popow_sn /grant:r corp.tander.ru\popow_sn:(oi)(ci)f 2>>error.log

E:\TEST>pause
Для продолжения нажмите любую клавишу . . .

E:\TEST>icacls popow_sn /grant:r corp.tander.ru\popow_sn:(oi)(ci)f 2>>error.log

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp.tander.ru\%a:(oi)(ci)f 2>>error.l
og

E:\TEST>icacls bezgin_ab /grant:r corp.tander.ru\bezgin_ab:(oi)(ci)f 2>>error.log

E:\TEST>icacls popow_sn /grant:r corp.tander.ru\popow_sn:(oi)(ci)f 2>>error.log

E:\TEST>pause
Для продолжения нажмите любую клавишу . . .


пользователи в домене присутствуют

Elven
10-09-2014, 17:41
перепроверил несколько раз, папка исправно цепляет права родительской и добавляет права пользователю. в error.log ничего не пишется?

batyaPS
10-09-2014, 21:18
в error.log ничего не пишется? »
процесс не может получить доступ к файлу так как файл занят другим процессом

хотя файлы 100 процентов ни чем не заняты, так как на макете тренеруюсь

batyaPS
11-09-2014, 09:36
перепроверил несколько раз, папка исправно цепляет права родительской и добавляет права пользователю »
а можно выложить сам скрипт и файл icacls.exe ? может лишний символ какой ставиться или всё же версия имеет значение.
запускаю кстати на 2003 R2 sp2 сервере x86 права админа есть

Elven
11-09-2014, 10:40
Да пожалуйста. К слову сказать этот батник я только на Win7 и 2008r2 запускал, однако сомнения меня не перестают терзать.

batyaPS
11-09-2014, 13:05
хм версии отличались, вы мне от 64 битке дали ?
Файл изображения C:\WINDOWS\system32\icacls.exe не поврежден, но предназначен для другого типа компь
ютера.
Файл изображения C:\WINDOWS\system32\icacls.exe не поврежден, но предназначен для другого типа компь
ютера.
Для продолжения нажмите любую клавишу . . .

заменил exe на свой и скрипт взял вашь
processed file: bezgin_ab
Successfully processed 1 files; Failed processing 0 files
processed file: popow_sn
Successfully processed 1 files; Failed processing 0 files
Для продолжения нажмите любую клавишу . . .


заработало

теперь подскажите как всё же убрать наследование ?
дело в том, что для всех в папку mail будет доступ чтение, а конкретно к каждому профилю доступ должен быть только у админа и самого пользователя, т.е. остальные даже читать чужие письма не должны.

Elven
11-09-2014, 14:40
не понимаю, вроде бы изначально требовалось всем права на чтение, а админам и владельцу на редактирование. тогда на корневой папке убираем доступ на чтение для всех, оставляем только на траверс и снимаем наследование с этой конкретной группы. Либо есть ключ /inheritance:r, но он снимает ВСЕ наследуемые права (в т.ч. у админов и системы) значит нужно будет их потом дополнительно добавлять.

batyaPS
11-09-2014, 14:56
оставляем только на траверс »
что это ?

не понимаю, вроде бы изначально требовалось всем права на чтение »
на корень, т.е. общая папка mail да, а как по другому ? иначе ни кто не достучится до своих папок.

/inheritance:r, но он снимает ВСЕ наследуемые права (в т.ч. у админов и системы) значит нужно будет их потом дополнительно добавлять. »
можно и так .
куда прописать данный ключ в нашем примере,
и как потом следующей командой раздать заранее известным группам права?

т.е. для корневой папки mail будет достаточно одной галочки Обзор папок/Выполнение файлов что бы пользователи нормально работали в своих вложенных папках, но не могли прочитать вложенные папки чужих пользователей ?

batyaPS
11-09-2014, 15:11
тогда меня всё устраивает.

Elven
11-09-2014, 15:23
все совершенно правильно. раз устраивает значит хорошо :)

batyaPS
11-09-2014, 16:34
не понял что случилось - один раз скрипт отработал и всё.
повторно пытаюсь запустить висит черный экран с курсором и всё, после ожидания пол минуты закрывается.
ребутать сервер не вариант, что могло случиться ?

эхо офф убрал
бесконечно перебирает


E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp\%a:(oi)(c

E:\TEST>icacls bezgin_ab /grant:r corp\bezgin_ab:(oi)(ci)f

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp\%a:(oi)(c

E:\TEST>icacls bezgin_ab /grant:r corp\bezgin_ab:(oi)(ci)f

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp\%a:(oi)(c

E:\TEST>icacls bezgin_ab /grant:r corp\bezgin_ab:(oi)(ci)f

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp\%a:(oi)(c

E:\TEST>icacls bezgin_ab /grant:r corp\bezgin_ab:(oi)(ci)f

E:\TEST>FOR /F %a IN ('dir * /b /a:d') do icacls %a /grant:r corp\%a:(oi)(c

E:\TEST>icacls bezgin_ab /grant:r corp\bezgin_ab:(oi)(ci)f

Elven
11-09-2014, 16:57
batyaPS, пользуйтесь плз тегом CODE, грустные смайлики в коде просто убивают.
что пишет если просто выполнить из командной строки
icacls bezgin_ab /grant:r corp\bezgin_ab:(oi)(ci)f

batyaPS
11-09-2014, 17:01
подложил exe рядышком и всё заработало




© OSzone.net 2001-2012