Проверка прав доступа к файлам через несколько общих сетевых ресурсов?
У нас есть несколько общих сетевых ресурсов Windows в общем расположении (\\server-name\share), в котором находится общий набор файлов. Эти акции тиражируются примерно на 300 сотнях серверов. Реальная репликация отключена, но мы столкнулись с непредвиденной проблемой: администраторы серверов, находящиеся на полпути, меняют права доступа к файлам для нашего общего ресурса и творчески ломают репликацию.
Чтобы обнаружить это на раннем этапе, мы хотели бы написать сценарий для проверки общего сетевого ресурса каждого сервера и обеспечения наличия нескольких разрешений для общей папки и ее содержимого:
- Каждому нужен доступ для чтения
- Пользователь Х нуждается в изменении / модификации
- Пользователь Y нуждается в полном контроле
Теперь у меня есть хороший сценарий, который проверяет, существует ли по крайней мере каждый ресурс. Сложность проистекает из того факта, что (из-за хорошего дерева Active Directory) имена пользователей одинаковы для разных серверов (всегда в форме "ДОМЕН / пользователь"), но их номера руководства различаются.
До сих пор я смотрел на cacls.exe и более новую версию Icacls.exe, но варианты сбивают с толку и, кажется, сосредоточены вокруг изменения списков контроля доступа, что я не хочу делать. Любой инструмент, встроенный в Windows, предпочтительнее, я просто не знаю, как к этому подойти.
Итак, все сводится к следующему: на каком-то произвольном сервере, если я знаю только ИМЯ пользователя, есть ли способ выяснить, какие права доступа к файлам они имеют для данной папки?
1 ответ
icacls
разрешает использование формы "дружественное имя" для указания пользователя. Это означает, что вы должны быть в состоянии использовать имена в человеческом стиле. Поэтому "bob" должен указывать на одного и того же человека во всех ваших доменах.
Вы можете предоставить пользователю разрешение, ничего не меняя, используя /grant:r
что означает "если он уже есть, ничего не делать, иначе добавить". Так,
Каждому нужен доступ для чтения icacls \a\directory\somewhere /t /grant:r Everybody:(rd)
Я предполагаю, что вы хотите, чтобы они могли перечислять содержимое каталога, а также читать.
Пользователь Х нуждается в изменении / модификации icacls \a\directory\somewhere /t /grant:r bobX:m
И так далее. Я предполагаю, что "m" достаточно, чтобы передать разрешение "изменить".
ACL - это просто другое название для "разрешений". Итак, если вы хотите изменить разрешения, то вы хотите изменить ACL.