Создание домашней сети с помощью Samba для устройств под управлением ОС Windows, Linux, Android. Файловый сервер Samba

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

Установка Samba на Ubuntu Server дает возможность создать базу данных.

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

Для чего нужна?

В сравнении с другими пакетами программ подобного назначения Самба имеет несколько достоинств и особенностей.

  • Позволяет соединить друг с другом Unix-подобную систему, т. е. любую систему на Linux, и Windows. Причём не только Windows. Программа очень «всеядна»: MacOS , Solaris и другие ОС разной степени популярности.
  • Самба даёт возможность пользователям Виндовс использовать компьютеры на Ubuntu в качестве сервера. То есть пользоваться файлами, к которым налажен доступ, а также частью подключённых устройств.
  • Поддерживает доменную структуру NT Domain, управляет пользователями NT, поддерживает функции участника, первичного контроллера.

Наверное, для многих главное из этого - связь с машинами на Windows. Они в этом случае выступают в качестве клиента, а компьютер на Ubuntu - в качестве сервера. С другой стороны, пользователь Ubuntu также может получить доступ к сетевым папкам Windows.

Samba производится аж с 1992 года. И, что главное, новые версии выходят до сих пор. Последняя была выпущена седьмого марта 2017. С каждым годом разработчики стараются наладить совместимость большим количеством различных версий операционных систем, но главной фишкой остаётся соединение Linux-систем с Microsoft . В сравнении с Windows Server Samba может уступать ей из-за отсутствия поддержки части протоколов и инфраструктуры узлов. Однако многие утверждают, что скорость работы Самбы гораздо выше.

Настраиваем Samba

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

sudo apt-get install samba

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

После установки следует сделать бэкап файла конфигурации:

$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

$ sudo vi /etc/samba/smb.conf

Либо редактируем существующий. В этом файле содержатся основные установки сервера Самбы. Чтобы разобраться, что мы будем делать дальше, нужно понимать, что означают различные строки.

  • Workgroup - рабочая группа. Значение этого параметра также часто будет Workgroup, поскольку в Виндовс домен рабочей группы по умолчанию выглядит именно так.
  • Netbios name - имя компьютера Ubuntu, которое видят пользователи Windows . Здесь можно вводить значение на своё усмотрение.
  • Security - режим авторизации пользователей. По умолчанию стоит User, то есть аутентификация на уровне пользователя. Пока что лучше так и оставить.
  • Os level - указывает приоритет, который имеет Samba над другими клиентами (ПК) в локальной или интернет-сети.
  • Name resolve order - очерёдность разрешения IP-адресов по NetBIOS имени.
  • Read only - привилегия чтения или записи каталога. Значение может быть «yes» - исключительно чтение, «no» - запись.

Создаём пользователя

Это простейшее действие, с которого можно начинать работу с Самбой.

Добавляем пользователя в самой ОС:

$ useradd -M -l -s /sbin/nologin username

Создаём для него пароль:

Занесём нашего пользователя в базу Samba:

$ smbpasswd -a username

При помощи команды $ smbpasswd можно выполнять другие различные действия:

  • $ smbpasswd username - смена пароля
  • $ smbpasswd -x username - удаление пользователя
  • $ smbpasswd -d username - бан пользователя

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

$ systemctl restart smb

Это базовые настройки Samba. Теперь можно попробовать применить программу на практике.

Доступ к папке

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

Создаём папку, с которой и будем потом работать на двух компьютерах:

$ sudo mkdir -p /samba/access

Теперь делаем для этой папки расширенный доступ, чтобы её мог открыть любой клиент нашей локальной сети:

$ cd /samba
$ sudo chmod -R 0755 access
$ sudo chown -R nobody:nogroup access/

Владельцем согласно коду является nobody.

Теперь в файле с конфигурацией сервера нужно сделать два раздела: первый, содержащий основную информацию:


workgroup = WORKGROUP
server string = Samba Server %v
netbios name = srvr1
security = user
map to guest = bad user
name resolve order = bcast host
dns proxy = no
#==============
И второй, содержащий данные о папке access:

path = /samba/access
browsable =yes
writable = yes
guest ok = yes
read only = no

Следуют разделы друг за другом в таком же порядке.

Обновляем изменения сервера:

$ sudo service smbd restart

Действия с компьютером на Windows

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

  1. Открываем командную строку. Желательно делать это с расширенными правами, т. е. от имени администратора.
  2. Выполняем команду:
  3. notepad C:\Windows\System32\drivers\etc\hosts
  4. Открывается файл, в котором вводим следующую строчку:
  5. 168.0.1 srvr1.domain.com srvr1
    Благодаря ей папка станет доступна.
  6. Открыть её можно при помощи строки «Выполнить». Жмём Win + R, вводим: После этого нам откроется папка.

Закрытая папка

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

Делаем папку с названием «Closed»:

$ sudo mkdir -p /samba/allaccess/closed

Делаем специальную группу, которая может иметь доступ к этой папке:

$ sudo addgroup securedgroup

Создаём особые права для разных групп:

$ cd /samba/access
$ sudo chown -R richard:securedgroup closed
$ sudo chmod -R 0770 closed/

Так же, как и в случае с открытой папкой, добавляем сведения в конфигурацию:


path = /samba/access/closed
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes

Перезапускаем сервер.

Как можно понять, мы сделали папку Closed внутри Access. Таким образом Access может открыть каждый пользователь локальной сети, но чтобы смотреть и редактировать Closed, нужно обладать особыми правами.

Чтобы убедиться, что всё работает именно так, как мы это задали в командном файле, можно выполнить несколько простых действий.

Создаём пользователя и добавляем его в нашу закрытую группу:

$ sudo usermod -a -G securedgroup winston

Пользователя у нас зовут, как пачку сигарет (или премьер-министра Британии).

Делаем для Уинстона пароль:

$ sudo smbpasswd -a winston

После этого нам предложат ввести новый пароль, чтобы зайти заново под только что созданным аккаунтом. Не забудьте после этого сделать перезагрузку. Теперь вы знаете, как настроить сервер через Самбу в Убунту.

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

Linux - отличная операционная система, но от Windows мы не куда не денемся и он от нас тоже. Win­dows будет окружать нас всегда - будь то домашняя, корпоративная сеть или интернет-кафе. Нам постоянно предстоит обмениваться документами с Windows-компьютерами - ведь далеко не все пользователи предпочитают работать в Linux. Имея в своем распоряжении сервер на Linux , в любом случае возникнет необходимость взаимодейст­вия с Windows-компьютерами, поэтому речь и пойдет о подключении Linux к сети Microsoft.

Установка Samba

Для установки Samba нам нужно установить пакеты samba и samba-client. Желательно также установить пакет smbfs. Кроме того, система поставит на обновление пакет samba-common, который возможно уже установлен в системе. Все мои манипуляции будут проводится на Ubuntu 10.04, основные отличия от других дистрибутивов – это способ установки. Для Ubuntu через консоль, таким образом:

$ sudo apt — get install samba

Или используя менеджер пакетов Synaptic, что я и сделал, такой вариант оказался более удобным для меня, поскольку можно было выбрать из списка те пакеты, которые мне нужны, это были:

    samba

    smbclient

    samba-common

Если вы когда-то использовали другой дистрибутив Linux, то наверняка знакомы с программой LinNeighborhood. Это графическая программа, которая позволяет просматривать ресурсы Windows-сети. В Ubuntu в ней нет никакой необходимости. Во-первых, штатные средства GNOME позволяют просматривать Windows-сети. А во-вторых, ради интереса было установлено программу LinNeighborhood с одного из репозиториев Ubuntu. Выяснилось, что эта программа, найденная Synaptic, вообще не при­годна к использованию (проблемы с локализацией). Ну и ладно, смысл разбираться, если есть отличные стандартные средства, которые уже работают.

Базовая настройка Samba

На этом этапе будем считать, что утилита установлена. Основной конфигурационный файл Samba - /etc/samba/smb.conf. Его необходимо открыть и изменить несколько параметров. Первый это workgroup - он задает имя (на Ваш выбор) рабочей группы или домена NT:

WORKGROUP = MyHomeGroup

Можете также уста­новить параметр comment - это описание вашего компьютера:

comment = My Linux computer

Установите параметр security. Если сеть клиент/сервер, то нужно вы­брать параметр server, а если одноранговая сеть (т. е. сеть без выде­ленного сервера), то нужно выбрать user или share:

security = share

Имя гостевой учетной записи установите так:

guest account = guest

Также нужно настроить кодировки:

client code page = 866

character set = utf8

Для того чтобы Samba работал быстрее, установите следующие опции:

socket options = TCP_NO DELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy = no

Параметр interfaces указывает интерфейсы, на которых должен работать сервис Samba. Необходимо указать те интерфейсы, которые связывают нашу машину с Windows-сетями:

interfaces = 192.168.0.22/24

Настройка общих ресурсов

Теперь осталось сконфигурировать ресурсы, которые мы хотим предоставить в общее пользование, это секция [ public ].

# общий каталог

comment = Public Directory

# путь

path = /var/samba

# не только чтение

read only = no

# разрешить запись

writable = yes

# разрешить гостевой доступ

guest ok = yes

# разрешить просмотр содержимого каталога

browseable = yes

В этом случае общим ресурсом нашего компьютера будет каталог /var/samba (его нужно создать, поскольку по умолчанию в системе нет такого каталога). В него другие пользователи смогут записывать свои файлы (read only=no, writeable=yes), естественно, они смогут их и читать (browseable=yes). Проверка имени пользователя и пароля для доступа к ресурсу не нужна (guest ok=yes) - используется так называемый гостевой доступ. Комментарий «Public Directory» увидят другие пользователи Windows-сети при просмотре ресурсов нашего компьютера.

Если есть необходимость предоставить общий доступ («расшарить») к домашним каталогам пользователей, то идем в секцию;. Раскомментируем все строки, закомментированные с помощью точки с запятой до строки;. Т . е . должно получиться следующее :

comment = Home Directories

browseable = no

valid users = %S

writable = no

create mask = 0600

directory mask = 0700

Сейчас пользовательские каталоги не будут видны в списке общих ресурсов, обратиться к ним можно по адресу \\сервер\имя_пользователя . Например, \\server\petya. Если нужно, чтобы пользовательские ресурсы можно было просмотреть, тогда устанавливаем значение yes для параметра browseable:

browseable = yes

После всех изменений сохраняем файл конфигурации и запускаем (или перезапускаем — restart) Samba:

$ sudo /etc/init.d/samba start

Просмотр ресурсов Windows-сети

Просмотреть ресурсы Windows-сети можно с помощью программы smbclient, но она работает в текстовом режиме, поэтому не совсем удобна в использовании. Гораздо удобнее использовать обозреватель файлов для просмотра ресурсов сети. Сделать это можно с помощью меню Переход | Соединиться с сервером…

Секреты оптимизации Samba

Теперь поговорим о том, как заставить Samba работать немного быстрее. Если вы откроете файл конфигурации smb.conf, то найдете в нем параметр wide links. Никогда не устанавливайте его в no ! Так мы существенно снизим производительность Samba. Наоборот, установить его нужно в yes (если до этого параметр wide links был отключен), что существенно повысит производительность.

Параметр wide links определяет, как Samba будет следовать по символиче­ским ссылкам. Если wide links=no, то Samba не будет следовать по симво­лическим ссылкам вне экспортируемой области. Сначала Samba следует по символической ссылке, а затем выполняет так называемый directory path lookup (системный вызов, определяющий, где завершилась ссылка). Данная операция подразумевает на 6 системных вызовов больше, нежели в случае, если wide links=yes. Учитывая, что подобных операций делается очень много, то выключение wide links снижает производительность Samba при­близительно на 30%.

Реализация сетевых протоколов Server Message Block (SMB) и Common Internet File System (CIFS) . Основное предназначение - расшаривание файлов и принтеров между Linux и Windows системами.

Samba состоит из нескольких демонов, работающих в фоновом режиме и предоставляющих сервисы и ряд инструментов командной строки для взаимодействия со службами Windows:

  • smbd - демон, являющийся SMB-сервером файловых служб и служб печати;
  • nmbd - демон, предоставляющий службы имен NetBIOS;
  • smblient - утилита предоставляет доступ из командной строки к ресурсам SMB. Она также позволяет получить списки общих ресурсов на удаленных серверах и просматривать сетевое окружение;
  • smb.conf - конфигурационный файл, содержащий настройки для всех инструментов Samba;

Список портов, используемых Samba

  • share - этот режим безопасности эмулирует метод аутентификации, используемый операционными системами Windows 9x/Windows Me. В этом режиме имена пользователей игнорируются, а пароли назначаются общим ресурсам. В этом режиме Samba пытается использовать предоставленный клиентом пароль, которым могут пользоваться разные пользователи.
  • user * - этот режим безопасности установлен по умолчанию и использует для аутентификации имя пользователя и пароль, как это обычно делается в Linux. В большинстве случаев в современных операционных системах пароли хранятся в зашифрованной базе данных, которую использует только Samba.
  • server - этот режим безопасности используется тогда, когда необходимо, чтобы Samba выполняла аутентификацию, обращаясь к другому серверу. Для клиентов этот режим выглядит так же, как аутентификация на уровне пользователя (режим user), но фактически для выполнения аутентификации Samba обращается к серверу, указанному в параметре password server.
  • domain - используя этот режим безопасности, вы можете полностью присоединиться к домену Windows; для клиентов это выглядит так же, как аутентификация на уровне пользователя. В отличие от аутентификации на уровне сервера, доменная аутентификация использует более защищенный обмен паролями на уровне домена. Для полного присоединения к домену требуется выполнить дополнительные команды в системе Samba и, возможно, на контроллере домена.
  • ads - этот режим безопасности похож на метод аутентификации в домене, но требует наличия контроллера домена Active Directory Domain Services.

Полный список параметров Samba есть в manpages .

Выше был приведен пример с доступом для директории с общим доступом. Рассмотрим еще пример с приватной директорией, к которой доступ только по логину и паролю.

Создадим группу и добавим в нее пользователя

Sudo groupadd smbgrp sudo usermod -a -G smbgrp proft

Создадим директорию для пользователя и установим права

Sudo mkdir -p /srv/samba/proft sudo chown -R proft:smbgrp /srv/samba/proft sudo chmod -R 0770 /srv/samba/proft

Создадим samba-пользователя

Sudo smbpasswd -a proft

Добавим в /etc/samba/smb.conf новый ресурс

Path = /srv/samba/proft valid users = @smbgrp guest ok = no writable = yes browsable = yes

Перезапустим сервер

Sudo systemctl restart smbd

Пример настройки ресурса в котором есть симлинк на папку пользователя (/srv/samba/media/video » /home/proft/video )

Path = /srv/samba/media guest ok = yes read only = yes browsable = yes force user = proft

Настройка клиента

Просмотр общих ресурсов компьютера

Smbclient -L 192.168.24.101 -U%

Еще один способ подключения для анонимного пользователя с командной строкой

Smbclient -U nobody //192.168.24.101/public ls

Если на сервере настроен более высокий уровень безопасности, то может потребоваться передать имя пользователя или домена с помощью параметров -W и -U соответственно.

Smbclient -L 192.168.24.101 -U proft -W WORKGROUP

Монтирование samba-ресурса

# создание точки монтирования mkdir -p ~/shares/public # монтирование ресурса # для анонимного пользователя nobody mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=nobody,password=,workgroup=WORKGROUP,ip=192.168.24.101,utf8 # для пользователя proft mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,password=1,workgroup=WORKGROUP,ip=192.168.24.101,utf8

Еще лучше пароли хранить в отдельном файле

# sudo vim /etc/samba/sambacreds username=proft password=1 username=noboy password=

Выставим права доступа 0600

Sudo chmod 0600 /etc/samba/sambacreds

Новая строка для монтирования

Mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101

И пример для /etc/fstab

//192.168.24.101/public /home/proft/shares/public cifs noauto,username=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101 0 0

Открыть ресурс в файловом менеджере Nautilus/Nemo/etc можно по такому пути smb://192.268.24.101 .

Если Nemo пишет Nemo cannot handle "smb" locations. значит не хватает пакета gvfs-smb .

Доступ к серверу с Windows и Android клиента

Под Windows узнать рабочую группу с консоли можно с помощью

Net config workstation

Открыть ресурсы на удаленной машине можно набрав в строке Explorer (Проводник) или в Run (Start - Run) UNC-адрес: \192.168.24.101 .

Под Android подключится к серверу можно с помощью ES File Explorer , на вкладке Network добавляем сервер, просто по IP (без указания схемы, smb). После чего можно открывать расшаренные ресурсы. Для статистики: HDRIP-фильм идет без подтормаживания.

Дополнительное чтиво

Samba - это программа, которая позволяет компьютерам UNIX/Linux имитировать машины Windows. При помощи Samba компьютеры могут обмениваться файлами или управлять заданиями на печать как файл-серверы или серверы печати под Windows. Подобно операционной системе UNIX/Linux, на которой она работает, Samba представляет собой разработанное множеством программистов ПО с открытым исходным кодом.

Протокол SMB используется Microsoft Windows 2000, NT и 95/98 для организации доступа к дискам и принтерам. Используя набор утилит Samba от Andrew Tridgell ([email protected]), UNIX-машины (включая Linux) могут организовывать доступ к дискам и принтерам для Windows-машин. Утилиты smbfs, написанные Paal-Kr. Engstad ([email protected]) и Volker Lendecke ([email protected]), дают возможность машинам с UNIX монтировать SMB-ресурсы, доступные на машинах с Windows или Samba.

C помощью Samba можно реализовать следующие наиболее распространенные:

  1. Давать доступ к дискам Linux Windows-машинам.
  2. Получать доступ к дискам Windows для машин под Linux.
  3. Давать доступ к принтерам Linux для Windows-машин.
  4. Получать доступ к принтерам Windows из Linux-систем.

Инсталляция и тестирование Samba

Инсталляцию, как известно, следует начинать с подробного изучения документации. Правда, большинство системных администраторов пренебрегают этим правилом, руководствуясь другим: «Если уже ничего не помогает, почитайте документацию». В общем, советуем начать инсталляцию Samba с простой команды: $ man samba (рис. 1).

А также 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"ом:), то есть:

$ tar -zxvf samba-latest.tar.gz

Если у вас не возникло никаких проблем при извлечении данного пакета, вы обнаружите новую директорию, например samba-latest, и в ней извлеченные файлы. Перейдите в нее, загляните в файлы «README» и «Manifest» - инструкция по инсталляции находится в последнем файле и выглядит примерно так:

$ ./configure $ make $ su # make install

Теперь надо обратить внимание на то, где находятся ваши файлы конфигурации. Большинство дистрибутивов Samba по умолчанию помещает их в директорию /etc, а себя - в директорию /usr/local/samba.

Конфигурирование Samba

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

Для того чтобы первый раз запустить сервер, необходимо иметь рабочую версию файла smb.conf. Перейдите в директорию, в которой должен находиться ваш конфигурационный файл. Скорее всего это будет /etc или /usr/local/samba/lib. Сделайте копию данного файла, например smb.old, - это возможно при наличии прав root. Теперь, когда у вас есть «чистый» файл, можно ввести самую простую конфигурацию, то есть набрать следующие строки:

#Basic Samba configuration file (smb.conf) workgroup = PTO netbios name = GALKA

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

Запуск демонов

Имеется два демона SMB: /usr/sbin/smbd и /usr/sbin/nmbd. Вы можете запустить демоны Samba из inetd или как автономный процесс. Samba будет отвечать чуть быстрее в случае, если она запущена как автономный процесс.

Иногда бывает необходимо проверить наличие в файле /etc/services примерно таких строк:

Netbios-ns 137/tcp nbns netbios-ns 137/udp nbns netbios-dgm 138/tcp nbdgm netbios-dgm 138/udp nbdgm netbios-ssn 139/tcp nbssn

Убедитесь, что все они не закомментированы. В зависимости от вашего дистрибутива вам, вероятно, даже понадобится добавить их в этот файл. Samba не сможет привязаться к соответствующим портам, до тех пор пока этих строк не будет в файле /etc/services.

Для запуска демонов из inetd поместите следующие строки в конфигурационный файл inetd, /etc/inetd.conf:

# SAMBA NetBIOS services (for PC file and print sharing) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Затем перезапустите демон inetd, выполнив команду:

Kill -HUP 1 `cat /var/run/inetd.pid`

Для запуска демонов из системных стартовых скриптов поместите следующий скрипт в файл /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.

#! /bin/sh . /etc/rc.config # Determine the base and follow a runlevel link name. base=${0##*/} link=${base#*} # Force execution if not called by a runlevel directory. test $link = $base && START_SMB=yes test "$START_SMB" = "yes" || exit 0 # The echo return value for success (defined in /etc/rc.config). return=$rc_done case "$1" in start) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D || return=$rc_failed startproc /usr/sbin/smbd -D || return=$rc_failed echo -e "$return" ;; startd) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D -d 10 || return=$rc_failed startproc /usr/sbin/smbd -D -d 10 || return=$rc_failed echo -e "$return" ;; stop) echo -n "Shutting down SMB services:" killproc -TERM /usr/sbin/nmbd || return=$rc_failed killproc -TERM /usr/sbin/smbd || return=$rc_failed echo -e "$return" ;; restart|reload) $0 stop && $0 start || return=$rc_failed ;; status) echo -n "Checking for service smb: " checkproc /usr/sbin/nmbd && echo -n "OK " || echo -n "No process " checkproc /usr/sbin/smbd && echo "OK " || echo "No process" ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" exit 1 esac # Inform the caller not only verbosely and set an exit status. test "$return" = "$rc_done" || exit 1 exit 0

Если при старте Samba вы получаете сообщение, в котором говорится, что демон не может подключиться к порту 139, то скорее всего у вас уже есть запущенные процессы Samba, которые не были завершены. Посмотрите список процессов (используя команду "ps ax | grep mbd") для того, чтобы определить, есть ли еще запущенные сервисы Samba. Если же демоны отказываются запускаться по каким-либо другим причинам, то вероятнее всего этот скрипт не подходит к вашему UNIX/Linux и вам придется еще раз покопаться в документации, что-то в нем поправить, а может быть, и переписать.

Основная настройка smb.conf

Очевидно, что в описанной выше конфигурации Samba может функционировать, но практически не может ничего делать. Ниже будут рассмотрены более полезные и сложные примеры. Но сначала надо разобраться в директивах smb.conf.

Каждый раздел файла начинается с заголовка раздела, такого как , , и т.п.

Теперь переходите в самую первую закладку «Конфигурация» (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) или просто . Переходим на закладку «Дополнительно» (Advanced) и нажимаем на «Browse Master» в левом окне, а в правом устанавливаем значение «Disabled». Вот и все. Теперь остается только несколько раз нажать кнопку «ОК» и перезагрузить Windows.

В Windows NT экраны свойств сети немного различаются (показаны на рисунках), но главная концепция построения остается той же.

После перезагрузки Windows смело жмите на «Сетевое окружение» (Network Neighborhood) и вы сможете увидеть Samba-сервер, а также свою домашнюю директорию на Linux-сервере. Теперь вы можете просто подключить данные ресурсы как сетевые диски и присвоить им drive letters.

Немного усложним конфигурацию: сделаем директорию /home/public доступной для чтения всеми, но разрешим помещать в нее информацию только людям из группы ADMINS. Для этого изменим запись следующим образом:

Comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @ADMINS

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

Доступ к дискам Windows из Linux

Вряд ли начинающие пользователи Linux OS смогут быстро разобраться с системой доступа к Linux-файлам из-под Windows, и наоборот. Но не все так сложно. Доступ к Linux-ресурсам из под Windows был кратко описан выше, а доступ к Windows-ресурсам из под Linux мы сейчас рассмотрим.

Программа клиента SMB для UNIX/Linux-машин включена в дистрибутив Samba. Она обеспечивает ftp-подобный интерфейс командной строки. Вы можете использовать эту утилиту для переноса файлов между «сервером» под управлением Windows и клиентом под Linux.

Для того чтобы увидеть, какие ресурсы доступны на данной машине, выполните команду:

/usr/sbin/smbclient -L host

где host - это имя машины, которую вы хотите видеть. Эта команда вернет список имен сервисов - то есть имен дисков или принтеров, к которым может быть получен доступ. До тех пор пока SMB-сервер не будет настроен без управления доступом, он будет запрашивать у вас пароль. Введите в ответ на запрос пароль для пользователя «гость (guest)» или ваш персональный пароль на этой машине.

Для использования клиента выполните следующую команду:

/usr/sbin/smbclient service

где service - имя машины и сервиса. Например, если вы пытаетесь обратиться к директории, которая доступна под именем public на машине, названной galka, то имя сервиса должно звучать как \\galka\public.

Вы получите приглашение smbclient:

Server time is Wen May 22 15:58:44 2001 Timezone is UTC+10.0 Domain= OS= Server= smb: \>

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

Вы, конечно, можете использовать smbclient для тестирования, однако очень скоро вам это надоест. Для работы вам вероятнее всего понадобится пакет smbfs. Smbfs поставляется с двумя простыми утилитами - smbmount и smbumount. Они работают подобно mount и umount для SMB-ресурсов. Например,

Smbmount//computer_name/catalog/Mountpoint -U user_name

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

Принт-сервер под Linux

Для организации доступа к Linux-принтеру с Windows-машин вам необходимо убедиться, что принтер работает под Linux. Если вы можете печатать под Linux, то организация доступа к принтеру будет очень проста.

Добавьте настройку принтера в ваш файл smb.conf:

Printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba comment = All Printers security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s

Убедитесь, что путь к принтеру (в нашем случае для ) соответствует буферной директории, указанной в файле /etc/printcap, то есть проверьте наличие строк:

Printcap name = /etc/printcap load printers = yes

Эти строки контролируют, должны ли все принтеры, перечисленные в /etc/printcap, быть загружены по умолчанию. В этом случае нет нужды в настройке каждого принтера в отдельности. Раздел указывает настройки для принтеров, которые вы хотите определить явно. Если используемая вами подсистема печати не работает подобным образом (BSD), то вам необходимо настроить фальшивый файл printcap (либо использовать "print command", см. ниже). Для получения дополнительной информации о системе printcap см. Printing-HOWTO.

Доступ к принтеру Windows с машин, работающих под Linux

Для доступа к принтеру на Windows-машине необходимо соблюдение следующих условий:

  1. Вам необходимо иметь в файле /etc/printcap правильные записи, которые должны соответствовать локальной структуре директорий (для буферной директории и т.п.)
  2. У вас должен быть скрипт /usr/bin/smbprint. Он поставляется вместе с исходными текстами Samba, но не со всеми двоичными дистрибутивами Samba.
  3. Если вы хотите преобразовывать ASCII-файлы в PostScript, вы должны иметь программу nenscript или ее эквивалент. Программа nenscript - это конвертор PostScript, который обычно устанавливается в директорию /usr/bin.

Запись в приведенном ниже файле /etc/printcap сделана для принтера HP 5MP на сервере Windows NT. Используются следующие поля файла /etc/printcap:

Cm - комментарий; lp - имя устройства, открываемого для вывода; sd - директория спула принтера (на локальной машине); af - файл учета пользования принтером; mx - максимальный размер файла (ноль - без ограничений); if - имя входного фильтра (скрипта).

Фрагмент файла /etc/printcap:

# /etc/printcap # # //galka/oreilly via smbprint # lp:\ :cm=HP 5MP Postscript OReilly on galka:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ :af=/var/spool/lpd/lp/acct:\ :mx#0:\ :if=/usr/bin/smbprint:

Убедитесь, что буферные директории и директория, применяемая для учета пользования, существуют и имеют право на запись. Убедитесь, что строка «if» содержит правильный путь к скрипту smbprint (дан ниже) и что записи указывают на правильное устройство вывода (специальный файл /dev).

#!/bin/sh –x # # Debugging log file, change to /dev/null if you like. # logfile=/tmp/smb-print.log # logfile=/dev/null # # The last parameter to the filter is the accounting file name. # spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config # Should read the following variables set in the config file: # server # service # password # user eval `cat $config_file` # # Some debugging help, change the >> to > if you want to same space. # echo "server $server, service $service" >> $logfile (# NOTE You may wish to add the line `echo translate" if you want automatic # CR/LF translation when printing. echo translate echo "print -" cat) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile

Большинство дистрибутивов Linux поставляется с программой nenscript для преобразования ASCII-документов в PostScript.

Заключение

Еще совсем недавно возможности Samba ограничивались лишь перечисленными выше. Однако можно с уверенностью говорить о том, что новая версия Samba 2.2 догоняет Windows 2000 по функциональным возможностям и содержит дополнительные усовершенствования. Один из ведущих разработчиков Samba Джереми Эллисон (Jeremy Allison) называет ее «важным обновлением», которое поможет системам Samba легче внедряться в сети Microsoft. ПО обеспечивает экономию не только потому, что не нужно платить за серверную ОС, но и потому, что не приходится оплачивать «клиентские» лицензии за все компьютеры, которые используют сервер.

О новых возможностях Samba 2.2. читайте в нашей статье «Samba 2.2 - что нового » .

КомпьютерПресс 10"2001