Для чего нужен samba сервер
Samba (Русский)
Перевод этой статьи или раздела не отражает оригинальное содержание.
Samba — это реализация сетевого протокола SMB. Она облегчает организацию общего доступа к файлам и принтерам между системами Linux и Windows и является альтернативой NFS (Русский).
Contents
Настройка сервера
Установка
В связи с тем, что пакет samba поставляется без данного файла, вам нужно создать его перед запуском smb.service.
Настройка межсетевого экрана
Если вы используете межсетевой экран, не забудьте открыть необходимые порты (как правило, 137-139 + 445). Для получения информации о полном списке портов, смотрите использование портов Samba.
Правило UFW
Так как профиль приложения UFW для Samba по умолчанию отсутствует, вы можете захотеть создать его.
Затем загрузите этот профиль в UFW, запустив команду ufw app update Samba как root/sudo.
После этого можно разрешить доступ к Samba командой ufw allow Samba
Использование
Управление пользователями
Добавление пользователя
Для работы Samba требуется какой-нибудь Linux-пользователь — вы можете использовать существующего пользователя или создать нового.
Хотя имена пользователей Samba общие с системными пользователями, Samba использует для них отдельные пароли. Чтобы добавить нового пользователя Samba, воспользуйтесь следующей, заменив пользователь_samba на имя нужного пользователя:
Будет предложено задать пароль для этого пользователя.
Depending on the server role, existing File permissions and attributes may need to be altered for the Samba user account.
Если вы хотите разрешить новому пользователю только доступ к Samba-ресурсам и запретить полноценный вход в систему, можно ограничить возможности входа:
Просмотр списка пользователей
Список добавленных в Samba пользователей можно посмотреть с помощью команды pdbedit(8) :
Смена пароля Samba-пользователя
Чтобы сменить пароль пользователя, используйте smbpasswd :
Создание ресурсов для общего доступа
Со стороны Windows не забудьте изменить файл smb.conf для Windows Workgroup (в Windows по умолчанию: WORKGROUP).
Запуск служб
Расширенная конфигурация
Создание ресурсов общего доступа от имени обычного пользователя
Эта команда создает необходимый каталог в /var/lib/samba :
Эта команда создает группу sambashare:
Эта команда меняет владельца и группу каталога, который вы только что создали, на суперпользователя:
Эта команда меняет разрешения каталога usershares таким образом, что пользователи, входящие в группу sambashare, могут читать, записывать и выполнять файлы:
Задайте эти переменные в конфигурационном файле smb.conf :
Добавьте вашего пользователя в группу sambashare. Замените ваше_имя_пользователя на имя вашего linux-пользователя:
Завершите сеанс и войдите снова, чтобы применилось добавление новой группы к вашему пользователю.
Теперь у вас должна появиться возможность настраивать общий доступ samba, используя графический интерфейс. Например, в Thunar вы можете нажать правую кнопку мыши на любом каталоге и предоставить для него общий доступ в сети.
Для настройки общего доступа через командную строку используйте одну из следующих команд:
Если вы хотите предоставить общий доступ к файлам, находящимся в вашем домашнем каталоге, не забудьте задать доступ как минимум на чтение другим пользователям ( chmod a+rX ).
Установка и форсирование прав доступа
Разрешения могут быть применены и к серверу, и к отдельным ресурсам:
См. smb.conf(5) для более подробной информации о настройке прав доступа.
Ограничение версии протокола для повышения безопасности
В файле /etc/samba/smb.conf добавьте опции server min protocol и server max protocol для ограничения используемых версий протокола:
См. server max protocol в smb.conf(5) для обзора поддерживаемых протоколов.
Использование шифрования SMB
Нативное шифрование транспорта SMB доступно с версии SMB 3.0. Среди клиентов, поддерживающих такое шифрование, имеются Windows 8 и новее, Windows Server 2012 новее, smbclient в Samba 4.1 и новее.
Смотрите smb.conf(5) для более подробной информации, особенно разделы Effects for SMB1 и Effects for SMB2.
Отключение общего доступа к принтерам
По умолчанию Samba предоставляет общий доступ к принтерам, настроенным через CUPS.
Если вам это не нужно, используйте следующие опции для отключения:
Запрет определённых расширений файлов в общем ресурсе Samba
Увеличение пропускной способности
Большинству пользователей подойдут настройки по умолчанию. Однако корректное использование ‘socket options’ может улучшить производительность, но ошибки в настройке также могут и ухудшить её. Проверяйте эффекты, прежде чем вносить какие-либо серьезные изменения.
Читайте smb.conf(5) прежде чем применять описанные здесь опции.
SMB3 multi-channel может улучшить производительности, однако иногда может испортить данные из-за race conditions. В будущих версиях ситуация может улучшиться:
Ограничение времени бездействия полезно для предотвращения исчерпания ресурсов сервера из-за большого количества неактивных подключений:
Использование sendfile улучшает эффективность использования процессора и повышает скорость Samba:
Установка min receivefile size разрешает zero-copy запись непосредственно из буфера сокета в кэш файловой системы (если доступен). Это может улучшить производительность, но требует тестирования:
Асинхронное чтение/запись файлов может повысить производительность:
Увеличение размера буферов приёма/отправки и флаги оптимизации сокетов могут быть полезны для улучшения производительности. Рекомендуется протестировать каждый флаг отдельно, так как они могут вызывать проблемы в некоторых сетях:
Включение доступа для старых клиентов или устройств
Последние версии Samba больше не предлагают старые методы аутентификации и протоколы, которые всё ещё используются некоторыми старыми клиентами (IP-камерами и т.д.). Такие устройства обычно требуют от сервера разрешения аутентификации NTLMv1 и протокола NT1, известного как CIFS. Чтобы эти устройства работали с последней версией Samba, добавьте эти два параметра в секцию [global] :
Для анонимного/гостевого доступа достаточно лишь первого параметра. Если старое устройство использует имя и пароль для доступа, то нужен и второй параметр тоже.
Настройка клиента
Вы можете получать доступ и монтировать локально ресурсы, предоставленные для общего доступа другими компьютерами сети, используя графический интерфейс или интерфейс командной строки. Графический способ ограничен, так как большинство легковесных окружений рабочего стола не имеет родных средств настройки доступа к этим ресурсам.
Существует две «части» предоставления общего доступа. Первая лежит в основе механизма работы файловой системы, а вторая является интерфейсом, который позволяет пользователю выбирать монтируемые ресурсы общего доступа. В некоторых окружениях первая часть уже встроена.
Ручное монтирование
Чтобы вывести список общедоступных ресурсов на сервере:
Создать точку монтирования для ресурса:
Имя системы Windows.
Каталог общего доступа.
Локальный каталог, в который будет примонтирован ресурс.
Смотрите страницу руководства mount.cifs(8) для получения информации.
Добавление ресурса в /etc/fstab
а запись в вашем fstab должна выглядеть примерно так:
Монтирование пользователями
Это позволит пользователям монтировать ресурс, если точка монтирования находится в каталоге, владельцами которого они являются, например, в свою домашнюю директорию. Чтобы пользователи могли монтировать и размонтировать ресурсы Samba в точках монтирования, владельцами которых они не являются, используйте smbnetfs или дайте им необходимые привилегии с помощью sudo.
Имена хостов WINS
Пакет smbclient предоставляет драйвер для использования имен хостов WINS. Чтобы его включить, добавьте “wins” в строку “hosts” файла /etc/nsswitch.conf.
Автоматическое монтирование
Есть несколько способов легко просматривать ресурсы общего доступа:
smbnetfs
Для начала удостоверьтесь, что вам доступны все ресурсы, которые вам нужны для монтирования:
Если это не работает, найдите и измените следующую строку в /etc/samba/smb.conf подобным образом:
Если все работает, как и ожидалось, установите пакет smbnetfs из официальных репозиториев.
Затем добавьте следующую строку в файл /etc/fuse.conf :
Скопируйте каталог /etc/smbnetfs/.smb в вашу домашнюю директорию:
Затем создайте ссылку на файл smb.conf :
Если для доступа к некоторым общим каталогам необходимы имя пользователя и пароль, отредактируйте файл
Также возможно добавление записей для специфичных хостов, чтобы они были примонтированы smbnetfs, если это необходимо. Больше информации можно найти в
Когда вы закончите настройку, необходимо выполнить
В противном случае smbnetfs пожалуется: ‘insecure config file permissions’.
Наконец, чтобы примонтировать сетевое окружение Samba в каталог по вашему выбору, выполните
Демон
autofs
Смотрите статью Autofs для получения информации об автомонтировщике ядра (kernel-based) Linux.
Настройка файлового менеджера
Nautilus, Nemo, Thunar и PCManFM
Нажмите Ctrl+l и введите smb://имя_сервера/ресурс в панель адреса, чтобы получить доступ к ресурсу.
KDE имеет встроенную возможность просмотра ресурсов Samba, в этом случае нет необходимости в дополнительных пакетах. Однако, для графического интерфейса в Системных Настройках KDE установите пакет kdenetwork-filesharing из официальных репозиториев.
Если при использовании Dolphin вы получите ошибку «Time Out», необходимо раскомментировать и отредактировать эту строку в файле smb.conf:
Другие графические окружения
Есть несколько полезных программ, но им могут требоваться пакеты, созданные для них. Это может быть сделано с помощью Arch package build system. Хорошая новость заключается в том, что они не нуждаются в особом окружении, устанавливаемом для их поддержки, так что они «тянут» за собой меньше пакетов.
Решение проблем
Известная ошибка Windows 7 «mount error(12): cannot allocate memory» может быть исправлена установкой пары ключей в реестре системы Windows:
В качестве альтернативы можно запустить командную строку от имени Администратора и выполнить следующее:
Выполните одно из следующих действий, чтобы изменения вступили в силу:
Проблемы получения доступа к ресурсам, защищенным паролем, из Windows
При проблемах получения доступа к ресурсам, защищенным паролем, из Windows попробуйте добавить следующее в файл /etc/samba/smb.conf :[1] [устаревшая ссылка 2020-08-04]
Обратите внимание, что это должно быть добавлено в локальный файл smb.conf, а не в файл сервера
Диалоговое окно появляется с большой задержкой
У меня была проблема, связанная с тем, что диалоговое окно для ввода пароля появлялось с задержкой около 30 секунд, когда я пытался установить соединение из Windows XP/Windows 7. Когда я посмотрел файл error.log на сервере, я увидел:
Эта опция предотвращает поиск cups и файла /etc/printcap:
Ошибка: Failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
Если вы являетесь домашним пользователем, используете samba исключительно для организации общего доступа к файлам с сервера или NAS и не заинтересованы в организации общего доступа к принтерам, вы можете исправить эту ошибку, добавив следующие строки в файл /etc/samba/smb.conf:
…проверьте ваши логи:
и больше ошибка не должна появляться.
Не удается предоставить общий доступ к папке
Проблема проявляется в том, что, когда вы пытаетесь предоставить общий доступ к папке через Dolphin (файловый менеджер), и вначале, вроде бы, все работает нормально, после перезапуска Dolphin иконка ресурса исчезла из папки, а в терминале (Konsole) вы видите следующий вывод:
Для решения проблемы включите пользовательские общие ресурсы, как это описано в разделе #Создание ресурсов общего доступа от имени обычного пользователя.
«Просмотр» сети выдает ошибку «Не удалось получить список ресурсов с сервера» (Failed to retrieve share list from server)
в вашу конфигурацию iptables.
Вы не являетесь владельцем каталога
Попробуйте просто перезагрузить систему.
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
Подключение к серверу завершилось неудачей: (Error NT_STATUS_UNSUCCESSFUL)
Вероятно, вы указываете smbclient неправильное имя сервера. Чтобы узнать его, запустите на сервере команду hostnamectl и найдите строку «Transient hostname».
Блог о системном администрировании. Статьи о Linux, Windows, СХД NetApp и виртуализации.
Доброго времени читатели и гости блога www.k-max.name. Сегодняшнюю статью хочу посвятить изучению пакета SAMBA и основ совместного использования разделяемых ресурсов в гетерогенных сетях Linux и Windows. Кроме сетевых протоколов Microsoft, используемых в samba, существуют так же протоколы NFS и NIS, разработанные Sun, которые так же поддерживаются продуктами Microsoft, но не получившие у последних большого распространения и удобны в использовании в сетях Linux и UNIX. Начнем с небольшой теории.
Основы взаимодействия Windows и Linux (протоколы и другие особенности)
Протокол NetBIOS (точнее SMB) обладает своим собственным пространством имен. Все имена могут иметь длину до 16 алфавитно-цифровых символов. При этом, использовать имена, начинающиеся с цифры не приемлемо для реализации протокола NetBIOS over TCP/IP, т.к. данное имя будет интерпретироваться как IP-адрес. В NetBIOS существует понятие Рабочая группа (в последствии замененное понятием домен). Компьютеры, имеющие одинаковое имя рабочей группы принадлежат одной группе.
Чтобы SAMBA работала без поддкржки NetBIOS, необходимо, чтобы система была членом домена Active Directory. Если система НЕ член домена, то отключать поддержку NetBIOS не стоит!
Собственно, протокол SMB и дал начало названия проекта Samba. Через некоторое время SMB был переименован в CIFS (Common Internet File System). Samba версии 2 может использоваться только совместно с протоколом NetBT (NetBIOS over TCP/IP). Версия Samba 3 способна обеспечивать совместимость по протоколу SMB через TCP/IP (NetBIOS-less TCP/IP) и совместима с Active Directory. При использовании SMB через TCP/IP используется порт 445/tcp, а так же 135/tcp для обеспечения взаимодействия по протоколу DCE RPC (удаленные вызовы процедур).
При установке и настройке Samba (без членства в домене Active Directory) желательно использовать демон Samba как сервер WINS или как член сервера WINS для снижения нагрузки мультикаст трафика в сети.
Исходные данные (подготовка хостов для осуществления общего доступа)
Мы начнем с самого простого примера и предположим, что DNS для разрешения имен не используется и машины имеют статичные IP-адреса. Поэтому нам необходимо в /etc/hosts добавить следующую строку:
Организация доступа к Windows с помощью клиента smbclient
В первую очередь, нам необходимо убедиться в том, может ли наш Linux взаимодействовать с Windows с помощью Samba. Самый простой способ, это воспользоваться FTP-подобным клиентом smbclient . C помощью которого, можно отправить запрос системе Windows и получить информацию о том, какие ресурсы Windows являются доступными.
Итак, в приведенном листинге нам удалось подключиться к шаре \\host\share от пользователя Администратор с паролем 12345. Мы получили содержимое каталога (причем русские символы прекрасно отображаются), перешли в подкаталог ime, получили его содержимое и получили на локальную машину файл SPTIP.dll, командой get (команда как и у FTP клиента). Вы, наверно, заметили, что в утилите smbclient путь к шаре указывается с прямым слешем, хотя в Windows принято задавать путь с обратным слешем. Утилита smbclient довольно гибка и используется как часть утилиты smbprint, для передачи потока данных, отправленных на принтер.
Организация доступа к Windows с помощью модулей ядра smbfs и cifsfs
Драйвер файловой системы smbfs по своему поведению напоминает утилиту smbclient. Он выполняет аутентификацию на основе предоставленного имени и пароля и устанавливает соединение с сервером SMB/CIFS, после этого подключает соединение с сервером SMB/CIFS к точке монтирования файловой системы. Права владения точкой монтирования устанавливаются в соответствии с пользователем и группой Linux, установившей соединение, а права доступа к файлам в точке монтирования устанавливаются на основании umask пользователя, установившего соединение.
Фактически, управление доступом ко всем файлам и каталогам переходит под управление Linux, а на сервере SMB/CIFS все обращения будут рассматриваться как операции, выполненные единственным пользователем. То есть все пользователи, работающие с файлами сервера в точке монтирования будут рассматриваться сервером SMB как единственный пользователь.
Давайте рассмотрим более сложный пример монтирования расшаренного каталога:
Резюме
На этом, на сегодня закончу. В следующей части повествования о SAMBA расскажу о взаимодействии Windows как клиента и Linux в виде файлового сервера SAMBA. Подведу маленький итог всему вышенаписанному. В сегодняшней статье я постарался рассказать об основах взаимодействия гетерогенных сетей Linux и Windows, немного рассказал об истории появления протоколов NetBIOS и взаимодействие хостов в сети TCP/IP по данному протоколу. Постарался изложить принципы взаимодействия между Linux и Windows и показал на практике, как взаимодействуют указанные системы. А так же описал, каким образом подключиться к расшаренным ресурсам Windows из Linux и заставить ОС Linux монтировать сетевые каталоги Windows при загрузке. Всем спасибо за внимание. Жду комментариев и дополнений!
Samba — первые шаги
Введение
В общей структуре корпоративных сетей Microsoft Windows и Linux зачастую существуют как разобщенные миры. Попытки обеспечить «прозрачный» доступ сетевых клиентов Windows к ресурсам UNIX зачастую порождают множество проблем. Одним из способов, позволяющих их решить, является использование в UNIX/Linux протокола Server Message Block (SMB — Samba), который иногда также называется протоколом Session Message Block (SMB), протоколом NetBIOS или протоколом LanManager. Этот протокол не является разработкой Microsoft, однако он хорошо адаптирован для использования в сетях на основе Windows. Хотя эта статья и посвящена Linux, тем не менее Samba может работать на большинстве UNIX-подобных операционных систем. И еще одно замечание: в данной статье мы рассмотрим пакет SMB с точки зрения малого предприятия, которому нужен локальный файл- или принт-сервер, либо домашнего пользователя, имеющего несколько компьютеров и желающего, чтобы машины совместно использовали ресурсы. Поэтому даже начинающий администратор UNIX/Linux может принять эту статью как руководство к действию.
Что умеет Samba
Samba — это программа, которая позволяет компьютерам UNIX/Linux имитировать машины Windows. При помощи Samba компьютеры могут обмениваться файлами или управлять заданиями на печать как файл-серверы или серверы печати под Windows. Подобно операционной системе UNIX/Linux, на которой она работает, Samba представляет собой разработанное множеством программистов ПО с открытым исходным кодом.
Протокол SMB используется Microsoft Windows 2000, NT и 95/98 для организации доступа к дискам и принтерам. Используя набор утилит Samba от Andrew Tridgell (Andrew.Tridgell@anu.edu.au), UNIX-машины (включая Linux) могут организовывать доступ к дискам и принтерам для Windows-машин. Утилиты smbfs, написанные Paal-Kr. Engstad (pke@engstad.ingok.hitos.no) и Volker Lendecke (lendecke@namu01.gwdg.de), дают возможность машинам с UNIX монтировать SMB-ресурсы, доступные на машинах с Windows или Samba.
C помощью Samba можно реализовать следующие наиболее распространенные:
Далее в статье будет дано подробное описание того, как это все реализовать.
Инсталляция и тестирование Samba
А также c чтения документации, доступной на сайте http://www.samba.org/. Следует отметить, что для использования Samba ваша машина должна находиться в одиночном Ethernet-сегменте локальной сети, при этом используя протокол TCP/IP. Samba не будет работать при использовании других сетевых протоколов. Это, в принципе, легко, поскольку Linux и Windows 95/98/NT поставляются с поддержкой TCP/IP. Однако если вы используете машины с Windows 3.x, то вам необходимо добавить поддержку TCP/IP.
Где взять
Для того чтобы получить исходные тексты последней версии Samba, свяжитесь с сайтом http://www.samba.org/ и выберите ближайший к вам сервер-зеркало: ftp://ftp.samba.org/. Пакет Samba входит в состав дистрибутивов ряда UNIX/Linux-систем, например Rad Hat или Suse Linux. Внимательно изучите документацию вашего Linux, и, вполне возможно, что вам будет достаточно только вставить CD и инсталлировать пакеты Samba. В этом случае вы можете продолжать чтение статьи со следующей главы.
После получения данного пакета извлекаем все то, что находится под «грифом» *.tar.gz, например, в директорию /tmp (причем для этого не обязательно быть root’ом :), то есть:
Если у вас не возникло никаких проблем при извлечении данного пакета, вы обнаружите новую директорию, например samba-latest, и в ней извлеченные файлы. Перейдите в нее, загляните в файлы «README» и «Manifest» — инструкция по инсталляции находится в последнем файле и выглядит примерно так:
Теперь надо обратить внимание на то, где находятся ваши файлы конфигурации. Большинство дистрибутивов Samba по умолчанию помещает их в директорию /etc, а себя — в директорию /usr/local/samba.
Конфигурирование Samba
Основная информация о конфигурации Samba находится в файле smb.conf. С этим файлом следует обращаться осторожно. Если вы планируете каким-либо образом изменить работающую версию, обязательно сделайте копию.
Для того чтобы первый раз запустить сервер, необходимо иметь рабочую версию файла smb.conf. Перейдите в директорию, в которой должен находиться ваш конфигурационный файл. Скорее всего это будет /etc или /usr/local/samba/lib. Сделайте копию данного файла, например smb.old, — это возможно при наличии прав root. Теперь, когда у вас есть «чистый» файл, можно ввести самую простую конфигурацию, то есть набрать следующие строки:
Ниже мы разберемся, что означают эти строки в файле конфигурации, но сначала временно отвлечемся от него и перейдем к демонам SMB.
Запуск демонов
Имеется два демона SMB: /usr/sbin/smbd и /usr/sbin/nmbd. Вы можете запустить демоны Samba из inetd или как автономный процесс. Samba будет отвечать чуть быстрее в случае, если она запущена как автономный процесс.
Иногда бывает необходимо проверить наличие в файле /etc/services примерно таких строк:
Убедитесь, что все они не закомментированы. В зависимости от вашего дистрибутива вам, вероятно, даже понадобится добавить их в этот файл. Samba не сможет привязаться к соответствующим портам, до тех пор пока этих строк не будет в файле /etc/services.
Для запуска демонов из inetd поместите следующие строки в конфигурационный файл inetd, /etc/inetd.conf:
Затем перезапустите демон inetd, выполнив команду:
Для запуска демонов из системных стартовых скриптов поместите следующий скрипт в файл /etc/rc.d/init.d/smb (для дистрибутива RedHat) или /etc/rc.d (для дистрибутива Suse Linux) и создайте на него символические ссылки с именами вида /etc/rc.d/rcX.d/S91smb (запускает сервисы SMB в многопользовательском режиме), /etc/rc.d/rcX.d/K91smb (убивает сервисы SMB при выключении), /etc/rc.d/rc6.d/K91smb (убивает сервисы SMB при перезагрузке), где X — номер загрузочного уровня системы, обычно это цифра 2 или 3.
Если при старте Samba вы получаете сообщение, в котором говорится, что демон не может подключиться к порту 139, то скорее всего у вас уже есть запущенные процессы Samba, которые не были завершены. Посмотрите список процессов (используя команду ‘ps ax | grep mbd’) для того, чтобы определить, есть ли еще запущенные сервисы Samba. Если же демоны отказываются запускаться по каким-либо другим причинам, то вероятнее всего этот скрипт не подходит к вашему UNIX/Linux и вам придется еще раз покопаться в документации, что-то в нем поправить, а может быть, и переписать.
Простой тест
Будем надеяться на лучшее и считать, что Samba при запуске не выдала никаких сообщений об ошибках. А для того, чтобы проверить, работает ли это реально, надо набрать в командной строке:
Выполняющаяся программа попросит вас ввести пароль. Здесь можете просто нажать Enter. Вот какие строчки должны появиться на мониторе (рис. 2).
Основная настройка smb.conf
Очевидно, что в описанной выше конфигурации Samba может функционировать, но практически не может ничего делать. Ниже будут рассмотрены более полезные и сложные примеры. Но сначала надо разобраться в директивах smb.conf.
Каждый раздел файла начинается с заголовка раздела, такого как [global], [homes], [printers] и т.п.
Секция [global] определяет некоторые переменные, которые Samba будет использовать для определения доступа ко всем ресурсам. Раздел [homes] позволяет удаленным пользователям иметь доступ к своим (и только своим) домашним директориям на локальной Linux-машине. Так что если пользователи Windows попытаются подключиться к этому разделу со своих Windows-машин, то они будут соединены собственными домашними директориями. Заметим, что для этого они должны быть зарегистрированы на Linux-машине.
Используем текстовый интерфейс
Многие системные администраторы при инсталляции Linux ограничиваются только текстовым интерфейсом, не устанавливая графический (X Windows). Это положительно сказывается на безопасности и быстродействии системы, но делает недоступными утилиты вроде SWAT, работе с которой посвящена нижеследующая часть этой статьи.
Простой файл smb.conf, приведенный ниже, позволяет удаленным пользователям иметь доступ к своим домашним директориям на локальной машине и помещать информацию во временную директорию. Пользователи Windows могут увидеть эти ресурсы, подключив сетевые диски, при этом естественно — машина с Linux должна иметь выход в локальную сеть. Заметим, что будут приведены дополнительные записи для этого файла, чтобы дать доступ к большему количеству ресурсов.
Написав новый файл smb.conf, полезно проверить его правильность. Для этого можно использовать утилиту ‘testparm’ (предварительно заглянув на справочную страницу testparm); если testparm сообщает об отсутствии проблем, то smbd правильно загрузит файл настроек.
Имейте в виду: если ваш сервер Samba имеет больше одного Ethernet-интерфейса, то smbd может подключиться к неправильному. Чтобы заставить ее подключаться к нужному, можно добавить в раздел [global] файла /etc/smb.conf следующую строку:
Теперь можно запускать Sambа. При этом необходимо учитывать, что чем больше сервисов настроено на вашем сервере, тем более он оказывается уязвим.
Вот как это делается с помощью ipfwadm:
Это запретит (deny) все входящие и исходящие TCP- и UDP-пакеты для портов 137-139 на интерфейсе eth0. Для получения более подробной информации рекомендуем почитать man ipfwadm.
При наличии ядер 2.1-2.2 вы сможете сделать это с помощью ipchains:
Как видите, здесь нет ничего нового и сложного. Как ipfwadm, так и ipchains выполняют одинаковые функции, только для разных версий ядер.
Однако если вам не нравится редактировать конфигурационные файлы вручную и на вашем Linux-сервере установлен графический интерфейс, то вы можете упростить настройку smb.conf, воспользовавшись Samba Web Administration Tool (SWAT).
Используем SWAT
Для использования SWAT проверим два конфигурационных файла: services (/etc/services) и inetd.conf (/etc/inetd.conf).
По умолчанию SWAT запускается с 901-го порта, но при желании это можно изменить. Итак, проверяем вышеуказанные конфигурационные файлы:
Если эта строка присутствует в /etc/service, то все нормально. Если строки нет, добавьте ее в конец файла. Данная строка говорит нам о том, что SWAT запускается на 901-м порте.
Теперь в файл inetd.conf (/etc/inetd.conf) добавляем следующую строку:
Затем перезапустим inetd:
Далее в браузере набираем:
В случае если все настроено правильно, вы увидите форму, в которой нужно ввести имя пользователя (username) и пароль (password). Здесь введите имя и пароль пользователя «root».
Итак, SWAT запущен. Теперь можно ознакомиться с его работой. Как вы видите, SWAT — это программа с прекрасным интерфейсом, которая создает конфигурационный файл /etc/smb.conf.
Детальная настройка
Файловый сервер под Linux
Как показано выше, организация доступа к дискам Linux для пользователей Windows с помощью файла smb.conf является довольно простым делом. Однако Samba позволит вам в большой степени контролировать этот процесс. Приведем несколько примеров.
Для организации доступа для всех добавьте в smb.conf следующие строчки:
Вы получили возможность запустить Samba и просмотреть доступные ресурсы с компьютера под управлением Windows. Однако все может оказаться не так-то просто. Начиная с Windows NT 4 в операционных системах Microsoft, в том числе и в среде Windows 98 (начиная с NT Service Pack 3), происходит передача закодированных паролей по сети. Вы непременно столкнетесь с этой проблемой, если версия пакета Samba, установленная на вашем UNIX/Linux-сервере, ниже 2.0.5а и не поддерживает закодированные пароли.
В случае несоответствия типов паролей между клиентом и сервером при попытках подключиться к ресурсу в окне диалога будет указано примерно следующее: «You are not authorized to access that account from this machine».
Подобную проблему можно решить двумя путями. Во-первых, можно настроить Samba-сервер для использования шифрованных паролей. Во-вторых, заставить Windows работать с нешифрованными паролями SMB. Если это Windows 98, то последовательность ваших действий должна быть такова: используя редактор registry (regedit), создайте ключ registry:
Добавьте значение типа DWORD:
Имя значения: EnablePlainTextPassword Данные: 0x01.
Для Windows NT эта же последовательность действий выглядит так:
Добавьте значение типа DWORD:
Имя значения: EnablePlainTextPassword Значение: 0x01.
После того как вы сделали эти изменения, перезагрузите машину с Windows и попытайтесь подключить сетевой диск к серверу Samba. Это должно работать, поскольку сервер Samba использует пароли в нешифрованном виде.
При использовании вашими клиентами и вашим сервером шифрованных паролей вы не сможете просмотреть списки доступных ресурсов до тех пор, пока начальное соединение не будет сделано с правильными параметрами входа. Для того чтобы сделать первоначальное соединение, в диалоговом окне Windows File Manager или Explorer введите вручную имя ресурса в форме \\hostname\sharename. Подключитесь к серверу посредством правильных для данного сервера имени и пароля.
Если вы подозреваете, что ваш сервис имен NetBIOS неправильно настроен (возможно, потому, что вы получаете сообщение об ошибке «host not found (машина не найдена)» при попытке подключения), попытайтесь использовать IP-адрес сервера: \\host ip address\sharename.
Если вы хотите видеть Samba-директорию в качестве сетевого диска, то вам следует сделать на Windows-машинах следующие настройки.
Сначала удостоверимся, что свойства сети настроены так, как нам надо. Для этого заходим в свойства сети (щелкаем правой клавишей мыши на значке рабочего стола «Сетевое окружение» (Network Neighborhood) и выбираем «Свойства»). Далее заходим на закладку «Компьютер» (Identification). В поле «Имя компьютера» (Computer name) прописываем Galka, в закладке «Рабочая группа» (Workgroup) — PTO, а в закладке «Описание компьютера» (Computer Description) можете прописать что угодно (рис. 3).
Дальше переходите на закладку «Управление доступом» (Access Control) и поставьте флажок в поле «На уровне ресурсов» (Share-level access control).
Теперь переходите в самую первую закладку «Конфигурация» (Configuration) и нажмите на кнопке «Доступ к файлам и принтерам» (File and print sharing). В появившемся окне необходимо поставить флажки в поле «Файлы этого компьютера можно сделать общими» (I want to be able to give others access to my files) и «Принтеры этого компьютера можно сделать общими» (I want to be able to allow others to print to my printer(s)).
И наконец, мы указываем Windows, что Samba является сервером WINS и именно он будет browse master’ом. Для этого переходим в свойства TCP/IP-протокола (рис. 4). В появившемся окне выбираем «Конфигурация WINS» (WINS Configuration). Ставим флажок в поле «Включить распознавание WINS» (Enable WINS Resolution). В появившемся поле «Основной сервер WINS» (WINS Server Search Order) прописываем IP-адрес сервера (Samba) — 192.168.0.1 и нажимаем «Добавить» (Add) или просто [Enter]. Переходим на закладку «Дополнительно» (Advanced) и нажимаем на «Browse Master» в левом окне, а в правом устанавливаем значение «Disabled». Вот и все. Теперь остается только несколько раз нажать кнопку «ОК» и перезагрузить Windows.
В Windows NT экраны свойств сети немного различаются (показаны на рисунках), но главная концепция построения остается той же.
После перезагрузки Windows смело жмите на «Сетевое окружение» (Network Neighborhood) и вы сможете увидеть Samba-сервер, а также свою домашнюю директорию на Linux-сервере. Теперь вы можете просто подключить данные ресурсы как сетевые диски и присвоить им drive letters.
Немного усложним конфигурацию: сделаем директорию /home/public доступной для чтения всеми, но разрешим помещать в нее информацию только людям из группы ADMINS. Для этого изменим запись следующим образом:
Можно привести еще много разных примеров настроек файлового сервера Samba, но будет лучше, если вы заглянете в документацию Samba или в справочные страницы и разберете их самостоятельно.
Доступ к дискам Windows из Linux
Вряд ли начинающие пользователи Linux OS смогут быстро разобраться с системой доступа к Linux-файлам из-под Windows, и наоборот. Но не все так сложно. Доступ к Linux-ресурсам из под Windows был кратко описан выше, а доступ к Windows-ресурсам из под Linux мы сейчас рассмотрим.
Программа клиента SMB для UNIX/Linux-машин включена в дистрибутив Samba. Она обеспечивает ftp-подобный интерфейс командной строки. Вы можете использовать эту утилиту для переноса файлов между «сервером» под управлением Windows и клиентом под Linux.
Для того чтобы увидеть, какие ресурсы доступны на данной машине, выполните команду:
где host — это имя машины, которую вы хотите видеть. Эта команда вернет список имен сервисов — то есть имен дисков или принтеров, к которым может быть получен доступ. До тех пор пока SMB-сервер не будет настроен без управления доступом, он будет запрашивать у вас пароль. Введите в ответ на запрос пароль для пользователя «гость (guest)» или ваш персональный пароль на этой машине.
Для использования клиента выполните следующую команду:
где service — имя машины и сервиса. Например, если вы пытаетесь обратиться к директории, которая доступна под именем public на машине, названной galka, то имя сервиса должно звучать как \\galka\public.
Вы получите приглашение smbclient:
Команды для использования Samba аналогичны командам ftp, но если вы не умеете пользоваться ни тем ни другим, напечатайте h, чтобы получить помощь.
Вы, конечно, можете использовать smbclient для тестирования, однако очень скоро вам это надоест. Для работы вам вероятнее всего понадобится пакет smbfs. Smbfs поставляется с двумя простыми утилитами — smbmount и smbumount. Они работают подобно mount и umount для SMB-ресурсов. Например,
В итоге вы получите «подмонтированный» ресурс с возможностью обращения к нему привычными методами проводника.
Принт-сервер под Linux
Для организации доступа к Linux-принтеру с Windows-машин вам необходимо убедиться, что принтер работает под Linux. Если вы можете печатать под Linux, то организация доступа к принтеру будет очень проста.
Добавьте настройку принтера в ваш файл smb.conf:
Убедитесь, что путь к принтеру (в нашем случае для [ljet]) соответствует буферной директории, указанной в файле /etc/printcap, то есть проверьте наличие строк:
Эти строки контролируют, должны ли все принтеры, перечисленные в /etc/printcap, быть загружены по умолчанию. В этом случае нет нужды в настройке каждого принтера в отдельности. Раздел [printers] указывает настройки для принтеров, которые вы хотите определить явно. Если используемая вами подсистема печати не работает подобным образом (BSD), то вам необходимо настроить фальшивый файл printcap (либо использовать ‘print command’, см. ниже). Для получения дополнительной информации о системе printcap см. Printing-HOWTO.
Доступ к принтеру Windows с машин, работающих под Linux
Для доступа к принтеру на Windows-машине необходимо соблюдение следующих условий:
Запись в приведенном ниже файле /etc/printcap сделана для принтера HP 5MP на сервере Windows NT. Используются следующие поля файла /etc/printcap:
Фрагмент файла /etc/printcap:
Убедитесь, что буферные директории и директория, применяемая для учета пользования, существуют и имеют право на запись. Убедитесь, что строка «if» содержит правильный путь к скрипту smbprint (дан ниже) и что записи указывают на правильное устройство вывода (специальный файл /dev).
Большинство дистрибутивов Linux поставляется с программой nenscript для преобразования ASCII-документов в PostScript.
Заключение
Еще совсем недавно возможности Samba ограничивались лишь перечисленными выше. Однако можно с уверенностью говорить о том, что новая версия Samba 2.2 догоняет Windows 2000 по функциональным возможностям и содержит дополнительные усовершенствования. Один из ведущих разработчиков Samba Джереми Эллисон (Jeremy Allison) называет ее «важным обновлением», которое поможет системам Samba легче внедряться в сети Microsoft. ПО обеспечивает экономию не только потому, что не нужно платить за серверную ОС, но и потому, что не приходится оплачивать «клиентские» лицензии за все компьютеры, которые используют сервер.