Anshlag - калужское объединение друзей - туристов. Отдых, путешествия, туризм.

Anshlag - калужское объединение друзей - туристов. Отдых и путешествия по Карелии, туризм, водные походы. Отчеты о походах, рассказы туристов, новости туризма. Форум, гостевая, походные фотографии.



  
 Суббота, 23 марта 2019, 11:16:54 

Установка и настройка Samba 2.2.0
Установка и настройка Samba 2.2.0

Быстрый переход ...

» Установка и настрой...
» Вопросы по Samba

Установка и настройка Samba 2.2.0.

Для начала вам потребуется пакет Samba. Я возьму для примера версию
2.2.0, хотя как всегда, различия в версиях не так важны. Хотя именно в 2.2
наконец-то сделали возможным просмотр списка пользователей с windows машин.

Если в вашем дистрибутиве нет установленного пакета samba, то установите его
или скомпилируйте.

Для компиляции распакуйте samba командой tar zxvf samba-2.2.0.tar.gz. Затем
перейдите в каталог samba-2.2.0/source, в нем расположены исходные тексты
сервера.

Теперь необходимо предварительно отконфигурировать исходные тексты под
нашу систему, для этого выполним команду ./configure --with-msdfs
--with-smbmount --prefix=/samba . (в одну строчку)

Этим мы дали команду включить в сборку smbmount, который
служит для монтирования SMB-ресурсов в файловую структуру Linux, плюс включили
поддержку Microsoft DFS и приказали устанавливаться в каталог /samba. Можно
добавить и другие параметры (подробнее ./configure --help), но тут я их
не буду касаться.

Если configure отработал без ошибок, можете начать сборку Samba, выполнив
команду make. После отработки команды можете дать команду make install,
тем самым установив Samba на причитающееся ей место (у меня /samba)

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

Копируем из каталога examples файл smb.conf.default в /samba/lib/smb.conf

При любых изменениях лучше перезапустите smbd - killall -HUP smbd не всегда
срабатывает корректно.

Итак, начнем лепить из samba то, что нам надо - открываем в любимом текстовом
редакторе smb.conf и начинаем аккуратно править.

Секция [global] - описание общих настроек

workgroup = SUPERS

Название рабочей группы или домена, в которой участвует сервер.

netbios name = Super

Как будет откликаться сервер по NetBIOS протоколу. НЕ ДЕЛАЙТЕ ЕГО ТАКИМ ЖЕ,
КАК И ИМЯ РАБОЧЕЙ ГРУППЫ. Иначе, если вы установите samba как PDC, Windows
при попытке залогинится будет ругаться на неправильный параметр.

server string = Super Server

Описание сервера, которое появляется в графе NT Description в сервер-менеджере.

hosts allow =192.168.1. 127.

Список сетей, которым разрешен доступ к серверу.

load printers = no

Нет у меня сейчас принтеров.

guest account = nobody

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

log file = /samba/var/log.%m

имя лог-файла. %m заменяется на имя машины

max log size = 50

и его максимальный размер

security = user

как будем аунтифицироваться? тип user - каждый сам по себе.

encrypt passwords = yes

разрешаем шифрованные пароли.

local master = yes

samba сразу берет на себя роль мастер-браузера.

preferred master = yes

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

wins support = yes

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

dns proxy = yes

и заодно будем пытаться отресолвить netbios имена через DNS.

character set = KOI8-R
client code page = 866

Эти две строчки отвечают за нормальныю перекодировку имен файлов.

time server = True

Это приказывает nmbd анонсировать себя как "сервер точного времени" для
Windows клиентов.

[homes]
comment = Home Directories
browseable = no
writable = yes

Эти строчки описывают доступ до домашних каталогов пользователей.

Все. Самые первые правки в конфиге завершены.

Для проверки можете запустить /samba/sbin/smbd -D и /samba/sbin/nmbd -D и посмотреть
по лог-файлам (/samba/var/log.*), все ли в порядке.

После запуска у вас в сети должен появиться сервер с заданным вами именем,
который (в терминах Win98) не отвечает на удаленные запросы и при попытке
подключения требует ввести сетевой пароль на IPC$. Все правильно. Так и должно
быть - ведь того пользователя, под которым вы пытаетесь подключться, samba пока
не знает.

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

/samba/bin/smbpasswd -a user

Добавляем пользователя user. У вас спросят два раза пароль, который должен быть

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

/samba/bin/smbpasswd -e user

Включаем доступ пользователю user (по умолчанию он выключен).

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

ДЛЯ НЕВЕРУЮЩИХ. Скрипты source/scripts/mk*.sh просто втупую
берут пользователей из подсунутого файла и выдают в формате smbpasswd на
выход. Никакие пароли при этом туда не прописываются, так что все равно
прописывать пользователей придеться вручную (плюс к тому же вычищать всяких
operators и root). Если вы знаете, где есть скрипт, который умеет переносить
базу пользователей автоматом - дайте мне знать.

Все, теперь команда /samba/bin/smbclient -L \\\\super -U user после ввода
пароля должна выдавать что-то подобное:

added interface ip=192.168.1.136 bcast=192.168.1.255 nmask=255.255.255.0
Got a positive name query response from 127.0.0.1 ( 192.168.1.136 )
Password:
Domain=[SUPER] OS=[Unix] Server=[Samba 2.2.0]

Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Super Server)
ADMIN$ Disk IPC Service (Super Server)
user Disk Home Directories

Server Comment
--------- -------
Super Super Server

Workgroup Master
--------- -------
SUPERS SUPER

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

Если все так, то поздравьте себя - ваш Samba сервер работает. Но расслабляться
рано - мы проделали лишь малую часть работы, хотя для большинства случаев этого
хватит "за глаза".

Теперь давайте сделаем из Samba нормальный PDC. Добавляем/исправляем в smb.conf
следующие строчки:

domain master = yes

Указывает, что мы будем master browser в домене. Осторожнее, если у вас уже
есть PDC - это его работа.

domain logons = yes

Win9x машины будут забирать скрипты инициализации с сервера.

logon script = %U.bat

Логин скрипты будут иметь вид user.bat - на каждого пользователя свой скрипт. Но
никто не мешает соорудить конструкцию типа %m-%U.bat или подобную.

logon path = \\%L\Profiles\%U

Сетевой путь до логин-скриптов.

Теперь осталось раскомментировать описания [netlogon] и [Profiles], не забыв
привести имена в соответствие с нужными.

[netlogon]
comment = Network Logon Service
path = /usr/local/samba/lib/netlogon
guest ok = yes
writable = no
share modes = no

[Profiles]
path = /usr/local/samba/profiles
browseable = no
guest ok = yes

ВНИМАНИЕ - Убедитесь в правильности путей.

Теперь перезапустите сервисы. Теперь вы можете настроить Windows машины так,
что бы они использовали ваш сервер как домен-контроллер и попробовать ваш
домен-контроллер в деле. Если есть необходимость, вы можете разместить
файлы с логин-скриптами в каталоге, на который указывает netlogon. В нашем
случае поместив туда файл user.bat мы заставим машину исполнять его при
логине пользователя user.

Ну а профайлы для "блуждающих" пользователей будут сохраняться в каталоге
profiles/имя_пользователя (каталог необходимо предварительно создать). Где
это указать в настройках Windows - читайте соответсвующие доки.

Итак, просто сервер или PDC мы сделали. Как сделать BDC или что-то подобное,
подробно описано в доках по samba. Здесь я перепечатывать инструкции не буду.

Теперь давайте разберемся, как создавать другие "шары" или попросту говоря,
ресурсы.

В квадратных скобочках указывается имя ресурса.
[exchange]

Указываем комментарий для данного ресурса
comment = User staff

Путь для этого ресурса на диске
path = /opt/exchange

Эта папка видна всем
public = yes

В нее можно писать
writable = yes

... но нельзя печатать
printable = no

файлы, создаваемые разными пользователями, будут принудительно отданы во
владение nobody.nobody
force user = nobody
force group = nobody

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

Лично я советую использовать другой вариант - в описании ресурса указать

create mask = 0666
directory mask = 0777

Этим мы приказываем sambe устанавливать права для создаваемых в этом ресурсе
файлов как 666 (rw-rw-rw-) и каталогов 777 (rwxrwxrwx). В итоге любой
пользователь, имеющий доступ до этого ресурса, может изменить или удалить
любой файл. Для "файловой помойки" - самое то, что надо. И "откуда растут" ноги
у файла - тоже отследить чуть попроще становится. Следует еще раз отметить, что
описание вышеуказанного ресурса составлено так, что бы "файловая помойка"
была доступна только для пользователей, которых знает сервер. Что бы сделать
ее по настоящему "дырой" надо добавить guest ok = yes - тогда в этот ресурс
могут писать все, кто умеет возить мышью в Windows.

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

Но вышеперечисленными параметрами дело не ограничивается - в man smb.conf
рассказано, как ограничить число пользователей, имеющих право записи в папку
(write list) и многое другое.

Но все Windows да Windows - Linux же тоже может спокойно воспользоваться
предоставляемыми другими серверами ресурсами. Просто наберите в консоли строчку

mount -t smbfs -o username=user,password=123,iocharset=koi8-r,codepage=866
//super/exchange /mnt

(здесь я указал, что подключаемся пользователем user с паролем 123).
К сожалению, модуль smbfs без прикладывания напильника чихает на указание
кодировок, поэтому у вас будут проблемы с файлами, которые содержат русские
имена - пока придеться пользоваться smbclient - хоть он вроде понимает
все правильно. Найти патч, который бы хорошо работал с моим ядром, мне пока
не удалось. Если вам тоже, то просто не набирайте строки с iocharset и codepage.

Вот вроде и все - сервер работает.



Прокомментировать
Хотите оставить свои комментарии? Зарегистрируйтесь на нашем сайте!

 
(c) Anshlag 2002 - 2008