Реклама:

info.krc.karelia.ru

win -:|:- koi -:|:- iso -:|:- dos -:|:- mac

Start -:|:- Проекты -:|:- О нас

Данная статья была изначально написана для
LinuxRSP (www.citycat.ru/linux)

SAMBA в подробностях

Юрий Лушня


При написании данного документа была использована одна из последних
версий пакета SAMBA (2.0.6). Данный пакет (samba-2.0.6.tar.gz) можно
получить на домашней странице SAMBA.


После получения данного пакета извлекаем все то, что находится под "грифом"
*.tar.gz, например, в директорию /tmp (причем, для этого не обязательно быть
root'ом :), т.е:

$ tar -zxvf samba-2.0.6.tar.gz

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

В директории samba-2.0.6 находятся пакеты со скриптами. Нас больше всего
интересует тот пакет, который позволит нам сделать RPM-пакет, чтобы
инсталлировать Самбу как RPM.

Для этого делаем следующие шаги (вот здесь вам уже понадобится проявить
себя в роли root'а):

$ su
# chown -R root:root samba-2.0.6
# cd samba-2.0.6/packaging/RedHat
# sh makerpms.sh

Вряд ли это займет много времени (смотря, какая у вас конфигурация ПК). Если
все прошло успешно, тогда будут созданы следующие файлы:

/usr/src/redhat/RPMS/i386/samba-2.0.6-19990228.i386.rpm
/usr/src/redhat/SRPMS/samba-2.0.6-19990228.src.rpm

Если все нормально и никаких ошибок нет, тогда остается только
проинсталлировать этот пакет:

# rpm -Uvh /usr/src/redhat/RPMS/i386/samba-2.0.6*.i386.rpm

Если же у вас возникли проблемы при создании RPM-пакета (это наблюдалось
при установке Самбы 2.0.6 на Slackware 7.0), тогда придется обойтись без него
и, как говорится "пойти другим путем".

Извлекаем файлы из архива samba-2.0.6.tar.gz:

tar -zxvf samba-2.0.6.tar.gz

переходим в созданную директорию:

cd samba-2.0.6

переходим в директорию с документацией:

cd /docs/textdocs

читаем (посредством редактора ViM) данный файл (который прольет свет на
наши дальнейшие действия):

vi UNIX_INSTALL.txt

возвращаемся к директории samba-2.0.6:

cd samba-2.0.6

набираем (сначала можно это делать как простой пользователь (user), а перед
использованием команды make install придется набрать su, чтобы "стать"
root'ом):

$ ./configure

$ make

$ su

# make install

Дальше мы рассмотрим создание нового пользователя и группы, а также
некоторых каталогов. Кроме этого, мы изменим пару файлов, чтобы можно
было использовать Samba Web Administration Tool (SWAT).

Так как наш уровень секретности (security level) равен shares, создадим
определенную учетную запись нашего гостя (guest).

Нового пользователя будем именовать smbuser, а группу, к которой он будет
принадлежать - smb group.

Кроме этого, имеем еще несколько пользователей, например, "ika" и "serg".
Все файлы, которые доступны посредством записи в smb.config public
share=yes будут доступны пользователю "smbuser" и принадлежать группе
"smb group".

Если у вас есть Linuxconf (очень нужная программа!), то создание пользователя
и группы покажется вам сказкой. Работать в ней очень просто и, главное, все
понятно. РЕКОМЕНДУЮ использовать ЕЕ при создании пользователя и
группы.

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

Создали группу "smb group" и пользователя "smbuser" (домашняя директория
новосозданного пользователя должна находится в /home/public).

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

Public Directory

Итак, директорию public мы уже имеем (в каталоге /home). Данная директория
должна принадлежать пользователю "smbuser" и группе "smb group". Так как
файлы в директории должны ВСЕГДА принадлежать группе "smb group", то
нам придется установить соответствующий SGID для данной группы. Так же
при прописке SGID'а стоит обратить внимание на то, что директория
/home/public должна иметь открытый доступ для чтения и для записи.

Сделав выводы из вышеперечисленного, устанавливаем SGID:

chown smbuser:smb /home/public

# chmod 2777 /home/public

Что у нас получилось? Теперь каждый файл, который создается в /home/public
будет принадлежать группе "smb group" в независимости от того, кто создал
этот файл.

Data Directory

Моя "data directory" /home/samba/data. Данная директория должна быть
доступна только некоторым пользователям (тем, которые принадлежат группе
"smb group"). Исходя из этого, делаем следующие действия:

# mkdir /home/samba

# chown smbuser:smb /home/samba

# chmod 2770 /home/samba

# mkdir /home/samba/data

# chown smbuser:smb /home/samba/data

# chmod 2770 /home/samba/data

Обратите внимание, что я устанавливаю SGID таким образом, чтобы те файлы,
которые будут создаваться в данных каталогах принадлежали группе "smb
group".

Чтобы более красочно привести пример настройки SAMB'ы и получить доступ
к созданным каталогам, я добавляю себя к "smb group". Делаю я все это через
уже упоминавшуюся программу Linuxconf. Если у вас с ней проблемы, тогда вам
остается только использовать команду usermod или же все прописывать
"ручками" в файле /etc/group (последнее НЕ РЕКОМЕНДУЕТСЯ, хотя если вы
уверены в том, что делаете, тогда...).

Теперь проверьте ваш файл hosts (/etc/hosts). В нем должны быть следующие
записи (здесь приведится пример для моей машины):

/etc/hosts

127.0.0.1 localhost localhost.localdomain

192.168.0.1 elk

192.168.0.2 ika

192.168.0.3 serg

Теперь создайте lmhosts-конфигурационный файл. Данный файл будет
отображать hostnames (или IP-адреса) к NetBIOS-компьютерам. Данный файл
будет выглядеть примерно так:

# /etc/lmhosts

# здесь слева hostname (можно указывать IP-адресом),

# а справа NetBIOS-имя

localhost elk

ika ika

serg serg

Использование SWAT

Для использования SWAT'а проверим два конфигурационных файла:

services (/etc/services) и inetd.conf (/etc/inetd.conf).

По умолчанию SWAT запускается с 901-го порта. Это можно изменить, но в
данном документе приводится пример использования SWAT'а именно на этом
порту, поэтому пока оставьте все так как есть.

Итак, проверяем вышеуказанные конфигурационные файлы:

>/etc/service
swat 901/tcp # в данном случае SWAT-service
# используется через inetd

Если эта строка присутствует в /etc/service, тогда все ОК. Если строки нет,
тогда добавьте ее в конец данного файла. Данная строка говорит нам о том, что
SWAT запускается на 901-м порту.

Теперь в файл inetd.conf (/etc/inetd.conf) добавляем следующую строку:

swat stream tcp nowait.400 root /usr/sbin/swat swat

Securing SWAT

Для усиления безопасной работы посредством SWAT'а не помешает изменить
строку выше на (использование TCP wrappers):

swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

Обсуждение TCP wrappers выходит за рамки данной статьи, поэтому я
рекомендую вам # man hosts.allow.

Теперь переходим в файл /etc/hosts.deny и просматриваем его. Он должен
иметь запись:

ALL: ALL

Добавим в /etc/hosts.allow следующие строки:

swat: 127.0.0.1 192.168.0.

Это позволит нашим пользователям (elk, ika, serg) обращаться к SWAT.

Запуск SWAT

Сначала перезапустим inetd:

# killall -HUP inetd

Теперь в браузере (какой вам больше нравится, мне, например, Lynx) набираем:

http://192.168.0.1:901

Если все правильно настроено, то вы увидите форму, в которой нужно будет
ввести имя пользователя (username) и пароль (password). Здесь введите имя
пользователя "root" и соответственно пароль суперпользователя (root'a).

Конфигурирование Самбы (Configuring Samba)

Итак, SWAT запущен, и теперь вы можете ознакомить себя с его работой. Как
вы видите, SWAT - это программа с прекрасным интерфейсом, которая создает
/etc/smb.conf конфигурационный файл. ВНИМАНИЕ! Если вы уже имеете
/etc/smb.conf, то SWAT затрет форматирование и комментарии в нем. Но в то
же время, SWAT создаст для вас хороший конфигурационный файл. Вот
пример моего /etc/smb.conf файла:

# Samba config file created using SWAT
# from elk (192.168.0.1)
# Date: 1999/10/22 20:12:11
# Global parameters

workgroup = elk@net
server string = Samba SMB Server
nterfaces = 192.168.0.1/24 127.0.0.1/24
bind interfaces only = Yes
security = SHARE
log file = /var/log/samba/log.%m
max log size = 50
read bmpx = No
time server = Yes
socket options = TCP_NODELAY
os level = 65
preferred master = Yes
dns proxy = No
wins support = Yes
guest account = smbuser
hide dot files = No

[public]

comment = Public
path = /home/public
read only = No
create mask = 0664
directory mask = 0775
guest ok = Yes

[data]

comment = Data
path = /home/samba/data
read only = No
create mask = 0660
directory mask = 0770
guest ok = Yes

Starting Samba

Теперь вы можете запустить SAMB'у. Это можно сделать или посредством
SWAT'a или же из командной строки. Если вы хотите использовать SWAT,
тогда идите на "Status page" и запускайте SMBD и NMBD. Если это уже
было запущено, тогда просто остановите и перезапустите вышеуказанные
демоны, чтобы увидеть ваш новый конфигурационный файл.

С командной строки запуск данных демонов выглядит так:

# /etc/rc.d/init.d/smb stop
# /etc/rc.d/init.d/smb start

У вас все работает? Чудесно. Теперь протестируем нашу SAMB'у.

Testing Samba

Посмотрим, работает ли это реально:

# smbclient -L localhost

Выполняющаяся программа попросит вас ввести пароль. Здесь можете просто
нажать ENTER. Потом вы увидите примерно следующее:

Domain=[HOROSHO] OS=[Unix] Server=[Samba 2.0.6]

Sharename Type Comment

--------- ---- -------

public Disk Public

data Disk Data

IPC$ IPC IPC Service (Samba SMB Server)

Server Comment

--------- -------

elk Samba SMB Server

Workgroup Master

--------- -------
HOROSHO elk

Если вам удалось все это увидеть (примерно это, потому что данный пример
приведен для моей машины), тогда все ОК. Нам остается только внести
некоторые изменения в ПК, которые работают под Windows OS.

Configuring Windows

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

Сначала удостоверимся, что свойства сети настроены так, как нам надо. Для
этого, заходим в свойства сети (щелкаем правой клавишей на значке рабочего
стола "Сетевое окружение" ("Network Neighborhood") и выбираем
"Свойства"). Далее заходим на закладку "Компьютер" ("Identification"). В
поле "Имя компьютера" ("Computer name") прописываем ika, в закладке
"Рабочая группа" ("Workgroup") прописываем HOROSHO, ну а в закладке
"Описание компьютера" ("Computer Description") можете прописать что
угодно.

Дальше переходите на закладку "Управление доступом" ("Access Control") и
поставьте флажок в поле "На уровне ресурсов" ("Share-level access control").

Теперь переходите в самую первую закладку "Конфигурация" ("Configuration")
и нажмите на кнопке "Доступ к файлам и принтерам" ("File and print
sharing"). В появившемся окне необходимо поставить флажки в поле "Файлы
этого компьютера можно сделать общими" ("I want to be able to give others
access to my files") и "Принтеры этого компьютера можно сделать общими"
("I want to be able to allow others to print to my printer(s)").

И, наконец, мы указываем Windows, что elk является сервером WINS и именно
он будет browse master'ом. Для этого переходим в свойства TCP/IP протокола.
В появившемся окне выбираем "Конфигурация WINS" ("WINS Configuration").
Ставим флажок в поле "Включить распознавание WINS" ("Enable WINS
Resolution"). В появившемся поле "Основной сервер WINS" ("WINS Server
Search Order") прописываем IP-адрес сервера (elk'a) - 192.168.0.1 и нажимаем
"Добавить" ("Add") или просто [ENTER]. Переходим на закладку
"Дополнительно" ("Advanced") и кликаем на "Browse Master" в левом окне, а в
правом устанавливаем значение "Disabled". Вот и все. Теперь остается только
несколько раз нажать кнопку "ОК" и перезагрузить Windows.

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

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

Вот и все. Остается только ввести вас в краткий курс секретности SAMB'ы.

Securing Samba

Чем больше вы прибавляете сервисов на вашей машине, тем больше дырок у
вас возникает. Это не секрет. Сейчас вы добавили SMB-сервис. Как его
защитить?

Вариант љ 1.

В файл smb.conf (/etc/smb.conf) можно ввести следующие строки:

interfaces = 192.168.0.1/24 127.0.0.1/24
bind interfaces only = Yes

Вариант љ 2 (более параноидальный). Фильтрация портов

SAMBA использует 137-139 порты. Есть смысл просто заблокировать их из
TCP и UDP. Если у вас стоит ядро версии 2.0 (это можно легко узнать набрав в
консоли uname -a), тогда для фильтрации используйте ipfwadm, а если ядро
версии 2.1 или 2.2 - ipchains.

Вот как это делается с помощью ipfwadm:

# Добавляем нижеприведенные записи
в /etc/rc.local:

ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0
ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0
ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0
ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0

Это запретит (deny) все входящие и исходящие TCP и UDP пакеты для 137-139
портов на интерфейсе eth0. Для более подробной информации рекомендую вам
почитать man ipfwadm.

При наличии ядер 2.1-2.2 вы сможете сделать это с помощью ipchains:

# Добавляем нижеприведенные записи в /etc/rc.local:

ipchains -A input -p tcp -j DENY --destination-port 137:139 -i eth0
ipchains -A input -p udp -j DENY --destination-port 137:139 -i eth0
ipchains -A output -p tcp -j DENY --destination-port 137:139 -i eth0
ipchains -A output -p udp -j DENY --destination-port 137:139 -i eth0

Как видите, ничего нового и сложного вы не увидели. И ipfwadm и ipchains
выполняют одно и тоже, только для разных версий ядер.

Вы можете также установить один из трех уровней секретности при входе на
ваш SAMBA сервер (user-level security, share level security, domain level
security).

О назначении каждого из них вы можете прочитать в предыдущей моей статье
о SAMB'е на сайте LinuxRSP . Также рекомендую вам не лениться и хоть
изредка заглядывать в HOWTO, и, кроме этого, иногда заглядывайте на
домашнюю страничку SAMB'ы.

Со времени публикации статьи "Файловый сервер под SAMBA? Без
проблем" на мой адрес пришло множество писем с просьбой помочь в тех
или иных вопросах, связанных с работой SAMB'ы.

К сожалению, из-за отсутствия времени, я решил отвести ответам
отдельный материал (статью), который (возможно) в скором времени
появится на сайте LinuxRSP.

Все предложения и замечания принимаются по этому адресу