MyTetra Share
Делитесь знаниями!
Сетевой диск (samba), настройка 1С в файловом режиме
Время создания: 04.02.2012 12:43
Автор: Кузнецов Константин
Текстовые метки: linux, samba
Раздел: Компьютер - Linux - Samba
Запись: xintrea/mytetra_syncro/master/base/13283486221oqzt4e2v9/text.html на raw.github.com

1. Введение

2. Сведения о пакете SAMBA

3. Настройка анонимного samba-сервера

4. Настройка samba для авторизованного доступа

5. Дополнительные возможности

1. Введение

Многие сталкивались с работой с данными по сети через "сетевое окружение". Сразу же вспоминаются такие термины, как "расшарить каталог" и "сетевой принтер". Все это относится к протоколу SMB

SMB (сокр. от англ. Server Message Block) — сетевой протокол прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам, а также для межпроцессного взаимодействия. Первая версия протокола была разработана компаниями IBM, Microsoft, Intel и 3Com в 1980-х годах; вторая (SMB 2.0) была создана Microsoft и появилась в Windows Vista. В настоящее время, SMB связан главным образом с операционными системами Microsoft Windows где используется для реализации «Сети Microsoft Windows» (англ. Microsoft Windows Network) и «Совместного использования файлов и принтеров» (англ. File and Printer Sharing).

Для реализации этого протокола (как серверной его части, так и клиентской) в операционной системе Linux присутствует программное обеспечение SAMBA

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

Начиная с третьей версии Samba предоставляет службы файлов и печати для различных клиентов Microsoft Windows, и может интегрироваться с операционной системой Windows Server, либо как основной контроллер домена (PDC), либо как член домена. Она также может быть частью домена Active Directory.

Samba работает на большинстве Unix-подобных систем, таких как GNU/Linux, POSIX-совместимых Solaris и Mac OS X Server, на различных вариантах BSD; в OS/2 портирован samba-клиент, являющийся плагином к виртуальной файловой системе NetDrive. Samba включена практически во все дистрибутивы GNU/Linux.

О настройке данного инструмента мы поговорим в этой статье.

2. Сведения о пакете SAMBA

Пакет SAMBA дает нам возможность выступать в локальной сети в качестве smb-сервера, т.е. предоставлять доступ к некоторым данным. Конфигурационный файл /etc/samba/smb.conf имеет следующий синтаксис:

[секция1]

опция1 = значение

опция2 = значение

[секция2]

опция1 = значение

опция2 = значение

При этом, согласно man smb.conf, имеются три зарезервированные секции: [global] , [homes] и [printers].

  • Секция [global] определяет некоторые опции, значения которых будут распространяться на все остальные секции, если в них явно не указано обратное.
  • Секция [homes] позволяет предоставить удаленным пользователям доступ к своим (и только своим) домашним директориям. Так что, если пользователи попытаются подключиться к этому сетевому ресурсу (адрес smb://server/username/ или \\server\username), то они будут подключены к персональным домашним директориям, закрепленным как "домашний каталог" за пользователем, под учетной записью которого они зарегистрировались на samba-сервере. Заметим, что для того чтобы удаленный пользователь мог авторизоваться на samba-сервере, мало добавить соответствующего пользователя в систему (useradd), необходимо еще создать samba-пароль для этого пользователя (smbpasswd), который может отличаться от системного (passwd).
  • Секция [printers] отвечает за определение опций доступа к принтеру по сети, но это мы рассматривать не будем, уж больно сложно там для меня все.

С помощью SAMBA можно настроить наш сервер как PDC (Primary Domain Controller), в этом случае добавляются еще две зарезервированные секции: [netlogons] и [Profiles].

Остальные секции, например [somesection] будут соответствовать шарам, т.е. клиент на данном компьютере увидет шару somesection с правами, описанными в данной секции.

При всем при этом обращаю внимание на то, что все опции делятся на 3 типа:

  1. употребляемые исключительно в секции [global], они в мане отмечены (G)
  2. употребляемые исключительно в шаровых секциях (S)
  3. употребляемые везде (никак не помечены).

Так же упомяну одну интересную опцию, смысл которой необходимо понять и запомнить - security (G). Она может принимать следующие значения:

1) security = share

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

2) security = user

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

3) security = server не рассматривается в данной статье

4) security = domain не рассматривается в данной статье

С этим понятно. Приступим к настройке.

3. Настройка анонимного samba-сервера

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

[global]

# рабочая группа, в которой будет виден наш сервер

workgroup = WORKGROUP

# сетевое имя компьютера

netbios name = SERVER

# тип предоставления доступа

security = share

После чего можно нормально (анонимно) зайти на сервер, но шар все еще нет. Добавляем:

# имя сетевого ресурса, под которым он будет виден по сети

[share]

# комментарий, его можно не писать

comment = share

# путь к каталогу, содержимое которого будет отображаться в данной шаре

path = /home/ftp/upload

После перезапуска сервиса мы анонимно сможем зайти на сервер и увидеть там шару "share", но зайти в неё не сможем, так как согласно man smb.conf по умолчанию у нас guest ok = no и guest only = no, что запрещает доступ анонимным пользователям к шаре.

Как же так, вы же сами сказали...

Секция [global] определяет некоторые опции, значения которых будут распространяться на все остальные секции, если в них явно не указано обратное.

Мы в неё записали security = share, и явно обратное у нас не указано.

Так то оно так, но опция security определяет тип авторизации при подключении к серверу, а guest ok и guest only - к шаре, и в данном случае они друг к другу никак не относятся и отменять друг друга не могут. Продолжим.

Подключиться к такой шаре сможет только авторизованный пользователь, но т.к. у нас security = share, то у нас при подключении к серверу не спрашивают логин и пароль. Для анонимного доступа к шаре необходимо добавить опцию "guest ok = yes" в глобальную секцию либо в секцию шары. Название опции говорит само за себя - разрешить подключаться гостям (анонимным пользователям). Значит теперь к этой шаре могут подключаться пользователи и гости. Если мы хотим, чтоб подключались ТОЛЬКО гости, добавляем "guest only = yes".

[global]

workgroup = WORKGROUP

netbios name = SERVER

security = share

[share]

comment = share

path = /home/ftp/upload

guest ok = yes

guest only = yes

Отлично, теперь для анонимного подключения к ресурсу smb://server/share нам ничто не мешает (не забудьте проверить права на каталог /home/ftp/upload !!!)

4. Настройка samba для авторизованного доступа

Для запрета анонимного подключения к серверу можно пойти разными путями:

  1. оставить все как есть, но установить права на папки, к которым ведут шары, так, чтобы подключались только определенные пользователи.
  2. оставить security = share, но в шарах убрать guest ok = yes и guest only = yes, таким образом анонимные пользователи смогут видеть список шар, но зайти в них - нет;
  3. установить security = user, и в этом случае не зависимо ни от каких других опций будет запрашиваться авторизация пользователя еще при подключении к серверу.

Путь №1 мы рассматривать не будем, т.к. во-первых это топорное (глупое) решение, а во-вторых, потому что это решение никак не связано с темой данной статьи.

Рассмотрим подробнее путь №2. Итак, анонимный пользователь подключился к серверу, увидел шары, но зайти не сможет. Для решения данной проблемы необходимо подключать удаленный ресурс с принудительной авторизацией (под другим именем). Такая возможность присутствует у smb-клиентов даже в windows-like операционных системах. Но сначала необходимо добавить пользователя в систему:

useradd test

а потом назначить ему samba-пароль:

smbpasswd -a test

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

Путь №3 отличается от второго лишь тем, что логин и пароль у нас будут спрашивать еще на момент подключения к серверу и никаких дополнительных танцев плясать не нужно.

Стоит заметить, что доступ к шаре можно ограничить определенным пользователям или группе пользователей с помощью опции valid users

valid users = user1,user2,@group1

5. Дополнительные возможности

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

Оптимальная конфигурация для предоставления доступа к базам 1С:Бухгалтерии

Вот как рекомендуют настроить samba для предоставления доступа к базам 1С наши соотечественники - разработчики из компании etersoft:

http://www.etersoft.ru/content/view/56/156/#linuxsamba-cifs

Вот выдержка оттуда:

Настройка совместной работы по протоколу CIFS

WINE@Etersoft позволяет настроить совместное использование файловой базы данных в гетерогенной среде. В качестве файлового сервера при этом может быть использован SAMBA 3.0.14 и выше, Windows 2000 и выше, или другой файловый сервер, работающий по протоколу CIFS. При этом используется специальный модуль ядра Linux (CIFS@Etersoft), модифицированный для корректной работы WINE. Поставляется он в пакете etercifs.

Настройка Linux/Samba-сервера для совместной работы по протоколу CIFS

Никаких особенных настроек делать не требуется. Если у вас сервер уже настроен и работает с Windows-клиентами, то он будет работать и с WINE@Etersoft.

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

Советы по настройке SAMBA-сервера

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

testparam -v

Будет выведены все текущие значения параметров. Изменить их можно в конфигурационном файле smb.conf, который обычно находится в каталоге /etc/samba.

Рекомендуется, чтобы oplocks были включены (включены по умолчанию)- это улучшит производительность в монопольном режиме. kernel oplocks (включены по умолчанию) можно выключить, это немного снизит загрузку на систему. Включенные логи (log level в значении больше 0) могут в несколько раз замедлить производительность. Проверьте, что указано use sendfile = yes (ускоряет передачу больших блоков файлов).

Какие-либо другие параметры, особенно связанные с доступом к файлам и блокировкам, использовать не рекомендуется.

Таким образом пример оптимальных настроек может быть таким:

; oplocks = yes

kernel oplocks = no

use sendfile = yes

log level = 0

Остальные параметры по поводу locks/oplocks должны быть установлены по умолчанию. Параметр strict sync включает выполнение команд по сбросу буфера на диск (flush). По умолчанию он выключен, и это ускоряет работу.Частой проблемой является несоответствие прав, под которым обращается самба-сервер, с правами на файлы, к которым он обращается. Например, при использовании security = share и обращении к серверу без указания пользователя/пароля он может обращаться к файлам от имени пользователя nobody или pcguest, которые вряд ли имеют права на изменение разделяемых файлов.В примере ниже Самба с ресурсом sharewine всегда будет обращаться от имени wine: winetester к файлам в каталоге/var/local/share

[sharewine]

path = /var/local/share

public = yes

force user = wine

force group = winetester

writable = yes

guest ok = yes

Настройка корзины

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

Добавляем в секцию шары следующие строки:

vfs objects = recycle

# куда бедет перемещаться удаляемые файлы

recycle:repository = /mnt/hdd2/lost_n_found

# сохранять структуру каталогов

recycle:keeptree = yes

# при дублировании имен файлов делать разные версии

recycle:versions = yes

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

recycle:exclude = *.tmp | *.TMP | ~$* | ~WRL*

# исключить из перемещения в корзину директории

recycle:excludedir = /mnt/hdd1/temp

# размер корзины

recycle:maxsize = 104805760

# FIXME - не знаю

recycle:touch = yes

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования