Изучаем Linux, 302 (смешанные среды): Аутентификация и авторизация

Механизмы проверки подлинности и настройка контроля доступа

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") для получения сертификата системного администратора Linux. Из этой статьи вы узнаете, как задавать и хранить пароли, интегрировать Samba с LDAP и использовать списки контроля доступа для защиты операционной системы Linux.

Шон Уолберг, старший сетевой инженер, P.Eng

Шон Уолберг работал с Linux- и UNIX-системами с 1994 года в академических, корпоративных и "провайдерских" кругах. Он широко освещает вопросы системного администрирования в течение нескольких последних лет. С ним можно связаться по адресу sean@ertw.com.



05.07.2012

Об этой серии

Эта серия статьей поможет вам освоить задачи администрирования операционной системы Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3).

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-3. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит текущие (по состоянию на ноябрь 2010 года) цели экзаменов сертификации LPIC-3.

В этой статье рассматриваются следующие темы:

  • Настройка локальной базы данных паролей.
  • Формат файла smbpasswd.
  • Синхронизация паролей между Samba и другими системами.
  • Другие хранилища паролей.
  • Интеграция Samba с протоколом Lightweight Directory Access Protocol (LDAP).
  • Списки контроля доступов (Access control lists, ACLs).

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 313.2 темы 313. Цель имеет вес 8.

Предварительные требования

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


Механизмы аутентификации Samba

О факультативном экзамене LPI-302

Как и многие другие программы, программа сертификации Linux Professional Institute (LPIC) предусматривает различные уровни сертификации, где для получения каждого последующего уровня необходимо обладать более глубокими знаниями и практическим опытом. Экзамен LPI-302 – это факультативный экзамен третьего уровня программы LPIC, требующий продвинутых знаний в области системного администрирования Linux.

Для получения сертификата LPIC третьего уровня (LPIC-3) необходимо успешно сдать два экзамена первого уровня (101 и 102), два экзамена второго уровня (201 и 202), а также базовый экзамен 301 третьего уровня (LPIC-3). Если вы получили сертификат третьего уровня, вы можете сдавать факультативные экзамены по определенным специализациям, например, экзамен LPI-302.

Samba позволяет по-разному хранить пароли во внутренних хранилищах паролей, как с хранением данных хранятся на локальном диске, так и с использованием сетевых функций. Кроме того, в Samba имеются механизмы, позволяющие серверу Linux использовать систему аутентификации подлинности Samba при входе пользователей в систему.

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

Несмотря на свое название, внутреннее хранилище паролей хранит не только пароли, но также различную информацию об учетных записях и другие атрибуты. Сами данные могут также хранится на сервере LDAP, а внутреннее хранилище Samba в этом случае выступает посредником между Samba и LDAP.

Все становится еще интереснее в результате того, что операционные системы Microsoft используют хэши паролей, формат которых отличается от формата паролей UNIX. Эти пароли хэшируются, т. е. подвергаются одностороннему шифрованию, в результате чего их невозможно сопоставить паролям в формате UNIX и Samba. В результате аутентификация клиента Samba в базе данных паролей UNIX становится невозможной.

Параметры локальной базы данных паролей

Создайте ваш собственный канал

Вы можете создать ваш собственный RSS, Atom или HTML канал обновлений и получать уведомления о новых или обновленных статьях нашего сайта. Для этого перейдите на страницу developerWorks RSS feeds, выберите зону Linux, установите флажок Статьи и введите в качестве ключевой фразы Linux Professional Institute, после чего выберите требуемый тип канала.

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

В литературе можно встретить упоминания о хранилищах открытых паролей. Много лет назад клиенты Windows передавали на сервер учетные данные в незашифрованном (открытом) виде. Тогда было возможно хэшировать пароли в UNIX-формате и сопоставлять полученные результаты с локальной базой данных паролей. Сегодня клиенты Windows не передают по сети пароли в открытом виде (по крайней мере, без дополнительного вмешательства в системный реестр), и все стараются избегать этого. Таким образом, вы можете встретить упоминания о хранилищах открытых паролей, но вряд ли стоит использовать их на практике.

Большинство старых система аутентификации используют хранилище паролей smbpasswd. Эта база данных хранит информацию об учетных записях в простом текстовом файле. Эта информация включает в себя имя учетной записи, хэши паролей и некоторую базовую информацию. Эта базовая информация достаточно простая и не содержит дополнительных атрибутов, с которыми работают различные инструменты администрирования Microsoft.

На сегодняшний день предпочтительным локальным хранилищем является tdbsam. Вспомните файлы Trivial Database (TDB), которые рассматривались в теме 310.3 (см. раздел Ресурсы): TDB-файлы позволяют получать быстрый и надежный доступ к информации, хранящейся в виде пар "ключ-значение". В tdbsam информация хранится в формате, похожем на формат базы данных Microsoft Windows NT Security Account Manager (SAM), поэтому почти все, что может хранится в SAM, сможет понять сервер Samba. Именно поэтому tdbsam обеспечивает высокий уровень совместимости с операционными системами Microsoft.

Недостатком tdbsam является то, что информация хранится в двоичном формате, поэтому невозможно быстро просмотреть ее, просто заглянув внутрь файла. В статье "Изучаем Linux, 302 (смешанные среды): файлы базы данных Trivial Database" (developerWorks, март 2011 г.) показано, как можно извлекать из TDB-файла отдельные ключи и их значения, но как использовать это на практике – предстоит решать вам. Этот файл называется passdb.tdb.

Использование базы данных smbpasswd

При новой инсталляции Samba вы вряд ли захотите использовать базу данных smbpasswd, но в некоторых старых инсталляциях она все еще применяется, поэтому важно знать принципы ее работы.

База данных для хранения паролей настраивается с помощью параметра passdb backend. В следующем примере показано, как выбрать в качестве хранилища базу данных smbpasswd:

[global]
  passdb backend=smbpasswd:/etc/samba/smbpasswd

Мы видим, что в данном примере используется глобальный параметр passdb backend, которому присвоены значение smbpasswd и путь к файлу, разделенные двоеточием (:). Двоеточие и путь не являются обязательными, однако лучше использовать их. Если этого не сделать, то Samba разместит файл в директории по своему усмотрению. Samba создает этот пустой файл при перезапуске.

Для добавления пользователя используется команда smbpasswd. В листинге 1 приведен пример добавления пользователя и показан итоговый результат в файле smbpasswd.

Листинг 1. Добавление пользователя в файл smbpasswd
# smbpasswd -a sean
New SMB password:
Retype new SMB password:
Added user sean.
# cat smbpasswd
sean:1001:01FC5A6BE7BC6929AAD3B435B51404EE: \
0CB6948805F797BF2A82807973B89537:[U          ]:LCT-4DCDE4D8:

В листинге 1 мы сначала добавляем пользователя sean, используя для этого флаг -a. Этот пользователь должен существовать в локальной базе данных UNIX, в противном случае выполнение команды завершится с ошибкой. После этого в файле smbpasswd появляется единственная строка (в листинге 1 она для удобства разбита на две строки), содержащая поля, разделенные двоеточиями. Перечислим эти поля по очереди:

  • Имя пользователя.
  • UNIX-идентификатор пользователя.
  • Устаревший LM-хэш пароля (поскольку этот хэш содержит уязвимости, то его использование равносильно использованию открытых паролей).
  • Безопасный хэш Windows NT (необходим для аутентификации современных клиентов).
  • Флаги учетной записи (в нашем примере содержится единственный флаг U, указывающий на учетную запись пользователя); информацию обо всех флагах можно найти на man-странице smbpasswd(5).
  • Время последнего изменения (Last Changed Time, LCT) учетной записи (шестнадцатеричное значение является закодированной версией временной метки UNIX).

Пользователи могут менять свои пароли, запуская команду smbpasswd, а пользователь root может сменить пароль любого пользователя, указав его имя. Флаг -a нужен только для добавления учетной записи.

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

Использование базы данных tdbsam

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

К сожалению, нет четкой информации об ограничениях масштабируемости базы данных tdbsam . Официальная документация рекомендует переходить на использование базы данных LDAP, если количество пользователей превышает 250, а в других источниках приводятся примеры, когда tdbsam работала с тысячами клиентов. Вероятно, важным фактором является количество одновременных запросов к базе данных, на которое влияет число пользователей, рабочая нагрузка и задержки между клиентами и сервером. Как и в случае со многими приложениями, лучше всегда отслеживать ключевые показатели производительности (такие, как задержка, загрузка процессора и операции дискового ввода/вывода) и по ним заранее предсказывать образование "узких мест" в сети.

Настройка базы данных tdbsam так же проста, как и настройка smbpasswd. Задайте параметр passdb backend=tdbsam и необязательное имя файла в разделе global и перезапустите Samba. По умолчанию TDB-файл, в котором будет храниться информация об аутентификации, будет называться passdb.tdb.

Для управления пользователями в базе данных tdbsam также можно использовать утилиту smbpasswd. В листинге 2 показано содержимое базы данных tdbsam до и после добавления учетной записи пользователя с помощью smbpasswd.

Листинг 2. Создание учетной записи пользователя с помощью smbpasswd и просмотр базы данных tdbsam
# tdbdump passdb.tdb
{
key(13) = "INFO/version\00"
data(4) = "\03\00\00\00"
}
# smbpasswd -a sean
New SMB password:
Retype new SMB password:
Added user sean.
# tdbdump passdb.tdb
{
key(13) = "RID_00000bba\00"
data(5) = "sean\00"
}
{
key(10) = "USER_sean\00"
data(205) = "\00\00\00\00....EC\04\00\00"
}
{
key(13) = "INFO/version\00"
data(4) = "\03\00\00\00"
}

Изначально файл passdb.tdb содержит единственный ключ, содержащий строку с версией. Затем в базу данных добавляется учетная запись пользователя, так же, как и в предыдущем примере. Утилита smbpasswd обращается к файлу smb.conf и на его основе определяет, каким образом следует добавлять пользователя. Теперь база данных паролей содержит два дополнительных ключа: первый сопоставляет идентификатор Microsoft Relative ID (RID) имени пользователя, а второй содержит информацию о пользователе. Основная часть данных хранится в двоичном формате, поэтому для их декодирования нужно выяснить структуру размещения данных, обратившись к исходному коду Samba.


Проверка подлинности с помощью LDAP

Файловый формат TDB обеспечивает хорошую производительность и подходит почти для всех организаций с небольшим количеством пользователей. Если же использование TDB-файлов уже не соответствует требованиям организации, то необходимо переходить к проверке подлинности с помощью LDAP-сервера. Каталог LDAP хорошо подходит для проверки подлинности по своей природе, поскольку имеет древовидную структуру. На базе LDAP построены службы Active Directory® Domain Services компании Microsoft.

Настройка LDAP-сервера

Интеграция Samba и LDAP начинается с настройки LDAP-сервера. Подробное описание этого процесса выходит за рамки нашей статьи, но вы можете подробно прочитать об этом в материалах для подготовки к экзамену LPIC 301 (см. раздел Ресурсы). Поскольку для интеграции Samba и LDAP необходимо иметь представление о LDAP, то мы советуем перечитать и освежить в памяти указанные материалы.

Самым распространенным LDAP–сервером для Linux является OpenLDAP. Его конфигурация хранится в файле slapd.conf. В листинге 3 приведен пример конфигурационного файла, полностью готового для интеграции с Samba.

Листинг 3. Конфигурационный файл slapd.conf
# Include the core schema files, and the perquisites for samba.schema
include	           /etc/openldap/schema/core.schema
include            /etc/openldap/schema/cosine.schema
include            /etc/openldap/schema/inetorgperson.schema
include            /etc/openldap/schema/nis.schema
include            /etc/openldap/schema/samba.schema

database bdb
# Configure the tree and the admin user
pidfile /var/run/openldap/slapd.pid
suffix "dc=ertw, dc=com"
rootdn "cn=admin, dc=ertw, dc=com"
rootpw linux
directory /var/lib/ldap

# Indexes
index objectclass             eq
index cn                      pres,sub,eq
index sn                      pres,sub,eq
# For storing Unix accounts in LDAP
index uidNumber               eq
index gidNumber               eq
index memberUid               eq
# Samba specific
index uid                     pres,sub,eq
index displayName             pres,sub,eq
index sambaSID              eq
index sambaPrimaryGroupSID  eq
index sambaDomainName       eq

index default               sub

В листинге 3 для всех объектов используется суффикс dc=ertw,dc=com. В первом разделе загружаются все элементы схемы, необходимые для интеграции с Samba. Схема core.schema требуется для выполнения базовых функций OpenLDAP, а схема samba.schema дополняет список классами Samba objectClass. Другие схемы являются зависимостями для схемы samba.schema и должны быть перечислены раньше, поскольку файлы обрабатываются по очереди.

Следующий раздел, начинающийся с database bdb, говорит о том, что будет использоваться база данных Berkeley, и показывает некоторую информацию о дереве, включая пользователя с правами администратора и директорию. В остальной части конфигурационного файла настраиваются индексы, ускоряющие поиск в дереве; эти индексы наследуются из конфигурации OpenLDAP по умолчанию и документации Samba.

Теперь необходимо заполнить дерево LDAP различными контейнерами для хранения пользователей, компьютеров и групп. Также необходимо сопоставить идентификатор безопасности (SID) вашего сервера с некоторыми записями. Это довольно непросто, но, к счастью, этот процесс можно упростить с помощью инструментария smbldap-tools. Скорее всего, ваш дистрибутив должен содержать пакет с этими инструментами, в противном случае их необходимо загрузить и установить вручную (ссылку на загрузку вы найдете в разделе Ресурсы).

После установки инструментов smbldap-tools откройте конфигурационный файл, укажите необходимые данные (например, имя домена или рабочей группы) и задайте административные параметры для подключения к LDAP-серверу. После этого запустите команду smbldap-populate, которая построит дерево. Вывод показан в листинге 4.

Листинг 4. Заполнение дерева LDAP
# smbldap-populate
Populating LDAP directory for domain BOB (S-1-5-21-2287037134-1443008385-640796334)
(using builtin directory structure)

entry dc=ertw,dc=com already exist.
adding new entry: ou=People,dc=ertw,dc=com
adding new entry: ou=Groups,dc=ertw,dc=com
adding new entry: ou=Computers,dc=ertw,dc=com
adding new entry: ou=Idmap,dc=ertw,dc=com
adding new entry: uid=root,ou=People,dc=ertw,dc=com
...
adding new entry: cn=Replicators,ou=Groups,dc=ertw,dc=com
adding new entry: sambaDomainName=BOB,dc=ertw,dc=com

Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password:
Retype new password:

Из листинга 4 видно, что команда smbldap-populate определила идентификатор SID и имя домена локального компьютера, и выполняет построение структуры каталогов LDAP. Наконец, утилита запрашивает пароль пользователя root и синхронизирует его с деревом LDAP.

Подключение Samba к LDAP

При настройке Samba на использование LDAP необходимо указать серверу, как следует выполнить привязку к дереву LDAP. В листинге 5 показана минимальная конфигурация Samba, позволяющая выполнять проверку подлинности в LDAP.

Листинг 5. Минимальная конфигурация для проверки подлинности Samba в LDAP
[global]
  passdb backend = ldapsam:ldap://ldap.ertw.com
  ldap suffix = dc=ertw,dc=com
  ldap user suffix = ou=People
  ldap group suffix = ou=Groups
  ldap admin dn = uid=samba_service,ou=People,dc=ertw,dc=com

В листинге 5 задействована глобальная область параметров, а в качестве локального сервера указывается LDAP-сервер, расположенный по адресу ldap.ertw.com. Три суффикса сообщают Samba о базовом имени дерева и об именах ветвей для пользователей и групп, соответственно. Наконец, настраивается уникальное имя (DN) пользователя с правами администратора. Учетная запись этого пользователя будет использоваться для подключения к дереву при проверке подлинности других пользователей. В листинге 6 представлена информация об этом пользователе в формате обмена данными LDAP (LDAP Data Interchange Format, LDIF).

Листинг 6. Данные учетной записи администратора в формате LDIF
dn: uid=samba_service,ou=People,dc=ertw,dc=com
uid: samba_service
objectclass: person
objectclass: uidobject
description: Service account to allow Samba to authenticate
cn: samba_service
sn: samba_service
userPassword: {SSHA}tQNdW/bNxQGz2iGoLz5zFL5wJ8px43v5

Необходимо задать пароль для DN администратора с помощью команды smbpasswd –w пароль. Хэш userPassword из листинга 6 является тем же самым паролем, но сгенерированным с помощью команды slappasswd. Теперь нужно перезапустить Samba.

Управление пользователями

Как правило, необходимо позаботиться об управлении сопоставлениями между идентификаторами пользователей UNIX и идентификаторами безопасности Microsoft с учетом SID домена. Эта процедура может часто приводить к ошибкам, поэтому здесь нам поможет команда smbldap-useradd. Для добавления пользователя с именем sean запустите команду smbldap-useradd -a sean. Параметр -a говорит о том, что к объекту LDAP необходимо добавить классы Samba objectClass, которые позволяют пользователю подключаться к домену Microsoft. Наконец, с помощью команды smbldap-passwd с указанием имени пользователя для указанного пользователя задается пароль.

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


Аутентификация UNIX в Samba

Linux и Microsoft хранят пароли по-разному, поэтому настройка механизма единого входа (single sign-on) или синхронизацию паролей между этими операционными системами – это сложная процедура. Пакет smbldap-tools справляется с этой задачей, работая одновременно с двумя операционными системами. Другой способ добиться нужного результата – это передать управление паролями сетевому окружению Microsoft.

В Linux широко используется принцип подключаемых модулей аутентификации (Pluggable Authentication Modules, PAM). PAM-модули позволяют администраторам управлять проверкой подлинности служб и изменять способы аутентификации обычным редактированием конфигурационных файлов; при этом нет необходимости разбираться в том, как работают приложения. Для проверки подлинности пользователей приложения обращаются к библиотекам PAM. PAM-модули, в свою очередь, обращаются к конфигурационным файлам с тем, чтобы определить, каким образом необходимо выполнять проверку пользователей того или иного приложения. Результат аутентификации (успех либо отказ) возвращается приложению.

За последнее время было разработано множество модулей проверки подлинности, предоставляющих результаты другим службам – от локальных файлов паролей до LDAP, Kerberos и даже сетевого окружения Microsoft. Модуль, предоставляющий эту службу, называется pam_smb.

Настройка pam_smb

Ваш дистрибутив должен содержать самую последнюю версию pam_smb ; если это не так, то вы можете загрузить исходный код вручную (ссылки на дистрибутив есть в разделе Ресурсы). Конфигурация модуля находится в файле /etc/pam_smb.conf. Формат этого файла достаточно простой: сначала указывается имя домена, а затем – один или два сервера, выполняющих проверку подлинности. Вот пример простой конфигурации:

MYGROUP
ALICE
BOB

В этом примере аутентификация пользователей домена или рабочей группы MYGROUP выполняется серверами ALICE и BOB. Если аутентификация выполняется лишь одним сервером, то в конфигурационный файл будет содержать только две строки – имя домена и имя единственного сервера аутентификации.

Далее необходимо вставить модуль pam_smb в стек проверки подлинности. В директории /etc/pam.d есть несколько конфигурационных файлов, относящихся к определенному способу проверки подлинности для отдельной службы. Большинство этих файлов похожи, поскольку они часто включают в себя общий файл, а не дублируют одну и ту же конфигурацию. Найдите имя файла, которое указано в директиве include. Например, в Fedora этот файл будет называться или password-auth, или system-auth. В листинге 7 показан раздел файла password-auth, относящийся к проверке подлинности.

Листинг 7. Раздел файла password-auth, отвечающий за проверку подлинности
auth        required      pam_env.so
# Use samba authentication
auth        sufficient    pam_smb_auth.so debug
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

Все строки листинга 7 обрабатываются поочередно. В первой строке выполняется вызов модуля pam_env, который устанавливает переменные окружения. Во второй строке модуль pam_smb пытается выполнить запрос проверки подлинности в режиме расширенной отладки. Если аутентификация завершается успешно, то проверка считается выполненной, и пользователь подключается. В противном случае управление передается модулю pam_unix, который проверяет учетные данные в файле паролей UNIX.

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

Службы имен

В Linux есть файл /etc/nsswitch.conf, управляющий тем, как системные библиотеки сопоставляют идентификаторы пользователей и групп с их именами. Этот файл содержит конфигурацию службы Name Service Switch (NSS). Большинство операционных систем содержат ссылки на локальные файлы (например, /etc/passwd и /etc/group), LDAP- или NIS-сервер. Можно также использовать службу Winbind, обеспечив перенаправление запросов системных библиотек в сетевое окружение Microsoft.

В следующей статье этой серии данная тема будет рассмотрена более подробно. Сейчас просто достаточно понимать, что проверка подлинности пользователей выполняется через PAM, но имена пользователей и групп проверяются системой NSS.


Списки контроля доступов

Серверы Microsoft поддерживают достаточно мощный набор прав доступа, позволяющих администраторам управлять доступом к файлам и директориям с большой точностью. Даже не смотря на то, что некоторые UNIX-системы имеют поддержку списков контроля доступов (ACL) для файловой системы, эта поддержка слабо распространена. Фактически, Linux-системы часто ограничены традиционной поддержкой битов Чтение/Запись/Выполнение для пользователя группы и всех остальных. Тем не менее, Samba должна обеспечивать интерфейс ACL для клиентов Microsoft и сопоставлять его с файловыми разрешениями UNIX; при этом некоторая информация может храниться в TDB-файле.

Сопоставлением файловых разрешений UNIX и Windows NT управляют несколько параметров. Двумя важными параметрами являются force security mode и security mask. Эти параметры работают совместно и предназначены для установки и удаления битов прав доступа к файлам, соответственно.

Главное о правах доступа к файлам

Права доступа к файлам в UNIX представляют собой восьмеричные числа: 1 – выполнение (execute), 2 – запись (write) и 4 – чтение (read). Эти числа соответствуют трем битам, необходимым для построения восьмеричного числа. Первое из трех восьмеричных чисел определяет права доступа для владельца файла или директории, второе число – права доступа для группы и третье – глобальные разрешения (для всех остальных пользователей). Если для файла установлено значение 750, то это означает, что владелец файла может читать, записывать и запускать его на выполнение, члены группы-владельца – только читать и выполнять, а всем остальным доступ к файлу запрещен.

Для установки и сброса прав доступа можно выполнять над восьмеричными значениями бинарные операции. Операция OR устанавливает действующие биты, а операция AND очищает бит. Результатом операции 1 OR 4 будет 5, поскольку изначально установлен бит 1, а затем мы устанавливаем бит 4. Аналогично, результатом операции 5 OR 4 будет 5, поскольку 5 – это комбинация битов 1 и 4, поэтому установка бита, который уже и так установлен, не приводит к каким-либо результатам.

Операция AND противоположна операции OR. Для того, чтобы иметь в результате операции AND установленный бит, необходимо, чтобы он был установлен в обоих ее операндах. Результатом операции 1 AND 1 является 1, поскольку установлены оба бита 1. Результатом операции 5 AND 1 также является 1, поскольку бит 1 установлен в обоих операндах, но бит 4 установлен только в одном из них (в левом). Если аккуратно пользоваться операциями AND и OR, то биты всегда будут правильно установлены или сброшены.

Применение операций с битами к Samba

Параметр force security mode принудительно устанавливает биты для файла при его создании или когда клиент пытается изменить разрешения для него. По умолчанию этот параметр имеет значение 000, что означает, что биты принудительно не устанавливаются. Если изменить значение параметра force security mode на 700, то для пользователя всегда будут принудительно устанавливаться биты чтения, записи и выполнения, что позволит ему всегда прочитать свои файлы, даже если он попытается удалить разрешения.

Аналогично, параметр security mask выполняет операцию AND и сбрасывает биты. По умолчанию этот параметр имеет значение 777, что означает, что никакие биты не сбрасываются. Значение параметра 775 будет сбрасывать бит записи файла для всех остальных пользователей (Everyone), что не позволит пользователям создавать файлы, доступные для записи каждому.

Параметры security mask и force security mode можно устанавливать как глобально, так и на уровне общего ресурса. Наиболее полезными эти параметры оказываются при работе с публичными директориями и директориями для групп пользователей, когда необходимо автоматически устанавливать нужные групповые или глобальные права доступа к файлам без вмешательства пользователей.

Ресурсы

Научиться

Получить продукты и технологии

  • smbldap-tools (EN) – пакет, сильно упрощающий интеграцию Samba с LDAP.
  • pam_smb (EN) – модуль, позволяющий подключаться к серверу Linux с использованием учетных данных Microsoft.
  • Загрузите последнюю версию Samba (EN) и используйте все ее самые новые возможности.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=824273
ArticleTitle=Изучаем Linux, 302 (смешанные среды): Аутентификация и авторизация
publish-date=07052012