Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В

..pdf
Скачиваний:
119
Добавлен:
24.05.2014
Размер:
3.66 Mб
Скачать

Глава 36. mod_perl – модуль, позволяющий включить интерпретатор языка Perl...

541

В этой глава рассматривается еще один модуль сторонних разработчиков, ориентированный на совместное использование с Apache HTTP Server – mod_perl. Модуль mod_perl позволяет включить интерпретатор языка Perl непосредственно в Apache HTTP Server, после чего Web-сервер может существенно быстрее (на сервере разработчиков представлен пример, демонстрирующий увеличение быстродействия простого сценария в 30 раз) выполнять код написанных на Perl сценариев. Использование модуля целесообразно только в том случае, если на своем сервере вы активно используете сценарии, написанные на языке Perl.

Ограничения и допущения

Исходные коды находятся в каталоге /var/tmp.

Все операции выполняются пользователем с учетной записью root. Используется дистрибутив ASPLinux 7.3 (Vostok).

Перекомпиляция ядра не требуется.

Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы этого не проверяли.

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта mod_perl по состоянию на 14.07.2003. Регулярно посещайте домашнюю страницу проекта http://perl.apache.org/и отслеживайте обновления.

Исходные коды mod_perl содержатся в архиве mod_perl-2.0-current.tar.gz (последняя доступная на момент написания главы стабильная версия mod_perl-1.99_09).

Для инсталляции и нормальной работы mod_perl должен быть установлен Apache HTTP Server версии

2.0.xx.

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

ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исходных кодов.

Шаг 1

Проверьте, установлен ли пакет программы mod_perl с помощью следующей команды:

[root@test /]# rpm –iq mod_perl

Шаг 2

Перейдите в каталог, где находится пакет mod_perl-1.26-5.i386.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:

[root@test /]# cd /home/distrib

и установите:

[root@test distrib]# rpm -ihv mod_perl-1.26-5.i386.rpm

или обновите пакет:

[root@test distrib]# rpm –Uhv mod_perl-1.26-5.i386.rpm

Компиляция, оптимизация и инсталляция mod_perl

Для инсталляции mod_perl из исходных кодов необходимо выполнить следующие операции.

Шаг 1 Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кода-

ми. Для этого можно воспользоваться процедурой, описанной в шаге 1 радела «Компиляция, оптимизация и инсталляция OpenSSL» главы 12.

Шаг 2

Распакуйте архивы с исходными кодами mod_perl в каталоге /var/tmp:

[root@test tmp]# tar xzpf mod_perl-2.0-current.tar.gz

Шаг 3

542 Часть 10. Программное обеспечение для организации службы HTTP-сервера

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

[root@test tmp]# cd mod_perl-1.99_09

[root@test mod_perl-1.99_09]# perl Makefile.PL MP_APXS=/usr/sbin/apxs

[root@test mod_perl-1.99_09]# make

[root@test mod_perl-1.99_09]# find /* > /root/mod_perl1 [root@test mod_perl-1.99_09]# make install

[root@test mod_perl-1.99_09]# find /* > /root/mod_perl2

[root@test mod_perl-1.99_09]# diff /root/mod_perl1 /root/mod_perl2 >

/root/mod_perl.installed

[root@test mod_perl-1.99_09]# mv /root/mod_perl.installed

/very_reliable_place/mod_perl.installed.YYYYMMDD

Шаг 4 Удалите архив и каталог с исходными кодами:

[root@test mod_perl-1.99_09]# cd /var/tmp/

[root@test tmp]# rm -rf mod_perl-1.99_09/ [root@test tmp]# rm -f mod_perl-2.0-current.tar.gz

Конфигурирование mod_perl

Для

включения

поддержки

mod_perl

в

Apache

HTTP

Server

в

файле

/etc/httpd/conf/httpd.conf добавьте (проверьте наличие) строки:

 

 

 

 

LoadModule perl_module

modules/mod_perl.so

 

 

 

Тестирование mod_perl

Для тестирования mod_perl выполните следующие операции.

Шаг 1

Перезапустите Apache HTTP Server:

[root@test /]# /etc/init.d/httpd restart

Запускается httpd:

[ОК]

Останавливается httpd:

[ОК]

Шаг 2 Разместите в каком-нибудь каталоге вашего сервера, предназначенного для хранения файлов-

сценариев, например, /var/www/eshop/cgi-bin/, файл printenv, содержащий следующие строки:

#!/usr/bin/perl

##

## printenv -- demo CGI program which just prints its environment

##

print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) {

$val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g;

print "${var}=\"${val}\"\n";

}

Шаг 3

Сделайте файл исполняемым и определите его владельцем пользователя www:

[root@test /]# chmod 500 /var/www/eshop/cgi-bin/printenv [root@test /]# chown www.www /var/www/eshop/cgi-bin/printenv

Шаг 4 Проверьте работоспособность сценария:

[karlnext@test karlnext]$ lynx eshop.bruy.info/cgi-bin/printenv

Если вы увидите вывод, подобный этому:

DOCUMENT_ROOT="/var/www/eshop/html/" GATEWAY_INTERFACE="CGI/1.1"

Глава 36. mod_perl – модуль, позволяющий включить интерпретатор языка Perl...

543

HTTP_ACCEPT="text/html, text/plain, text/sgml, */*;q=0.01" HTTP_ACCEPT_CHARSET="koi8-r, iso-8859-1;q=0.01, us-ascii;q=0.01" HTTP_ACCEPT_ENCODING="gzip, compress" HTTP_ACCEPT_LANGUAGE="en,ru"

HTTP_HOST="eshop.bruy.info"

HTTP_USER_AGENT="Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6b" PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin" QUERY_STRING=""

REMOTE_ADDR="212.111.80.127" REMOTE_PORT="40359" REQUEST_METHOD="GET" REQUEST_URI="/cgi-bin/printenv"

SCRIPT_FILENAME="/var/www/eshop/cgi-bin/printenv" SCRIPT_NAME="/cgi-bin/printenv" SERVER_ADDR="212.111.80.127" SERVER_ADMIN="sales@test.bruy.info" SERVER_NAME="eshop.bruy.info"

SERVER_PORT="80" SERVER_PROTOCOL="HTTP/1.0" SERVER_SIGNATURE="" SERVER_SOFTWARE="Apache"

то модуль mod_perl правильно установлен и интегрирован с Apache HTTP Server.

Выполнение mod_perl в окружении chroot-jail

Потенциальные уязвимости mod_perl, как и любого другого программного обеспечения, могут использоваться для реализации атак на вашу систему. Поэтому для повышения безопасности вашей системы mod_perl можно заставить работать в окружении chroot-jail. Это не простая задача, при этом может потребоваться дополнительные и не всегда заканчивающиеся успехом попытки по адаптации программ (сценариев), содержащих Perl-код, для работы в окружении chroot-jail. Тем не менее, если вы все-таки желаете протестировать работоспособность вашего сервера в относительно безопасном окружении, руководствуйтесь ниже приведенными рекомендациями. Перенос в окружение chroot jail лучше осуществлять сразу для Apache HTTP Server и всех поддерживаемых им модулей сторонних разработчиков, руководствуясь при этом рекомендациями этой и двух предыдущих глав.

Шаг 1

Выполните все рекомендации раздела «Выполнение Apache HTTP Server в среде chroot jail» главы 34 по переносу и тестированию Apache HTTP Server в окружение chroot-jail. Только после удачного тестирования переходите к следующему шагу.

Шаг 2

Если вы используете PHP, выполните все рекомендации раздела «Выполнение PHP в окружении chroot-jail» главы 35 по переносу и тестированию в окружение chroot-jail. Только после удачного тестирования переходите к следующему шагу.

Шаг 3 Остановите:

[root@test /]# /etc/init.d/httpd stop

Останавливается httpd: [ОК]

Шаг 4

Создайте в окружении chroot jail необходимые каталоги и скопируйте в них файлы, требующиеся для работы mod_perl:

[root@test /]# mkdir -p /chroot/httpd/usr/bin/ [root@test /]# cp /usr/lib/httpd/modules/mod_perl.so

/chroot/httpd/usr/lib/httpd/modules/

[root@test /]# cp -a /usr/lib/perl5 /chroot/httpd/usr/lib/ [root@test /]# cp /usr/bin/perl /chroot/httpd/usr/bin/ [root@test /]# cp /lib/libutil.so.1 /chroot/httpd/lib [root@test /]# cp -a /etc/locale /chroot/httpd/etc/ [root@test /]# cp -a /usr/lib/locale /chroot/httpd/usr/lib/

544

Часть 10. Программное обеспечение для организации службы HTTP-сервера

 

[root@test /]# cp -a /usr/share/locale /chroot/httpd/usr/share/

 

[root@test /]# cp /usr/bin/locale /chroot/httpd/usr/bin

 

Шаг 5

 

 

Запустите Apache HTTP Server:

 

 

[root@test /]# /etc/init.d/httpd start

[ОК]

 

Запускается httpd:

Шаг 6

Протестируйте работоспособность сервера в окружении chroot-jail c поддержкой с использованием рекомендаций раздела «Тестирование mod_perl». Результаты тестирования должны быть идентичны результатам, полученным при тестировании работоспособности сервера запущенного в обычном окружении.

Глава 37. Сервер Samba

545

Часть 11

Программное обеспечение для организации совмест-

ного использования общих сетевых ресурсов

546

Часть 11. Программное обеспечение для организации совместного использования....

Глава 37

Сервер Samba

В этой главе:

1. Ограничения и допущения

2.Пакеты

3.Инсталляция с помощью rpm-пакетов

4.Компиляция, оптимизация и инсталляция Samba

5.Конфигурирование Samba

6.Конфигурационный файл /etc/samba/smb.conf

7.Конфигурационный файл /etc/samba/lmhosts

8.Конфигурационный файл /etc/sysconfig/samba

9.Конфигурационный файл /etc/pam.d/samba

10. Конфигурационный файл /etc/logrotate.d/samba

11. Файл инициализации /etc/lnit.d/smb

12. Добавление новых пользователей (конфигурационный файл /etc/samba/smbpasswd)

13. Тестирование Samba

Глава 37. Сервер Samba

547

Для организации совместного доступа к сетевым ресурсам рабочих станций и серверов, использующих различные операционные системы, необходимо соответствующее программное обеспечение. Таковым является сервер Samba, одной из функций которого является предоставление совместного доступа пользователям, работающим в различных операционных системах (Linux, Microsoft Windows, OS/2 и др.) к общим сетевым ресурсам – файлам и принтерам. Кроме того, в комплект поставки программного обеспечения Samba входят клиентские программы – например, smbclient, позволяющая устанавливать соединение с другими системами по протоколу SMB и работать с размещенными на них файлами по аналогии, как это делается с FTP-клиентом, smbmount, предназначенная для монтирования файловых систем, обслуживаемых сервером Samba – и средства администрирования.

В настоящее время готовится к выходу новая версия Samba 3.0. К сожалению, на момент написания этой главы была доступна только версия, предназначенная для тестирования Samba-3.0.0beta3. Использование версий программ, предназначенных для тестирования, недопустимо на серверах и рабочих станциях, используемых для решения практических задач. Тем не менее, мы протестировали новую версию Samba в надежде, что когда эта книга дойдет до своего читателя, разработчики устранят основные недостатки новой версии программного обеспечения и стабильной версией станет версия Samba 3.0.xx. По этой же причине (т. к. разработчики могут изменить порядок настройки Samba) в этой главе мы ограничимся рассмотрением простейшего случая инсталляции, компиляции и настройки Samba в качестве отдельно стоящего файлсервера с организацией доступа пользователей с PAM-аутентификацией. Другие возможности этого программного продукта, который, скорее всего, станет в ближайшее время адекватной заменой программных продуктов от Microsoft, вы сможете освоить самостоятельно. Проект прекрасно документирован и применение его на практике часто и достаточно подробно обсуждается в различных статьях, списках рассылки и форумах, в том числе, и на русском языке. Схема организации совместного доступа к сетевым ресурсам представлена на рис. 37.1.

Ограничения и допущения

Исходные коды находятся в каталоге /var/tmp.

Все операции по инсталляции и настройке выполняются пользователем с учетной записью root. Используется дистрибутив ASPLinux 7.3 (Vostok).

Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы это не проверяли.

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта Samba по состоянию на 25.07.2003. Регулярно посещайте домашнюю страницу проекта http://www.samba.org/и отслеживайте обновления.

Исходные коды Samba содержатся в архиве samba-version.tar.gz (последняя доступная на момент написания главы стабильная версия samba-3.0.0beta3.tar.gz).

Для нормальной инсталляции и работы Samba необходима установка OpenSSL. В случае, если на вашем сервере установлено программное обеспечение OpenSSL или ядро, собранное из исходных кодов, инсталляция Samba из rpm-пакетов, входящих в комплект поставки дистрибутива, скорее всего, будет невозможной.

Инсталляция с помощью rpm-пакетов

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

ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исходных кодов.

Если вы следовали за установкой, описанной в этой книге, для инсталляции Samba вам понадобятся следующие пакеты, входящие в дистрибутив ASPLinux 7.3:

tcsh-6.10-6.src.rpm;

samba-2.2.3a-6.asp.i386.rpm;

samba-client-2.2.3a-6.asp.i386.rpm;

samba-common-2.2.3a-6.asp.i386.rpm.

548

Часть 11. Программное обеспечение для организации совместного использования....

Сервер Samba

Сетевой принтер

Концентратор

Рабочие станции

Windows NT

OS/2

Linux

Sun Solaris

Рис. 37.1. Схема организации совместного доступа к сетевым ресурсам.

Глава 37. Сервер Samba

549

ЗАМЕЧАНИЕ Программа OpenSSL должна быть установлена обязательно из пакета. Для данной вер-

сии дистрибутива – openssl-0.9.6b-24asp.i686.rpm.

Шаг 1 Проверьте, установлены ли пакеты программ из списка, приведенного выше. Используйте, например,

команду вида:

[root@drwalbr /]# rpm –iq samba

Шаг 2

Перейдите в каталог, где находятся rpm-пакеты. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:

[root@drwalbr /]# cd /home/distrib

Шаг 3 Установите необходимые пакеты:

root@drwalbr distrib]# rpm -ihv tcsh-6.10-6.src.rpm \ samba-2.2.3a-6.asp.i386.rpm \ samba-client-2.2.3a-6.asp.i386.rpm \ samba-common-2.2.3a-6.asp.i386.rpm

После установки пакетов перейдите к настройке программы Samba.

Компиляция, оптимизация и инсталляция Samba

Для инсталляции Samba из исходных кодов необходимо выполнить следующие операции.

Шаг 1 Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кода-

ми, воспользовавшись, например, процедурой, описанной в шаге 1 радела «Компиляция, оптимизация и инсталляция OpenSSL» главы 12.

Шаг 2

Распакуйте архивы с исходными кодами Samba в каталоге /var/tmp:

[root@drwalbr tmp]# tar xzpf samba-3.0.0beta3.tar.gz

Шаг 3

Сконфигурируйте исходные коды Samba:

[root@drwalbr tmp]# cd samba-3.0.0beta3/source

[root@drwalbr source]# CFLAGS="-O2 -march=i686 -funroll-loops -

D_GNU_SOURCE"; export CFLAGS

./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --libdir=/etc/samba \ --mandir=/usr/share/man \

--with-privatedir=/etc/samba \ --with-lockdir=/var/lock/samba \ --with-piddir=/var/run/samba \ --with-swatdir=/usr/share/swat \ --with-codepagedir=/usr/share/samba/codepages \ --with-sslinc=/usr/include \ --with-ssllib=/usr/lib \

--with-ssl \ --with-fhs \ --with-pam \ --with-syslog \ --with-quotas \

Врассматриваемом примере изменены каталоги, используемые для установки Samba по умолчанию,

иоставлен минимальный набор опций, необходимый для работы сервера.

550

Часть 11. Программное обеспечение для организации совместного использования....

 

Шаг 4

 

 

 

Откомпилируйте, проинсталлируйте Samba, создайте и сохраните в надежном месте список установ-

ленных файлов:

 

make

 

[root@drwalbr

source]#

 

[root@drwalbr

source]#

find /* > /root/samba1

 

...

 

 

 

======================================================================

 

The modules are installed. You may uninstall the modules using the

 

command "make

uninstallmodules" or "make uninstall" to uninstall

 

binaries, man

pages, shell scripts and modules.

 

======================================================================

 

[root@drwalbr

source]#

install -m0511 script/mksmbpasswd.sh /usr/bin/

 

[root@drwalbr

source]#

rm -rf /usr/private/

 

[root@drwalbr

source]#

rm -rf /usr/share/swat/

 

[root@drwalbr

source]#

rm -f /usr/sbin/swat

 

[root@drwalbr

source]#

rm -f /usr/share/man/man8/swat.8

 

[root@drwalbr

source]#

mkdir -m1777 /var/spool/samba/

 

[root@drwalbr

source]#

mkdir -m0700 /var/log/samba/

 

[root@drwalbr

source]#

strip /usr/sbin/smbd

 

[root@drwalbr

source]#

strip /usr/sbin/nmbd

 

[root@drwalbr

source]#

find /* > /root/samba2

 

[root@drwalbr

source]#

diff /root/samba1 /root/samba2 >

 

/root/samba.installed

 

 

[root@drwalbr

source]#

mv /root/samba.installed

 

/very_reliable_place/samba.installed.YYYYMMDD

 

Шаг 5

 

 

 

Удалите архив и каталог с исходными кодами:

 

[root@drwalbr

source]#

cd /var/tmp/

 

[root@drwalbr

tmp]# rm

-rf samba-3.0.0beta3 /

 

[root@drwalbr

tmp]# rm

-f samba-3.0.0beta3.tar.gz

Конфигурирование Samba

Конфигурирование Samba осуществляется с использованием следующих файлов:

главного конфигурационного файла /etc/samba/smb.conf;

файла /etc/samba/lmhost, используемого для установления соответствий между именами и IPадресами систем в сети, обслуживаемых Samba;

системного конфигурационного файла/etc/sysconfig/samba;

файла /etc/pam.d/samba, используемого для поддержки аутентификации пользователей с использованием модулей PAM;

файла инициализации /etc/init.d/smb.

файла /etc/samba/smbpasswd, содержащего аутентификационную информацию пользователей.

Конфигурационный файл /etc/samba/smb.conf

В этом файле определяются общие сетевые ресурсы (каталоги, файлы и принтеры) и параметры доступа к ним (пользователи, IP-адреса и т. п.). Файл состоит из трех разделов:

[global] – содержит глобальные директивы конфигурации, применимые ко всем ресурсам, которые также используются по умолчанию для разделов, если эти значения не переопределены явно;

[homes] – содержит директивы, определяющие доступ к различным каталогам;

[printers] – содержит директивы, определяющие доступ к принтерам.

Приведенный ниже пример конфигурационного файла /etc/smb.conf содержит пример конфигурации, обеспечивающей доступ в пользовательские каталоги с использованием PAM-аутентификации и зашифрованных паролей.

Шаг 1

Создайте файл /etc/smb.conf, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

[global]

workgroup = UND

Соседние файлы в предмете Информатика