В данном документе предполагается, что вы внимательно и целиком прочитали описание внутреннего устройства. Если нет, то прочитайте, пожалуйста, его перед тем, как приступить к установке.
Для установки необходимо наличие и работоспособность следующих программ:
Выделите какого-нибудь пользователя, с правами которого будет осуществляться работа поискового сервера и сканирование. Это может быть как уже существующий, так и новый, специально созданный пользователь. Остальные действия проводятся от этого пользователя
Создайте какой-нибудь каталог, где будет храниться база. Она занимает существенный объем (до 1 Гб). Поскольку она очень часто обновляется, рекомендуется создавать ее где-нибудь в разделе /var, например /var/tmp/smbsearch.
Распакуйте архив SMBSearch в некоторый каталог. Поисковая система будет работать непосредственно оттуда. Специальной процедуры инсталляции, которая бы копировала их в общесистемные каталоги вроде /usr/bin, нет. (Возможно, в будущем этот недостаток будет устранен.)
Создайте специальную базу данных и пользователя в SQL сервере. Для этого войдите под пользователем с привилегиями администратора (БД, а не системы) и выполните соотвествующую команду. Например для СУБД MySQL,
CREATE DATABASE smbsearch; GRANT ALL PRIVILEGES ON smbsearch.* TO smb@localhost; FLUSH PRIVILEGES;
Затем зайдите под только что созданным пользователем и создайте необходимые таблицы данных, используя файл scripts/db.sql
mysql -usmb smbsearch < scripts/db.sql
Необходимо собрать программы написанные на языке C/C++. Для сборки поискового сервера достаточно выполнить команды ./configure и make в каталоге fsearch. При этом появится исполняемый файл fsearch.
Сборка сканера значительно сложнее. Необходимо распаковать исходные тексты Samba, сконфигурировать, а затем наложить патч samba.patch. Патч меняет формат вывода с текстового на удобный для поискового сервера, а также уменьшает таймаут на соединениях с 20 с до 2 с. Пример сборки в системе Debian GNU/Linux:
[alex@laputa smbclient]$ apt-get source samba Reading Package Lists... Done Building Dependency Tree... Done Need to get 15.3MB of source archives. Get:1 ftp://debian.local unstable/main samba 3.0.9-1 (dsc) [957B] Get:2 ftp://debian.local unstable/main samba 3.0.9-1 (tar) [15.2MB] Get:3 ftp://debian.local unstable/main samba 3.0.9-1 (diff) [102kB] Fetched 15.3MB in 6s (2311kB/s) dpkg-source: extracting samba in samba-3.0.9 [alex@laputa smbclient]$ cd samba-3.0.9/ [alex@laputa samba-3.0.9]$ patch -p1 <../samba.patch patching file source/client/client.c Hunk #13 succeeded at 661 with fuzz 1. Hunk #14 succeeded at 2270 (offset 166 lines). Hunk #15 succeeded at 2864 (offset 170 lines). Hunk #16 succeeded at 3120 (offset 170 lines). Hunk #17 succeeded at 3220 (offset 170 lines). patching file source/libsmb/clientgen.c Hunk #1 succeeded at 272 (offset 5 lines). [alex@laputa samba-3.0.9]$ debian/rules build .... [alex@laputa samba-3.0.9]$ cp source/bin/smbclient ../../scripts/psmbclient [alex@laputa samba-3.0.9]$ cp source/bin/rpcclient ../../scripts/prpcclient
Из всей сборки нужны только 2 файла: smbclient и rpcclient. Их нужно собрать и переименовать во избежание путаницы с общесистемными файлами.
После сборки нужно внести в SQL-сервер информацию о компьютерах в сети и списке рабочих групп. Обычно у администраторов сетей имеется полная база данных по всем клиентам. Оптимальный вариант - взять данные из этой базы. Если такой вариант недоступен, можно попытаться настроить синхронизацию с DNS и взять данные оттуда. Список сетей обычно небольшой и его можно ввести непосредственно.
Поля в таблице hosts имеют следующий смысл:
Поля в таблице workgroups имеют следующий смысл:
Основной конфигурационный файл служит для настройки работы скриптов и называется searchconf.conf (он расположен в каталоге scripts). Назначение большинства параметров описано в комментариях к ним.
Необходимо указать параметры для доступа к базе данных (драйвер, имя базы, имя пользователя) в параметрах db_name, db_user и каталог для хранения временных файлов (tmp_path).
Нужно указать путь к различным программам, в том числе к собранным psmbclient, prpcclient, а также nmblookup, nmap.
Необходимо указать список локальных сетей. Первый параметр (local_subnets) задает массив из строк, наличие одной из которых обязательно для адреса. С помощью этого параметра отфильтровываются внешние (например Internet) адреса. Второй параметр (scan_subnets) задает сети для сканирования в формате nmap.
Если предполагается использовать синхронизацию с DNS, то следующим шагом служит настройка скрипта dns2hosts.pl, который заполняет базу хостов по информации из DNS-сервера. Вначале указывается список имен, которые не нужно добавлять. Обычно это различные алиасы или служебные роутеры, на которых нет расшаренных файлов и их сканировать бессмыслленно. Список сетей и адреса DNS-серверов, а также идентификаторы рабочих групп. В некоторых сетях для удобства регистрируют специальные имена вида pc-xx-yy, где xx-yy означает IP-адреса или номер комнаты в доме. Подобные имена только засоряют базу. Для борьбы с ними существует последний параметр - это регулярное выражение, которое их описывает. Если имя попадает под такое выражение, то оно не добавляется в базу. После настройки параметров обязательно убедитесь, что информация из DNS берется корректно.
Эти же параметры необходимо определить и в файле html/SMBConf.pm для корректного доступа из CGI-скриптов.
После заполнения таблиц hosts и workgroups правильным содержимым, можно запустить поисковый сервер. Обязательно убедитесь, что сервер работает корректно!
[alex@laputa smbsearch]$ cd fsearch/ [alex@laputa fsearch]$ ./fsearch & [1] 16531 [alex@laputa fsearch]$ renice +1 16531 16531: old priority 0, new priority 1 [alex@laputa fsearch]$ chmod o+rw /tmp/fastsmb.sock [alex@laputa fsearch]$ ./fcon.pl Welcome to fsearch console! Enter request, empty line to exit STATUS Server replied: 1 clients active, 0 hosts, 0 files, 0 items in cache, 0 Mb memory used [alex@laputa fsearch]$
Рекомендуется запускать сервер со слегка пониженным приоритетом, чтобы он не мешал основной работе на компьютере. Также необходимо поставить права доступа на сокет командой chmod, чтобы CGI-скрипты, работающие с правами web-сервера, смогли получить к нему доступ.
Если база данных с файлами уже есть, ее можно загрузить командой scripts/startfsmb.pl. Она просматривает каталог, описанный в конфигурационном файле параметром tmp_path, и загружает имеющиеся списки файлов. При первом запуске никакой пользы от этой команды не будет.
После настройки параметров нужно сделать так, чтобы сканер и чекер заполнялись автоматически по расписанию. Для этого нужно составить файл crontab, где указать когда и какие файлы нужно запускать. Например, можно поставить запускаться чекер раз в 8 минут, а сканер - раз в 15 минут:
*/8 * * * * /local/home/alex/src/smbsearch/scripts/check.sh */15 * * * * /local/home/alex/src/smbsearch/scripts/rescan.sh
После редактирования файла нужно отдать его системе автоматического запуска задач при помощи команды
[alex@laputa scripts]$ crontab mycrontab [alex@laputa scripts]$ crontab -l */8 * * * * /local/home/alex/src/smbsearch/scripts/check.sh */15 * * * * /local/home/alex/src/smbsearch/scripts/rescan.sh
После установки имеет смысл подождать некоторое время пока скрипты запустятся пару раз и просканируют найденные хосты.
Нужно создать каталог в том месте где располагаются файлы web-сервера и скопировать в этот каталог файлы из подкаталога html. Затем нужно отредактировать конфигурационный файл web-сервера. Например, возможна такая конфигурация:
DocumentRoot /local/www/html <Directory /> Options FollowSymLinks AllowOverride None </Directory> PerlRequire /local/www/html/startup.pl <Directory /local/www/html> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny allow from all <Files *.pl> SetHandler perl-script PerlResponseHandler ModPerl::Registry Options +ExecCGI <Files> </Directory>
Перезапустите web-сервер. При успешной настройке страницы станут доступными. Зайдите в браузере на /serverstat.pl. Здесь отображается внутренне состояние сервера.
При правильной настройке системы поиск должен быть уже работоспособен. Возможно придется подождать некоторое время, пока пересканируется вся сеть.
ЗАМЕЧАНИЕ: Вам придется закрыть html/Common.pm от общего доступа. Для этого достаточно сделать chmod 600 html/Common.pm.
Fast SMB Search is written by Sasha, write to alex@sectorb.msk.ru