2012-03-23 2 views
2

У меня вопрос о ACL в сетевой файловой системе.Быстрая настройка Inheritable ACE в больших сетевых файловых системах

В принципе, я хочу установить разрешение на объект папки верхнего уровня, у которого есть потенциально 100 000+ файлов и файлов под ним. Я хочу, чтобы разрешение наследовалось через все подпапки и вспомогательные файлы (IE 'Применяется к файлам, папкам и подпапкам' is true).

Я не хочу, чтобы громить любые существующие разрешения, наследуемые (IE «Заменить все разрешения дочернего объекта с наследуемыми от этого объекта» является ложным ).

Итак, когда я запускаю Set-ACL, SetACL.exe, XCACLS.vbs или даже использует графический интерфейс Windows, для завершения процесса требуется очень много времени - очевидно, из-за большого размера суб каталог.

Я привык к этому сейчас, НО:

Я хотел бы знать - почему именно это?

В конце дня, не я пишу только один ACE на одном объекте одной папки?

  • Я не пересекаю каталог;
  • Я не изменяю отдельные списки управления доступом в дополнительных файлах и папках (я не думаю); и
  • Я не замещающие права

Я предположил, что если вы получили доступ к объекту подпапку/файл, он будет проверить это явные АСЕ, чтобы увидеть, если у вас разрешения, и если вы не имеете его , тогда он будет проверять любые наследуемые разрешения (из объектов родительских папок), которые могут дать вам доступ.

Итак, устанавливает ли наследуемое разрешение также отдельный отдельный ACE для каждого отдельного файла и папки, даже если вы технически устанавливаете только один ACE на верхнем уровне?

Есть ли какой-либо способ установить ACE на верхнем уровне и не иметь команду для перехода и перечисления по всей вспомогательной директории? Я хочу сделать это быстро и эффективно на огромном количестве файлов и папок.

Надеюсь, это имеет смысл. С нетерпением ждем предложений.

Рис.

ответ

2

Унаследованные разрешения (например, явные) устанавливаются на уровне папок/файлов в битовой маске дескриптора безопасности в поле бит (more info). Вот почему установка разрешений на уровне папок отца, которые распространяются на дочерние (наследование), может зависеть от того, сколько детей затронуто.

Основой этого ответа является нет: вы не можете установить ACE на верхнем уровне и не иметь команду для перехода и перечисления через всю вспомогательную директорию.

Вы можете протестировать, если заданный явный acl программно для всех дочерних элементов быстрее, чем процесс наследования.

+0

Спасибо за ответ. Я просмотрел http://www.gbordier.com/gbtools/fileacl.asp и, похоже, имеет флаг/NOPROPAGATE с использованием более старого API безопасности.? –

+0

да. но походит на отмену отметки на вкладке безопасности, чтобы не наследовать дочерние элементы. Проверьте скорость файла fileacls.exe, возможно, лучше командлет set-acl. –

+0

У меня тоже была игра. Я думаю, что в конце дня нет никакого реального пути, я просто должен ждать, пока скрипт изменит ACL во всех подпапках и файлах. Я изучаю использование удаленного доступа PowerShell, чтобы разгрузить обработку на разные серверы сразу, чтобы посмотреть, можно ли ускорить его выполнение. Я также вижу некоторые существенные улучшения производительности, используя .NET 4.5 и PowerShell 3, что является положительным знаком. Спасибо за вашу помощь :) –