После получения данного пакета извлекаем все то, что находится под
"грифом" *.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 мы уже имеем (в каталоге /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" /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'а проверим два конфигурационных файла:
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
Для усиления безопасной работы посредством 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
Теперь вы можете запустить SAMB'у. Это можно сделать или посредством
SWAT'a или же из командной строки. Если вы хотите использовать SWAT, тогда
идите на "Status page" и запускайте SMBD и NMBD . Если
это уже было запущено, тогда просто остановите и перезапустите
вышеуказанные демоны, чтобы увидеть ваш новый конфигурационный файл.
С командной строки запуск данных демонов выглядит так:
# /etc/rc.d/init.d/smb stop
# /etc/rc.d/init.d/smb start
У вас все работает? Чудесно. Теперь протестируем нашу SAMB'у.
Посмотрим, работает ли это реально:
# 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.
На ПК 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'ы.
Чем больше вы прибавляете сервисов на вашей машине, тем больше дырок у
вас возникает. Это не секрет. Сейчас вы добавили SMB-сервис. Как его
защитить?
Вариант № 1.
В файл smb.conf (/etc/smb.conf) можно ввести следующие строки:
interfaces = 192.168.0.1/24 127.0.0.1/24
bind interfaces only = Yes
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'ы.