Обеспечение взаимодействия UNIX c Windows XP и Mac OS X

:

Введение

UNIX®-системы традиционно применяются в качестве центральных серверов для хранения общих файлов и их обмена ими между клиентскими компьютерами. Мощная сетевая функциональность UNIX-систем и эффективная система защиты UNIX отличной ОС выбором для серверов, однако из-за обилия утилит, серверных приложений и клиентских опций настроить систему, взаимодействующую с различными клиентскими компьютерами даже в небольшой локальной сети может быть непросто.

Рабочие станции и ноутбуки, работающие под управлением Microsoft® Windows® и Apple Mac OS X, могут легко обмениваться данными с Windows-серверами без применения дополнительного ПО или специальных настроек, поскольку они поддерживают протоколы SMB (Server Message Block) и CIFS (Common Internet File System). К счастью, существует Samba -реализация поддержки протоколов SMB и CIFS для UNIX на основе открытого кода.

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


Прежде чем мы начнем

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

Samba - это открытая реализация сетевой аутентификации и совместного доступа к файлам и принтерам по протоколам SMB и CIFS, которые применяются в ОС Microsoft Windows и других (в т. ч. OS/2® и Mac OS X). Обычно Samba поставляется вместе с ОС Linux®, но в других UNIX-подобных системах может отсутствовать. В таком случае можно зайти на веб-сайт Samba (см. раздел Ресурсы), загрузить и установить это ПО.

Apache - это наиболее популярный в мире Web-сервер, и при использовании одного из популярных дистрибутивов Linux, он, вероятно, уже установлен. Если же Apache отсутствует, то можно посетить сайт Apache Software Foundation (см. раздел Ресурсы), загрузить Apache, установить и запустить его. Мы применим Apache для обеспечения анонимного доступа к общедоступным хранилищам файлов.


Сервер - UNIX, клиент - рабочая станция

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

Рисунок 1. Простая малая сеть.
Простая малая сеть.

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

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

Далее описывается один из способов реализации этих функций на UNIX-системе при помощи Samba и Apache.

Аутентификация на сервере

Чтобы клиентские компьютеры имели возможность авторизации на UNIX-сервере, необходимо настроить Samba в качестве главного контроллера домена. Таким образом мы получим единый центр аутентификации, причем он будет работать без какой-либо дополнительной настройки и в Windows XP Professional и Mac OS X. Windows XP Home не поддерживает работу в доменах, поэтому в таком случае потребуется применить другой метод аутентификации. Подробности можно найти в документации по Samba в разделе Ресурсы.


Настройка Samba в качестве контроллера домена

Необходимо войти в систему как суперпользователь (root), найти файл smb.conf (обычно он находится в каталоге /etc/samba) и открыть его в любом текстовом редакторе. При необходимости открыть файл от имени суперпользователя при желании можно и с помощью команды sudo. Далее в статье предполагается, что мы вошли в систему под именем root, в противном случае перед приведенными командами необходимо набирать sudo чтобы команда запускалась от имени суперпользователя, а не от имени текущей учетной записи.

Необходимо найти в файле smb.conf раздел [global] и добавить следующие параметры; если они присутствуют, то изменить их значения на значения из листинга 1.

Листинг 1. Изменения в разделе [global] файла настроек Samba
[global]
      workgroup = WORKS
      domain logons = yes
      security = user
      local master = yes
      os level = 65
      preferred master = yes
      domain master = yes
      encrypt = yes
      smb passwd file = /etc/samba/passwd
      domain logons = yes
      logon path = \\%n\profiles\%u
      logon drive = S:

Эти параметры устанавливают имя домена WORKS (его можно изменить) и настраивают Samba на вход в домен с безопасностью на уровне пользователя, т.е. с использованием стандартной процедуры аутентификации. Она так называется (user), потому что помимо обычного имени для входа в домен, компьютеры в домене также имеют пользовательские учетные записи. Компьютеры должны авторизоваться в контроллере домена, и только после этого они считаются доверенными системами и могут взаимодействовать с остальными компьютерами в домене.

Необходимо также настроить имена для входа в домен и автоматическое подключение диска S: (на компьютерах с ОС Windows, разумеется) к каталогу \\ИМЯСЕРВЕРА\%u (ИМЯСЕРВЕРА нужно заменить на имя сервера с Samba). Переменная %u заменяется на имя пользователя, то есть для каждого пользователя автоматически создается уникальное имя каталога. Параметр logon path (путь входа в систему) используется для перемещаемых профилей рабочих станций (например, для ноутбуков).

Далее необходимо создать раздел [netlogon] для службы сетевого входа в систему (см. листинг 2).

Листинг 2. Раздел [netlogon]
[netlogon]
      command = Служба входа в домен.
      path = /home/netlogon
      guest ok = yes
      public = no
      writable = no
      share modes = no

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

После того как эти параметры были внесены в файл настроек, нужно добавить учетные записи компьютеров (чтобы рабочие станции были известны домену и считались доверенными) и учетные записи пользователей.


Добавление учетных записей компьютеров

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

" на конце). Кроме того, можно создать отдельную группу для пользователей Samba на случай, если в дальнейшем будет необходимо отделить их от других. В листинге 3 приведена команда, позволяющая сделать это в Linux-дистрибутиве Fedora Core 4 с помощью утилиты groupadd; в других UNIX-системах есть похожие утилиты либо подробные инструкции по добавлению групп и пользователей.

Листинг 3. Добавление группы и учетных записей компьютеров для Samba
/usr/sbin/groupadd smbusers
for system in machine1 machine2 ; do \
    /usr/sbin/useradd -g smbusers -d /dev/null -s /dev/null $machine\$ ; \
    smbpasswd -m -a $machine ; \
done

Этой командой создается группа smbusers и учетные записи компьютеров machine1 и machine2. После создания каждого пользователя сведения о его учетной записи добавляются в файл паролей Samba.

Теперь можно создать учетные записи пользователей.


Замечание об учетных записях компьютеров под Windows XP

При первом входе в Samba с только что добавленного компьютера под Windows XP необходимо зайти как пользователь root с паролем суперпользователя на сервере Samba. При этом учетная запись компьютера проходит аутентификацию на сервере (администраторы серверов под управлением Windows при добавлении компьютера в домен производят аналогичную операцию, заходя под именем Administrator). Это потребуется сделать только один раз; после аутентификации компьютера его пользователи могут входить в Samba с помощью любой действительной учетной записи.


Добавление учетных записей пользователей

Добавление учетных записей пользователей аналогично добавлению учетных записей компьютеров; если пользователь на сервере Samba еще не существует, необходимо создать его и добавить в файл паролей Samba при помощи утилиты smbpasswd. Ниже приведена команда, позволяющая сделать это в Linux-дистрибутиве Fedora Core 4 при помощи команды useradd; в других UNIX-системах существуют аналогичные утилиты либо подробные инструкции по созданию пользователей.

/usr/sbin/useradd -g smbusers username
smbpasswd -a username

Эта команда добавляет пользователя в систему и в файл паролей Samba. Также потребуется ввести пароль этого пользователя. Не забудьте сообщить его самим пользователям!


Перезагрузка Samba

После изменения настроек Samba требуется перезагрузить два демона Samba - smbd и nmbd - чтобы они вновь считали файлы настроек. В Fedora Core 4 для этого нужно выполнить следующую команду:

/etc/rc.d/init.d/smb restart

Этой командой серверы перезагружаются при помощи сценария smb (который также запускает Samba при загрузке системы). Процесс перезагрузки показан на рисунке 2.

Рисунок 2. Перезагрузка Samba.
Перезагрузка Samba

При использовании другой UNIX-системы можно дать команду перезагрузить файлы настроек при помощи утилиты smbcontrol:

smbcontrol nmbd reload-config
smbcontrol smbd reload-config

Общие каталоги

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

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

Добавим в файл smb.conf раздел [homes], приведенный в листинге 4, и при входе пользователя в систему для него создастся домашний каталог, невидимый (в него невозможно зайти) для других пользователей, даже вошедших на сервер под своей учетной записью. С компьютера-клиента этот каталог доступен по адресу \\СЕРВЕР\пользователь, где СЕРВЕР - имя сервера Samba, а пользователь - имя пользователя, для которого создан этот каталог. Макрос %S в качестве списка пользователей, которым разрешен доступ, обозначает текущее имя сеанса, то есть имя вошедшего в систему пользователя.

Листинг 4. Открытие доступа пользователей к домашним каталогам
[homes]
    comment = Home Directories
    valid users = %S
    read only = no
    browseable = no

Затем нужно добавить разделы [public] и [shared], тем самым создав общие каталоги \\СЕРВЕР\public и \\СЕРВЕР\shared соответственно (СЕРВЕР -имя нашего сервера Samba). У этих каталогов все параметры, кроме одного, одинаковые. Запись в каталог из раздела [public] разрешена только членам группы пользователей Samba (представлена макросом %G). В каталог, указанный в разделе [shared], запись разрешена всем (см. листинг 5).

Листинг 5. Два общих каталога
[public]
    comment = Public files
    public = yes
    browseable = yes
    write list = %G
    path = /data/public

[shared]
    comment = Totally open shared area
    public = yes
    browseable = yes
    read only = no
    path = /data/shared

Полностью открытый каталог следует создавать только в том случае, если вы доверяете лицам, имеющим доступ к серверу Samba; открытые FTP-серверы, например, нередко становились местом хранения пиратского ПО.

Добавив эти разделы в файл настроек smb.conf, необходимо перезагрузить Samba или занового загрузить файлы настроек (см. раздел Перезагрузка Samba).


Упрощенный доступ

Теперь компьютеры и пользователи имеют доступ к серверу Samba, однако, еще нужно добавить возможность доступа к общедоступным файлам через Web-браузер. Это можно сделать, добавив общие каталоги в настройках Apache, который запущен на компьютере с сервером Samba.

Необходимо найти файл httpd.conf (в моем случае он находился в каталоге /etc/httpd/conf) и добавить в него текст листинга 6. При помощи инструкций <Alias> и <Directory> мы открываем доступ к каталогам по адресам http://server/public/ и http://server/shared/, включаем отображение списка файлов в каталоге и разрешаем доступ из любого веб-браузера.

Листинг 6. HTTP-доступ к открытым каталогам
Alias /public/ "/data/public/"
<Directory "/data/public">
	Options Indexes MultiViews
	AllowOverride None
	Order allow,deny
	Allow from all
</Directory*>
Alias /shared/ "/data/shared/"
<Directory "/data/shared">
	Options Indexes MultiViews
	AllowOverride None
	Order allow,deny
	Allow from all
</Directory>

Сохранив файл, необходимо дать команду перечитать файл настроек Apache при помощи утилиты apachectl.

/usr/sbin/apachectl restart

Теперь помимо удобного доступа к каталогам через Samba, любой пользователь может получить доступ к этим каталогам через браузер.


Заключение

Применяя мощное и хорошо поддерживаемое бесплатное программное обеспечение, в том числе Samba и Apache, можно обеспечить взаимодействие UNIX-сервера с рабочими станциями под Windows и Mac OS X. Выступая в роли главного контроллера домена, Samba предоставляет службу аутентификации. Благодаря серверу Samba пользователи могут получить доступ к общим каталогам, подключив их обычными способами. Добавив в эту связку веб-сервер Apache, можно предоставить простой доступ без авторизации на чтение общих каталогов. Совместный доступ к ресурсам является одной из целей создания локальных сетей, и возможность общего доступа упрощает установку и настройку сети.