Linux mini-HOWTO

         

Добавление frontpage


Переименуйте файл fp30.linux.tar.Z в fp30.linux.tar.gz, иначе установочный скрипт его не найдет. Запустите ./fp_install, чтобы скопировать файлы расширения в каталог /usr/local/frontpage. zcat обычно находится в каталоге /usr/bin.

Теперь вы можете применить патч FP. Перейдите в каталог /usr/src/apache_1.2.6/src и введите patch < /usr/src/frontpage/version3.0/apache-fp/fp-patch-apache_1.2.5

Это создаст файлы mod_frontpage.* и внесет небольшие изменения в Configuration. Патч 1.2.5 будет работать с обеими версиями apache 1.2.5 и 1.2.6. Пропустите часть, касающуюся установки веб - вы можете сделать это позже.



Добавление PHP


Зайдите в каталог /usr/src/gd1.2 и введите make. В результате этого соберется библиотека GD libgd.a, которую нужно скопировать в /usr/lib. После этого перейдите в каталог php-2.0.1 и запустите ./install.



Добавление поддержки frontpage


Перейдите в каталог /usr/local/frontpage/version3.0/bin и загрузите ./fpsrvadm. Выберите install и apache-fp. Вам нужно будет ответить на следующие вопросы:



Добавление SSL


cd /usr/src/SSL-0.8.0; ./Configure linux-elf; make; make rehash

В результате этих команд будут собраны библиотеки, необходимые Apache. Вы можете выполнить make test, чтобы проверить правильность компиляции. После этого вы должны применить патч к apache. Важно, чтобы вы применили его прежде, чем патч frontpage, иначе frontpage не будет работать. Перейдите в каталог /usr/src/apache_1.2.6/src и запустите patch < /usr/src/apache_1.2.6/SSLpatch. Установите SSL_BASE=/usr/src/SSLeay-0.8.0 в Configuration. Удостоверьтесь, что Module proxy_module отключен, иначе Apache не будет компилироваться. Если вам нужен прокси - идите за Squid http://squid.nlanr.net/

После этого дайте команду make certificate, чтобы сгенерировать SSLconf/conf/httpsd.pem.



Известные ошибки


При запуске Recalculate Links в клиенте frontpage, сервер запускает процесс, который потребляет 99% процессорного времени и около 10 Мб памяти. Но даже с сайтов среднего размера и быстрых машин, Клиент иногда получает сообщение, что время ожидания истекло, хотя вычисление будет закончено правильно. Сообщите пользователям, что нужно подождать, а не нажимать Recalculate Links несколько раз. Уясните для себе, что нужно оборудовать сервер по крайней мере 64 Мб памяти.

Пожалуйста, обратите внимание, что во время записи и SSL, и frontpage могут работать по отдельности, но не вместе - это означает, что вы не можете опубликовывать свои страницы, используя ssl, и не можете использовать webbots через https. Вы можете опубликовать ваше веб-содержимое через 80-ый порт и обращаться к зашифрованному содержимому через порт 443, но ваши счетчики и т.п. будут нарушены. Я думаю это ошибка. Эта проблема будет исправлена в SSL 0.9.0 (я надеюсь).





Компилирование и установка демона сервера


Перейдите в каталог /usr/src/apache_1.2.6/src и отредактируйте Configuration, установив все необходимые модули, входящие в состав вашего Apache. Когда все будет готово, запустите ./Configure и make. Это - последний (и наиболее сложный) шаг компиляции, так что скрестите ваши пальцы. Если все пройдет успешно, скопируйте httpsd в /usr/sbin. Демон достаточно большой, учтите это при компиляции вашего веб-сервера. Создайте директорию /var/httpd с подкаталогами cgi-bin, conf, htdocs, icons, virt1, virt2 and logs. В /usr/src/apache_1.2.6/conf отредактируйте файлы access.conf-dist, mime.types и srm.conf-dist, как вам надо, и скопируйте их в var/httpd/conf/access.conf, srm.conf и mime.types. Скопируйте файл httpsd.pem, созданный с помощью make certificate в каталог /var/httpd/conf. Используйте следующий httpd.conf:



Linux Apache SSL PHP/FI frontpage mini-HOWTO


Marcus Faure
marcus@faure.de


Перевод: Александр Ермолаев, ASPLinux

Это документ содержит информацию: о построении многоцелевого веб-сервера, который будет поддерживать динамическое веб-содержание, используя скрипт-язык PHP/FI; безопасную передачу данных, основанную на Netscape SSL; безопасное выполнение CGI скриптов; серверные расширения M$ Frontpage.



Некоторые соображения


Не используйте расширения frontpage 97. Они не работают, по крайней мере, в Linux. При установке определенных версий библиотек C++, они вроде работают, но ваши журналы и почтовый ящик скоро заполнятся сообщениями вида premature end of script headers

Не используйте расширения frontpage 98 версии ниже 3.0.2.1330. Не запутайтесь, номера версий несколько непривычны. Когда зайдете telnet'ом на 80-й порт, введите "get / http/1.0" и дважды нажмите ввод - вы получите версию номер 3.0.4 для frontpage.

Более точно номер версии вы можете узнать при помощи команды /usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version. Старые версии имеют неприятную ошибку, которая требует, чтобы httpd.conf можно было перезаписывать под gid вебсервера'а. Это достаточно плохо, если вас беспокоит безопасность. Я, в любом случае, рекомендую использовать версии новее 3.0.2.1330, лишенные этого недостатка.



Предоставление большей защиты для CGI


Если вы - интернет-провайдер, вы захотите увеличить степень безопасности системы. suexec - утилита, позволяющая вам это сделать; выполнение cgi под пользователем-владельцем веб-каталога, вместо пользователя, запустившего веб-сервер. Перейдите в /usr/src/apache_1.2.6/support и дайте команду make suexec. chmod 4711 suxec; скопируйте этот файл в каталог, указанный в ../src/httpd.h (по умолчанию - /usr/local/etc/httpd/sbin/suexec

). Если путь кажется вам странным - как это казалось мне - измените его в httpd.h.



Приготовления


Вам будет необходимо следующее:

Apache 1.2.6 http://www.apache.org/dist/apache_1_2_6.tar.gz

PHP/FI http://php.iquest.net/files/download.phtml?/files/php-2.01.tar.gz

Библиотека GDhttp://siva.cshl.org/gd/gd.html

SSL 0.8.0 ftp://ftp.ox.ac.uk/pub/crypto/SSL/SSLeay-0.8.0.tar.gz

SSL-патч для Apache 1.2.6 ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.6+ssl_1.17.tar.gz

расширения сервера frontpage 98 и скрипт инсталляции http://www.rtr.com/fpsupport/download.htm

Получите исходники, которые вам необходимы. Распакуйте apache, php, gd и ssl в /usr/src. Распакуйте патч SSL в /usr/src/apache_1.2.6.



Заключительное слово


Вопрос для тех, кто думает, что заголовок этого руководства такой-же длинный, как и его текст: Вы когда-нибудь слушали Meat Loaf?

O.K. Читатели, хватит вам на сегодня. Не стесняйтесь посылать мне письма, вечную благодарность, цветы, электронные деньги, автомобили, нефтяные источники и т.д.



Запуск демона


Запустите Apache с помощью команды httpsd -f /var/httpd/conf/httpd.conf. Теперь вы можете обращаться к www.virt1.com через http и https (кстати, достаточно мощный протокол). Конечно вы должны оплатить реальный сертификат, если вы хотите предоставлять SSL, или вас засмеют ;-).

Скопируйте один файл из каталога примеров php (examples) в virt1, чтобы проверить работу php.



Apache


Распакуйте архив apache-1.3.12.tar.gz в /usr/src/apache или в другое место. Затем собираем Apache со следующими модулями:

mod_ssl (Чтобы собрать mod_ssl как DSO, сначала компилируем с сервером. Затем обновляем модуль через apxs.)

mod_proxy

mod_so

mod_rewrite (Для использования с Zope)

Конфигурационный файл, который я использовал для сборки Apache:



Apache+DSO+mod_ssl+mod_perl+php+mod_auth_nds+mod_auth_mysql+mod_fastcgi


Ray Van Dolson
rayvd@firetail.org


Перевод: Александр Ермолаев, ASPLinux

Здесь описывается инсталляция и настройка веб-сервера Apache для работы с DSO, а также сборка и установка различных модулей, включая mod_perl, mod_ssl и php.



Дополнительно


Все упомянутое в этом документе будет в конечном счете доступно с ftp ftp.wwc.edu/pub/apache. Я буду размещать там этот текст и кое-какие инсталляционные скрипты, позволяющие установить все разом.



История создания документа


v0.91 (5 апреля 2000)

Обновление mod_fastcgi для последней версии.

v0.9 (4 апреля 2000)

Первый окончательный проект

Исправление орфографических и граматических ошибок

v0.1 (март 2000)

Начальный проект



Контактная информация


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

Ray Van Dolson Email: rayvd@firetail.org>

IRC: DALnet, #Bludgeon (nick Variant)



Mod_auth_mysql


mod_auth_mysql позволяет веб-серверу Apache использовать аутентификацию пользователя MySQL. Установка модуля, как DSO, не точно описана в README, но это можно поправить.

Во-первых, перейдите в каталог с исходными текстами mod_auth_mysql. Я предполагаю, что у вас уже установлен MySQL (вместе с заголовками, и т.д). Убедитесь, что Вы знаете расположение библиотек и заголовочных файлов MySQL. Если сомневаетесь, проверьте /usr/lib/mysql и /usr/include/mysql.

Чтобы собрать mod_auth_mysql, переименуйте файл 'config.h' на 'auth_mysql_config.h'. Я не знаю, почему этот файл не был правильно назван. Просто запустите следующую команду:

cp config.h auth_mysql_config.h

И последний шаг:

/path/to/apache/bin/apxs -i -a -I/usr/include/mysql -L/usr/lib/mysql \ -lmysqlclient -c mod_auth_mysql.c

Вам нужно зайти в систему, как root, для чтения/записи в каталог Apache.



Mod_auth_nds


В моей школе сеть под Windows была Netware. Она существует уже долгое время, и пока это все еще основная сеть в университетском городке для доступа к общим файлам и почте. Каждый студент имеет вход на сервер Netware, на котором хранятся его личные файлы (включая веб-странички). Мы подключаем эти каталоги на сервер Linux, но некоторые из них защищены именем и паролем Netware. С этим модулем Apache может подтверждать права непосредственно на сервере Netware.


ncpfs

Чтобы компилировать mod_auth_nds, мы должны иметь установленный ncpfs (наряду с его заголовками). Перед сборкой ncpfs, вы должны гарантировать, что ваше ядро имеет поддержку IPX. Если дело обстоит так, просто выполните

./configure make make install (необязательно)

В результате соберутся (и установятся) библиотеки.


Сборка и установка mod_auth_nds

С установленным ncpfs выполнение следующей команды должно собрать mod_auth_nds как DSO:

/path/to/apache/bin/apxs -c -lncp -L/usr/lib -I/usr/include mod_auth_nds.c /path/to/apache/bin/apxs -i mod_auth_nds.so

После добавьте следующие строки в файл httpd.conf:

LoadModule nds_auth_module libexec/mod_auth_nds.so AddModule mod_auth_nds.c

И перезапустите Apache!



Mod_fastcgi


Установка mod_fastcgi необходима, если Вы хотите обеспечить доступ к серверу Zope через Apache. Это полезно просто потому, что Apache является более безопасным и гибким, чем сервер Zope.

Текущая версия mod_fastcgi - 2.2.2, однако эта версия не работает с Zope, как надо. Вы должны получить SNAP от 6 октября. Ссылка дана выше.

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

/path/to/apache/bin/apxs -o mod_fastcgi.so -c *.c /path/to/apache/bin/apxs -i -a -n fastcgi mod_fastcgi.so

Смотрите документацию mod_fastcgi для описания его использования.



Mod_perl


Этот раздел описывает установку модуля mod_perl, как DSO для Apache. Ряд модулей perl (в дополнение, конечно, к perl5, который, я думаю, вы уже установили) должны быть добавлены до компиляции mod_perl. Если вы не установите эти модули, mod_perl сообщит вам об их отсутствии.

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


Требуемые модули Perl

Perl модули могут быть получены из мест, упоминаемых далее в этом документе. Загрузите их и поместите туда, куда хотите, или туда, куда положил я (см. схему каталогов). Установка модуля проста. После распаковки модуля в каталог (обычно при помощи tar xvfz), просто перейдите в каталог с исходными текстами и выполните следующие команды:

perl Makefile.PL make make install

Если все идет нормально, происходит настройка, сборка и установка модуля perl. Конечно, вы можете прочитать README для каждого модуля, если что-то работает не так, как ожидалось.

Вот порядок, в котором я устанавливал модули, необходимые для mod_perl:

MIME::Base64

URI

HTML::Parser

Digest-MD5

libnet

libwww


Сборка и установка mod_perl 1.2x

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

perl Makefile.PL \ USE_APXS=1 \ WITH_APXS=/path/to/apache/bin/apxs \ EVERYTHING=1

Она настроит ваш Makefile и сообщит mod_perl, чтобы он собрал себя, как DSO, используя apxs (расположение которого вы должны определить). После этого просто запустите



Mod_ssl



Сборка и установка OpenSSL

mod_ssl требует, чтобы был установлен SSL. Естественный выбор для Linux - OpenSSL. Вы можете устанавить его из пакета RPM (как это сделал я), или скомпилировать из исходных текстов. поступайте, как хотите. Я, например, ставил готовый пакет, впрочем, компиляция из исходных текстов также достаточно проста. Наиболее вероятно, что вы установите его в каталог /usr/local, или оставите его в своем каталоге, но не забудьте указать путь приложениям, которым он необходим.

RPM установит OpenSSL в системный каталог.


Сборка и установка RSAREF 2.0

Создайте каталог для модуля rsaref-2.0 в любом месте. У меня он находится в /usr/src/apache/modules/mod_ssl-blah/depend/. Перейдите в этот каталог.

cd rsaref-2.0 cp -rp install/unix local cd local make mv rsaref librsaref.a

Эти команды должны собрать библиотеку rsaref! Оставьте все здесь и укажите в конфигурационном скрипте путь к библиотеке.


Сборка и установка MM

Распакуйте mm-1.0.12 (или более новую) в подкаталог mod_ssl-ля-ля-ля. Выполните следующие шаги:

cd mm-1.0.12 ./configure --disable-shared make

В результате должна собраться библиотека mm. Как и выше, укажите этот путь, если необходимо, или установите в системный каталог.


Сборка и установка mod_ssl (наконец-то!)

В процессе стандартной процедуры при работе с apxs сначала должен быть скомпилирован Apache, а затем используйте apxs для компиляции модулей, которые вы хотите использовать, и присоедините их к серверу. Однако, mod_ssl должен быть собран с сервером до того, как вы используете apxs. Если mod_ssl собран вместе с сервером, обновите его через apxs без полной перекомпиляции Apache.

Войдите в каталог, где Вы компилируете mod_ssl, и выполните следующую команду конфигурации для начала компиляции:

#!/bin/sh

./configure \ --with-apache=/usr/src/apache/apache_1.3.12 \ --with-ssl \ --with-rsa=../depend/rsaref-2.0/local \ --with-mm=../depend/mm-1.0.12 \ --enable-shared=ssl

Вам не нужно запускать ни 'make', ни что-то еще. Когда мы будем собирать Apache, команда сделает все за нас.

Эта команда дает два примера того, как ваша система может быть установлена. В моем случае, OpenSSL был уже установлен где-то в системе (кажется в /usr/lib или /usr/include). Поэтому я не должен был бы передавать параметры его расположения. Однако, rsa и mm не были в системе, и я собрал их сам и оставил в каталоге исходников (не запуска make вообще). В этом случае вам нужно указать команде configure на соответствующий каталог так, чтобы он нашел заголовочные файлы и библиотеки.

Идем далее, если вы не обновляете Apache (в некоторых случаях вам необходимо проделать предыдущий шаг для новой версии Apache), используйте apxs для обновления или перекомпиляции модуля mod_ssl. Вот какие параметры я дал скрипту:

./configure \ --with-apxs=/apps/apache-1.3.12/bin/apxs \ --with-ssl=../depend/openssl-0.9.4 \ --with-rsa=../depend/rsaref-2.0/local \ --with-mm=../depend/mm-1.0.12

Или команда, описанная выше. Запускаем:

make make install make distclean

и завершаем инсталляцию.

Примечания: MM не требует компиляции mod_ssl. Если у вас появились проблемы во время установки, начните с шага ./configure.

Когда я собирал mod_ssl, у меня появились ошибки, связанные с DBM. Чтобы исправить их, я добавил -lndbm в Makefile:

Запустите вышеупомянутый конфигурационный скрипт.

cd в pkg.sslmod

Отредактируйте makefile и добавте -lndbm к LIBS_SHLIB. Следующим образом:

LIBS_SHLIB=-lm -lcrypt -lndbdm

Надеюсь, это сэкономит вам немного сил.



MySQL


php также как mod_auth_mysql и возможно mod_perl потребуют, чтобы MySQL был установлен и запущен на вашей системе. Подробности установки MySQL находятся вне контекста этого документа. Скачайте архив и следуйте рекомендациям по установке из файла(ов) INSTALL. Впрочем, это довольно простая процедура. Что-то вроде этого:

./configure make make install

Все должно установиться так, что вы сможете собирать другие модули Apache.



Описание компонентов


Платформа, на которой был установлен веб-сервер: ОС Linux Red Hat 6.1 с ядром версии 2.2.14, запущена на машине с двумя PIII 600, RAID5 и т.п.

Веб-сервер Apache 1.3.12, со следующими модулями:

mod_fastcgi SNAP (также mod_rewrite), для работы с Zope.

Auth-MySQL 2.20

mod_ssl 2.6.2 (Open-SSL 0.9.5)

mod_perl 1.21

PHP 3.0.15

mod_auth_nds 0.3a



отдельный модуль, который может быть


Мы будем компилировать php-3.0.15, как DSO ( отдельный модуль, который может быть загружен и выгружен сервером). В результате, процесс обновления php становится более простым (без перекомпиляции всего (что может быть ужасно, если вы используете много модулей с Apache)).

GD

Наш php использует библиотеку gd для создания изображений. Я использовал старую версию gd (установленную из RPM). Таким образом, мы можем использовать вывод GIF файлов. Это не очень хорошо -, могут быть проблемы с авторскими правами, и таким образом Вы можете использовать версию более новую, чем 1.3, которая поддерживает только PNG файлы.

Чтобы установить компонент в системе, можно взять его из пакета RPM (rpm -i gd*.rpm) или собрать из исходников.

IMAP

Эта процедура похожа на установку gd. Я использовал RPM, т.к. у меня система Red Hat, но установка из исходников тоже очень проста - ./configure;make;make install.

OpenLDAP

Опять мы можем установить OpenLDAP из RPM или из исходников. Я выбрал компиляцию исходных текстов, т.к. последней версии нет в RPM.

./configure make make install

или rpm -i openldap*.rpm

Сборка и установка PHP 3.0.15

Как только вышеупомянутые компоненты установлены и работают, мы можем идти дальше и собрать PHP, как DSO. Процесс очень простой.


Подготовка


Вам будет нужно следующее:

Apache 1.3.12

PHP 3.0.15

GD 1.3 (для работы с GIF файлами)

Исходные тексты

RPM

RPM-devel

GD 1.8.1 (для работы с PNG файлами)

Исходные тексты

RPM

RPM-devel

IMAP 4.5+

Исходные тексты

RPM

OpenLDAP 1.2.9+

Исходные тексты

RPM

RPM-devel

mod_perl 1.22+

Требуемые модули для Perl5

MIME::Base64

URI

HTML-Parser

Digest-MD5

libnet

libwww

mod_ssl 2.6.2+

OpenSSL 0.9.5

Исходные тексты

RPM

RPM-devel

RSAREF 2.0

MM 1.0.12

MySQL 3.22.32

mod_auth_nds 0.4

ncpfs 2.2.0.17

Примечание: ядро должно быть скомпилировано с поддержкой протокола IPX.

mod_auth_mysql 2.20

mod_fastcgi SNAP Oct06

Это схема каталогов, которая здесь используется и может быть вам рекомендована:



В этом документе описывается процесс


В этом документе описывается процесс установки программы веб-сервера Apache и его модулей на веб-сервере Walla Walla College (www.wwc.edu). Этот документ может служить, как полезная рекомендация для выполнения установки. Он рассматривает процесс установки сервера. В частных случаях будут сделаны соответствующие комментарии, но основные шаги будут теми же.

Заключительные слова


Многое из данной информации может быть взято из файлов README и INSTALL, идущих с различными модулями. Однако, этот документ полезен в случаях, когда что-то работает не так, как ожидалось. Кроме того, последовательный документ более прост для просмотра и понимания, чем множество README файлов.



Что будет, если я сделаю / каталогом автоподключения


Ой-ой-ой-ой. У вас практически нет шансов, что все будет работать нормально. Я вас предупредил. Если вам нужен /grumblesmurf, то я советую использовать символьную ссылку. Так намного безопаснее.



Долгое ожидание отключения


Многим пользователям, которым приходилось ждать отключения файловой системы флоппи-диска, могло показаться, что 60-секундная задержка - это просто вечность. Может лучше синхронизировать (sync) диски, извлечь дискету несмотря на то, что файловая система не отключена, и никто ничего не заметит? Позвольте мне предложить более безопасные способы. Прежде всего вы можете уменьшить задержку. Но отключать фаловые системы, к примеру, каждые 15 секунд, очень неэффективно. Если у вас есть на то права, можно просто дать команду umount. Кроме того, можно дать команду программе автоподключения на отключение файловой системы. Если вы дадите (командой kill) сигнал SIGUSR1 процессу autofs, он отключит все, что только сможет. Но подождите рисовать кнопки отключения в ваших менеджерах окон - тут есть маленькая проблема.

Процесс autofs выполняется root-ом, и будет воспринимать сигналы только от него. Один из самых больших плюсов использования автоподключения - это то, что вы можете подключать и отключать файловые системы, *не имея* прав root. Можно написать C программу, выполняющую всю грязную работу, и поставить ей флаг suid. Другой вариант - использовать sudo, чтобы разрешить пользователям посылать нужный сигнал с помощью kill. Единственная проблема в этом случае - невозможность использования ` для обработки команд (что вам придется делать для определения PID). Вам необходимо будет поставить программу killall, что позволит вам следующее: (благодарю за совет)

ALL ALL=NOPASSWD:/usr/bin/killall -USR1 automount

Иначе вам придется разрешить пользователям посылать сигнал SIGUSR1 всем процессам, что может привести к нежелательным эффектам; например? выходу из xemacs.



Где я могу узнать еще что нибудь об автоподключении?


Учебник по autofs есть на http://www.linuxhq.com/lg/issue24/nielsen.html. Смотрите также am-utils на http://www.cs.columbia.edu/~ezk/am-utils

(Спасибо за эти URL)



Я использую SuSE 6.0, и мне необходимо ---timeout вместо --timeout


Э-э. Ладно, я буду иметь это ввиду. Другое решение проблемы "таймаут не работает" ("timeout no working") - добавить ключ -t в скрипт autofs.



Я не вижу точку подключения, например, /auto/floppy.


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

Один из способов справиться с этим - создать символьные ссылки (symbolic links) на каталоги, появляющиеся при автоподключении. Это решит проблему с сообщениями программ об отсутствии каталога (при отключенной файловой системе), но бездумный просмотр содержимого каталогов будет вызывать подключение файловых систем.



Я вставил диск Win95 ("vfat"), а он определился как диск с обычным FAT.


Это проблема не связана с автоподключением. При использовании типа файловой системы "auto" проверка на тип msdos производится раньше проверки на тип vfat. VFAT - это длинные имена Win95 и WinNT, врезанные в файловую систему FAT/MSDOS.

По словам одного из авторов утилиты mount, она является лишь промежуточным звеном между пользователем и системным вызовом, требующим явного указания типа файлового системы. Поэтому определение типа файловой системы - задача пользователя. Рассматривается вопрос о написании версии утилиты mount, которая проверяла бы тип подключаемой файловой системы в определенном порядке, взятом из списка, а не использовала "эвристический" алгоритм. Некоторые пользователи не включают поддержку файловой системы msdos в ядро, что предотвращает проверку на тип msdos до проверки на тип vfat. Это решение подходит для большинства пользователей. Мало кому действительно нужна файловая система msdos, но случалось, когда она была просто необходима, а под рукой ее не было, что весьма расстраивало меня.

Я уверен, что если кто-либо захочет связаться с автором(ами) mount, то его отзывы будут только приветствоваться. Ну а пока что, кроме случаев с исключением поддержки msdos, вы не можете подключать vfat, сохраняя возможность автоопределения остальных типов файловых систем. Надеюсь, когда-нибудь появится такая возможность настройки, и можно будет создавать точки подключения с различными типами файловых систем.



Как мне установить права и владельца на файловую систему (например, FAT)?


Посмотрите документацию (man page) на mount на предмет ключей, устанавливающих uid и umask. К сожалению, для файловой системы FAT отсутствует ключ, устанавливающий mode. Посоветуйтесь с людьми, отвечающими за подключение.



Как мне увидеть, что подключено?


Команда df.Команда mount без ключей сделает то же, и, к тому же, покажет опции подключения.



Кого благодарить за autofs?


Не меня. Мне не приходилось что-либо делать. Я просто хотел привлечь всеобщее внимание к той работе, что была проделана над autofs, и к тому, как легко его использовать. В сравнении с AMD, autofs очень хорошо документирован, за что я очень благодарен его разработчикам. Везде стоит copyright Transmeta, так что, к сожалению, я не могу привести список разработчиков. Однако, предполагаю, что Peter Anvin приложил свою руку к большой части этой работы. Кроме того, Peter прочитал лекцию на тему autofs на linuxworldexpo 3 марта 1999.



Мини-Howto: Автоматическое подключение файловых систем



don@sabotage.org


Перевод: Денис Дементьев, ASPLinux

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



Моя файловая система /auto/grumblesmurf подключена, и kill -SIGUSR1 не отключает ее.


Она чем-то используется. Даже Root не сможет отключить ее. Если вы тот, кто вызвал ее подключение (например, рядом нет никого, кто мог бы сделать это), поищите shell, который, возможно, находится в этом каталоге. Если таких нет, то поищите что-нибудь еще, что могло, так сказать, подставить невидимую ногу между дверью и косяком. Если ваши поиски не дали никакого результата, то попробуйте утилиту fuser.



Может ли быть у меня два файла с описанием точек подключения, ссылающихся на один каталог?


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



Настройка


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

В каталоге /etc есть два файла: auto.master и auto.misc. Мой auto.master выглядит так: /auto /etc/auto.misc --timeout 60

Первая опция это не точка подключения, а каталог, в котором будут находиться точки подключения, перечисленные в файле, указанном во второй опции. Третья опция указывает, что через 60 секунд после обращения будет произведена попытка отключения файловой системы. Само собой, что если файловая система используется, то она не будет отключена.

auto.misc - это файл, описывающий точки подключения. Он может иметь любое имя; этот назван auto.misc потому, что изначально он описывал каталог /misc. В файле auto.master могут быть указаны несколько файлов, описывающих точки подключения. Мой auto.misc выглядит так: kernel -ro,soft,intr ftp.kernel.org:/pub/linux cd -fstype=iso9660,ro :/dev/cdrom zip -fstype=auto :/dev/hdd4 floppy -fstype=vfat :/dev/fd0

Первая колонка ("ключ") - это точка подключения. В данном случае это будет /auto/floppy, /auto/zip и т.п. Вторая колонка - опции подключения; подробности смотрите в руководстве по подключению (man mount). Третья колонка указывает на устройство, где находится подключаемая файловая система. Строка "kernel" описывает подключение NFS. ":" в остальных строках сообщает, что это локальное устройство.



Установка


Ядро должно быть собрано с поддержкой autofs. В версии 2.0.хх поддержка autofs является экспериментальной, но работает стабильно. Начиная с версии 2.2.хх, поддержка autofs переведена в разряд стандартных возможностей.

Программа автоподключения и ее конфигурационные файлы необходимы для работы; самый простой способ - установить пакет из дистрибутива RedHat. Программа автоподключения должна запускаться rc скриптом из каталога /etc/rc.d/init.d. rpm устанавливает этот скрипт, но необходимо удостовериться в том, что он запускается либо создав ссылку на него из каталога rc?.d, либо воспользовавшись панелью управления RedHat. Не-rpm дистрибутивы также должны сделать это. И не старайтесь разобраться, что этот скрипт делает - если вы читаете этот документ, то, скорее всего, вам это ни к чему.



Copyright


Copyright Jan 10, 1995 by Christopher Neufeld (neufeld@physics.utoronto.ca)

Изменен 6 февраля, 1996.

Изменен 5 августа, 1997.



Мини-HOWTO: Резервное копирование при помощи MS-DOS


Christopher Neufeld
neufeld@physics.utoronto.ca


Перевод: Денис Дементьев, ASPLinux

В этом документе содержится информация о том, как использовать совместимый с Linux ленточный накопитель, установленный на машине с MS-DOS, для резервного копирования файловых систем Linux.



Процедура


В этом документе я использовал для машин имена "msdos" и "linux". "msdos" - это имя машины с ленточным накопителем, обычно работающей под MS-DOS. "linux" - имя машины, работающей под Linux, чьи диски нужно копировать на ленточный накопитель или с него. Для простоты я всегда называл первую машину "msdos", даже если она в данный момент работала под Linux. Более того, все пути в этом документе указаны относительно Linux машины с подключенными в систему SAR (Search-And-Rescue - Поиск-И-Спасение) дисками. То есть, файл паролей с жесткого диска вашего Linux компьютера будет /etc/passwd, а, к примеру, соответствующий файл на флоппи диске будет /tape144/etc/passwd.

Я пользуюсь скриптами для резервного копирования Карела Кьюбата (Karel Kubat) версии 1.03, их можно найти на

ftp://sunsite.enc.edu:/pub/Linux/system/Backup/backup-1.03.tar.gz

В этом документе я буду называть их просто - "скрипты копирования". Вам не обязательно использовать именно их. Лично я предпочитаю пользоваться ими, потому что они используют afio для создания несжатого архива сжатых файлов, вместо сжатого архива несжатых файлов. Первое намного безопасней, в случае ошибки чтения с носителя во время восстановления. Я понимаю, что Карел больше не сопровождает backup, а вместо этого написал "tob" (tape oriented backup). Работа с новым пакетом не должна значительно отличаться от описанной ниже, хотя я сам не пробовал его..

Прежде всего скачайте модуль ftape. Он входит в комплект всех современных ядер, но если вы используете старое, то можете найти модуль по адресу

ftp://sunsite.unc.edu/pub/Linux/kernel/tapes/ftape-2.05.tar.gz

Далее найдите образы загрузочного диска Slackware (я нашел сетевой диск, что, впрочем, не столь важно) и корневого диска tape144, и запишите их на флоппи-диски.

Модуль ftape будет работать только с ядром, под которым был собран. Я не смог заставить работать модуль ftape.o с корневого tape144 диска. Я думаю, что это произошло потому, что из него была вырезана символьная информация, из-за чего он не устанавливался. Так что вам придется собрать новое ядро, с поддержкой сети и ftape. Если вы используете старое ядро, то придется собирать и новый ftape.o. Почитайте указания, поставляемые вместе с архивом ftape. Не забывайте, что должны поддерживаться сетевые карты как машины с Linux, так и машины с MS-DOS.

Скопируйте вновь созданное ядро поверх старого на сетевой загрузочный диск. Для этого воспользуйтесь командой /bin/cp. Не используйте команду "dd", так как в этом случае вы просто создадите загрузочный образ ядра. Защитите диск от записи и пометьте его, как SAR#1.

Теперь подключите корневой tape144 диск. Во избежание неразберихи с именами файлов, я буду считать, что диск подключается в каталог /tape144. На нем нам понадобится дополнительное место, поэтому удаляем следующие файлы:


/tape144/bin/dialog /tape144/bin/elvis /tape144/bin/vi /tape144/boot/ftape.o


Теперь создаем новый файл:

/tape144/etc/exports


содержащий следующую строку:

/mnt msdos(ro)


где "msdos" нужно заменить на имя или IP адрес MS-DOS машины, к которой подключен ленточный накопитель.

Далее, чтобы не зависеть от DNS-сервера, добавьте в файл /tape144/etc/hosts

строки с именами и IP-адресами машин с Linux и MS-DOS. Мой, например, выглядит так:
128.100.75.114 caliban.physics.utoronto.ca caliban caliban.physics 128.100.75.111 ariel.physics.utoronto.ca ariel ariel.physics


Теперь исправим небольшую проблему с конфигурацией inetd - для демона rsh нужно прописать полный путь. Измените строку 19 файла /tape144/etc/inetd.conf на:
shell stream tcp nowait root /usr/etc/tcpd /usr/etc/in.rshd


Добавьте информацию о локальной сети в файл /tape144/etc/rc.d/rc.inet1, чтобы MS-DOS-машина могла с ней работать. Формат зависит от конфигурации вашей сети, можете просто скопировать соответствующие строки из файла /etc/rc.d/rc.inet1 с вашей Linux машины. Для моей сети нужно было добавить такие строки:
/etc/ifconfig eth0 128.100.75.111 broadcast 128.100.75.0 netmask 255.255.255.0 /etc/route add -net 128.100.75.0 netmask 255.255.255.0


IP адрес из строки с ifconfig - это адрес MS-DOS машины.

Теперь скопируйте этот файл в /tape144/etc/rc.d/rc.inet1-l

и измените в новом файле IP адрес на соответствующий Linux машине (а не MS-DOS).

Далее удалите строки с 3 по 11 из /tape144/etc/rc.local. Это оператор if, запускающий файлы rc.inet*. Во время загрузки нам это не нужно.

Создайте новый файл: /tape144/root/.rhosts, содержащий строку:

linux root


где, опять таки, "linux" нужно заменить на полное имя (включая домен) или IP адрес Linux машины.

Заполните поле пароля в /tape144/etc/passwd для root, чтобы никто не мог зайти в систему в то время, когда вы копируете информацию на ленточный накопитель. Это можно сделать, скопировав соответствующее поле из файла /etc/passwd file file c вашей Linux машины.

Скопируйте /usr/bin/rsh в /tape144/usr/bin.

Скопируйте следующие файлы из /usr/etc в /tape144/usr/etc:



in.rshd rpc.mountd rpc.nfsd rpc.portmap services tcpd


Создайте новый скрипт /tape144/bin/tapesetup, состоящий из следующих строк ("linux" замените на имя вашей Linux машины).
#! /bin/sh

/bin/sh /etc/rc.d/rc.inet1 /bin/sh /etc/rc.d/rc.inet2

/bin/mount linux:/nfs /mnt /bin/insmod /mnt/ftape.o


Обратите внимание на то, что ядра новых версий не требуют строки insmod.

Далее создайте другой скрипт, /tape144/bin/msdosset (сменив "linux" на имя вашей Linux машины):
#! /bin/sh

/bin/sh /etc/rc.d/rc.inet1 /bin/sh /etc/rc.d/rc.inet2

mount linux:/mnt /mnt /bin/insmod /mnt/ftape.o


Как и в предыдущем случае, ядра новых версий не требуют строки insmod.

Создайте файл /tape144/root/notes, доступный для чтения и содержащий полезную информацию о восстановлении файлов:
Для полного восстановления жесткого диска загрузитесь на Linux машине с дисков SAR #1 и #2, затем наберите следующее:

== /bin/sh /etc/rc.d/rc.inet1-l == /bin/sh /etc/rc.d/rc.inet2

== /usr/etc/rpc.portmap == /usr/etc/rpc.mountd == /usr/etc/rpc.nfsd

Затем вставьте диск SAR#3 и наберите:

== mount /dev/fd0 /mnt

Создайте новый каталог для подключения файловой системы:

== mkdir /mnt2

и подключите в него раздел вашего жесткого диска. Возможно понадобится предварительно отформатировать раздел - следуйте указазниям из Linux Installation HOWTO. SAR диски содержат все необходимое для форматирования.

Воспользуйтесь дисками SAR#1 и SAR#2 для загрузки на MS-DOS машине и запустите скрипт /bin/msdosset. Скрипт берет NFS файл с дискеты, что займет какое-то время, потерпите. Затем скопируйте файлы с ленты в /mnt2 на Linux машине.


Если вы используете для копирования скрипты, то скопируйте "afio" в подкаталог /tape144/local/bin. Не обязательно держать остальные файлы, используемые скриптами, на SAR дисках - архив может быть восстановлен, с помощью лишь "afio" и "gzip".

Я не смог воспользоваться скриптами в том виде, в котором они поставлялись. Архив на ленте вроде бы создавался нормально, но что-либо восстановить из него не удавалось. Я обнаружил, что если убрать размер блока и преобразующие операторы, то все работает нормально. Вот патч для скрипта "netbackup". Используйте его как для копии на Linux машине, так и для копии SAR дисков.
*** netbackup.orig===== Mon Jan= 9 17:22:32 1995 --- netbackup== Mon Jan= 9 17:23:25 1995 *************** *** 35,41 **** ================= "'mknod", devname, "p'"); ===== exec ("su -", USERNAME, "-c", ================= "'rsh ", REMOTE_HOST,= !====================== "\"dd", "of=" REMOTE_DEVICE, "obs=20k", "conv=sync\"", ======================= "", devname, =============== "'&" ======== ); --- 50,56 ---- ================= "'mknod", devname, "p'"); ===== exec ("su", USERNAME, "-c",= ================= "'rsh ", REMOTE_HOST,= !====================== "\"dd", "if=" REMOTE_DEVICE, "\"", ======================= ">", devname, =============== "'&" ======== );





Итак, вы закончили с диском SAR #2. Защитите его от записи.

Подключите чистый отформатированный диск (создайте его с помощью fdformat и mkfs). Скопируйте на него ftape.o и пометьте его SAR#3. Оставьте его открытым для записи, так как если его защитить от записи, то по какой-то причине возникают ошибки.

На Linux машине создайте каталог для работы NFS. Я создал каталог

/nfs


Запишите в него ftape.o (необрезанный, около 500+ Кб). Добавьте строку в файл /etc/exports:
/nfs msdos(ro)


Обратите внимание на то, что файлы в вашем NFS каталоге и его подкаталогах не защищены. Кто-нибудь может загрузить со своих собственных дисков Linux на MS-DOS машине и подключить этот каталог, так что не храните в нем ничего важного. Перезапустите NFS демоны rpc.mountd и rpc.nfsd. Так как они не перезапускаются по SIGHUP, просто убейте их командой kill и запустите снова. Если они не запускаются автоматически из /etc/rc.d/rc.inet2, можно включить их туда сейчас.

OK, теперь у нас все настроено для резервного копирования и восстановления. Загрузите MS-DOS машину с диска SAR#1. Затем, когда появится соответствующее приглашение, загрузите диск SAR#2. Войдите в систему root-ом и запустите /bin/tapesetup. Выйдите из системы. Если вы используете скрипты для резервного копирования, то команда netbackup теперь должна работать. Можно также воспользоваться ключом "-f msdos:/dev/ftape" команд tar, cpio, или mt. Если у вас есть программа резервного копирования, работающая только с локальными файлами, попробуйте следующее. Предположим, программа называется "localbackup" и записывает в файл, указываемый в командной строке в качестве аргумента:


mknod /tmp/tapepipe p rsh msdos dd of=/dev/ftape < /tmp/tapepipe & localbackup /tmp/tapepipe


После окончания копирования копирования удалите /tmp/tapepipe.

Восстановление на работающий Linux: скрипт netbackup, tar, cpio и тому подобные утилиты работают без каких-либо специальных действий со стороны оператора. Если у вас программа восстановления из локального файла, попробуйте следующее:
mknod /tmp/tapepipe p rsh -n msdos dd if=/dev/ftape >> /tmp/tapepipe & localrecovery /tmp/tapepipe




После окончания копирования удалите /tmp/tapepipe.

Заметьте, что я использую "rsh" для входа пользователем root на MS-DOS машину. Для этого требуется правильный .rhosts. Конфигурация на диске "tape144" позволяет выполнять rsh root-ом, но не дает зайти root-ом, с помощью telnet или rlogin - входы в систему разрешены только с консоли. Это хорошо для безопасности.

Если вам не нравится root-овый файл .rhost, то можно создать нового пользователя "tapeuser" на диске SAR#2, разрешив ему работу с ленточным накопителем, но запретив работу с дисками (создайте новую группу и включите в нее tapeuser, затем выполните команды chown и chmod для файлов /dev/rft* и /dev/nrft*). При этом ваша программа резервного копирования должна выполнять rsh на этого пользователя, а не на root. Само собой, должен существовать файл .rhost в каталоге ?tapeuser на SAR#2. Я сделал именно так.

Наконец, указания по полному восстановлению отказавшего жесткого диска. Предполагается, что раздел Linux не подлежит восстановлению. Если требуется, переформатируйте раздел, как описано в Linux Installation HOWTO. Загрузите Linux с SAR disk #1. Когда потребуется, вставьте диск #2. Далее следуйте указаниям из файла /root/notes (ранее я ссылался на него, как на /tape144/root/notes). После загрузки обеих машин запустите используемую вами команду восстановления. Если вы используете скрипты для резервного копирования, то это можно сделать так:



перейдите в каталог, в который подключается восстанавливаемый раздел жесткого диска.



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



Введите команду:

rsh -n msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -


или

rsh -n -l tapeuser msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -


или

mknod /tmp/backpipe p rsh -n msdos dd if=/dev/ftape >> /tmp/backpipe & afio -i -v -Z -c 1024 /tmp/backpipe




При этом данные считываются с ленточного накопителя на удаленной машине и выводятся на стандартный выход, где их берет afio. Ключ "'-i"'указывает, восстанавливать файлы относительно текущего каталога (в данный момент корневой каталог восстанавливаемого раздела), "-v" - подробный вывод (список восстанавливаемых фалов), "'-Z" - указывает afio, что архив состоит из отдельно сжатых файлов, "-c 1024" - указывает использовать 5 Мб потоковый буфер для избежания излишней перемотки ленты.


я пробовал написать его, то


Команды, перечисленные в /tape144/root/notes, могут выполняться скриптом. Когда я пробовал написать его, то получал ошибки rpc. Думаю, что это происходило из-за того, что команды запускались слишком быстро, и portmapper не загружался тогда, когда было необходимо. Если я вводил команды с клавиатуры, то все работало, поэтому я рекомендую, так и делать.
Думаю, что, с точки зрения безопасности данных, все нормально. Заметьте, что несмотря на это, можно получить доступ к вашим файлам, вытащив кассету до того, как вы сделаете это, и прочитав ее в другом месте. Если ваши данные важны, шифруйте их - архивируйте на стандартный вывод и перенаправляйте его на вход программы шифрования, а вывод программы шифрования на канал /tmp/tapepipe, как описано выше. При этом помните, что, в случае ошибок при копировании, данные не подлежат восстановлению, так как весь архив превращается в один поток, зашифрованный DES. С помощью ключей afio можно указать, сперва упаковывать файл gzip-ом, а затем посылать его программе шифрования, но при этом появляется довольно много чистого текста, с которым могут поработать взломщики, так что лучше вообще не использовать gzip и просто шифровать данные (цена - место на ленте). Думаю, не нужно напоминать, что шифрованные DES файлы не сжимаются.
Указания, касающиеся rc.inet1, позволяют работать только с локальной сетью (а не с остальным миром через шлюз).
Для полного восстановления на чистый жесткий диск MS-DOS машине понадобится SAR disk #3 с ftape.o, подключаемый через NFS из-за того, что некоторые старые модули ftape не могут управлять некоторыми ленточными накопителями при подключенном флоппи-диске. С новыми ядрами можно не устанавливать NFS.
Это очень важно. ***ПРОВЕРЬТЕ*** процедуру восстановления с SAR дисков. Я, конечно, проверял, но лучше убедиться, хотя бы на примере восстановления одного файла с использованием только дисков SAR (то есть, без подключения жесткого диска) . Если это невозможно сделать, по причине работы в системе множества пользователей, то подправьте настройки на SAR дисках, временно сменив "linux" на имя другой MS-DOS машины, загрузитесь на двух машинах с MS-DOS и проверьте. Затем смените имя обратно на "linux".