Рабочие станции Linux довольно часто включают в сеть Windows 2000 или Windows NT, поскольку Linux предоставляет недорогие средства реализации Internet-служб (серверов DNS, почтовых серверов и Web-серверов) на маломощном оборудовании. Кроме того, данная операционная система характеризуется хорошей работоспособностью и надежностью, хотя и за счет излишне сложных процедур администрирования. Более подробно о различиях в администрировании Windows NT и Linux рассказывается в статье "Windows NT против Linux", опубликованной в третьем номере нашего журнала.
Вместе с тем, установить новую программную платформу в любую функционирующую сеть не так-то просто. В частности, сразу встают три вопроса.
Можно ли запускать приложения Win32 на станции Linux?
Как синхронизировать учетные записи пользователей Windows NT/2000 и Linux?
Как передавать информацию между серверами Windows NT/2000 и станциями Linux?
В этой статье я хочу рассказать об инструментарии, который помогает решить последнюю из названных проблем. Желающим узнать ответы на остальные вопросы сообщаю: для запуска программ Windows под Linux используется бесплатный эмулятор WINE, входящий в состав большинства версий этой операционной системы. Что касается второго вопроса, то я наслышан о существовании целого ряда средств синхронизации каталогов, но недостаточно хорошо знаком с ними.
Что необходимо знать
Для обеспечения доступа к файлам Windows необходимо знать три вещи. Во-первых, порядок работы с утилитами командной строки smbmount и smbunmount. Во-вторых, порядок создания нового каталога на жестком диске Linux. Наконец, нужно научиться создавать и использовать конфигурационный файл smb.conf.
Программа smbmount, которая представляет собой Linux-версию команды net use в Windows, обеспечивает подключение рабочей станции к файловому серверу на платформе Microsoft. Команда smbunmount выполняет разрыв такого соединения. Первоначально эти утилиты предназначались для подключения станций Linux к серверам, работающим по протоколу SMB (SMB (Server Message Block) -- формат сообщений, который используют серверы Windows 2000, Windows NT, Windows 9x, LAN Manager (NTLM) и Windows for Workgroups). Затем команды стали частью большого программного пакета Samba, основная задача которого -- эмуляция SMB-сервера на стороне Linux.
Прежде чем продолжить, хочу заметить, что, поскольку читатели, возможно, мало знакомы с Linux, я позволил себе включить в статью ряд общих указаний по работе с этой операционной системой. Опытным пользователям и специалистам по UNIX заранее приношу извинения за изложение прописных истин.
Итак, чтобы команда smbmount заработала, ей необходимо указать точку монтирования, т. е. локальный каталог, на который она сможет отобразить сетевой ресурс Windows NT/2000, что в свою очередь позволит Linux к нему обращаться. Как известно, включенная в Windows утилита командной строки net use при подключении к сетевому ресурсу Windows NT/2000 отображает его (например, \\myserver\myshare) на букву дискового имени (например, Р:). Преимущество использования дискового имени для сетевого ресурса заключается в унификации способа представления информации на компьютере: все данные, в том числе и доступные совместно, представляются в виде набора локальных каталогов на жестком диске пользователя.
Пользователи Linux тоже не возражают против единообразного представления информации, независимо от места ее хранения (локальный жесткий диск или удаленный сетевой компьютер). Однако ввиду того, что в Linux дисковые имена не используются, ей необходим иной метод отображения сетевых ресурсов на локальный диск. Именно для этого и нужна упомянутая точка монтирования, которая формируется путем создания нового каталога (где нет никаких файлов). Затем запускается команда smbmount, монтирующая сетевой ресурс к созданному каталогу. После этого, опираясь на данную точку доступа, пользователь вводит команды обращения к файлам сетевого ресурса.
Для создания каталога на диске Linux используется команда mkdir. Я, например, создал каталог /myntshare командой mkdir /myntshare.
Доступ к данным
Сформировав точку монтирования, пользователь с помощью команды smbmount подключается к сетевому ресурсу Windows NT/2000. Предположим, мы хотим получить доступ к именованному ресурсу data на сервере Windows NT с сетевым именем \\alnilam. Для этого нужно знать пароль и имя пользователя данного компьютера. Допустим, имя такого пользователя usermark, а его пароль -- swordfish. Однако, кроме этого, необходимо знать и IP-адрес требуемого сервера, например 200.200.100.10. Располагая данной информацией, отобразим \\alnilam\data на каталог /myntshare с помощью следующей команды:
smbmount //alnilam/data /myntshare U usermark I 200.200.100.10
(при вводе команды Linux весь ее текст должен размещаться в одной строке.) Обращаю внимание читателей на использование прямых слешей («/») вместо привычных обратных («\») при указании имени сетевого ресурса в формате UNC (Uniform Naming Conventon). В Linux прямой слеш также используется для разделения составляющих файлового пути.
После запуска команды на исполнение операционная система покажет две строки сообщений и запросит пароль, после ввода которого надо нажать Enter. Теперь можно обращаться к файлам сервера через каталог /myntshare. Например, для копирования с сервера файла abc.txt в каталог /localstuss на компьютере Linux следует ввести команду:
cp /myntshare/abc.txt /localstuff
Эта запись должна быть понятна -- cp является командой копирования в Linux.
Хотя smbmount имеет большой набор командных переключателей, ее обычная запись выглядит следующим образом:
smbmount
Где UNC -- имя подключаемого сетевого UNC-ресурса, mountpoint -- каталог, к которому прикрепляется этот ресурс, username -- имя учетной записи пользователя Windows NT. Нужно иметь в виду, что переключатели чувствительны к регистру: команда и параметры вводятся в нижнем регистре, а U и I -- в верхнем.
Переключатель I необходим в силу того, что smbmount "не знает", как найти сервер Windows NT c помощью широковещательной рассылки имен NetBIOS. Как я объясню позже, команда может использовать сервер WINS для поиска адреса сервера, но, если ей не сообщили информацию о WINS-сервере и не указали IP-адрес, не только произойдет сбой в работе smbmount, но и нельзя будет использовать точку монтирования без предварительной перезагрузки Linux.
Файл конфигурации Smb.conf
Чтобы передать smbmount информацию о WINS-сервере, необходимо создать ASCII-файл с именем smb.conf, который Linux обычно хранит в каталоге /etc/. Впрочем, некоторые версии Linux нарушают данную традицию. Я убедился в этом, выполняя описываемые в статье операции на компьютерах с Red Hat Linux 6.1, Slackware Linux 7.0 (продукт компании Linux Mafia), OpenLinux 2.3 (продукт компании Caldera Systems) и Сorel LINUX. (Пятая версия, SuSE Linux 6.3, по ряду причин, не задействовала сетевую карту Ethernet, так что протестировать ее я не смог.) Так вот, если Red Hat Linux и Slackware Linux разместили smb.conf в каталоге /etc/, то OpenLinux предпочла ему каталог /etc/samba.d/, а Corel LINUX -- /etc/samba. Кроме того, версии Red Hat Linux и Corel LINUX сформировали исходный файл smb.conf сразу после установки, а Slackware и OpenLinux этого не сделали, записав вместо него файл smb.conf.sample, который еще необходимо редактировать и переименовывать в smb.conf.
В файле smb.conf нам понадобятся всего две строки:
[global]
wins server =
Поскольку smbmount читает smb.conf при каждом вызове, нет необходимости перезапускать программные службы или компьютер. Если IP-адрес локального WINS-сервера компьютера alnilam -- 200.200.100.50, то необходимая запись в smb.conf выглядит следующим образом:
[global]
wins server = 200.200.100.50
Теперь для подключения к серверу введем следующую команду:
smbmount //alnilam/data /myntshare U usermark
После ввода пароля в строке подсказки сетевой ресурс становится доступен. При другом способе записи команды, можно сразу за именем пользователя указать знак процента и пароль, тогда smbmount его запрашивать не будет:
smbmount //alnilam/data /myntshare U usermark%swordfish
Те пользователи, которые не очень уверенно владеют VI, базовым текстовым редактором Linux, могут создать файл smb.conf c помощью любого из поставляемых с операционной системой графических редакторов. Впрочем, есть еще один путь: вариация старого доброго трюка DOS. Нужно ввести:
cp /dev/tty /etc/smb.conf
и нажать Enter. Эта команда предписывает Linux начать копирование вводимой с клавиатуры информации -- текста нового файла -- в файл /etc/smb.conf. После запуска команды все набранные с клавиатуры данные будут помещены в /etc/smb.conf. При этом Linux никоим образом не станет интерпретировать их. В конце работы следует нажать Ctrl+D. Хотя в процессе печати текста нельзя устранять случайно допущенные ошибки, это самый короткий путь создания нового файла.
Для просмотра содержимого созданного файла нужно ввести:
cat /etc/smb.conf
Команда cat -- аналог команды type в DOS. Также следует иметь в виду, что при работе с Corel LINUX вообще нет никакой необходимости самостоятельно создавать smb.conf. Если работающая под этой версией Linux рабочая станция получила IP-адрес от сервера DHCP, то Corel LINUX автоматически включит адрес WINS-сервера в smb.conf.
По завершении работы с сетевым ресурсом от него необходимо отключиться с помощью команды smbumount. Для этого нужно ввести:
smbumount /myntshare
В заключение несколько замечаний, которые могут пригодиться. Во-первых, как я уже говорил, приходится сталкиваться с различными версиями Linux. Мои эксперименты показали, что наиболее удобны в работе реализации smbmount из Red Hat Linux и Corel LINUX, оттеснившие "коллегу" из OpenLinux на второе место. Что касается Slackware, то я не смог заставить работать ее smbmount даже после переформатирования жесткого диска и полной переустановки операционной системы. Впрочем, поставщики Linux настолько часто модернизируют свои продукты, что на момент выхода статьи на высоте может оказаться Slackware, а прочие останутся далеко позади.
Кроме того, smbmount, похоже, не обрабатывает программных отключений, которые Windows NT стандартно выполняет после 15 мин простоя. Стоит на время отлучиться от компьютера с Linux, где смонтирован ресурс NT, и канал связи запросто может быть разорван, при этом пользователь лишен возможности демонтировать ресурс. Поэтому перед уходом всегда советую запускать smbumount.
Команды smbmount и smbumount (как и большинство других команд Linux и UNIX) имеют довольно большое число переключателей. Для отображения их полного списка необходимо ввести в командной строке:
man smbmount
или
man smbumount
соответственно.
Марк Минаси - редактор Windows NT Magazine, имеет сертификат MCSE; является автором книги «Mastering Windows NT Server 4.0» (издательство Sybex).С ним можно связаться по адресу: mark@minasi.com.