Существует два пакета, которые позволяют Linux обеспечивать функции файлового сервера Novell. Они оба позволяют осуществлять доступ к файлам на вашей Linux машине для пользователей использующих клиентское программное обеспечение Novell NetWare. Пользователи могут присоединять и мапировать файловые системы как локальные диски на их машинах точно также как они могут делать на настоящем файловом сервере Novell. Вы можете хотеть попробовать оба, чтобы увидеть какой лучше отвечает вашим намерениям.
Martin Stover <mstover@freeway.de>
разработал пакет
mars_nwe для того чтобы обеспечить в linux работу файловых
сервисов и сервисов печати для клиентов NetWare.
В случае если вас удивляет имя, то оно расшифровывается как: mars_nwe это Martin Stovers Netware Emulator (Эмулятор Netware Мартина Стоверса).
mars_nwe реализует подмножество полного Novell NCP для файловых сервисов, основанного на дисках bindery и также сервисы печати. Также вероятно что этот пакет содержит ошибки, но много людей используют его и число ошибок постоянно уменьшается с выпуском новых версий.
Вы можете получить mars_nwe с ftp.gwdg.de или с ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/.
Версия в момент написания документа была:
mars_nwe-0.99.pl10.tgz
.
В ядре
версии 1.2.13
вам необходимо только убедиться, что вы
ответили Y
на вопрос: 'The IPX protocol
' и N
на вопрос: `Full internal IPX network
' как показано:
... ... The IPX protocol (CONFIG_IPX) [n] y ... ... Full internal IPX network (CONFIG_IPX_INTERN) [N/y/?] n ... ...
В более новых ядрах производится подобный процесс, но действительный текст запроса может слегка измениться.
Вам также надо убедиться, что вы включили соответствующий драйвер для вашей карты Ethernet. Если вы не знаете как сделать это, вам необходимо прочитать документ Ethernet-HOWTO.
Затем вы можете приступить к построению вашего ядра. Помните, что надо запустить команду lilo для установки ядра, когда его компиляция завершится.
# cd /usr/src
# tar xvfz mars_nwe-0.99.pl10.tgz
Процесс построения
пакета очень прост. Первый шаг -- просто запустить
make
, эта команда создаст для вас файл config.h
.
Затем вы должны посмотреть и отредактировать файл
config.h
если это необходимо. Это позволит настроить
такие настройки как, какие директории будут использоваться и
максимальное количество сессий и томов, которые будет
поддерживать сервер. Самые важные выглядят так:
FILENAME_NW_INI расположение инициализационного файла PATHNAME_PROGS где находятся выполнимые программы поддержки PATHNAME_BINDERY где будут находится файлы 'bindery' PATHNAME_PIDFILES директория, куда будут записываться 'pid' файлы MAX_CONNECTIONS максимальное количество одновременных соединений MAX_NW_VOLS максимальное количество томов, которое будет поддерживать mars_nwe MAX_FILE_HANDLES_CONN максимальное количество открытых файлов на одно соединение WITH_NAME_SPACE_CALLS если вы хотите поддерживать клиентов ncpfs INTERNAL_RIP_SAP хотите ли вы поддерживать маршрутизацию rip/sap с помощью mars_nwe SHADOW_PWD хотите ли вы использовать 'теневые пароли' или нет
Значения по умолчанию должны быть нормальными, но все равно проверьте их.
Когда это сделано, выполнение команд:
# make
# make install
построит сервер и установит его в соответствующие директории. Установочный скрипт также устанавливает конфигурационный файл /etc/nwserv.conf.
Настройка довольно проста. Вам
необходимо отредактировать файл
/etc/nwserv.conf. Формат этого файла на первый
взгляд может показаться загадочным, но на самом деле он
довольно прост. Файл содержит некоторое количество
одностроковых настроечных данных. Каждая строка разделена
пробелами и начинается с числа, которое обозначает содержимое
этой строки. Все символы следующие за символом '#
'
считаются комментарием и игнорируются. Martin обеспечивает
пример настроечного файла в пакете, но представлю упрощенный
пример как альтернативу для вас.
# ТОМА (максимум 5)
# Только том SYS является необходимым. Директория содержащая том SYS
# должна содержать директории: LOGIN, PUBLIC, SYSTEM, MAIL.
# Опция 'i' регистр букв.
# Опция 'k' преобразует все имена в запросе NCP в нижний регистр
# Опция 'm' обозначает том как сменный (полезно для cdroms и т.п.)
# Опция 'r' устанавливает том только для чтения
# Опция 'o' показывает, что том является единой файловой системой
# Опция 'P' разрешает командам использоваться как файлы
# Опция 'O' позволяет использовать использовать пространство имен OS/2
# Опция 'N' разрешает использование пространства имен NFS
# По умолчанию в верхнем регистре.
# Синтаксис:
# 1 <Имя тома> <Путь к тому> <Опции>
1 SYS /home/netware/SYS/ # SYS
1 DATA /home/netware/DATA/ k # DATA
1 CDROM /cdrom kmr # CDROM
# ИМЯ СЕРВЕРА
# Если не установлено, тогда имя машины linux hostname будет
# сконвертировано в верхний регистр и использовано. Этот пункт
# является опциональным, если не настроено будеи использовано имя
# машины.
# Синтаксис:
# 2 <Имя сервера>
2 LINUX_FS01
# АДРЕС ВНУТРЕННЕЙ СЕТИ
# Адрес внутренней сети IPX это свойство, которое упрощает
# маршрутизацию IPX для многосетевых машин (машин, которые имеют
# порты больше чем на одной сети IPX).
# Синтаксис:
# 3 <Адрес внутренней сети> [<Номер узла>]
# или:
# 3 auto
#
# Если вы используете 'auto', тогда будет использован IP адрес
# вашей машины. ЗАМЕЧАНИЕ: это может быть угрожающим, пожалуйста
# будьте уверены, что используете уникальное число.
# Адрес имеет длину 4 байта в шестнадцатиричной форме (требуется
# лидирующий 0x).
3 0x49a01010 1
# СЕТЕВОЕ УСТРОЙСТВО(А)
# Этот раздел настраивает вашу сеть IPX. Если она у вас уже
# настроена, вам этот пункт не нужен. Это тоже самое что и
# использование утилит ipx_configure/ipx_interface до запуска
# сервера.
# Синтаксис:
# 4 <Номер сети IPX> <имя устройства> <тип фрейма> [<ticks>]
# Frame types: ethernet_ii, 802.2, 802.3, SNAP
4 0x39a01010 eth0 802.3 1
# СОХРАНЯТЬ МАРШРУТЫ IPX ПОСЛЕ ОКОНЧАНИЯ РАБОТЫ СЕРВЕРА
# Синтаксис:
# 5 <флаг>
# 0 = не сохранять маршруты, 1 = сохранять маршруты
5 0
# ВЕРСИЯ NETWARE
# Синтаксис:
# 6 <версия>
# 0 = 2.15, 1 = 3.11
6 1
# ОБРАБОТКА ПАРОЛЯ
# Настоящие клиенты Novell для DOS поддерживают процедуру, которая
# шифрует пароли при их изменении. Вы можете выбрать, хотите ли вы
# чтобы ваш сервер поддерживал эту процедуру или нет.
# Синтаксис:
# 7 <флаг>
# <флаг> может быть:
# 0 force password encryption. (Клиенты не могут сменить пароль)
# 1 force password encryption, разрешить изменение нешифрованного пароля
# 7 разрешаются нешифрованные пароли, но не пустые
# 8 разрешаются нешифрованные пароли включая пустые
# 9 полностью нешифрованные пароли (не работает с OS/2)
7 1
# МИНИМАЛЬНЫЕ ПРАВА GID UID
# разрешения используемые для подсоединения без входа. Эти разрешения
# будут использоваться для файлов на присоединении к вашему
# основному серверу
# Синтаксис:
# 10 <gid>
# 11 <uid>
# <gid> <uid> из /etc/passwd, /etc/groups
10 200
11 201
# ПАРОЛЬ АДМИНИСТРАТОРА (SUPERVISOR)
# Может быть убран после первого запуска сервера. Сервер зашифрует
# эту информацию в файл bindery после запуска. Вы должны избегать
# использования пользователя 'root' и вместо этого использовать
# другой идентификатор для администрирования файлового сервера mars
#
# Эта запись читается и шифруется в файлы bindery сервера, так что он
# необходим только при первом запуске сервера, чтобы обеспечить
# чтобы пароль не украли.
#
# Синтаксис:
# 12 <Идентификатор администратора> <имя пользователя Unix> [<пароль>]
12 SUPERVISOR terry secret
# ЗАПИСИ ПОЛЬЗОВАТЕЛЕЙ
# Этот раздел ассоциирует идентификаторы NetWare с идентификаторами
# пользователей unix. Наличие пароля является опциональным.
# Синтаксис:
13 <Идентификатор пользователя> <имя пользователя в Unix> [<пароль>]
13 MARTIN martin
13 TERRY terry
# НАСТРОЙКА СИСТЕМЫ "ЛЕНИВОГО" АДМИНИСТРИРОВАНИЯ
# Если у вас большое количество пользователей и вы не хотите
# беспокоиться использованием индивидуального мапирования
# пользовательских имен, как в предыдущем случае, то вы можете
# автоматически мапировать идентификаторы mars_nwe в имена
# пользователей Linux. Но в настоящее время нет способа использовать
# пароли linux, так что все пользователи настроенные таким способом
# будут пользоваться единственным паролем, указанным здесь. Я
# рекомендую не использовать это до тех пор пока вас перестанет
# беспокоить безопасность.
# Синтаксис:
# 15 <флаг> <общий пароль>
# <флаг>: 0 - не делать автоматическое мапирование пользователей
# 1 - автоматически мапировать пользователей не указанных выше
# 99 - автоматически мапировать всех пользователей этим способом
15 0 duzzenmatta
# ПРОВЕРКА РАБОТОСПОСОБНОСТИ
# mars_nwe будет автоматически убеждаться, что определенные
# директории существуют, если установлен этот флаг
# Синтаксис:
# 16 <флаг>
# <флаг> - 0 для нет, не делать, или 1 для да, делать проверку
16 0
# ОЧЕРЕДИ ПЕЧАТИ
# Этот раздел ассоциирует принтера NetWare с принтерами unix.
# Директории очередей должны быть созданы вручную до попытки печати.
# Директории очередей НЕ являются очередями lpd.
# Синтаксис:
# 21 <имя очереди> <директория очереди> <команда печати unix>
21 EPSON SYS:/PRINT/EPSON lpr -h
21 LASER SYS:/PRINT/LASER lpr -Plaser
# ФЛАГИ ОТЛАДКИ
# Обычно они не нужны, но могут быть полезными если вы ищите проблему.
# Синтаксис:
# <тема отладки> <флаг отладки>
#
# 100 = IPX KERNEL
# 101 = NWSERV
# 102 = NCPSERV
# 103 = NWCONN
# 104 = start NWCLIENT
# 105 = NWBIND
# 106 = NWROUTED
# 0 = запрещает отладку, 1 = разрешает отладку
100 0
101 0
102 0
103 0
104 0
105 0
106 0
# ЗАПУСК NWSERV В ФОНОВОМ РЕЖИМЕ И ИСПОЛЬЗОВАНИЕ ФАЙЛА ПРОТОКОЛА
# Синтаксис:
# 200 <флаг>
# 0 = запуск NWSERV в нормальном режиме и не использовать файл протокола
# 1 = запуск NWSERV в фоновом режиме и использовать файл протокола
200 1
# ИМЯ ФАЙЛА ПРОТОКОЛА
# Синтаксис:
# 201 <файл протокола>
201 /tmp/nw.log
# ДОПОЛНЯТЬ ПРОТОКОЛ ИЛИ ПЕРЕЗАПИСЫВАТЬ
# Синтаксис:
# 202 <флаг>
# 0 = добавлять к существующему файлу протокола
# 1 = переписывать существующий файл протокола
202 1
# ВРЕМЯ ВЫКЛЮЧЕНИЯ СЕРВЕРА
# Этот раздел устанавливает время между выдачей команды SERVER DOWN и
# действительным выключением сервера.
# Синтаксис:
# 210 <время>
# в секундах. (по умолчанию 10)
210 10
# ИНТЕРВАЛ МЕЖДУ ПЕРЕДАЧАМИ ШИРОКОВЕЩАТЕЛЬНОЙ ПЕРЕДАЧЕЙ МАРШРУТОВ
# Время в секундах между широковещательными передачами сервера.
# Синтаксис:
# 211 <время>
# в секундах. (по умолчанию 60)
211 60
# ИНТЕРВАЛ ПРОТОКОЛИРОВАНИЯ МАРШРУТИЗАЦИИ
# Устанавливает сколько широковещательных передач произойдет до
# протоколирования маршрутизационной информации.
# Синтаксис:
# 300 <число>
300 5
# ФАЙЛ ПРОТОКОЛА МАРШРУТИЗАЦИИ
# Устанавливает имя файла протокола маршрутизации
# Синтаксис:
# 301 <имя файла>
301 /tmp/nw.routes
# ДОБАВЛЕНИЕ/ПЕРЕЗАПИСЬ МАРШРУТНОЙ ИНФОРМАЦИИ
# Устанавливает хотите ли вы добавлять информацию к существующему
# файлу протокола, или перезаписывать его.
# Синтаксис:
# 302 <флаг>
# <flag> - 0 для дополнения, 1 для создания/перезаписи
302 1
# WATCHDOG TIMING
# Устанавливает хронометраж для наблюдательных сообщений, чтобы
# убедиться что сеть жива.
# Синтаксис:
# 310 <значение>
# <значение> = 0 - всегда посылать наблюдательные сообщения
# < 0 - (-ve) для запрета наблюдений
# > 0 - посылать наблюдательные сообщения при
# падении трафика ниже 'n' ticks
310 7
# ФАЙЛ СТАНЦИЙ
# Устанавливает имя для файла станций, который определяет для каких
# машин этот файловый сервер будет выступать как первичный файловый
# сервер. Синтаксис этого файла описан в директории 'examples' исходного
# кода пакета.
# Синтаксис:
# 400 <имя файла>
400 /etc/nwserv.stations
# ОБРАБОТКА 'GET NEAREST FILESERVER'
# Устанавливает как будет обрабатываться запрос SAP 'Get Nearest
# Fileserver' (получить ближайший файловый сервер).
# Синтаксис:
# 401 <флаг>
# <флаг>: 0 - запретить запросы 'Get Nearest Fileserver'.
# 1 - файл 'stations' перечисляет исключаемые станции.
# 2 - файл 'stations' перечисляет включаемые станции.
401 2
Если вы так настроили сервер, что он полагается на внешние программы для настройки вашей сети и и/или обеспечения функций маршрутизации, тогда вы должны запустить эти программы до запуска сервера. Предполагая, что вы настроили сервер, так что он настроит ваши интерфейсы и будет обеспечивать сервисы маршрутизации, тогда вам необходимо только выполнить команду:
# nwserv
Для тестирования сервера вы
первым делом должны попытаться присоединиться и войти с
клиента NetWare на вашей сети. Затем вы должны сделать
CAPTURE
с клиента и попытаться напечатать. Если обе этих
вещи работают хорошо, тогда сервер работает.
Ales Dryak <A.Dryak@sh.cvut.cz>
разработал
lwared чтобы позволить Linux функционировать как файловый
сервер на базе NCP.
Ales назвал пакет lwared, сокращение для LinWare Daemon.
Сервер lwared обеспечивает подмножество всех функций Novell NCP. Он включает функции сообщений, но не обеспечивает возможности печати. В настоящее время он не совсем хорошо работает с клиентами Windows95 или Windows NT. Сервер lwared полагается на внешние программы для выполнения функций построения и обновления таблиц маршрутизации IPX и таблиц SAP. "Плохие" клиенты могут вызвать падение сервера. Что важно, возможность трансляции имен не была включена.
Сервер работает с оболочками NETX и VLM NetWare.
Пакет lwared может быть построен для любого ядра
новее чем 1.2.0
, я рекомендую вам использовать ядро версии
1.2.13
, так как для этого не требуется заплаток (patches)
для ядра. Некоторые функциональные возможности IPX изменились в
ядрах версии 1.3.*
и это означает, что требуются заплатки
чтобы все работало правильно. Соответствующие заплатки включены в
состав новых ядер, так что если вы должны использовать ядра в
стадии alpha, вы все равно сможете заставить lwared
работать правильно.
Вы можете получить пакет lwared по анонимному ftp с: klokan.sh.cvut.cz
или с:
sunsite.unc.edu или серверов-зеркал. Текущая версия в
момент написания была: lwared-0.95.tar.gz
.
Выполните что-то подобное этому:
# cd /usr/src # tar xvpfz lwared-0.95.tar.gz
Если вы
используете alpha версии ядер 1.3.*
, тогда вы должны
использовать ядро версии 1.3.17
или более новое,
потому-что прилагаемые заплатки были сделаны для него. Ядра
1.3.*
старее чем 1.3.17
требуют ручного исправления
для установки (некоторая информация о том как сделать это
включена в файл INSTALL
в составе пакета). Для
установки заплаток для ядра версии 1.3.17
или более
новых вы должны использовать команду:
# make patch
После приложения патчей, если необходимо, следующая вещь
которую вам необходимо сделать -- это убедиться что ваше
ядро скомпилированно с поддержкой IPX. Для ядра версии
1.2.13
вам необходимо только убедиться, что вы ответили
Y
на вопрос: 'The IPX protocol
' как показано:
... ... Assume subnets are local (CONFIG_INET_SNARL) [y] Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n] The IPX protocol (CONFIG_IPX) [n] y * * SCSI support ... ...
В более новых ядрах процесс сходен, но текст запроса может незначительно измениться.
Вам также будет необходимо проверить, что вы включили соответствующий драйвер для вашей карты Ethernet. Если вы не знаете как сделать это, тогда вы должны прочитать документ Ethernet-HOWTO.
Затем вы можете продолжать построение вашего ядра. Помните, что необходимо запустить lilo для установки ядра, после окончания процесса компиляции.
Для
компиляции lwared вы должны сначала проверить, и
если необходимо отредактировать, файл
server/config.h
. Этот файл содержит различные
настройки, которые будут управлять поведением вашего сервера
при запуске. Значения по умолчанию достаточно разумны, но вы
можете проверить, что указанные директории для файлов
протокола и файлов настройки соответствуют вашей системе.
# make depend # make # make install
Я заметил, что 'make depend
' жалуется на то что не
нашла файл float.h
на моей системе, но все равно
работает. Я также нашел, что когда я пытался компилировать с
gcc 2.6.3
, я изменил строку:
#include <net/route.h>
на
#include <net/if_route.h>
в lib/ipxkern.c
, так как файл иногда меняет имя.
'make install
' будет пытаться установить сервер и
программы демонов маршрутизации в вашу директорию
/usr/sbin
, программу lwpasswd в директорию
/usr/bin
, программы работы с IPX будут установлены в
директорию /sbin
и справочные страницы будут
установлены в директорию /usr/man
. Если любое из
этих директорий не подходят для вашей системы, то вы должны
отредактировать файл Makefile
и изменить конечные
директории на нужные.
Первая вещь которую вы должны
сделать -- это настройка ваших интерфейсов Ethernet для
поддержки сетей IPX, которые ваш сервер будет
поддерживать. Для того чтобы сделать это вам необходимо знать
сетевые адреса IPX для каждого из сегментов LAN, какие
устройства Ethernet (eth0
, eth1
etc.) находятся на
каком сегменте, какой тип фреймов (802.3
, EtherII
etc.) использует каждый сегмент LAN и какой адрес внутренней
сети должен использовать ваш сервер (это необходимо только
если ваш сервер будет обслуживать больше одного сегмента
LAN). Настройка для сервера, который находится в двух
непохожих сегментах с сетевыми адресами IPX равными
23a91300
и 23a91301
и адресом внутренней сети
bdefaced
может выглядеть так:
# ipx_internal_net add BDEFACED 1 # ipx_interface add eth0 802.3 23a91300 # ipx_interface add eth1 etherii 23a91301
Программное обеспечение ядра в действительности делает только перекладывание пакетов IPX, также как и для IP, но ядро требует дополнительных программ для управления обновлением таблицы маршрутизации. Для IPX требуются два демона и оба поставляются с lwared: ipxripd управляет маршрутизационной информацией IPX, а ipxsapd управляет информацией SAP. Для запуска демонов вам только необходимо указать место где они могут писать свои файлы протокола:
# ipxripd /var/adm/ipxrip # ipxsapd /var/adm/ipxsap
Существует два файла, которые вы должны настроить вручную чтобы разрешить пользователям входить на ваш сервер lwared. Это:
/etc/lwpasswd
Это место где хранится
информация о пользователях LinWare. программа
lwpasswd используется для работы с записями. В
простейшем случае файл /etc/lwpasswd
выглядит
следующим образом:
ales: terryd: guest:
Этот формат является простым списком идентификаторов
входа с последующим символом ':' и затем шифрованная
версия пароля для входа. Здесь есть несколько дополнений:
отсутствие шифрованного пароля означает вход без пароля,
пользователи LinWare должны быть зарегестрированы в
Linux, так что любой пользователь кроме записи в файле
/etc/lwpasswd
также должен иметь запись в
/etc/passwd
и только пользователь root
является пользователем, который может менять пароль для
других пользователей LinWare. Если вы вошли в систему как
root
то вы можете сменить пароль пользователя
LinWare как это показано:
# lwpasswd rodg Changing password for RODG Enter new password: Re-type new password: Password changed.
/etc/lwvtab
Этот файл содержит таблицу
томов LinWare и хранить информацию о том какие директории
будут доступны для пользователей LinWare (этот файл похож
по природе на файл NFS /etc/exports
). Простой
пример формата этого файла:
SYS /lwfs/sys DATA /lwfs/data HOME /home
Формат очень прост: После имени тома через пробел
следует экспортируемая директория Linux. Вы должны иметь
по крайней мере запись для тома SYS
, чтобы
запустить сервер. Если вы намереваетесь для ваших DOS
клиентов использовать сервер LinWare как первичный
файловый сервер, тогда вы должны создать стандартную
структуру директорий тома SYS
в директории
экспортируемой как ваш том SYS
. Так как эти файлы
являются патентованными и авторскими правами на них
владеет корпорация Novell, вы дожны иметь на них
лицензию. Если ваши пользователи будут использовать
файловый сервер Novell как первичный сервер, то это не
является необходимым.
tada!
# lwared
Это выглядит разочаровывающе, не так ли? Ok, у вас есть вопрос? Какое имя сервера будет присвоено? Если вы запустите сервер как показано выше, то имя сервера LinWare будет присвоено на основе имени возвращенного командой Linux hostname. Если вы хотите какое-то другое имя, тогда вы можете задать имя сервера при его старте, например команда:
# lwared -nlinux00
должна запустить сервер с именем linux00
.
Самая первая
вещь для проверки -- это то что ваш сервер LinWare
появился в выводе команды slist запущенной с клиента
DOS на вашей сети. Программа slist хранится на томе
SYS
файлового сервера Novell, так что вы должны сделать
это с какой-то машины уже подключенной куда-нибудь. Если это
не произошло, то проверьте что запущены ipxsapd и
lwared. Если выполнение команды slist
прошло удачно, то попытайтесь подключиться к серверу и
замапировать том:
C:> attach linux00/ales ... ... C:> map l:=linux00/data: C:> l:
Вы должны затем нормально обращаться с новым мапированием также как с другими. Разрешения на файлы которые вы будете иметь, будут основаны на разрешениях, которые разрешены вашими правами на linux, которые являются параллельными вашему идентификатору LinWare.