VolgogradLUG : AvramenkoAndrew/samba3hоwто

SAMBA 3 – HOWTO


Данное руководство включает в себя перевод официального HOW-TO с дополнительной информацией (возможно с точки зрения профессионалов даже избыточной), а также набор готовых примеров, информацию по руссифицикации. Также здесь опущен перевод всяких присказок и перечней того о чем рассказывается в главе для удобства чтения.
Писать буду долго, так что если кто-то в этом соображает – помогайте.

Заранее прошу прощение за транслитерованные названия и термины. Например, я не знаю как писать слово samba и как его склонять :)

Оглавление документа

Введение

Самба – большой комплексный проект. Samba team – группа из 30 индивидуальностей, которые представляют различные страны. Эта команда включает ученых, инженеров, бизнесменов и студентов.

Решение проблем с самбой возможно многими способами, например, отправить описание проблемы в рассылки. В дистрибутиве ALT Linux существует для этого специализированная рассылка, в коммерческих дистрибутивах это официальная техническая поддержка (если она есть). Также если нет проблем с английским языком, вопрос можно задать в официальной рассылке или на официальном канале #samba на сервер freenode.net. Вопросы по разработке можно задать на канале #samba-devel или в специализированной рассылке. Перед тем как что-то спрашивать рекомендую все же обратиться к документации. Вопросы очень часто повторяются одни и те же.

Ежегодно проводится конференция Samba Expirience и многую информацию о развитии самбы можно прочитать на сайте sambaxp.org.

I. Инсталляция

Бинарные пакеты sambы поставляются в большинство UNIX-дистрибутивов. Часть из них опубликована на официальном сайте самбы. Перед тем как компилировать ее из исходных текстов, сначала определитесь для чего Вам это нужно. Установка из бинарных пакетов описывать не буду, так как без этих знаний по-моему вообще рано читать эту статью.

Получение исходных текстов.


Самба разрабатывается в открытом окружении, т.е. Вы можете получить доступ к текущим исходным текстам непосредственно через subversion. Это можно сделать двумя способами:

1. Через SVNweb по адресу: http://svnweb.samba.org/
2. Через обычный subversion-клиент:



Это позволит скачать текущую development-ветку. На данный момент это 3.1. Для доступа к другим веткам нужно добавлять branches/BRANCH_NAME. Список можно получить на странице Development официального сайта.

Для обновления полученных исходных текстов достаточно просто набрать



Также доступ к исходным текстам можно получить с помощью rsync или ftp, но это будет не версия реального времени.

Сборка из исходных текстов

Если скрипт configure не присутствует, то необходимо его создать, предварительно убедившись, что у вас в системе присутствует autoconf:



Далее происходит процесс конфигурации, для просмотра доступных параметров, можно набрать:



Далее выполняем:



Для отката на прежнюю версию самбы, можно выполнить:


II. Основы конфигурирования

Типы серверов и режимы безопасности

Администраторы сетей Microsoft различают 3 типа серверов:

Сети Microsoft Windows используют протокол, который первоначально назывался Server Message Block (SMB). С 1996 года протокол стал более известным под названием Common Internet Filesystem (CIFS). В окружении smb/cifs известны только 2 режима безопасности: на уровне пользователей (user-level) и на уровне разделенных ресурсов (share-level). В самбе один вариант уровня безопасности share и четыря уровня безопасности user. Они известны как share, user, domain, ads и server.

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

Термин «клиент» в данном случае употребляется как для рабочих станций и серверов Windows, так и для другого сервера Samba или SMB-приложения (например, smbclient), которые пользуются сервисами данного SMB/CIFS сервера.

User Level Security

Опишем первым режим безопасности на уровне пользователя, потому что он проще. В режиме безопасности user-level клиент шлет запрос на установление сессии напрямую, следуя согласованию протокола. Это запрос представляет собой имя пользователя и пароль. Сервер может принять или отвергнуть комбинацию имя пользователя/пароль. На этом уровне сервер не знает к какому разделяемому ресурсу пользователь хочет подключиться, поэтому он не может принять/отвергнуть по какому-либо критерию за исключением:
– имени пользователя/пароля
– имени компьютера клиента

Если сервер принял имя пользователя и пароль, клиент будет иметь возможность монтировать разделяемые ресурсы без дополнительного указания имени пользователя и пароля. Также возможно установление со стороны клиента нескольких сессий. Имена пользователей в сетях windows не зависят от регистра. Пароли в семействе windows NT зависят от регистра и сохраняют регистр.

Для использования данного уровня безопасности в конфигурационном файле необходимо указать:



Это уровень безопасности по-умолчанию начиная с версии Samba-2.2.x

Share-level security

Для режима безопасности на уровня разделяемых ресурсов клиент аутентифицирует себя отдельно для каждого ресурса. Он посылает пароль, каждый раз монтируя новый ресурс, но не посылает имя пользователя. Клиент ожидает, что пароль будет ассоциироваться с разделяемым ресурсом, а не каким-либо пользователем. Это означает, что samba сама должна узнать какому пользователю этот пароль ассоциировать. Некоторые коммерческие SMB-сервера действительно ассоциируют пароль с разделяемым ресурсом (например, Windows NT), но samba всегда будет использовать unix-схему, когда пользователю сопоставляется пароль, а не ресурсу.

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

Многие клиенты отсылают запрос на установление сессии даже есть сервер находится в режиме share-level. Они просто отправляют имя пользователя и пустой пароль. Samba записывает это имя пользователя в список возможных пользователей.

Если нет списка возможных пользователей, samba делает системный вызов на поиск подходящих пользователей. В системах, в которых не используется NSS, просто просматривает /etc/passwd.

Для использования параметра для безопасности на уровне разделяемых ресурсов:


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

Пересматривая рассылку можно определить несколько наиболее типичных ошибок пользователей:

– Основная конфигурация TCP/IP
– Разрешение имен NetBIOS
– Ошибка аутентификации
– Конфигурация пользователей и групп
– Основные права на файлы и каталоги в Unix / Linux
– Понимание как клиенты MS Windows работают в этом сетевом окружении

Преимущества


Какие основные преимущества Microsoft Domain Security?

In a word, single sign-on, or SSO for short. To many, this is the Holy Grail of MS Windows NT and beyond networking. SSO allows users in a well-designed network to log onto any workstation that is a member of the domain that contains their user account (or in a domain that has an appropriate trust relationship with the domain they are visiting) and they will be able to log onto the network and access resources (shares, files, and printers) as if they are sitting at their home (personal) workstation. This is a feature of the domain security protocols.

The benefits of domain security are available to those sites that deploy a Samba PDC. A domain provides a unique network security identifier (SID). Domain user and group security identifiers are comprised of the network SID plus a relative identifier (RID) that is unique to the account. User and group SIDs (the network SID plus the RID) can be used to create access control lists (ACLs) attached to network resources to provide organizational access control. UNIX systems recognize only local security identifiers.

A SID represents a security context. For example, every Windows machine has local accounts within the security context of the local machine which has a unique SID. Every domain (NT4, ADS, Samba) contains accounts that exist within the domain security context which is defined by the domain SID.

A domain member server will have a SID that differs from the domain SID. The domain member server can be configured to regard all domain users as local users. It can also be configured to recognize domain users and groups as non-local. SIDs are persistent. A typical domain of user SID looks like this:

S-1-5–21–726309263–4128913605–1168186429


Резервный контроллер домена

Членство в домене

Отдельно стоящий сервер

Руководство по конфигурированию сетей MS Windows

Дополнительная конфигурация

Базы данных аккаунтов

Samba 3 предоставляет возможность работать с несколькими хранилицами аккаунтов. Полностью активно поддерживаются 3 хранилища: smbpasswd, tdbsam и ldapsam. Ldapsam позволяет хранить информацию не только об аккаунтах самбы, но и о системных аккаунтах. Рекомендуется для простых систем использовать tdbsam. Ldapsam рекомендуется использовать для больших комплексных сетей.

Устаревшие хранилища аккаунтов
Plaintext – это вообще не хранилище, но для упрощения указано здесь. Он использует открытую аутентификацию через PAM.
smbpasswd – позвоялет хранить аккаунты в файле smbpasswd. Не хранит информацию SAM (Security Accaunt Manager). Планируется исключить в будующих релизах.
ldapsam_compat – хранение в LDAP, который использует схему для самбы2.2

Новые хранилища аккаунтов
tdbsam – позволяет создать большую БД – хранилище аккаунтов. Хранит старую информацию smbpasswd и информацию SAM. Не подходит для нескольких контроллеров домена, т.е. (PDC + один или несколько BDC).
ldapsam – хранение аккаунтов в службе каталогов LDAP.
mysqlsam – хранение в БД mysql. Подходит для сайтов, которые используют mysql.
pgsqlsam – хранение в PostgreSQL. Настройка очень похожа на настройку хранения в mysql.
xmlsam – хранение в текстовом файле формата XML.

Многие пользователи задают вопрос: почему нельзя просто использовать системную базу данных паролей? Дело в том, что Windows использует свой метод шифрования паролей, который не совместим с шифрование в стиле UNIX. Конвертирование из одного формата в другой невозможно. Кроме того, Windows дописывает много другой информации: размещение профиля, рабочие станции с которых пользователей может входить и др.

Важные замечания по поводу безопасности.
Первоначально, кажется что шифрование SMB и UNIX очень похоже, но это только внешне. В отличие от паролей UNIX, SMB никогда не передает пароли открытым текстом. Зато, он записывать 16-битные хэши на диск, это плохо. Поэтому рекомендуется хранить базы данных бэкэндов(хранилищей паролей) в изоляции от остальных пользователей, хоть они и не содержат открытых паролей.

Mapping.
Каждая операция в UNIX'е требует идентификатора пользователя (UID), каждая операция в Windows требует идентификатора безопасности (SID). Самба предоставляет 2 значения установления связи между UID и SID.
Samba может записывать информацию о присвоение SID пользователю в бэкэнд или же использовать параметры idmap uid и idmap gid в конфигурационном файле smb.conf.

Утилиты управления аккаунтами.

smbpasswd
С ее помощью можно:
– добавить пользователя
– удалить пользователя
– включить пользователя
– временно отключить пользователя
– задать нулевой пароль пользователю
– управлять внутридоменными доверями

Для запуска smbpasswd как обычный пользователь:



Group mapping

Начиная с ~SAMBA3 новая функция group mapping позволяет создавать связь между Windows SID групп и группами Unix.

Групповые аккаунты могут управляться с использованием программы Win MMC. Соответствующий скрипт должен быть в smb.conf
Если этого скрипта нет и если запущен winbindd, идентификатор для группы, созданной с помощью этой программы будет выбран из диапазона, который предоставлен IDMAP.

Net groupmap используется, чтобы установить связь между UNIX-группами и NT SID. Часть информации Вы можете узнать в разделе IDMAP. Если создать пользователя testuser, чтобы он был в группе администраторов, то на компьютере – члене домена, этот пользователь будет иметь такие же права как пользователь Administartor.

Следующие шаги описывают как создать в Samba PDC пользователей – членов группы Domain Admins
1) Создать Unix-группу domadm
2) В /etc/group прописать членов группы:
domadm:x:502:joe,john,mary
3)Создать связь с NT-группой:


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

Удаленное и локальное управление

net [RPC|ADS] USER ADD name [password] [-F user flags] [-C comment]

<liberal use of snip>
Possible flags are listed below.
N: No password required
D: Account disabled
H: Home directory required
T: Temporary duplicate of other account
U: Regular user account
M: MNS logon user account
W: Workstation Trust Account
S: Server Trust Account
L: Automatic Locking
X: Password does not expire
I: Domain Trust Account

Identify mapping

IDMAP используется если более чем одна группа Samba установлена в домене. Когда несколько серверов Samba используется, часто приходится пермещать с одного сервера на другой и здесь начинаются чудеса! =)

Права пользователей и привелегии

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

Блокировка файлов

Безопасность самбы

Interdomain Trust Relationships

MSDFS

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

За дополнительной информацией о MS DFS можно обратиться к соответствующей документации.

Samba-сервер может работать как DFS-сервер путем выставления логической переменной host msdfs в кофигурационном файле smb.conf. Соответствующие директории создаются как символические ссылки на другие сервера. Вот пример:



smb.conf:



Поддержка печати

Модуль VFS

Winbind

winbind – компонент samba, который помогает организовать вход пользователей домена Windows и работать как обыкновенным пользователям в UNIX-компьютер с помощью UNIX-реализации Microsoft RPC, PAM и NSS.

winbind предоставляет 3 отдельные функции:
– аутентификация (PAM);
– идентификация (NSS);
– winbind поддерживает базу данных, называемую winbind_idmap.tdb, в которой записаны соответствия между UNIX UID, GID и Windows SID. Это используется только для пользователей, не заведенных локально. Можно указать в качестве idmap-бэкенда ldap (тэг idmap backend).

Политики учетных записей

Управление профилями

Аутентификация PAM

Интеграция MS Windows и Самбы

Кодировки и руссификация

Пользователи Windows-машин должны нормально видеть файлы с русскими названиями, находящиеся на Linux-машине. Аналогично для пользователей Linux-машин. Предположим, что на Linux-машине стоит локаль koi-8. Тогда соответствующие параметры в файле конфигурации:

Миграция и обновление

Решение проблем

Дополнение

Примеры