Особенности использования Samba 3.0

Samba 3.0 имеет заметные отличия от более ранних версий; наиболее выдающимися из них являются улучшенная по сравнению с версией 2.2 поддержка Unicode, поддержка гораздо большего количества кодовых страниц, новая утилита администрирования net, призванная заменить smbpasswd.

В поставку входят пакеты samba3-client, samba3-client-cups, samba3-common, samba3, samba3-swat.

Задание кодовых страниц

Для задания кодировок используются следующие новые параметры smb.conf:

unix charset = <charset>
dos charset = <charset>
display charset = <charset>
		

где <charset> — любая кодировка, поддерживаемая iconv. Список возможных кодировок можно узнать, выполнив команду iconv -list.

Параметры client code page и character set больше не поддерживаются. Параметр unix charset указывает кодировку, в которой будут храниться файлы на диске, в которой заданы параметры в smb.conf. Наконец-то появилась возможность хранить имена файлов в UTF-8!

Параметр dos charset указывает кодировку, в которой Samba будет общаться с клиентами, не поддерживающими Unicode. Все версии Windows, начиная с 95, понимают Unicode — но все же стоит установить dos charset = cp866, что соответствует client code page = 866 в более старых версиях.

Параметр display charset указывает в какой кодировке должны выводить информацию программы, непосредственно обменивающиеся информацией с пользователем, например smbclient, net, wbinfo и другие.

Утилита net

Утилита net призвана заменить smbpasswd и обеспечивает гораздо большие возможности по получению информации о сети и управлению сетью. Формат команд утилиты очень похож на формат одноимённой команды Windows NT/2000.

Основные применения команды net:

  • создание и удаление пользователей: net user

  • включение машины в домен: net ads join — Active Directory; net rpc join — NT Domain;

  • получение информации о домене, машине, открытых файлах, сессиях: net info, net ads status, net rpc status;

  • создание и удаление разделяемых ресурсов на удалённых машинах: net share;

  • синхронизация времени с windows-сервером: net time

Управление машиной с Samba из Microsoft Management Console

Начиная с версии 2.2, Samba имеет возможность удалённого администрирования из MMC (Microsoft Management Console). Эта возможность полезна, когда Samba является членом NT-домена или AD. Администратор домена может создавать, удалять и изменять сетевые ресурсы на UNIX-машине с запущенной Samba.

Как сконфигурировать Samba для удалённого администрирования? Для управления ресурсами служат параметры /etc/samba/smb.conf:

[global]

add share command = <add script>
		

Параметр указывает скрипт, который будет вызван при попытке создания нового ресурса в MMC. Скрипту передаётся четыре параметра:

  • имя конфигурационного файла (например, /etc/samba/smb.conf);

  • имя создаваемого ресурса;

  • путь к существующей директории на диске;

  • комментарий.

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

change share command = <change script>
		

Параметр указывает скрипт, который будет вызван при попытке изменения существующего ресурса в MMC. Скрипту передаётся четыре параметра:

  • имя конфигурационного файла (например, /etc/samba/smb.conf);

  • имя создаваемого ресурса;

  • путь к существующей директории на диске;

  • комментарий.

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

delete share command = <delete script>
		

Параметр указывает скрипт, который будет вызван при попытке удаления существующего ресурса в MMC (Stop sharing). Скрипту передаётся два параметра:

  • имя конфигурационного файла (например, /etc/samba/smb.conf);

  • имя создаваемого ресурса;

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

Чтобы скрипты могли изменять конфигурационные файлы Samba, они должны выполняться с правами root. Для этого нужно установить отображение пользователей домена, имеющих право изменять ресурсы, в root. Это можно сделать либо с помощью файла /etc/samba/smbusers, прописав там строку вида

root = administrator <user 1> ... <user n>
		

либо с помощью параметра admin users в /etc/samba/smb.conf:

admin users = administrator
		

При создании нового ресурса Windows позволяет просматривать дерево директорий. Для этого в /etc/samba/smb.conf нужно задать служебные ресурсы, заканчивающиеся символом “$”, например:

[C$]

path = /drives/c
		

После этого при создании нового ресурса можно будет просматривать и выбирать все директории ниже /drives/c.

Работа в среде Active Directory

Для объединения компьютеров в домены Widows 2000 Server использует схему, отличную от NT-доменов, которая называется Active Directory; эта схема обладает гораздо большей масштабируемостью и позволяет централизованно администрировать машины, входящие в домен. Active Directory базируется на протоколе авторизации Kerberos, при котором имя пользователя и пароль не передаются по сети, а используется механизм так называемых билетов, выдаваемых сервером на определённое время. Получив билет, машина, входящая в домен, может авторизоваться на других машинах домена без участия сервера.

Установка Samba

Samba 3.0, в отличие от более ранних версий Samba, имеет возможность работать в сетях Wndows, работающих в режиме Active Directory (или Windows 2000 native mode). Если требуется эта функциональность, следует установить пакет samba3-3.0 вместо samba-2.2.

Active Directory имеет другую схему именования доменов, компьютеров и пользователей, основанную на DNS. Допустим, существует сеть с именем my.firm.com и компьютерами host1.my.firm.com, host2.my.firm.com, host3.my.firm.com; тогда домен Active Directory будет называться my.firm.com, а пользователи Active Directory будут иметь имена вида user@my.firm.com.

Настройка

/etc/krb5.conf должен содержать по крайней мере следующие строки:

[realms]

MY.FIRM.COM = {
kdc = your.kerberos.server
}
		  

где MY.FIRM.COM - имя домена (или “царства”, в терминологии Kerberos; задаётся обязательно в верхнем регистре), а your.kerberos.server — имя или IP-адрес KDC (Kerberos Domain Controller), аналог PDC (Primary Domain Controller) в доменах Windows NT — например, server.my.firm.com или 192.168.117.11.

Правильность указания параметров можно проверить, выполнив команду (замените имя пользователя на актуальное — например, administrator@MY.FIRM.COM):

# kinit username@REALM
		  

и убедившись, что пароль был принят сервером. REALM всегда задаётся в верхнем регистре.

Вы также должны убедиться, что возможно получить имя KDC по его IP адресу (так называемый Reverse DNS lookup). Имя KDC должно либо совпадать с NetBIOS-именем компьютера (имя машины в сети Windows без указания домена) либо состоять из NetBIOS-имени и имени домена. Если получить имя KDC по адресу невозможно, вы получите ошибку “local error” при попытке войти в домен.

Если ваш DNS не поддерживает Reverse lookup либо KDC не зарегистрирован в DNS, вы можете указать соответствие IP-адреса и имени в /etc/hosts.

Редактирование /etc/samba/smb.conf

Для работы в Active Directory smb.conf должен содержать следующие параметры:

[global]

# Задаёт Kerberos realm, обычно совпадает с именем домена в
# верхнем регистре, например realm = MY.FIRM.COM
realm = <REALM>

# Это обычно часть реалма до первой точки, например
# workgroup = MY
workgroup = <WORKGROUP>

# Тип домена - Active Directory.
security = ADS

# В случае Active Directory пароли всегда шифруются.
encrypt passwords = true

# Обычно этот параметр указывать не обязательно, т.к. Samba сама
# определяет адрес KDC, если в сети есть WINS-сервер и он указан
# в smb.conf
ads server = <your.kerberos.server>
		  

Регистрация компьютера в Active Directory домене

Убедитесь что Samba не запущена. Если запущена, её нужно остановить:

# service smb stop; service winbind stop
		  

Чтобы включить компьютер в домен, выполните команду:

# net ads join -U administrator
		  

где administrator — имя пользователя домена, имеющего право создавать новые учётные записи.

Если не было выдано сообщение об ошибке, то машина успешно зарегистрирована в домене — иначе проверьте правильность задания параметров в /etc/samba/smb.conf и /etc/krb5.conf. Убедитесь, что пользователь, указанный после -U в net ads join, имеет необходимые права на создание новых учётных записей.

Теперь можно запустить необходимые службы:

# service smb start; service winbind start
		  

Проверка правильной работы в Active Directory

Для работы с компьютерами, зарегистрированными в Active Directory, не требуется указывать имя пользователя и пароль. Попробуйте выполнить команду:

$ smbclient -k -L <имя компьютера в домене>
		  

Вы должны получить список доступных ресурсов, при этом smbclient не должен запрашивать имя пользователя и пароль.

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

$ smbclient -k -L <имя вашего компьютера в домене>
		  

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

Некоторые особенности работы в Active Directory

В отличие от доменов Windows NT, авторизация в Active Directory производится не по имени и паролю, а c помощью билетов протокола Kerberos. Из-за этого работа с smbclient может поначалу показаться необычной.

Во-первых, при вызове smbclient нужно указывать параметр -k. Во-вторых, билеты Kerberos даются на определённое время (обычно на сутки, но это зависит от настроек сервера). Поэтому их нужно периодически обновлять с помощью команды kinit:

# kinit username@REALM
		  

где username — ваше имя в Actiev Directory домене REALM.

Так что если smbclient вдруг перестаёт подключаться к доменным ресурсам, попробуйте обновить билет — скорее всего, дело именно в этом.