6.3. Подключение к Windows-сети
6.3. Подключение к Windows-сети
Вам удалось достучаться (ping) до всех компьютеров своей локальной сети, работающих под управлением ОС Windows, но хотелось бы большего? Например, обмениваться с ними файлами? Если в вашей сети есть папки, к которым открыт общий сетевой доступ, то это возможно. Поможет вам пакет Samba.
Название Samba происходит от названия протокола SMB (Server Message Block), он же NetBIOS, на котором основана работа Windows-сети. Пакет Samba содержит набор приложений, позволяющих Linux-машине включиться в работу такой сети — как в роли клиента, так и в роли сервера.
В роли обычного пользователя вам достаточно уметь подключаться к Windows-сети как клиенту. Для этого вам понадобятся пакеты samba-common и samba-client, входящие в большинство современных дистрибутивов. Если их у вас нет, то загляните на http://www.samba.org.
Пусть сетевой доступ к папке открыт на компьютере, имя которого в сети Windows USER5. Посмотрим сначала на список всех доступных ресурсов на этом компьютере:
$ smbclient -L user5 -U <имя_пользователя>
Имя пользователя — это не ваше регистрационное имя на Linux-машине, а имя того пользователя машины Windows, кто имеет доступ к ее ресурсам. После ввода пароля вы увидите что-то вроде:
Domain=[USER5] OS=[Windows 5.1]
Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
SharedDocs Disk
WIN (C) Disk
ADMIN$ Disk Remote Admin
Public Disk
[...]
Public — это та папка, которая вас интересует. Для приема-передачи файлов предназначена программа smbclient. Чтобы ускорить (или автоматизировать) ввод пароля, введите ее в таком виде:
$ smbclient //user5/public -U <имя_пользователя>%<пароль>
Вы увидите приглашение программы:
smb: >
и сможете вводить ее команды. Первым делом введите команду help для получения списка всех доступных команд. В таблице 6.3 перечислено несколько самых полезных из них.
Команды программы smbclient Таблица 6.3
Команда Описание ls Выводит список файлов в папке cd [папка] Выполняет переход в заданный каталог на сервере (учтите, что именно на сервере, а не на клиентском компьютере). В том случаи, если каталог не указан, то smbclient просто выдаст имя текущего каталога get [файл] [локальное имя] Получает указанный файл из общего ресурса и сохраняет его на локальном компьютере. Если указано локальное имя, то полученный с сервера файл будет сохранен на клиентском компьютере под этим именем put [файл] [удаленное имя] Копирует файл на сервер и сохраняет его там под указанным именем. Если это имя не указано, то файл при сохранении переименовываться не будет mget [файлы] Получает все указанные файлы с сервера mput [файлы] Копирует все указанные файлы на сервер del [файлы] Удаляет на сервере указанные файлы, если, конечно, пользователь обладает на это правами ! Позволяет временно выйти из smbclient, чтобы выполнить команду на локальном компьютере. Например, ! ls — это просмотр текущего каталога на локальной машине exit или quit Завершение сеанса работы программы smbclientИспользовать программу smbclient не очень удобно. Если вы собираетесь обмениваться файлами часто, то лучше использовать программу smbmount, которая умеет монтировать удаленный общий ресурс как обычную файловую систему. Ниже приведен пример команды, которая монтирует папку customers компьютера USER5, используя имя пользователя den. Точка монтирования — каталог /mnt/customers:
$ smbmount //user5/customers -U den /mnt/customers -U 500 -G 100
В этом примере владельцем смонтированного каталога объявляется пользователь с идентификатором (UID) 500 и идентификатором группы 100.
Закончив работу с обшей папкой, размонтируйте ее командой
$ smbumount /mnt/customers
Если вместо русских имен файлов вы видите непонятные символы, значит, кодировки кириллицы на вашем компьютере и на Windows-машине различны и вам нужно указать дополнительные опции монтирования: codepage=<arg> — для кодовой страницы, применяемой на удаленной машине (обычно для кириллицы это cp866), и iocharset=<arg> — для кодовой страницы на стороне Linux. Значение iocharset зависит от установленной локали, и узнать его можно по команде locale:
$ locale
LANG=ru_RU.UTF-8
[...]
В моем примере на стороне Linux используется Юникод (а могло бы быть, например, KOI8-R), и команда монтирования будет выглядеть так:
$ smbmount //user5/customers /mnt/customers
>-о username=den,password="12345",
>codepage=cp866,iocharset=utf8
Параметры, перечисленные после ключа -о, нужно разделять запятыми, но не пробелами.
Обратный слэш — это конструкция, позволяющая записать одну длинную команду на нескольких строках. Я использовал ее для наглядности, а вы пишите в одну строку.
Обратите внимание, что при монтировании внешних файловых систем значение кодовой страницы пишется как «cp866», а для локальных файловых систем (раздела FAT32 на вашем жестком диске, где установлена Windows) — просто «866».
Запускать программу smbmount имеет право только суперпользователь. Чтобы обычный пользователь мог ее запустить, следует установить для нее атрибут SUID, однако такое решение является небезопасным. Выходом из этого положения может послужить запуск программы smbmount при загрузке системы. Добавьте в сценарии автозагрузки (советую — в /etc/rc.local, см. п.9.1.2) вызов программы smbmount для монтирования файловых систем совместного использования, с которыми вы работаете чаще всего. После этого обычные пользователи смогут работать с удаленными ресурсами как с обычной локальной файловой системой.
Данный текст является ознакомительным фрагментом.