Subinacl с циклом for для применения разрешений к списку папок

334
cecinestpasunnom

У меня проблема с subinacl и я надеюсь, что кто-то может помочь. Я пробовал искать по этому сайту и по различным сайтам в Интернете и не смог найти ответ, который искал. (Может быть, я просто не знаю подходящих терминов для поиска.)

Я использую Windows Server 2008 R2 Enterprise. У меня есть набор папок, которые изначально были настроены с определенными разрешениями, чтобы запретить ПОЛЬЗОВАТЕЛЯМ делать определенные вещи в определенных папках (перемещать папки, удалять их и / или создавать новые), но в какой-то момент кто-то испортил вещи и разрешения изменились, предоставив ПОЛЬЗОВАТЕЛЯМ полный доступ ко всему.

У меня есть набор папок с правильными настройками разрешений. Поэтому я использовал subinacl для копирования разрешений из папки с примерами, используя следующую команду в командном файле:

"..\subinacl.exe" /noverbose /nostatistic /outputlog="folder\name.log" /subdirectories "folder\sample_folder_name" /display

Я открыл файл журнала, который был создан с помощью вышеуказанной команды, и я вижу следующий текст:

=============================== +File X:\Projects\YEAR\RandomText\StandardText =============================== /control=0x3000 /owner =builtin\administrators /primary group =domain\domain users /audit ace count =0 /perm. ace count =4 /pace =system Type=0x0 Flags=0x3 AccessMask=0x1f01ff /pace =builtin\administrators Type=0x0 Flags=0x3 AccessMask=0x1f01ff /pace =builtin\users Type=0x0 Flags=0x3 AccessMask=0x1200a9 /pace =domain\administrator Type=0x0 Flags=0x3 AccessMask=0x1f01ff 

Я редактирую имя папки в приведенном выше +Fileпримере (строку текста после и сохраняю ее как new_folder_name.log. Я могу создать другой пакетный файл и playfileклонировать / применить права доступа sample_folder_name к папке, которую я редактировал, с помощью следующего:

"..\subinacl.exe" /nostatistic /playfile "new_folder_name.log"

Но у меня есть куча папок, к которым мне нужно применить разрешения, и мне было интересно, могу ли я объединиться subinaclс for /fкомандным циклом и получить текстовый файл со списком папок, к которым я хочу клонировать разрешения вместо редактирование файла журнала по одной папке за раз. Я попытался создать цикл, используя следующее:

:START FOR /F "Tokens=1" %%a in (ListOfFolders.txt) Do ( IF "%%a" == "END" GOTO END  rem List permissions to log file: CALL "..\subinacl.exe" /noverbose /nostatistic /outputlog="folder\name.log" /subdirectories "folder\sample_folder_name" /display \\%%a\  rem Restore permissions: CALL "..\subinacl.exe" /nostatistic /playfile new_folder_name.log \%%a\  ) :END 

У меня есть текстовый файл ListOfFolders.txt, в котором перечислены все папки проекта, к которым я хочу применить разрешения для sample_folder_name. Однако похоже, что разрешения применяются к папке, указанной в new_folder_name.log (строка текста после +File), а не к списку папок в ListOfFolders.txt.

Я надеюсь, что это «простое» исправление и что кто-то может мне помочь. Пожалуйста, также дайте мне знать, если есть что-то, что я могу уточнить или наличие дополнительной информации было бы полезно для выработки решения.

0

0 ответов на вопрос

Похожие вопросы