Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] назначить нужные права на папки в каталоге (http://forum.oszone.net/showthread.php?t=287753)

batyaPS 10-09-2014 15:29 2400851

назначить нужные права на папки в каталоге
 
помогите решить такую задачу:
имеем каталог mail в котором лежат почтовые профили
вася
федя
....
дима
яна

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

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

batyaPS 10-09-2014 15:31 2400853

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

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

Elven 10-09-2014 16:10 2400872

Когда-то писал нечто подобное когда из-за изменения имен пользователей перебатонило права. Для админов и для простоюзеров лучше задать права для корневой папки с наследованием, далее (если я правильно понял) имя папки = %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 2400890

не совсем понял как запускать
пишет Непредвиденное появление: %%a.

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

Цитата:

Цитата Elven
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 2400899

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

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

batyaPS 10-09-2014 16:54 2400901

Elven, уже понял так и сделал, %username% надо куда вписывать ?

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

Elven 10-09-2014 17:10 2400914

Цитата:

Цитата Elven
(если я правильно понял) имя папки = %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 2400915

я не понял что он делает, почему то прогоняет по два раза
читать дальше »
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
Для продолжения нажмите любую клавишу . . .


Цитата:

Цитата Elven
если папке федя соответствует в домене пользователь 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 2400928

перепроверил несколько раз, папка исправно цепляет права родительской и добавляет права пользователю. в error.log ничего не пишется?

batyaPS 10-09-2014 21:18 2401022

Цитата:

Цитата Elven
в error.log ничего не пишется? »

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

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

batyaPS 11-09-2014 09:36 2401169

Цитата:

Цитата Elven
перепроверил несколько раз, папка исправно цепляет права родительской и добавляет права пользователю »

а можно выложить сам скрипт и файл icacls.exe ? может лишний символ какой ставиться или всё же версия имеет значение.
запускаю кстати на 2003 R2 sp2 сервере x86 права админа есть

Elven 11-09-2014 10:40 2401209

Вложений: 1
  • acl.rar (16.90 KB, скачиваний: 18)
Да пожалуйста. К слову сказать этот батник я только на Win7 и 2008r2 запускал, однако сомнения меня не перестают терзать.

batyaPS 11-09-2014 13:05 2401285

хм версии отличались, вы мне от 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 2401349

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

batyaPS 11-09-2014 14:56 2401364

Цитата:

Цитата Elven
оставляем только на траверс »

что это ?

Цитата:

Цитата Elven
не понимаю, вроде бы изначально требовалось всем права на чтение »

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

Цитата:

Цитата Elven
/inheritance:r, но он снимает ВСЕ наследуемые права (в т.ч. у админов и системы) значит нужно будет их потом дополнительно добавлять. »

можно и так .
куда прописать данный ключ в нашем примере,
и как потом следующей командой раздать заранее известным группам права?

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

batyaPS 11-09-2014 15:11 2401383

тогда меня всё устраивает.

Elven 11-09-2014 15:23 2401393

все совершенно правильно. раз устраивает значит хорошо :)

batyaPS 11-09-2014 16:34 2401444

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

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


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 2401458

batyaPS, пользуйтесь плз тегом CODE, грустные смайлики в коде просто убивают.
что пишет если просто выполнить из командной строки
Код:

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

batyaPS 11-09-2014 17:01 2401464

подложил exe рядышком и всё заработало

Elven 11-09-2014 17:28 2401473

эвоно как, м.б. в средах не прописан путь где icacls находится?

batyaPS 12-09-2014 09:51 2401744

Цитата:

Цитата Elven
эвоно как, м.б. в средах не прописан путь где icacls находится? »

не понял.

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

batyaPS 13-09-2014 11:12 2402243

чуть не в тему скрипта конечно, но такой косяк вылез с правами.
в логон скрипте перестала работать такая строчка
xcopy \\s680000file\mail\%username%\profiles.ini "%appdata%\thunderbird\" /y
если скопировать в cmd пишет файл не найден.
хотя если вставить в пуск - выполнить \\s680000file\mail\%username%\profiles.ini то файл открывается.
а так же \\s680000file\mail\%username% открывает нужный профиль.
если возвращаю полные права пользователем домена на каталог mail то строчка из логон скрипта работает.

каких прав не хватает на папке mail для нормальной работы скриптов?
выставлял для пользователей только обзор папок

получается без содержания папки / чтение данных не работает
если галочку поставить то пользователь при желании всё же может подключить себе чужой ящик.
выход один - убирать наследование с подпапок.
как это сделать скриптом?
руками это делается так - убирал галочку соглашался на копирование прав удалял просмотр у группы пользователей.
получалось полные права админов и полные права у пользователей. на корне mail остаётся всё же просмотр.

batyaPS 13-09-2014 11:31 2402252

наверно надо было применять "только к этой папке" на папке mail
это же решение ? верно?

Elven 13-09-2014 18:38 2402415

как-то так.

Хотя по-хорошему копироваться должно и без того копироваться, главное доступ к самой папке пользователя.

На создание доступ нужен если профайл пользователя создается автоматически в этой папке. Но по этим вопросам лучше таки в тему с виндами и разрешениями/

batyaPS 14-09-2014 12:04 2402639

Elven, должно но не копируется. оставил две галки и применил только к текущей


Время: 20:56.

Время: 20:56.
© OSzone.net 2001-