Samba 2.2 — что нового

Апрышкина Галина

Что нового в Samba 2.2

Где взять

Клиенты

Детальная настройка

   Размещение Microsoft Distributed File System на Samba

   Принт-сервер под Linux

   Как сконфигурировать Samba 2.2 в качестве Primary Domain Controller

   Я получаю сообщение «You already have a connection to the Domain....» при создании машинной учетной записи

   «The system can not log you on (C000019B)....»

   «The machine account for this computer either does not exist or is not accessible»

Заключение


В данной статье рассмотрены новые функциональные возможности версии 2.2 при использовании Samba в качестве файл- или принт-сервера.

Что нового в Samba 2.2

Уже сейчас можно с уверенностью говорить о том, что новая версия Samba 2.2 догоняет Windows 2000 по функциональным возможностям и содержит некоторые дополнительные усовершенствования. Один из ведущих разработчиков Samba Джереми Эллисон (Jeremy Allison) называет ее «важным обновлением», которое поможет системам Samba более гладко внедряться в сети Microsoft.

Одно из самых важных новшеств в Samba 2.2 — функция single sign-on, позволяющая легко включать продукт в сеть Windows 2000 без специального конфигурирования. Еще одна функция позволяет серверам Samba автоматически пересылать в компьютеры ПО, требуемое для использования определенного принтера. В ее разработке и отладке приняли участие специалисты НР, а сотрудник НР Джон Рейлли (John Reilly) стал одним из немногих программистов Samba, которым разрешено вносить изменения в ПО.

Samba 2.2 может служить также «источником аутентификации» для компьютеров Windows 2000. То есть Samba может обмануть машины Windows 2000, «прикинувшись» сервером Windows. По словам Эллисона, создание этой функции аутентификации заняло несколько месяцев и стало «ночным кошмаром». Люк Лейтон (Luke Leighton) и другие программисты, которые работают над альтернативной версией Samba — Samba TNG, выявили протокол, который для этой цели использует Microsoft.

Еще одно усовершенствование: работая внутри структуры Microsoft, новая версия Samba устанавливает правила, по которым компьютеры получают доступ к тем или иным файлам на сервере.

О’Райли и партнеры обновили свою книгу «Использование Samba» параллельно с выходом новой версии программного обеспечения. HTML-версия этой книги будет поставляться с ПО Samba в качестве онлайновой документации.

Новая версия была протестирована с Windows 2000, и несколько обнаруженных несовместимостей были исправлены.

В начало В начало

Где взять

Для того чтобы получить исходные тексты последней версии Samba, зайдите на сайт http://www.samba.org/ и выберите ближайший к вам сервер-зеркало — ftp://ftp.samba.org/. Более подробные инструкции можно найти в статье «Samba — первые шаги», где описан процесс инсталляции и настройки Samba в этом выпуске CD-ROM. Поэтому здесь рассмотрим лишь клиентские приложения для работы с Samba-сервером, а затем сразу перейдем к новым возможностям Samba 2.2.

В начало В начало

Клиенты

Логично, что для соединения с сервером Samba вам понадобятся клиентские приложения. Windows Explorer для этих целей вполне подойдет. С помощью Explorer вы можете просматривать сетевые диски так же, как локальные жесткие диски вашего компьютера. Для получения такой возможности необходимо инсталлировать клиента для сети Microsoft.

Для этого откройте Windows Control Panel и выберите значок Network. Далее выберите вкладку «Client for Microsoft Networks», затем — «File and printer sharing for Microsoft Networks». Если у вас есть эти два раздела, значит, вам не надо будет ничего инсталлировать; в противном случае — нажмите кнопку «Add…». После того как в появившемся окошке вы выберете опцию Microsoft Network и инсталлируете клиента для сети Microsoft, будет необходима перезагрузка. Перед этим обязательно перейдите на закладку «Identification» и убедитесь в том, что там указаны те же имя машины и группа, что и в конфигурационном файле Samba — smb.conf.

После перезагрузки, открыв Network Neighbourhood, вы увидите в окне не только Windows-машины, но и ваш Samba-сервер, подключиться к которому вы сможете после ввода Linux-пароля в окно для аутентификации.

Естественно, желательно также получить доступ к Windows-машинам из Linux. Существует несколько разных Linux-клиентов для Samba, например Gnomba. Дистрибутив этой программы можно скопировать с сайта http://www.gnomba.darkcorner.net/. Gnomba монтирует указанные в конфигурации Samba диски Windows как локальную файловую систему.

В начало В начало

Детальная настройка

Размещение Microsoft Distributed File System на Samba

Distributed File System (или DFs) позволяет имитировать серверы файлов и печати на машинах Linux. Попробуем разобраться, как разместить дерево DFs на UNIX-машине, используя Samba. Для этого ее необходимо сконфигуривовать с опцией with-msdfs. Затем, для того чтобы сделать сконфигурированный Samba-сервер DFs-сервером, надо установить значение булевой переменной host msdfs в секции [global] в уже знакомом нам файле smb.conf. А используя параметр mdfs root, вы можете определить пользователем каталога DFs суперпользователя root. Корневой Dfs-каталог на Samba-сервере является хранилищем символических ссылок на другие серверы. Например, переход по символической ссылке junction->msdfs:storage1/share1, находящейся в каталоге, к которому разрешены DFs-соединения, приведет пользователя к ресурсу, нахождение которого определяется как //storage1/share1.

Приведем пример создания DFs дерева на Samba-сервере:

# The smb.conf file:
 
[global]
               netbios name = GALKA
               host msdfs   = yes
 
[dfs]        
path = /home/dfsroot
msdfs root = yes

В директории /home/dfsroot создадим ссылки на другие серверы в сети:

# cd /home/dfsroot  
# chown root /home/dfsroot  
# chmod 755 /home/dfsroot  
# ln -s msdfs:storageA\\share1 linka  
# ln -s msdfs:serverB\\share2,serverC\\share3 linkb  

Необходимо установить права на монопольный доступ к каталогу, использующемуся как Dfs, для пользователя root. Это означает, что только пользователи, имеющие привилегии суперпользователя, могут создавать, удалять или изменять символические ссылки msDFs. Кроме того, обратите внимание, что имена символических ссылок должны быть в нижнем регистре. Затем установите символические ссылки, указывающие на ресурсы сети, и запустите Samba.

Теперь пользователи, запускающие Dfs-клиенты на Windows 95- и Windows 2000-машинах, могут просматривать Dfs-дерево на сервере Samba. Символические ссылки linka и linkb появляются как каталоги в окне клиента.

В начало В начало

Принт-сервер под Linux

Начиная с версии 2.2.0 Samba поддерживает печатающий механизм Windows NT, реализованный через MS RPC-канал. Предыдущие версии Samba поддерживали только печатающие запросы LanMan.

Дополнительные функциональные возможности, обеспеченные новой поддержкой SPOOLSS, включают:

  • загрузку драйверов принтеров клиентам Windows 95/98/NT/2000 по запросу;
  • загрузку драйверов принтера через Windows NT Add Printer Wizard (APW);
  • поддержку для MS RPC-запросов типа StartDocPrinter, EnumJobs () и т.д. (для получения более подробной информации стоит заглянуть в MSDN-документацию, которую можно найти по адресу http://www.msdn.microsoft.com/ — там содержатся дополнительные сведения о Win32 printing API);
  • поддержку для NT Access Control Lists (ACL);
  • улучшенную поддержку для управления очередью принтера с помощью внутренних баз данных.

А теперь поговорим обо всем этом более подробно. Клиентам Windows NT/2000 необходимо, чтобы сервер Samba обладал полноценным драйвером для принтера. Для этого в Samba реализована поддержка MS RPC-запросов на печать. Для клиентов Windows 9x не требуется, чтобы хост Samba устанавливал драйвер для данного принтера. Поэтому для обработки помещенного в очередь файла Samba использует эти драйверы не по умолчанию, а только после запроса со стороны клиента.

Для того чтобы сконфигурировать принт-сервер под Linux, вам необходимо добавить в файл smb.conf секцию под названием [print$]. Обратите внимание на то, что в предыдущих версиях Samba для этой же цели использовалась секция [printer$].

Вы должны добавить в файл smb.conf примерно следующие строки:

[print$]
    path = /usr/local/samba/printers
    guest ok = yes
    browseable = yes
    read only = yes
    ; since this share is configured as read only, then we need
    ; a 'write list'.  Check the file system permissions to make
    ; sure this account can copy files to the share.  If this
    ; is setup to a non-root account, then it should also exist
    ; as a 'printer admin'
    write list = ntadmin
 

Write list используется для представления пользователю ntadmin администраторских полномочий, необходимых для обновления файлов в разделе. Дополнительную информацию смотрите на man smb.conf (5). К примеру, чтобы добавить новый драйвер для вашего хоста Samba, вы должны обладать правами суперпользователя root на этом хосте или являться одним из членов write list.

При необходимости поддерживать загрузку разных драйверов для различных клиентских архитектур на сервере печати Windows NT нужно создать подкаталоги в пределах службы печати, соответствующие каждой из поддерживаемых клиентских архитектур. Samba также придерживается этой модели, поэтому вам нужно будет создать дерево каталогов ниже раздела [print$] для каждой архитектуры, которую вы желаете поддержать.

[print$]-----
        |-W32X86                        ; "Windows NT x86"
        |-WIN40                                          ; "Windows 95/98"
        |-W32ALPHA                        ; "Windows NT Alpha_AXP"
        |-W32MIPS                         ; "Windows NT R4000"
        |-W32PPC                          ; "Windows NT PowerPC"

Одной из проблем, возникших на стадии развития Samba 2.2, была потребность в поддержке загрузки драйвера для 100 принтеров. Использование Windows NT APW в данном случае несколько громоздко. Если два или более принтеров используют один и тот же драйвер, команда setdriver rpcclient's может служить для установки драйвера, связанного с уже установленным драйвером. Приведем пример того, как это может быть сделано:

$ rpcclient pogo -U root%secret -c "enumdrivers"
Domain=[USERS] OS=[Unix] Server=[Samba 2.2.0-alpha3] 
 
[Windows NT x86]
Printer Driver Info 1:
                    Driver Name: [HP LaserJet 4000 Series PS] 
 
Printer Driver Info 1:
                    Driver Name: [HP LaserJet 2100 Series PS] 
 
Printer Driver Info 1:     
               Driver Name: [HP LaserJet 4Si/4SiMX PS]                                            
 
$ rpcclient pogo -U root%secret -c "enumprinters"
Domain=[USERS] OS=[Unix] Server=[Samba 2.2.0-alpha3]
               flags:[0x800000]
               name:[\\POGO\hp-print]     
               description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,]
               comment:[]                                      
 
$ rpcclient pogo -U root%secret \

>  -c "setdriver hp-print \"HP LaserJet 4000 Series \""

Domain=[USERS] OS=[Unix] Server=[Samba 2.2.0-alpha3]

Successfully set hp-print to driver HP LaserJet 4000 Series PS.

Серверы печати Windows NT/2000 связывают определенный порт с каждым принтером. Обычно порты обозначают как LPT1:, COM1:, ФАЙЛ: и т.д. Samba также поддерживает концепцию портов, связанных с каждым подключенным принтером. По умолчанию в системе существует только один порт принтера, названный Samba Printer Port.

Обратите внимание, что Samba не поддерживает концепцию Printer Pooling, согласно которой логический принтер назначается на множественные порты в целях равномерного распределения загрузки или защиты от сбоев.

На случай необходимости определения множественных портов в smb.conf предусмотрена команда enumports для определения внешней программы, генерирующей список портов для системы.

Imprints tool является для UNIX/Linux эквивалентом Windows NT Add Printer Wizard. Дополнительную информацию можно найти на сайте Imprints — http://www.imprints.sourceforge.net/. Этот раздел статьи может быть полезен только в качестве краткого обзора особенностей Imprints.

Imprints — это набор инструментальных средств для поддержки следующих функций:

  • обеспечение центрального хранилища информации относительно Windows NT и пакетов драйверов принтера 95/98;
  • обеспечение инструментальных средств, необходимых для создания пакетов драйверов принтера Imprints;
  • работа в качестве клиента инсталляции, который получит и установит драйверы принтера на удаленном сервере Samba и на серверах печати Windows NT 4.

Imprints — это сервер базы данных, к которому можно делать запрос через стандартные механизмы HTTP. Каждый вход принтера в базе данных имеет связанный URL для фактической загрузки пакета. Каждый пакет в цифровой форме подписан через GnuPG, это позволяет проверить, что загруженный пакет — именно тот, который найден в базе данных Imprints. Из соображений безопасности блокировать эту проверку не рекомендуется.

Подробная информация относительно клиента инсталляции Imprints доступна в файле Imprints-Client-HOWTO, который входит в пакет источников Imprints.

Клиент инсталляции Imprints поставляется в двух видах:

  • сценария на Perl — для интерфейса командной строки;
  • графической оболочки.

Клиент инсталляции обеспечивает средства запросов сервера к базе данных Imprints для списка соответствия известных названий моделей принтера, а также средства загрузки и установки драйверов на удаленном сервере Samba и серверах печати Windows NT.

Основной инсталляционный процесс состоит из четырех шагов:

foreach (для каждой архитектуры, которую поддерживает данный драйвер)
{     
1.      rpcclient: Получение директории на удаленном сервере, в которую будет производиться загрузка.
2.      smbclient: Загрузка файлов драйвера.
3.      rpcclient: AddPrinterDriver() MS-RPC
}              
4.      rpcclient: AddPrinterEx() MS-RPC, чтобы фактически создать драйвер.  

При использовании Imprints tool драйверы могут иметь разные названия в различных поддерживаемых клиентских архитектурах. Например, Windows NT включает драйвер «Apple LaserWriter II NTX v51.8», а в Windows 95 та же версия этого драйвера называется «Apple LaserWriter II NTX».

Как же узнать, какие именно клиентские драйверы были переданы для принтера? Сложность заключается в том, что диалог Windows NT Printer Properties предусматривает пространство только для одного названия драйвера принтера. Заглянем в системный реестр системы Windows NT 4.0:

HKLM\System\CurrentControlSet\Control\Print\Environment 

OK здесь означает, что Windows NT всегда требует, чтобы, по крайней мере, версия Windows NT-драйвера принтера присутствовала. При этом у Samba такое требование отсутствует. Возникает вопрос: как можно использовать NT-название драйвера, если он не был заранее инсталлирован?

Проблема решается включением во все пакеты драйверов принтеров Imprints, и Windows NT Intel, и драйверов принтера 95/98, причем NT-драйвер должен быть установлен первым.

В начало В начало

Как сконфигурировать Samba 2.2 в качестве Primary Domain Controller

Версии Samba, предшествующие 2.2, не имели аналогов возможностям Windows NT 4.0 Primary Domain Controller (PDC). Ниже кратко перечислены функциональные возможности, включенные в версию 2.2:

  • подключение к домену для клиентов Windows NT 4.0/2000;
  • размещение клиента Windows 9x в пользовательском уровне защиты;
  • экспорт списка пользователей и групп от Samba PDC клиентам Windows 9x/NT/2000;
  • динамические профили пользователя;
  • интерфейс в стиле Windows NT 4.0.

К сожалению, ряд полезных сервисов в Samba 2.2 отсутствует, например:

  • доверительные домены Windows NT 4;
  • дублирование SAM Windows NT 4.0 Domain Controllers (то есть Samba PDC и Windows NT BDC или наоборот);
  • добавление пользователей через User Manager for Domains;
  • функционирование в качестве Windows 2000 Domain Controller (то есть Kerberos и Active Directory).

Следует обратить внимание на то, что клиенты Windows 9x не являются действительными членами домена по причинам, которые будут объяснены в этой статье ниже. Поэтому протокол для поддержки входа в систему домена в стиле Windows 9x полностью отличается от входа в систему NT4 домена и в данный момент он официально поддерживается.

С появлением Samba 2.2.0 можно с гордостью говорить об официальной поддержке для входа в систему домена Windows NT 4.0 от Windows NT 4.0 и Windows 2000 (включая SP1) клиентов. Данный раздел статьи описывает шаги, необходимые для конфигурирования Samba как PDC. Для того чтобы приступить к конфигурированию, вам нужно иметь рабочий сервер Samba. Если вы не следовали указаниям, описанным в UNIX_INSTALL1ext1L или в предыдущем разделе этой статьи, пожалуйста, удостоверьтесь, что ваш сервер сконфигурирован правильно. (Другой хороший ресурс — в smb.conf (5) man pages.)

Весь процесс создания Samba PDC включает два широких шага.

  1. Конфигурирование Samba PDC.
  2. Создание клиентской машины с учетной записью для присоединения к домену.

Имеются другие менее существенные детали, например профили пользователей, настройки системы и т.д. Обычно они не относятся к Samba PDC, а связаны с концепциями организации сети Windows NT. Здесь они будут только упомянуты.

Первым шагом к созданию рабочей версии Samba PDC должно стать изменение  параметров в smb.conf. Нет смысла объяснять, за что отвечает каждый конкретный параметр: все это вы можете узнать, заглянув в smb.conf man page.

Как руководство к действию мы приводим здесь пример smb.conf для действующего Samba PDC:

[global]
    ; Basic server settings
    netbios name = GALKA
    workgroup = PTO
 
    ; we should act as the domain and local master browser
    os level = 64
    preferred master = yes
    domain master = yes
    local master = yes
    
    ; security settings (must user security = user)
    security = user
    
    ; encrypted passwords are a requirement for a PDC
    encrypt passwords = yes
    
    ; support domain logons
    domain logons = yes
    
    ; where to store user profiles?
    logon path = \\%N\profiles\%u
    
    ; where is a user's home directory and where should it
    ; be mounted at?
    logon drive = H:
    logon home = \\homeserver\%u
    
    ; specify a generic logon script for all users
    ; this is a relative **DOS** path to the [netlogon] share
    logon script = logon.cmd
 
; necessary share for domain controller
[netlogon]
    path = /usr/local/samba/lib/netlogon
    writeable = no
    write list = ntadmin
    
; share for storing user profiles
[profiles]
    path = /export/smb/ntprofile
    writeable = yes
    create mask = 0600
    directory mask = 0700

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

обязательно необходимо разрешить использование зашифрованных паролей. Для получения более подробной информации относительно того, как это делать, обратитесь к ENCRYPTION.HTML;

сервер должен поддерживать вход в систему домена;

сервер должен быть главным браузером домена для клиента Windows.

Поскольку Samba 2.2 не предлагает законченное отображение группы между группами Windows NT и группы UNIX (на эту тему можно вести очень длинный разговор, выходящий за рамки этой статьи), вы должны позволить пользователям администрации домена и группе администрации доменов smb.conf создание пользовательских учетных записей.

Теперь можно смело переходить к следующему шагу. Доверительная учетная запись — это учетная запись пользователя, принадлежащая конкретному компьютеру. Пароль учетной записи необходим для безопасной связи с контроллером домена. Именно потому, что хост Windows 9x использует незашифрованные пароли, он не может являться истинным членом домена.

На Windows NT PDC эти зашифрованные пароли учетной записи сохранены в системном реестре. Samba PDC сохраняет учетные записи в некотором месте в следующем виде: пользователь LanMan и NT хэшированный пароль (в настоящее время это файл smbpasswd).

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

создание вручную перед присоединением клиента к домену. В этом случае password установлен в the lower case, то есть используются строчные буквы названия netbios машины;

создание учетной записи во время соединения с доменом. В этом случае ключ сеанса связи административной учетной записи присоединяется к клиенту действиями домена, примерно так же, как ключ шифрования для установки пароля к случайному значению.

Поскольку Samba требует, чтобы учетные записи обладали универсальным идентификатором UNIX, от которого может быть сгенерирован Windows NT SID, все эти учетные записи добавляются в /etc/passwd и smbpasswd. Предполагается, что в следующих версиях процесс добавления записей в /etc/passwd будет облегчен.

Запись в /etc/passwd имеет машинное имя с добавлением знака «$», не имеет пароля, нулевой оболочки (shell) и домашнего каталога. Например, если машина называется test, то в файле /etc/passwd для нее будет следующая запись:

test$:x:505:501:NTMachine:/dev/null:/bin/false

Если вы решили вручную создавать машинную учетную запись, вам необходимо добавить запись в /etc/passwd, а уже потом — в smbpasswd. Следующая команда создает новую машинную учетную запись, готовую к использованию.

# Smbpasswd -a -m machine_name

где machine_name — название netbios машины.

Если вы вручную создаете машинную учетную запись, вы немедленно присоединяетесь к клиенту домена . Однако такое открытое соединение может позволить взломщику получить доступ к информации учетной записи пользователя в вашем домене.

Второй способ создания машинных учетных записей состоит в том, чтобы добавлять их «на лету» во время присоединения клиента к домену. Вам нужно будет включить добавляемое значение в качестве параметра сценария пользователя. Ниже приведен пример, работающий на RedHat 6.2 Linux:

add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u 

Samba 2.2 предполагает, что для создания машинных учетных записей «на лету» нужно обладать правами пользователя root. Поэтому вам потребуется создание в smbpasswd записи для root.

А теперь попытаемся разобраться в проблемах, которые возникают у пользователей при установке Samba в качестве Primary Domain Controller.

Я не могу включать «$» в имя компьютера

Имя компьютера в /etc/passwd — это название компьютера с добавленным знаком '$'. FreeBSD (и другие BSD-системы) не будут создавать пользователя со знаком '$' в имени.

Проблема заключается только в программе, которая добавляет запись. Так что создавайте пользователя без '$' и используйте vipw, чтобы редактировать запись, добавляя '$'. Можно также сразу создавать запись с использованием vipw, однако обязательно удостоверьтесь в том, что вы присваиваете пользователю уникальный идентификатор (UID).

В начало В начало

Я получаю сообщение «You already have a connection to the Domain....» при создании машинной учетной записи

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

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

В начало В начало

«The system can not log you on (C000019B)....»

Я успешно присоединялся к домену, но после обновления версии кода Samba на более новый при попытке подключиться стал получать сообщение: «The system can not log you on (C000019B), Please try a gain or consult your system administrator».

Это происходит, когда изменяется SID домена, который хранится в private/WORKGROUP.SID. Например, вы удаляете файл, и smbd автоматически создает новый. Единственный способ устранения этой проблемы состоит в том, чтобы восстановить первоначальный SID домена или удалить клиента домена из домена и перезагрузиться.

В начало В начало

«The machine account for this computer either does not exist or is not accessible»

При попытке присоединиться к домену я получаю сообщение «The machine account for this computer either does not exist or is not accessible». Что неправильно?

Эта проблема вызвана тем, что PDC не нашел подходящей машинной учетной записи. Если вы используете добавляющий пользователя сценарий в качестве метода создания учетной записи, то это указывает на ошибки в сценарии. Обязательно убедитесь, что система  администраторов домена работает.

В случае если вы создаете учетные записи вручную, причина скорее всего в том, что они были созданы неправильно. Удостоверьтесь, что в smbpasswd-файле на Samba PDC находится правильная учетная запись для данного компьютера. Если вы добавляли учетную запись, используя редактор прежде smbpasswd-утилиты, удостоверьтесь, что имя компьютера в учетной записи — это название netbios машины с добавленным к нему «$» (то есть computer_name$). Учетная запись компьютера должна присутствовать и в /etc/passwd-, и в smbpasswd-файле. По отзывам некоторых пользователей Samba, эту проблему могут вызывать также противоречивые маски подсети на сервере Samba и NT-клиенте. Удостоверьтесь, что они непротиворечивы и для клиента, и для сервера.

В начало В начало

Заключение

Мы перечислили и описали самые важные нововведения в Samba. Однако, если вы хотите подробнее узнать о Samba 2.2 и поэкспериментировать — обратитесь к справочным руководствам и действуйте. Кроме того, полезно будет заглянуть в директорию examples, которая находится в вашей Samba-директории. Она содержит примеры smb.conf. В Samba FAQ вы также можете почерпнуть массу полезной информации, особенно если у вас установлен SWAT.

КомпьютерПресс 10'2001