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

Различные разрешения NTFS для вложенных папок

У меня на сервере есть папка для каждого клиента. Внутри этой папки есть подпапки для каждого проекта, принадлежащего этому клиенту.

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

Прямо сейчас, когда новому пользователю требуется доступ к проекту, я должен зайти в папку клиентов (которая является той, которая является общей) и предоставить им доступ, затем в конкретную папку клиента и предоставить им доступ, затем перейти в папку и выберите проект и предоставьте им доступ.

Есть ли способ просто выбрать папку проекта, предоставить им доступ и иметь способ, чтобы все папки, находящиеся в цепочке, также предоставляли доступ, чтобы пользователь действительно мог читать файлы?

Если видимость вложенных папок не является проблемой, вы можете рассмотреть возможность добавления разрешения, такого как «Authenticatd Users / List Folder Contents / This folder only», для родительских папок. Это разрешение не будет унаследовано дочерним папкам, а перечисление на основе доступа не позволит пользователям «видеть» подпапки, к которым у них нет доступа, но это избавит вас от необходимости применять разрешения к родительским папкам.

Пример:

 [ folder ] Clients
     |
     | -- [ folder ]  Client A
     |
     | -- [ folder ]  Client B
     |        |
    ...       | -- [ folder ] Project A
              |
              | -- [ folder ] Project B
             ...

Предполагая наследуемое разрешение в корне «Администраторы / Полный доступ» и «СИСТЕМА / Полный доступ», добавьте разрешение «Прошедшие проверку пользователей / Список содержимого папки / Только эта папка» (задается в диалоговом окне «Дополнительно» из «Безопасность» вкладка свойств папки) в корень. Если включено перечисление на основе доступа, это приведет к тому, что клиентские папки, к которым пользователю предоставлен доступ, будут видны при перечислении корневого каталога. Очевидно, вам не обязательно использовать «Прошедших проверку пользователей». Вы могли бы сделать что-нибудь более творческое.

Предполагая, что вы делаете одно и то же в каждой отдельной клиентской папке, аутентифицированные пользователи смогут перечислить весь список клиентов, но только проекты каждого клиента, к которому у них есть доступ.

Допустим, вы хотели жестко ограничить видимость папок. Это отличное приложение для вложения групп Active Directory. В приведенном ниже примере я собираюсь не использовать локальные группы домена. Технически наилучшая практика Microsoft - использовать вложение глобальных групп в локальные группы домена, к которым применяются разрешения. Если вы планируете оставаться в среде с одним доменом (и без доверия к внешним лесам), вам необязательно следовать этой практике. Для простоты объяснения я буду использовать только глокальные группы безопасности.

Создайте новую глобальную группу безопасности для каждого проекта для каждой роли, которая будет присутствовать:

  • Клиент B, Проект B - Рецензенты - Разрешено читать содержимое проекта B клиента Б.
  • Клиент Б, Проект Б - Участники - Разрешено изменять содержимое проекта B клиента Б

Примените разрешение к каждой папке проекта, как описано в именах групп. Группа «Рецензенты» получит разрешение «Чтение», а группа «Соавторы» получит разрешение «Изменить»,

Создайте новую глобальную группу безопасности для каждого клиента:

  • Клиент Б Участники проекта

Поместите два Клиент B, Проект B ... группы в список участников для Клиент Б Участники проекта группа. В папке для указанного клиента предоставьте Клиент Б Участники проекта группа "Список содержимого папки / Только эта папка" разрешение.

Создайте новую глобальную группу безопасности для всех участников проекта:

  • Все участники клиентского проекта

Поместите Клиент Б Участники проекта и любые другие группы клиентов в список участников для Все участники клиентского проекта группа. В корневой папке предоставьте Все участники клиентского проекта группа "Список содержимого папки / Только эта папка" разрешение.

Когда пользователь присоединяется к проекту, добавьте его в соответствующую группу проекта, к которому он присоединяется. Из-за вложенности групп и примененных разрешений пользователь автоматически получит доступ для перечисления корневой папки и заданных клиентских папок для проектов, в которых они задействованы.

Проблема здесь в том, что вы можете просто предоставить этому пользователю доступ к конкретному проекту, и все, Windows не может знать, каковы ваши намерения, когда вы добавляете этого пользователя в папку проектов, поэтому ничего не делает.

Вы можете написать что-нибудь, используя CACLS, чтобы вы указали папку Project, к которой у пользователя есть доступ, и она запишет для вас другие разрешения (если они каждый раз стандартные)

Однако решение Evans - гораздо более элегантный способ сделать это, и как только вы его настроите, вы можете в значительной степени игнорировать его.