Все о тюнинге авто

Samba — первые шаги. Файловый сервер Samba Доступ к дискам Windows из Linux

Реализация сетевых протоколов 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-фильм идет без подтормаживания.

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

(спасибо одному из читателей за вопрос на эту тему!). То есть я поведаю, как сделать, чтобы Documents видела файлы с вашего персонального компьютера.

Для доступа к файлам ПК мы будем использовать технологию SMB.

SMB (сокр. от англ. Server Message Block) - сетевой протокол прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам, а также для межпроцессного взаимодействия.

Для удобной работы и настройки iPad, iPhone, iPod Touch должны находится в одной Wi-Fi сети с компьютером.

Настройка SMB в Documents

Заходите в настройки программы (иконка в левом верхнем углу). Затем тыкайте раздел “Сеть” и жмите “Добавить аккаунт”.

Выбирайте сервис для хранения “Windows SMB”.

Осталось вбить параметры:

  • Название – пишите, что хотите. :)
  • URL-адрес – смотрите разделы ниже про Mac OS и Windows.
  • Домен – не обязательный пункт.
  • Логин – логин пользователя на компьютере, который имеет доступ к файлам (см. разделы ниже)
  • Пароль – пароль пользователя на компьютере (см. разделы ниже)

Всё, SMB настроено. Теперь можно получать доступ к файлам компьютера буквально в 1 клик и в зависимости от настроек читать их, копировать или даже изменять.

Настройка SMB в Mac OS (OS X)

Откройте Системные настройки и найдите пункт “Общий доступ”.

Если нажать кнопку “Параметры”, должно выскочить окно, в котором галочка нужна напротив пункта: Предоставление общего доступа к файлам и папкам с помощью SMB.

Также укажите какой учётной записи будет предоставлен доступ по SMB (потребуется ввести пароль от неё).

Теперь в окне настройте “Общие папки”. Именно их будет видно в Documents. И пользователей, которые получат доступ к ним.

Настройка SMB в Windows

В Windows самое главное узнать свой IP-адрес. Это можно сделать, нажав клавиши Win+R. Откроется окно программы cmd (командная строка). Там вбейте команду ipconfig (и жмите Enter). Ваша строчка “IPv4 Address”. Именно этот IP надо вбить в Documents.

Логин и пароль можно использовать тот, что вы используете на вход в Windows. Далее необходимо открыть общий доступ к папке, которую вы хотите сделать доступной через SMB.

Правая кнопка мыши на папке. В меню выберите “Свойства”. А затем вкладку “Доступ” и в ней надо нажать кнопку “Общий доступ”.

Это простой способ, который позволяет добавить папку для SMB. Расширенные настройки под конкретные ситуации нужно искать на специализированных сайтах.

Samba - программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL .

Samba работает на большинстве Unix-подобных систем, таких как GNU/Linux, POSIX-совместимых Solaris и Mac OS X Server, на различных вариантах BSD, в OS /2, Windows. Samba включена практически во все дистрибутивы GNU/Linux, в том числе, конечно, и в Ubuntu .

Установка

Чтобы сделать общую папку в Ubuntu Desktop достаточно щёлкнуть правой кнопкой мыши на папке и выбрать пункт меню «Опубликовать папку». Никаких конфигурационных файлов при этом править не надо. Всё описанное ниже относится только к ручной настройке, например, в случае создания файлового сервера.

Для установки достаточно открыть терминал и ввести:

Sudo apt-get install samba

Приложение будет автоматически загружено и установлено.

Настройка

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

Sudo cp /etc/samba/smb.conf{,.bak}

Теперь можно отредактировать файл настроек /etc/samba/smb.conf, для этого откройте его в любом текстовом редакторе с правами суперпользователя. Например, так:

Sudo nano /etc/samba/smb.conf

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

Пример настройки Samba в качестве автономного файлового сервера с авторизацией:

; Глобальные настройки сервера ; General server settings ; Имя компьютера, которое будет отображаться в сетевом окружении netbios name = main-server server string = ; Рабочая группа клиентов workgroup = WORKGROUP announce version = 5.0 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192 passdb backend = tdbsam security = user null passwords = true ; Файл для альясов имен юзеров username map = /etc/samba/smbusers name resolve order = hosts wins bcast ; wins support устанавливается в yes, если ваш nmbd(8) в Самба является WINS сервером. Не устанавливайте этот параметр в yes если у вас нет нескольких подсетей и вы не хотите чтобы ваш nmbd работал как WINS сервер. Никогда не устанавливайте этот параметр в yes более чем на одной машине в пределах одной подсети. wins support = no ; Поддержка принтеров printing = CUPS printcap name = CUPS ; Логи log file = /var/log/samba/log.%m syslog = 0 syslog only = no ; Настройка привязки к интерфейсам, на каких слушать, если не указано слушает на все интерфейсах; interfaces = lo, eth0 ; bind interfaces only = true ; ; ; path = /var/lib/samba/printers ; browseable = yes ; guest ok = yes ; read only = yes ; write list = root ; create mask = 0664 ; directory mask = 0775 ; ; ; path = /tmp ; printable = yes ; guest ok = yes ; browseable = no ; ; ;path = /media/cdrom ;browseable = yes ;read only = yes ;guest ok = yes ; Шара жесткого диска; Имя шары, видно у клиентов ; Путь к расшариваемому диску path = /media/sda1 ; Можно ли просматривать browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755 ; Привязка к определенному имени пользователя или группе, имена через пробел; force user = user1 user2 ; force group = group1 group2 ; Еще один жесткий диск, по аналогии с тем что выше path = /media/sde1 browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755

Теперь надо разобраться с пользователями.

Samba использует пользователей которые уже есть в системе, возьмем для примера имя user, допустим что он уже есть в системе, надо внести его в базу данных SMB и назначить пароль для доступа к общим ресурсам, сделаем это командой:

Smbpasswd -a user

Вам будет предложено ввести пароль, пользователь будет добавлен в базу, теперь необходимо включить этого пользователя.

Smbpasswd -e user

Далее создадим псевдоним для имени пользователя user что бы облегчить себе доступ с Windows машины на которой у нас например пользователь с именем Admin, для этого создадим и отредактируем файл /etc/samba/smbusers:

Sudo touch /etc/samba/smbusers sudo gedit /etc/samba/smbusers

Впишите в файл пару строк

# Unix_name = SMB_name1 SMB_name2 user = Admin

На этом настройка закончена, перезапустите Samba.

Установить самый простой GUI для Samba можно командой:

Sudo apt-get install system-config-samba

Запускается он командой:

Sudo system-config-samba

Все изменения он записывает в конфигурационный файл samba.

Для удалённого администрирования Samba в качестве web-интерфейса для Samba отлично подойдёт

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

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

Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.

Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 3-й версии самбы. Дальше решаем, что нам нужно:

  • доступ по пользователю и паролю,
  • доступ по ip адресу,
  • доступ всем подряд без ограничений.

В зависимости от этого настройки будут немного разные.

Для доступа по паролю рисуем такой конфиг:

Security = user passdb backend = tdbsam workgroup = MYGROUP server string = Samba path = /mnt/shara valid users = @users force group = users create mask = 0660 directory mask = 0771 writable = yes browseable = yes

# useradd share-user -M -G users -s /sbin/nologin

Импортируем этого пользователя в самбу и задаем пароль:

# smbpasswd -a share-user

И пробуем зайти на шару по адресу:

\\ip-сервера\share

Чтоб организовать доступ в зависимости от ip адреса , делаем такие настройки в smb.conf:

Security = share workgroup = MYGROUP server string = Samba map to guest = bad user path = /mnt/files browsable = yes writable = yes guest ok = yes read only = no hosts allow = 192.168.0.171

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

Hosts allow = 192.168.0.

Комбинировать можно разные подсети и адреса, разделяя их пробелами. Для того, чтобы отключить доступ каким-то отдельным адресам из разрешенной подсети, можно сделать вот так:

Hosts allow = 192.168.0. except 192.168.0.15

Доступ будет разрешен всей подсети 192.168.0.0/24, кроме адреса 192.168.0.15.

Делаем перезапуск самбы и проверяем.

Если у вас установлена samba 4, то эта конфигурация не заработает и вы получите ошибку:

WARNING: Ignoring invalid value "share" for parameter "security"

Чтобы доступ по ip нормально заработал, вам необходимо внести следующие изменения в приведенный выше конфиг:

Security = user map to guest = Bad Password

Остальные параметры оставляете те же. После этого доступ по ip будет работать и на 4-й версии самбы.

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

Security = user workgroup = MYGROUP server string = Samba guest account = nobody map to guest = Bad User path = /mnt/files browseable = Yes guest ok = Yes writeable = Yes public = yes

Не забываем сделать права для всех на папку:

# chmod 0777 /mnt/files

Перезапускаем самбу и пробуем зайти. Должно пустить без лишних вопросов.

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

Для более сложных конфигураций у меня есть отдельные статьи:

Онлайн курс "Сетевой инженер"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные сети, рекомендую познакомиться с онлайн-курсом «Сетевой инженер» в OTUS. Это авторская программа в сочетании с удалённой практикой на реальном оборудовании и академическим сертификатом Cisco! Студенты получают практические навыки работы на оборудовании при помощи удалённой онлайн-лаборатории, работающей на базе партнёра по обучению - РТУ МИРЭА: маршрутизаторы Cisco 1921, Cisco 2801, Cisco 2811; коммутаторы Cisco 2950, Cisco 2960. Особенности курса:
  • Курс содержит две проектные работы.;
  • Студенты зачисляются в официальную академию Cisco (OTUS, Cisco Academy, ID 400051208) и получают доступ ко всем частям курса «CCNA Routing and Switching»;
  • Студенты могут сдать экзамен и получить вместе с сертификатом OTUS ещё сертификат курса «CCNA Routing and Switching: Scaling Networks»;
Проверьте себя на вступительном тесте и смотрите программу детальнее по.

Сейчас уже довольно часто в одной локальной сети можно встретить компьютеры под управлением Linux и Windows. Причины такого симбиоза могут быть разными: например, у владельцев интернет-кафе не хватило средств на приобретение лицензионной ОС для всех компьютеров, или системного администратора просто привлекли положительные стороны Linux. Популярность операционных систем от Microsoft во многом определятся клиентским ПО для Windows. Не секрет, что этот сектор программного обеспечения развит очень сильно. Множество фирм приложили к этому серьезные усилия и создали действительно хорошие, а главное, удобные в использовании программы, которые без труда может освоить даже рядовой пользователь. Зато в качестве сервера позиция Windows уже не так однозначна. Сервер под управлением Unix традиционно отличается надежностью, стабильностью в работе, безопасностью и зачастую меньшими требованиями к системным ресурсам. Но в любом случае, просто подключив компьютеры с разными программными платформами в сеть, мы не получим ожидаемого результата. Вся проблема в том, что у этих двух систем используются разные принципы организации сетевых ресурсов, несовместимые между собой.
Так как милости Microsoft ждать не приходится, и Windows вряд ли научится работать с сетевой файловой системой Unix (NFS) стандартными средствами, а программ сторонних производителей, если честно, я не знаю, то наиболее популярным способом является попытка научить Unix «притворяться», будто бы он — Windows NT.

Взаимодействие в сети компьютеров под управлением Windows построено на использовании протокола SMB (Server Message Block) — блоках серверных сообщений. Он обеспечивает выполнение всех необходимых в этих случаях задач по открытию и закрытию, чтению и записи, поиску файлов, созданию и удалению каталогов, постановке задания на печать и удалению его оттуда. Все необходимые для этого действия реализуются в Unix-подобных операционных системах посредством использования пакета SAMBA . Возможности его условно можно разделить на две категории: предоставление ресурсов (под коими понимается доступ к системе принтеров и файлам) для клиентов Windows и доступ к ресурсам клиентов. То есть, компьютер под управлением Linux может выступать как в роли сервера, так и клиента. Для начала рассмотрим вариант SAMBA-сервера.

Что же должен обеспечить SAMBA для нормальной работы в сети Windows-машин? Во-первых, контроль доступа, который может быть реализован либо на уровне ресурсов (share level), когда какому-либо ресурсу в сети назначается пароль и соответствующие правила использования (например, «только для чтения»), при этом имя пользователя не имеет абсолютно никакого значения; либо же более совершенную и гибкую организацию на уровне пользователя, когда для каждого пользователя создается учетная запись, где помимо имени и пароля содержится вся необходимая информация о правах доступа к ресурсу. Прежде чем получить доступ к требуемому ресурсу, каждый пользователь проходит аутентификацию, после чего ему и предоставляются права согласно учетным записям. Во-вторых, необходима эмуляция прав доступа, определяемых файловой системой. Все дело в том, что у рассматриваемых систем права доступа к файлам и каталогам на диске организованы по-разному. В Unix традиционно существует три категории пользователей файлов: владелец (owner) , группа (group) и остальные (other) . Каждому из этих субъектов могут быть предоставлены права на чтение (read) , запись (write) и выполнение (execute) . В Windows NT система доступа несколько гибче, доступ предоставляется нескольким группам или пользователям, причем соответствующие права доступа определяются раздельно для каждого субъекта. Поэтому полноценно эмулировать средствами SAMBA права доступа, заложенные в NTFS, невозможно.

С клиентами, работающими под управлением Windows 9x , дело обстоит иначе. Еще со времен дедушки ДОСа, по причине того, что система однопользовательская и о никаких пользователях и тем более группах и не могло быть речи, для файловой системы FAT определено всего четыре атрибута — только чтение (read only), системный (system), архивный (archive) и скрытый (hidden) . Плюс ко всему в Windows, в отличие от Unix, имеет особое значение расширение файла — те, что предназначены для выполнения, имеют расширения.exe, .com или.bat. При копировании файлов с Unix-машин на компьютеры под управлением Windows атрибуты устанавливаются так:

только для чтения — чтение, запись для владельца;

архивный — выполнение для владельца;

системный — выполнение для группы;

скрытый — выполнение для группы.

Сеть Windows-машин может быть организована как рабочая группа (workgroup), когда компьютеры независимы друг от друга и на каждом имеется своя база паролей и логинов со своей политикой безопасности, а также как домен NT. Вся база для аутентификации пользователей и компьютеров управляется главным контролером домена (PDC, Primary Domain Controler) , т.е. централизовано. Samba позволяет ограничивать доступ на всех этих уровнях и выполняет функции «главного браузера» в контексте рабочей группы или контролера домена.

С общеорганизационными вопросами разобрались. Давайте посмотрим теперь конкретно на реализацию и настройку SAMBA-сервера в Linux. Для работы Samba-сервера необходимо, чтобы были запущены два демона: smbd , обеспечивающий работу службы печати и разделения файлов для клиентов Samba (таких как Windows всех мастей), и nmbd , обеспечивающий работу службы имен NetBIOS (он может использоваться и для запроса других демонов служб имен). Для доступа к клиентам используется протокол TCP/IP . Как правило, Samba устанавливается вместе с дистрибутивом Linux. Как проверить? Просто дайте команду:

$ whereis samba

и вы должны получить что-то вроде этого:

Samba: /usr/sbin/samba /etc/samba /usr/share/man/man7/samba.7.gz

Если его не окажется в стандартной поставке, то добро пожаловать на ftp://ftp.samba.org/pub/samba/samba-latest.tar.gz или практически на любой сервер с программами для Linux. Пакет прост в установке, поэтому, чтобы не занимать места, будем считать, что он у вас установлен. Теперь давайте проверим, запущен ли демон:

$ ps -aux | grep smbd root 1122 0.0 0.6 4440 380 ? S 16:36 0:00 smbd -D

У меня уже, как видите, запущен. Если у вас нет, а вы хотите, чтобы он запускался при загрузке системы, то в Linux Mandrake, например, отметьте нужный пункт в DrakConf стартовые сервисы или в Red Hat Сontrol-panel Servise Configuration , обычно этого бывает достаточно. Или запускайте вручную: ./etc/rc.d/init.d/smb start. Единственный конфигурационный файл Samba называется smb.conf и обычно находится в каталоге /еtc (хотя в AltLinux, например, он лежит в каталоге /etc/samba). Сервис SAMBA считывает его каждые 60 секунд, поэтому изменения, внесенные в конфигурацию, вступают в силу без перезагрузки, но не распространяются на уже установленные соединения.

Вот за что я люблю Linux, это за то, что конфигурационные файлы являются обычными текстовыми (к тому же хорошо комментированными внутри), и для того чтобы задействовать большинство параметров, достаточно только раскомментировать соответствующую строчку. Файл smb.conf — не исключение. Он состоит из именованных разделов, начинающихся с имени раздела, заключенного в квадратные скобки. Внутри каждого раздела находится ряд параметров в виде key=value. Файл конфигурации содержит четыре специальных раздела: , , и отдельные ресурсы (shares). Как следует из названия, раздел содержит наиболее общие характеристики, которые будут применяться везде, но которые, впрочем, затем можно переопределить в секциях для отдельных ресурсов. Некоторые параметры этого раздела имеют отношение и к настройке клиентской части Samba.

Значения типичных параметров секции global :

Workgroup = имя_группы # название рабочей группы в сети Windows netbios name = имя сервера в сети server string = комментарий, который виден в окне свойств просмотра сети guest ok = yes # разрешение гостевого входа (guest ok = no — гостевой вход запрещен) guest account = nobody # имя, под которым разрешен гостевой вход в систему security = user # Уровень доступа. user — на уровне пользователя, security = share — аутентификация на основе имени и пароля. При хранении базы паролей на другом SMB-сервере используется значения security = server и password server = name_server_NT. В случае, если сервер является членом домена, используется значение security = domain, пароль для доступа указывается в файле, определенном с помощью опции smb passwd file = /path/to/file.

Кроме того, при регистрации могут использоваться шифрованные (encrypted) и незашифрованные (plain-text) пароли . Последние используются в старых Windows (Windows for Workgroups, Windows 95 (OSR2), всех версиях Windows NT 3.x, Windows NT 4 (до Service Pack 3)). Для включения варианта использования шифрованного пароля используется опция encrypt password = yes. Прошу обратить особое внимание на эту опцию. В старых дистрибутивах Linux, которые создавались в эпоху Windows 95 (и с более старой версией Samba) по умолчанию шифрование паролей отключено, а samba до версии 2.0 данного режима вообще не поддерживает (кстати, эта опция и подобные ей — те, что не касаются доступа к конкретным ресурсам — используются и в клиенте).

Для правильного отображения русских имен файлов нужны следующие опции: client code page = 866 и character set = koi8-r. В дистрибутивах с хорошей локализацией, например, производных от Mandrake и русских эта строка уже есть, иногда ее достаточно просто раскоментировать, но в большинстве других ее надо дописать самому.

Опция interfaces = 192.168.0.1/24 указывает, в какой сети (интерфейсе) должна работать программа, если сервер подключен сразу к нескольким сетям. При установке параметра bind interfaces only = yes сервер будет отвечать на запросы только из этих сетей.

hosts allow = 192.168.1. 192.168.2. 127. — определяет клиентов, для которых разрешен доступ к сервису.

В секции global возможно использование различных переменных для более гибкой настройки работы сервера. После установки соединения вместо них подставляются реальные значения. Например, в директиве log file = /var/log/samba/%m.log, параметр %m помогает определить отдельный лог-файл для каждой клиентской машины. Вот наиболее употребительные переменные используемые в секции global:

%a — архитектура ОС на клиентской машине (возможные значения — Win95, Win NT, UNKNOWN и т.д.);

%m — NetBIOS-имя компьютера клиента;

%L — NetBIOS-имя сервера SAMBA;

%v — версия SAMBA;

%I — IP-адрес компьютера клиента;

%T — дата и время;

%u — имя пользователя, работающего с сервисом;

%H — домашняя директория пользователя %u.

Также для более гибкой настройки применяется директива include, использующая приведенные выше переменные. Например: include = /etc/samba/smb.conf.%m — теперь при запросе с компьютера sales при наличии файла /etc/samba/smb.conf.sales конфигурация будет взята из этого файла. Если отдельного файла для какой-то машины не будет, то для работы с ней задействуется общий файл.

Также имеется интересная возможность создания виртуального сервера . Для этого используется параметр netbios aliases:

Netbios aliases = sales accounting admin

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

Include = /etc/samba/smb.conf.%L

В окне обозревателя сети будет видны три сервера: sales , accounting , admin .

Включение параметров preserve case и short preserve case заставляют сервер сохранять всю вводимую информацию с учетом регистра символов (в Windows регистр не имеет значения, во всех Unix — наоборот).

Раздел позволяет пользователям подключаться к своим рабочим каталогам без явного их описания. При запросе клиентом своего каталога //sambaserver/sergej, машина ищет соответствующее описание в файле и если не находит его, то просматривает наличие этого раздела. Если раздел существует, то просматривается файл паролей для поиска рабочего каталога пользователя, направившего запрос, и при нахождении делает его доступным для пользователя.

Типичное описание данного раздела выглядит так:

Comment = Home Directories # комментарий, который виден в окне свойств сети browseable = no # определяет, выводить ли ресурс в списке просмотра. writable = yes # разрешает (no — запрещает) запись в домашнюю директорию create mode = 0750 # права доступа для вновь созданных файлов directory mode = 0775 # тоже, но только для каталогов

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

Comment = Public Stuff path = /home/samba public = yes writable = no printable = no write list = administrator, @sales

Параметр path указывает на каталог, в котором располагается ресурс; параметр public указывает, может ли пользоваться ресурсом гость, а printable — может ли использоваться данный ресурс для печати. Параметр write list позволяет определить пользователей, которым разрешена запись в ресурс независимо от значения writable (в данном примере это пользователь administrator и группа sales). Возможно использование и противоположного списка — read list. Если есть необходимость скрыть некоторые файлы, то в Unix/Linux для этого имя файла должно начинаться с точки (параметр hide dot files, который регулирует отображение скрытых файлов, по умолчанию равен yes ). Кроме того, есть возможность задать шаблоны имен скрытых файлов, для чего используется параметр hide files. Каждый шаблон начинается и заканчивается с символа косой черты (/) и может содержать символы, применяемые в регулярных выражениях. Например: hide files = /*.log/??.tmp/. Такие ухищрения обходятся пользователям Windows всего лишь установкой режима «Показывать скрытые и системные файлы» Проводника. Для уверенного ограничения доступности (возможности удаления) файла (каталога) используйте параметры veto files и delete veto files.

С CD-приводами дело обстоит несколько сложнее. Все дело в том, что в Unix-подобных системах понятие диска отсутствует как таковое, и для того чтобы получить доступ к нужному устройству, оно первоначально должно быть смонтировано в дерево каталогов (# mount -t iso9660 /dev/cdrom /mnt/cdrom), а после использования, чтобы не разрушить файловую систему, обязательно размонтировано (# umount /dev/cdrom), иначе устройство просто не отдаст диск. Если у вас на сервере запущен демон autofs , то проблема решается просто. Для того чтобы устройство, которое не используется в течение некоторого времени, было автоматически размонтировано, установите нужное значение параметра timeout в файле /etc/auto.master. Например:

/mnt/auto/etc/ --timeout=5

(подобная строка уже там есть, ее нужно только раскомментировать). Затем установите параметры для соответствующего устройства в файле /etc/auto.tab:

Cdrom -fstype=auto,ro:/dev/cdrom

После всего этого прописываем в /etc/smb.conf следующие строки, чтобы сделать доступным данный ресурс:

Path = /mnt/cdrom writable = no

Второй вариант состоит в использовании директив preexec и postexec, которые указывают, какие команды необходимо выполнить при обращении к ресурсу и после отсоединения от него (эти параметры можно указать для любого ресурса и даже в секции global, что открывает большие возможности).

Path = /mnt/cdrom read only = yes root preexec = mount /mnt/cdrom # монтировать ресурс имеет право только root root postexec = umount /mnt/cdrom # естественно, эти точки монтирования должны быть описаны в файле /etc/fstab, иначе необходимо указать и остальные данные.

Теперь при обращении к ресурсу автоматически монтируется CD-ROM, а иногда и размонтируется. Вся проблема в том, что решение о закрытии ресурса должен принять сервер — клиенты, как правило, не извещают об этом. Но обычно это происходит оттого, что ресурсом одновременно пользуются сразу несколько пользователей или на одном компьютере оставлен открытый файл на данном ресурсе (Device busy). Поэтому CD-ROM автоматически не размонтируется, единственный же приемлемый способ, чтобы освободить ресурс — посмотреть с помощью утилиты smbstatus номер процесса, использующего данный ресурс, и убить его командой # kill pid_number (или kill -s HUP pid_number).

Установив необходимую конфигурацию, теперь создадим учетные записи пользователей (за исключением гостевого входа с минимальными правами nobody). Для идентификации пользователей SAMBA используется файл /etc/samba/smbpasswd, в котором содержатся имена и зашифрованные пароли пользователей. Так как механизм шифрования в сетях Windows-машин не совместим со стандартными Unix-механизмами, для заполнения файла паролей используется отдельная утилита — smbpasswd .

# useradd -s /bin/false -d /home/samba/sergej -g sales sergej # smbpasswd -a sergej # smbpasswd -е sergej

В этом примере добавляется новый пользователь sergej , принадлежащий группе sales , с фиктивной оболочкой (возможны варианты /sbin/nologin, /dev/null) и домашним каталогом /home/samba/sergej. Затем создаем пароль для пользователя sergej и последним шагом включаем доступ пользователю, т.к. по умолчанию он отключен. Интересный момент, который может порой сбить с толку. Дело в том, что при подключении к SAMBA-серверу компьютера с Windows NT/2000 пользователю предлагается ввести, как и положено, логин и пароль, а если для доступа используется компьютер с ОС Windows 9x/Me, то пользователю предлагается ввести только пароль, а логин формируется автоматически на основе регистрационного имени.

Можно также сопоставить нескольких пользователей Windows одному пользователю Linux/Unix. Для этого создается файл сопоставления /etc/smbusers.map, в котором отдельной строкой задается каждое сопоставление:

Пользователь_ Linux = user_win1 user_win2 user_winN

В секции добавьте строку username map = /etc/smbusers.map. При этом пользователь Windows должен регистрироваться с паролем того пользователя, с которым он сопоставлен.

С помощью SAMBA можно организовать возможность сетевой печати с компьютеров под управлением Windows (если планируется отдельный сервер печати, то для этого бывает достаточно и машины на базе 486-процессора).

Для этого в секции необходимо записать такие строки:

Printcap name = /etc/printcap # файл описания принтеров, подключенных к системе load printers = yes # указывает на необходимость автоматического включения в список сетевых ресурсов printing = lprng # система печати (для Linux может еще использоваться bsd).

Path = /var/spool/samba # указывает на каталог, в который помещаются задания на печать browseable = yes printable = yes read only = yes

После создания файла протестируйте его с помощью утилиты testparm . К сожалению, при помощи данной программы можно обнаружить лишь синтаксические ошибки, а не логические, поэтому нет никакой гарантии, что описанные в файле сервисы будут корректно работать (при тестировании будут выведены все установки, даже те, которые установлены по умолчанию, — поэтому внимательно просмотрите результат). Но если программа не ругается, можете надеяться, что при запуске файл будет загружен без проблем. Корректность работы принтеров, перечисленных в файле /etc/printcap, с сервером SAMBA можно проверить с помощью утилиты testprns . Плюс не забывайте о.log-файлах: при возникновении проблем там иногда можно найти решение.

Теперь немного о хорошем. Конфигурирование Samba — довольно сложная процедура, но с дистрибутивом поставляется инструмент администрирования на основе Web, который называется swat (Samba Web Administration Tool, ). Swat запускается в виде сервиса или с помощью сервера Apache и предназначен для редактирования файла smb.conf, а также для проверки состояния, запуска и остановки демонов Samba, смены паролей пользователей. Чтобы он работал в виде сервиса, в файле /etc/services должна обязательно присутствовать строка swat 901/tcp, а в файле /etc/inetd.conf — swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat (это если используется сетевой демон inetd , как правило в старых дистрибутивах; в современных дистрибутивах используется более защищенный вариант — xinetd ). Для того чтобы использовать при этом swat в каталоге /etc/xinet.d, создайте файл swat такого содержания:

Service swat { disable = no port = 901 socket_type = stream wait = no only_from = 127.0.0.1 # это строка для запуска только с локальной машины user = root server = /usr/sbin/swat log_on_failure += USERID }

Теперь для запуска Swat в окне браузера введите:

Http://localhost:901

Но перед этим обязательно создайте пользователя admin описанным выше способом. И никогда не запускайте сервис SAMBA от имени root .

После всех изменений в файле smb.conf иногда потребуется перезапустить демон:

Smb: /etc/rc.d/init.d/smb restart

Если после всех перечисленных действий так и не удалось организовать доступ к ресурсам SAMBA, то в дальнейшей настройке помогут такие утилиты как ping (для проверки доступности узла в сети), nmblookup (для запроса имен NetBIOS), или на крайний случай tcpdump . И не забывайте про права доступа, ведь назначив для пользователя каталог /gde/to/w/glubine, вы предоставите ему возможность прочитать (право на выполнение) и предыдущие каталоги.

Теперь поговорим об использовании клиента Samba, ведь нам (пользователям Linux) также хочется работать и с сетевыми ресурсами Windows. Для того чтобы узнать, какие ресурсы доступны, необходимо ввести команду /usr/bin/smbclient -L host_name. Программа запросит пароль, в ответ на что в большинстве случаев достаточно нажать Enter. Теперь, чтобы подключится к требуемому ресурсу, введите имя компьютера и требуемый ресурс. Например:

# /usr/bin/smbclient \\Alex\Sound

(здесь мы пробуем подключиться к папке Sound на компьютере Alex). В результате, если команда введена правильно и такой сетевой ресурс существует, вы должны получить приглашение на ввод пароля. Введите его или нажмите Enter, если пароль не нужен для доступа. В ответ вы получите приглашение samba-клиента: smb: >. В дальнейшем работа происходит путем набора команд, с помощью которых можно произвести все необходимые операции по работе с файлами (копирование, создание, перемещение и т.д.). Для получения справки введите smb: > help. Этот режим несколько неудобен, поэтому в большинстве случаев используют модуль smbfs , входящий в состав samba; но в старых дистрибутивах ядро может быть собрано без поддержки smbfs, и тогда его придется пересобрать. Для того чтобы смонтировать необходимый ресурс, наберите что-нибудь вроде этого:

Mount -t smbfs -o username=user,password=123456,iocharset=koi8-r,codepage=866 //alex/sound /mnt/sound.

Если не указать имя пользователя и пароль, то система сама его у вас спросит. Не забывайте, что, просмотрев файл ~HOME/.bash_history, можно по командам, которые вы набирали, узнать пароль. Еще одна тонкость: если программа smbclient правильно отображает файлы с русскими именами, то модуль smbfs иногда не обращает на другую кодировку абсолютно никакого внимания, даже если указать ее явно. Говорят, это можно исправить патчем, но я для своего Red Hat его еще не нашел.

Если вы хотите, чтобы ресурс SMB монтировался автоматически при запуске системы, добавьте в файл /etc/fstab примерно такую строку:

//guest@alex/sound /mnt/alex/sound smbfs rw, noauto 0 0.

В этом примере от имени пользователя guest (если ресурс поддерживает данного пользователя и если данный пользователь имеет доступ только по паролю, то не волнуйтесь: у вас его непременно спросят) сетевой ресурс sound на компьютере alex монтируется в папку /mnt/alex/sound с возможностью записи в данный каталог. Кстати, клиент Samba отлично видит скрытые сетевые ресурсы, т.е. те, у которых сетевое имя заканчивается знаком $.

Как видите, приходится работать с командной строкой, которая у современного пользователя вызывает тихий ужас. И здесь мир OpenSource пошел ему навстречу — создано много утилит, позволяющих работать с Samba-ресурсами более привычным путем, нажимая кнопки в графических оболочках. Самая популярная программа, входящая в дистрибутив Mandrake и производных от него, а также Debian — gnomba . В любом случае ее можно найти на большинстве серверов с ПО для Linux (на ftp://ftp.altlinux.ru/ видел точно). Данная утилита позволяет просмотреть доступные сетевые ресурсы () и при необходимости смонтировать в нужный каталог, при этом возможен вариант монтирования с указанием лог ина и пароля для тех ресурсов, которые этого требуют. Возможен запуск файлового менеджера при монтировании (по умолчанию gmc ), создание каталогов для монтируемых ресурсов, задание опции автоматического сканирования при запуске программы (возможно с использованием протокола SMB по умолчанию) и сканирования по IP-адресам (планируется с использованием WINS-протокола). По невыясненным мною причинам в некоторых дистрибутивах при сканировании с помощью SMB-протокола не выводились сетевые ресурсы, поэтому я всегда использую второй метод, благо он действует безотказно, необходимо лишь задать диапазон IP-адресов для сканирования (если знаете). Для того чтобы отображались правильно русские имена файлов, не забудьте установить шрифты koi8-r во вкладке Опции > Выбор шрифта , а также проверить строки, указывающие кодировку кириллицы в файле smb.conf (см. выше).

Если gnomba может только монтировать и размонтировать ресурсы, то программа xsmbrowser позволяет еще и заходить в них как в папки на локальном компьютере (). Правда, мне пока не удалось заставить эту программу понимать файлы с русскими названиями, но есть и положительные стороны: при работе данной программы все команды по монтированию и различные сетевые запросы выводятся на консоль, что позволяет хорошо разобраться в них. Разработчики KDE тоже постарались: через Preferences > Information доступна утилита Samba Status , отображающая все подключения к/от локального компьютера, одновременно являющаяся удобным средством просмотра.log-файлов. Аналогичную информацию представляет и утилита komba , которую можно найти на http://linux.tucows.com/ ().

Как бы я ни хотел рассказать вам больше, но журнал есть журнал — всего не уместишь. Далее в помощь вам придут вездесущие man и info. Также всю необходимую справочную информацию можно получить из утилиты SWAT, к тому же в Red Hat 7.3 обнаружилась книга Using Samba Robert"a Eckstein"a (язык английский — плохо, совершенно бесплатно — хорошо: /usr/share/swat/using_samba), доступная также из SWAT (). В каталоге /usr/share/doc/samba можно найти дополнительную документацию, FAQ и примеры конфигурационных файлов. В различных форумах можно встретить довольно противоречивые мнения о работе Samba, от крайне отрицательных до полного восторга. Лично я на стороне сторонников этого эмулятора Windows NT, к тому же по результатам тестов при одинаковом оборудовании сервер Samba показывает производительность примерно на 25-30% выше, чем компьютер под управлением системы от Microsoft. Успехов.