Проверка прав доступа к файлам в нескольких сетевых папках? - PullRequest
0 голосов
/ 20 апреля 2011

У нас есть несколько общих сетевых ресурсов Windows в общем расположении (\\ server-name \ share), в котором размещен общий набор файлов.Эти акции тиражируются примерно на 300 сотнях серверов.Реальная репликация отключена, но мы сталкиваемся с непредвиденной проблемой: администраторы серверов, находящиеся на полпути, меняют права доступа к файлам для нашего общего ресурса и творчески ломают репликацию.Хотелось бы написать сценарий для проверки общего сетевого ресурса каждого сервера и обеспечения наличия нескольких разрешений для общей папки и ее содержимого:

  • Каждый должен иметь права на чтение
  • Требуется пользователь Xизменить / изменить
  • Пользователю Y нужен полный контроль

Теперь у меня есть хороший скрипт, который проверяет, существует ли хотя бы каждый ресурс.Сложность проистекает из того факта, что (из-за хорошего дерева Active Directory) имена пользователей согласованы на разных серверах (всегда в форме «ДОМЕН / пользователь»), но их номера руководства различны.

ПокаЯ смотрел на cacls.exe и более новую версию Icacls.exe, но варианты сбивают с толку и, кажется, сосредоточены вокруг изменения списков контроля доступа, что я не хочу делать.Любой инструмент, встроенный в Windows, предпочтительнее, я просто не уверен, как к этому подойти.

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

1 Ответ

0 голосов
/ 23 апреля 2011

icacls позволяет разрешить использование формы "понятное имя" для указания пользователя. Это означает, что вы должны быть в состоянии использовать имена в человеческом стиле. Поэтому «bob» должен указывать на одного и того же человека во всех ваших доменах.

Вы можете предоставить пользователю разрешение, ничего не меняя, используя /grant:r, что означает «если он уже есть, ничего не делать, в противном случае добавьте его». Итак,

Каждый должен иметь доступ для чтения
icacls \a\directory\somewhere /t /grant:r Everybody:(rd)

Я предполагаю, что вы хотите, чтобы они могли перечислять содержимое каталога, а также читать.

Пользователь X нуждается в изменении / модификации
icacls \a\directory\somewhere /t /grant:r bobX:m

и так далее. Я предполагаю, что «m» достаточно, чтобы передать разрешение «изменить».

ACL - это просто еще одно название для "прав доступа". Итак, если вы хотите изменить разрешения, вы хотите изменить ACL.

...