it-swarm-ru.tech

Использование 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%"
16
pk.

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

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

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

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

Затем ваш сценарий становится:

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

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

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

Правка

re: Ваш комментарий о доступе BUILTIN\Администраторы

У меня были разные споры с людьми по поводу моего подхода к предоставлению доступа BUILTIN\Administrators на протяжении многих лет, и мой вывод таков:

  • Проще решить определенный класс пользовательских проблем, если вы сможете получить доступ к их файлам. "Брать на себя ответственность" очень сложно и может быть довольно медленным, если в нем также присутствует большое количество файлов.

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

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

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

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

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

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

18
Evan Anderson

Во-первых, спасибо за ваш скрипт. Я работал над тем же, но застрял в другом месте. На моем компьютере с 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
1
user16680