Показать полную графическую версию : [решено] назначить нужные права на папки в каталоге
помогите решить такую задачу:
имеем каталог mail в котором лежат почтовые профили
вася
федя
....
дима
яна
сейчас ntfs права на данные папки(вася, федя) полные для всех.
этих папок (профилей почтовых) около 300 штук.
требуется для каждой из данных папок раздать полные права для группы администраторов и полные права для соответствующего пользователя
т.е. имя папки и есть доменное имя
сгодиться любой скрипт, наработка или что то способное упростить данную работу.
руками перебирать хватило на 20 профилей
группа доменных администраторов заранее известна, а пользователя требуется получить на основе имени соответствующей папки
да, и, галочку наследования с данных папок требуется убрать
так как после раздачи прав на под-папки для корневой папки mail будут даны права полные для администраторов(группа) и только чтение просмотр всем остальным доменным пользователям(группа)
Когда-то писал нечто подобное когда из-за изменения имен пользователей перебатонило права. Для админов и для простоюзеров лучше задать права для корневой папки с наследованием, далее (если я правильно понял) имя папки = %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
не совсем понял как запускать
пишет Непредвиденное появление: %%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% приставить
batyaPS, сохранить текст как BAT'ник/CMD'шник и запустить. Если запускать из командной строки то заменить %% на %.
Забыл написать в предыдущем посте: батник ориентирован на запуск из папки содержащей папки пользователей, в данном примере:
mail\вася\
mail\федя\
mail\дима\
mail\яна\
mail\restore_control.cmd
Elven, уже понял так и сделал, %username% надо куда вписывать ?
версия icacls.exe важна ? у меня такая 5.2.3790.3959
(если я правильно понял) имя папки = %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 вроде играть не должна.
я не понял что он делает, почему то прогоняет по два раза
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
Для продолжения нажмите любую клавишу . . .
пользователи в домене присутствуют
перепроверил несколько раз, папка исправно цепляет права родительской и добавляет права пользователю. в error.log ничего не пишется?
в error.log ничего не пишется? »
процесс не может получить доступ к файлу так как файл занят другим процессом
хотя файлы 100 процентов ни чем не заняты, так как на макете тренеруюсь
перепроверил несколько раз, папка исправно цепляет права родительской и добавляет права пользователю »
а можно выложить сам скрипт и файл icacls.exe ? может лишний символ какой ставиться или всё же версия имеет значение.
запускаю кстати на 2003 R2 sp2 сервере x86 права админа есть
Да пожалуйста. К слову сказать этот батник я только на Win7 и 2008r2 запускал, однако сомнения меня не перестают терзать.
хм версии отличались, вы мне от 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 будет доступ чтение, а конкретно к каждому профилю доступ должен быть только у админа и самого пользователя, т.е. остальные даже читать чужие письма не должны.
не понимаю, вроде бы изначально требовалось всем права на чтение, а админам и владельцу на редактирование. тогда на корневой папке убираем доступ на чтение для всех, оставляем только на траверс и снимаем наследование с этой конкретной группы. Либо есть ключ /inheritance:r, но он снимает ВСЕ наследуемые права (в т.ч. у админов и системы) значит нужно будет их потом дополнительно добавлять.
оставляем только на траверс »
что это ?
не понимаю, вроде бы изначально требовалось всем права на чтение »
на корень, т.е. общая папка mail да, а как по другому ? иначе ни кто не достучится до своих папок.
/inheritance:r, но он снимает ВСЕ наследуемые права (в т.ч. у админов и системы) значит нужно будет их потом дополнительно добавлять. »
можно и так .
куда прописать данный ключ в нашем примере,
и как потом следующей командой раздать заранее известным группам права?
т.е. для корневой папки mail будет достаточно одной галочки Обзор папок/Выполнение файлов что бы пользователи нормально работали в своих вложенных папках, но не могли прочитать вложенные папки чужих пользователей ?
тогда меня всё устраивает.
все совершенно правильно. раз устраивает значит хорошо :)
не понял что случилось - один раз скрипт отработал и всё.
повторно пытаюсь запустить висит черный экран с курсором и всё, после ожидания пол минуты закрывается.
ребутать сервер не вариант, что могло случиться ?
эхо офф убрал
бесконечно перебирает
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
batyaPS, пользуйтесь плз тегом CODE, грустные смайлики в коде просто убивают.
что пишет если просто выполнить из командной строки
icacls bezgin_ab /grant:r corp\bezgin_ab:(oi)(ci)f
подложил exe рядышком и всё заработало
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.