Управление доступом

Для управления доступом к папкам в пространстве имен с помощью утилиты samba-tool используется группа подкоманд dfsn access.

См. описание последовательности настройки пространства имен в разделе «Настройка DFSN».

Общие сведения

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

Разрешения на уровне папок используются для контроля их видимости в рамках пространства имен и не влияют на фактический доступ к содержащимся в папках целевым папкам и файлам в них. Они определяют, будут ли папка видна пользователю, если в пространстве имен включен механизм отображения на основе разрешений (Access-Based Enumeration): если механизм включен, пользователи видят только те папки в пространстве имен, на доступ к которым у них есть явные разрешения.

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

При этом видимость папки в списке пространства имен дополнительно регулируется флагом SEC_DESC_DACL_PROTECTED. Если он установлен в Yes, папка видна только администраторам и пользователям, которым явно выдано разрешение. Если установлен в No, папка становится видимой также для всех остальных пользователей, даже если они не включены в список разрешений — при этом их доступ к содержимому папки по-прежнему ограничивается правами на целевом файловом сервере. Этот параметр влияет исключительно на отображение папки в списке, а не на фактический доступ к файлам.

Выдача разрешений, определяющих видимость папки

Формат вызова:

samba-tool dfsn access grant <dfs_path> <account_names> [options]

В качестве обязательных аргументов ожидаются:

  • путь к папке в пространстве имен в формате UNC-имени (например, \\elles.inno.tech\namespace1\documents);

  • одно или несколько (через запятую без пробелов) имен учетных записей пользователей и групп в формате sAMAccountName с доменом (например, ELLES\User1,ELLES\Group1) или без домена (например, User1,Group1).

Подкоманда выдает указанным пользователям и группам разрешения на просмотр папки в списке папок пространства имен. При этом:

  • скрытие папки происходит только при условии, что для пространства имен, в котором находится папка, установлен флаг --enable-access-based-enumeration=Yes;

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

Дополнительно видимость может быть ограничена с помощью дополнительного параметра --sec-desc-dacl-protected, управляющего состоянием флага SEC_DESC_DACL_PROTECTED:

  • если при вызове подкоманды параметр --sec-desc-dacl-protected не указывается или в нем передается значение Yes, папка будет видимой:

    • для администраторов;

    • пользователей, которые были явно включены в список разрешений на доступ к папке (тип доступа — enumerate);

  • если при вызове подкоманды в параметре --sec-desc-dacl-protected передается значение No, папка будет видимой:

    • для администраторов;

    • пользователей, которые были явно включены в список разрешений на доступ к папке (тип доступа — enumerate);

    • всех остальных пользователей, даже если они не включены в список разрешений.

Параметры

Параметры вызова:

  • --server=DFSSERVERHOST — имя хоста (NetBIOS-имя) или полное доменное имя (FQDN) сервера пространства имен, используя соединение с которым будет выполнено изменение или запрошена информация;

    Этот параметр предназначен для использования только в исключительных случаях, когда необходимо явно указать сервер пространства имен (например, при нештатных ситуациях или тестировании). Задавать его при штатной эксплуатации не требуется.
  • --sec-desc-dacl-protected — управляет видимостью папки в списке пространства имен (состояние флага SEC_DESC_DACL_PROTECTED).

    Возможные значения:

    • Yes (по умолчанию) — папка видна только администраторам и пользователям с явным разрешением (тип доступа — enumerate);

    • No — папка видна также всем остальным пользователям, даже если они не включены в список разрешений.

      Параметр не влияет на реальный доступ к файлам — только на отображение папки в списке папок в пространстве имен.

Примеры

Пример выдачи пользователю и группе разрешений, определяющих видимость папки в пространстве имен, с использованием значения флага --sec-desc-dacl-protected по умолчанию (--sec-desc-dacl-protected=Yes):

samba-tool dfsn access grant "\\\\elles.inno.tech\\namespace1\\documents" \
    "ELLES\\User1","ELLES\\Group1"
...
SEC_DESC_DACL_PROTECTED = YES (The folder is visible to granted users and administrators)
Account name         Access type
============         ===========
ELLES\User1          enumerate
ELLES\Group1         enumerate

Пример выдачи пользователю и группе разрешений, определяющих видимость папки в пространстве имен, с указанием флага --sec-desc-dacl-protected=No:

samba-tool dfsn access grant "\\\\elles.inno.tech\\namespace1\\documents" \
    "ELLES\\User1","ELLES\\Group1" \
    --sec-desc-dacl-protected=No
...
SEC_DESC_DACL_PROTECTED = NO (The folder is visible to granted users, administrators and absent in list users)
Account name         Access type
============         ===========
ELLES\User1          enumerate
ELLES\Group1         enumerate

Получение информации о разрешениях, определяющих видимость папки

Формат вызова:

samba-tool dfsn access get <dfs_path> [options]

В качестве обязательного аргумента ожидается путь к папке в пространстве имен в формате UNC-имени (например, \\elles.inno.tech\namespace1\documents).

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

Также в выводе отображается текущее значение флага SEC_DESC_DACL_PROTECTED, определяющего, видима ли папка для пользователей, не включенных в список разрешений:

  • если Yes — папка видна только администраторам и пользователям с явным разрешением;

  • если No — папка видна также всем остальным пользователям, даже если они не включены в список разрешений.

Этот флаг влияет только на интерпретацию видимости, но не изменяет состав списка разрешений в ACL.

Подкоманда не изменяет права — только показывает текущую конфигурацию ACL и состояние флага SEC_DESC_DACL_PROTECTED.

Параметры

Параметры вызова:

  • --server=DFSSERVERHOST — имя хоста (NetBIOS-имя) или полное доменное имя (FQDN) сервера пространства имен, используя соединение с которым будет выполнено изменение или запрошена информация.

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

Примеры

Пример получения информации о видимости папки:

samba-tool dfsn access get "\\\\elles.inno.tech\\namespace1\\documents"
...
SEC_DESC_DACL_PROTECTED = YES (The folder is visible to granted users and administrators)
Account name         Access type
============         ===========
ELLES\User1          enumerate
ELLES\Group1         enumerate
ELLES\User2          none

Отзыв разрешений, определяющих видимость папки

Формат вызова:

samba-tool dfsn access revoke <dfs_path> <account_names> [options]

В качестве обязательных аргументов ожидаются:

  • путь к папке в пространстве имен в формате UNC-имени (например, \\elles.inno.tech\namespace1\documents);

  • одно или несколько (через запятую без пробелов) имен учетных записей пользователей и групп в формате sAMAccountName с доменом (например, ELLES\User1,ELLES\Group1) или без домена (например, User1,Group1).

Подкоманда отзывает у указанных пользователей и групп разрешения на просмотр папки в пространстве имен (тип доступа — none). При этом:

  • скрытие папки происходит только при условии, что для пространства имен, в котором находится папка, установлен флаг --enable-access-based-enumeration=Yes;

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

Команда переводит в состояние ACCESS_DENIED записи из ACL, соответствующие указанным учетным записям.

По умолчанию (--sec-desc-dacl-protected=No) флаг SEC_DESC_DACL_PROTECTED сбрасывается — папка становится видимой для всех пользователей, включая тех, кто не указан в ACL. При явном указании --sec-desc-dacl-protected=Yes флаг устанавливается — папка видима только администраторам и пользователям с явным разрешением (enumerate).

Эта операция не влияет на фактический доступ к файлам — он определяется правами на целевом файловом сервере.

В результате выполнения выводится обновленный список разрешений и текущее состояние флага SEC_DESC_DACL_PROTECTED.

Параметры

Параметры вызова:

  • --server=DFSSERVERHOST — имя хоста (NetBIOS-имя) или полное доменное имя (FQDN) сервера пространства имен, используя соединение с которым будет выполнено изменение или запрошена информация;

    Этот параметр предназначен для использования только в исключительных случаях, когда необходимо явно указать сервер пространства имен (например, при нештатных ситуациях или тестировании). Задавать его при штатной эксплуатации не требуется.
  • --sec-desc-dacl-protected — управляет видимостью папки в списке пространства имен (состояние флага SEC_DESC_DACL_PROTECTED).

    Возможные значения:

    • Yes — папка видна только администраторам и пользователям с явным разрешением (тип доступа — enumerate);

    • No (по умолчанию) — папка видна также всем остальным пользователям, даже если они не включены в список разрешений.

      Параметр не влияет на реальный доступ к файлам — только на отображение папки в списке папок в пространстве имен.

Примеры

Пример отзыва разрешений, определяющих видимости папки в пространстве имен, у пользователя и группы:

samba-tool dfsn access revoke "\\\\elles.inno.tech\\namespace1\\documents" \
    "ELLES\\User1","ELLES\\Group1"
...
SEC_DESC_DACL_PROTECTED = NO (The folder is visible to granted users, administrators and absent in list users)
Account name         Access type
============         ===========
ELLES\User1          none
ELLES\Group1         none

Пример отзыва разрешений, определяющих видимости папки в пространстве имен, у пользователя с принудительной установкой флага SEC_DESC_DACL_PROTECTED:

samba-tool dfsn access revoke "\\\\elles.inno.tech\\namespace1\\documents" \
    "ELLES\\User1" \
    --sec-desc-dacl-protected=yes
...
SEC_DESC_DACL_PROTECTED = YES (The folder is visible to granted users and administrators)
Account name         Access type
============         ===========
ELLES\User1          none
ELLES\Group1         enumerate

Удаление пользователей и групп из списка управления доступом (ACL) для папки

Формат вызова:

samba-tool dfsn access remove <dfs_path> <account_names> [options]

В качестве обязательных аргументов ожидаются:

  • путь к папке в пространстве имен в формате UNC-имени (например, \\elles.inno.tech\namespace1\documents);

  • одно или несколько (через запятую без пробелов) имен учетных записей пользователей и групп в формате sAMAccountName с доменом (например, ELLES\User1,ELLES\Group1) или без домена (например, User1,Group1).

Подкоманда удаляет пользователя или группу из списка управления доступом (ACL) папки в пространстве имен.

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

  • если Yes — папка видна только администраторам и тем, кто остался в ACL;

  • если No — папка видна всем (включая удаленных).

Таким образом, удаление из ACL не гарантирует скрытие папки — только удаление записи из списка разрешений.

В результате выполнения операции выводится обновленный список разрешений и текущее состояние флага.

Подкоманда влияет только на структуру ACL, а не на фактический доступ к файлам — он определяется правами на целевом сервере.

Параметры

Параметры вызова:

  • --server=DFSSERVERHOST — имя хоста (NetBIOS-имя) или полное доменное имя (FQDN) сервера пространства имен, используя соединение с которым будет выполнено изменение или запрошена информация;

    Этот параметр предназначен для использования только в исключительных случаях, когда необходимо явно указать сервер пространства имен (например, при нештатных ситуациях или тестировании). Задавать его при штатной эксплуатации не требуется.
  • --sec-desc-dacl-protected — управляет видимостью папки в списке пространства имен (состояние флага SEC_DESC_DACL_PROTECTED).

    Возможные значения:

    • Yes — папка видна только администраторам и пользователям с явным разрешением (тип доступа — enumerate);

    • No (по умолчанию) — папка видна также всем остальным пользователям, даже если они не включены в список разрешений.

      Параметр не влияет на реальный доступ к файлам — только на отображение папки в списке папок в пространстве имен.

Примеры

Пример удаления пользователя из ACL папки:

samba-tool dfsn access remove "\\\\elles.inno.tech\\namespace1\\documents" \
    "ELLES\\User2"
...
SEC_DESC_DACL_PROTECTED = NO (The folder is visible to granted users, administrators and absent in list users)
Account name         Access type
============         ===========
ELLES\User1          enumerate
ELLES\Group1         enumerate

Пример удаления нескольких пользователей и групп из ACL папки:

samba-tool dfsn access remove "\\\\elles.inno.tech\\namespace1\\documents" \
    "ELLES\\User1,ELLES\\Group1"
...
SEC_DESC_DACL_PROTECTED = NO (The folder is visible to granted users, administrators and absent in list users)
Account name         Access type
============         ===========
ELLES\User3          enumerate

Пример удаления пользователя из ACL папки с принудительной установкой флага SEC_DESC_DACL_PROTECTED:

samba-tool dfsn access remove "\\\\elles.inno.tech\\namespace1\\documents" \
    "ELLES\\User2" \
    --sec-desc-dacl-protected=Yes
...
SEC_DESC_DACL_PROTECTED = YES (The folder is visible to granted users and administrators)
Account name         Access type
============         ===========
ELLES\User1          enumerate