Назад | Перейти на главную страницу

Использование ICACLS для установки разрешений на каталоги пользователей

Я пытаюсь сбросить разрешения для пользовательских каталогов, и у меня проблемы с последним шагом моего скрипта. Мой сценарий в основном становится владельцем всего каталога пользователя, сбрасывает разрешения для всех файлов и папок для каталога, явно предоставляет мне необходимые разрешения, останавливает все наследование разрешений от родительских папок, устанавливает законного владельца (указанного пользователя) для всех файлов и папки, а затем удаляет разрешение, которое я дал себе, чтобы я мог работать с файлами. Мне нужен этот последний шаг, чтобы удалить себя из ВСЕХ файлов и подпапок, но на данный момент он просто удаляет меня из% userDir% и оставляет все унаследованные разрешения ниже. Это очевидный недостаток ICACLS. Кто-нибудь знает какой-либо другой способ сделать это?

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /inheritance:r
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%"

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

Если вам нужно, чтобы пользователи могли просматривать содержимое папки верхнего уровня «E: \ Home Directories», например, рассмотрите следующее разрешение:

  • СИСТЕМА - Полный доступ - Применяется к этой папке, подпапкам и файлам
  • BUILTIN \ Administrators - Полный доступ - Применяется к этой папке, подпапкам и файлам
  • BUILTIN \ Authenticated Users - чтение и выполнение - применяется только к этой папке

Последнее разрешение не наследуется во вложенных папках. В каждой подпапке наследование остается включенным, и вы просто указываете пользователя с правами «Изменить» или «Полный доступ» (в зависимости от того, как вы относитесь к тому, что пользователи могут устанавливать разрешения внутри своего домашнего каталога). (Обычно я устанавливаю это последнее разрешение, добавляя «Прошедшие проверку» на листе свойств безопасности, отличных от «Расширенных», снимая флажки «Чтение» и «Чтение и выполнение». Затем я перехожу в диалоговое окно «Дополнительно» и меняю Для параметра «Применить к» для этого ACE значение «Только эта папка». Это самый простой способ с точки зрения количества кликов установить его.)

Тогда ваш сценарий станет:

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T

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

Это моя СОП для домашних каталогов пользователей, перенаправленных папок «Мои документы», «Рабочий стол» и т. Д., А также для перемещаемых каталогов профилей пользователей. Отлично работает.

редактировать

re: ваш комментарий о доступе BUILTIN \ Administrators

Я много лет спорил с людьми по поводу того, как я предоставляю доступ BUILTIN \ Administrators, и вот что я думаю:

  • Определенный класс проблем пользователей легче решить, если вы сможете добраться до их файлов. «Взять на себя ответственность» сложно, и это может быть довольно медленным, если присутствует большое количество файлов.

  • Как вы видели на примере ICACLS, BUILTIN \ Administrators может «назначать» право собственности (помимо «принятия» его), поэтому никакой «безопасности» не добавляется из-за отсутствия доступа к файлам для BUILTIN \ Administrators в первую очередь.

  • Если вы не используете аудит (и не просматриваете потенциально огромное количество ложноположительных записей), контрольный журнал не будет, когда пользователь BUILTIN \ Administrators станет владельцем файлов, к которым он не должен получать доступ, скопирует их, а затем возвращает файлы их «правильному» владельцу и разрешению.

  • В мире Microsoft шифрованная файловая система (EFS) предназначена для решения проблемы предотвращения несанкционированного доступа BUILTIN \ Administrators. Списки контроля доступа NTFS не решают эту проблему. (Очевидно, что EFS - не единственное шоу в городе. Шифрование - это реальный ответ на решение проблемы «ограничения доступа сетевого администратора», независимо от того, как вы ее решите.)

На мой взгляд, отсутствие указания BUILTIN \ Administrators с доступом к домашним каталогам пользователей (и, по сути, к любой папке) означает, что вы увеличиваете сложность и время, необходимое для решения проблем, не обеспечивая при этом никакой реальной безопасности («меньше, чем ничего "потому что это придает ложное чувство безопасности там, где ее нет).

Я отказался от попыток выиграть спор с людьми с помощью логики. У некоторых людей это кажется эмоциональной проблемой. Это похоже на глупый ACE «Запретить / Получить как», который помещается в корень организации Exchange, чтобы предотвратить открытие почтовых ящиков пользователей определенными привилегированными группами. Он не предлагает реальной безопасности (поскольку без аудита можно удалить / повторно применить ACE по мере необходимости), ложное чувство безопасности и мешает при решении реальных проблем.

Даже если вам не нравятся мои аргументы о том, что BUILTIN \ Administrators имеют доступ к вам хотеть чтобы сохранить иерархию наследования нетронутой, используя наследование «Только эта папка» там, где это необходимо. Блокирование наследования в иерархиях разрешений - верный признак того, что что-то в дизайне «сломано» (перевернуто и т. Д.).

Во-первых, спасибо за отрывок из сценария. Я работал над тем же, но застрял в другом месте. На моем компьютере с SBS 2008 у меня работает приведенный ниже код (конечно, при условии, что он запущен с повышенными правами). Я сделал icacls% userdir% / t новой (по умолчанию) пользовательской папки, созданной ОС, и сравнил ее с icacls% userdir% / t папки после запуска этого скрипта, и он выглядит так, как будто все буквы «O» и Я правы. Надеюсь, это сработает и для вас.

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(oi)(ci)f
ICACLS "E:\Home Directories\%userDir%\*.*" /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%\*.*" /inheritance:r
ICACLS "E:\Home Directories\%userDir%\*.*" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%" /t

Наилучшие пожелания,

 -d

Мне нужна ваша помощь, чтобы изменить эту команду в соответствии с моими требованиями, если это технически возможно.

Вот структура

\ Сервер \ Родитель \ UserA \ unix

\ Сервер \ Родитель \ UserB \ unix

\ Server \ Parent \ UserC \ unix .... и так далее ..

Под каждой папкой User $ есть папка с именем «unix».

Я хочу добавить пользователя или группу с полными разрешениями для всех папок User $, перечисленных в «Родительской» папке (имена взяты из приведенной выше структуры), но хочу исключить разрешения только для папки «unix».

У меня есть эта команда, которая отлично работает для меня с точки зрения применимости необходимых разрешений, но я не могу добавить в нее функцию исключения.

icacls "\\ Server \ Parent \ UserA" / grant Domain \ Group: (OI) (CI) F / T

Сможете ли вы руководствоваться этим сценарием?