Установка GRUB
Проверьте, что у вас последняя версия GRUB. Я использую версию 0.5.96.1. Версия из моего дистрибутива устарела и принесла мне много бед. Самую последнюю версию вы можете скачать с http://www.fsf.org/.
Теперь вам нужно установить GRUB на дискету. Вам пока не нужно устанавливать его на жесткий диск, поскольку Windows 2000 его перепишет.
grub-install '(fd0)'
Создайте для GRUB следующий menu.lst. Этот файл живёт в /boot/grub.
# # Образец конфигурационного файла загрузочного меню #
# Автоматическая загрузка после минуты timeout 60
# По умолчанию, загружаем второй пункт default 1
# Fallback на первый пункт fallback 0
title Windows 2000 unhide (hd0,0) hide (hd0,1) hide (hd0,2) rootnoverify (hd0,0) chainloader +1 makeactive
# Для загрузки Linux title Linux root (hd0,7) kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261
title Windows 98 hide (hd0,0) hide (hd0,1) unhide (hd0,2) rootnoverify (hd0,2) chainloader +1 makeactive
title DOS 6.22 hide (hd0,0) unhide (hd0,1) hide (hd0,2) rootnoverify (hd0,1) chainloader +1 makeactive
# Для загрузки Linux title Linux (single user) root (hd0,7) kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261 single
title Partition 2 (floppy) hide (hd0,0) unhide (hd0,1) hide (hd0,2) chainloader (fd0)+1
title Partition 3 (floppy) hide (hd0,0) hide (hd0,1) unhide (hd0,2) chainloader (fd0)+1
Проверьте, что можете загрузить linux с дискеты. Если у вас проблемы, вы можете войти в командную строку GRUB и выяснить в чём дело. GRUB очень хорошо документирован, если у вас возникли проблемы, посмотрите документацию.
УСТАНОВКА И ИСПОЛЬЗОВАНИЕ OPENLDAP
LDAP — это протокол для доступа к службе каталогов в архитектуре клиент-сервер. Он берет свое начало от X.500, но сегодня он может использоваться для доступа и к другим службам каталогов. Нам требовался пакет «все в одном», где бы наряду с собственно протоколом был реализован механизм хранения баз данных. Мы выбрали наиболее позднюю из стабильных версий OpenLDAP (1.2.11) для среды Linux 2.2.x. Предполагалось, что единственной целью системы будет аутентификация пользователей ftp; таким образом, разработка базы данных значительно упрощалась. Интеграция этих функций в уже существующую базу данных LDAP потребовала бы большего времени и сил.
Процесс установки происходил в соответствии со стандартной документацией, которую можно найти по адресу: http://www.openldap.org/ — там же находятся соответствующие исходные коды программ.
Файл slapd.conf — основной конфигурационный файл для slapd (slapd — это сервер LDAP в проекте OpenLDAP). В нем есть три директивы, на которые надо обратить внимание:
suffix | "dc=your-domain, dc=com" |
rootdn | "cn=Admin, dc=your-domain, dc=com" |
rootpw | your-secret-password |
В этих директивах rootdn и rootpw — имя и пароль пользователя, которые необходимы для доступа к базе данных, о чем будет рассказано позже. Строки, приведенные выше, — это просто пример задания директив; на самом деле рекомендуется использовать зашифрованный пароль — в документации вы найдете соответствующие указания. В Листинге 1 файл slapd.conf приведен полностью. (Все листинги, упоминаемые в этой статье, можно найти на http://www.sysadminmag.com.)
При установке пакета уделите должное внимание ограничению доступа. По умолчанию ваша база данных может быть доступна для любого компьютера, который подключен к Internet. Таким образом, необходимо корректно определить параметры доступа и установить, где необходимо, различные фильтры и экраны для того, чтобы ситуация оставалась под контролем.
После того как slapd установлен и запущен, следующая ключевая проблема — создание класса объектов для хранения учетных записей пользователей. На данном этапе схема работы с OpenLDAP может быть расширена для настройки базы данных под нужды конкретной задачи (LDAP использует концепции классов и объектов вместо таких элементов, как поля и таблицы реляционных баз данных).
Нам было важно создать формат данных, который был бы понятен нашему серверу ftp. Мы воспользовались рекомендуемой Джоном Моррисси конфигурацией для модуля mod_ldap ProFTPD, которая более подробно описана ниже.
В результате содержимое нашего файла local.oc.conf выглядело следующим образом:
# FTP account object class.
objectclass ftpAccount requires objectclass, cn, uid, homeDirectory allows userPassword, accountStatus, loginShell, uidNumber, gidNumber
Многие из указанных атрибутов хорошо знакомы системным администраторам, хотя это, возможно, не касается атрибута cn. Это сокращение означает common name (общее имя). В данном классе мы используем его для хранения имени домена. Поскольку наша конфигурация ориентирована на домены, в любой работе администратор, скорее всего, будет использовать имя домена, например, для поиска.
В вышеприведенной схеме каждый домен, о котором знает система, имеет соответствующую учетную запись на сервере ftp (имя домена — cn, имя ftp-записи — uid). Каждый домен имеет по одной учетной записи.
Ниже приведена краткая суммарная информация об атрибутах класса:
objectclass — класс элемента (ftpAccount);
cn — имя домена (описывалось ранее);
uid — имя учетной записи ftp;
userPassword — пароль для аутентификации на сервере ftp (см. ниже);
accountStatus — атрибут для административных целей (открыт?, оплата позднее? и т. д.);
loginShell — не используется (поскольку пользователи не имеют доступа к оболочке);
uidNumber — идентификатор UID, выделенный поль зователю;
gidNumber — групповой идентификатор GID, выделенный пользователю.
Обратите внимание, что атрибуты uidNumber и gidNumber не применяются, поскольку вместо них мы используем значения, заданные при конфигурации нашего ftp-сервера. Детали приведены ниже.
В главном конфигурационном файле сервера slapd с именем slapd.conf необходимо указать ссылку на local.oc.conf следующим образом:
include /usr/local/etc/openldap/local.oc.conf
Это все, что требуется для того, чтобы наш новый класс «ожил». Надо помнить только одну вещь — наша база данных еще не содержит ни одной реальной учетной записи.
Установка linux
Установите свой любимый дистрибутив linux. Для разбивки диска на разделы вам потребуется fdisk. Предварительно подсчитайте сколько места займёт каждая из ваших операционных систем.
Я разделил свой диск так:
Device Boot Start End Blocks Id System /dev/hda1 1 6 48163+ 16 Hidden FAT16 /dev/hda2 7 19 104422+ 16 Hidden FAT16 /dev/hda3 20 593 4610655 1b Hidden Win95 FAT32 /dev/hda4 594 3737 25254180 5 Extended /dev/hda5 594 848 2048256 6 FAT16 /dev/hda6 849 2123 10241406 7 HPFS/NTFS /dev/hda7 2124 2140 136521 82 Linux swap /dev/hda8 2141 2523 3076416 83 Linux
Мой первый раздел для загрузки Windows 2000. 10МБ для этого вполне достаточно. В этом разделе содержаться файлы, необходимые только для загрузки NT - boot.ini, ntldr, ntdetect.com и т.д.... В моём примере NT будет размещаться в 6-м разделе. Этот раздел Hidden FAT16. My first partition is for booting Windows 2000. 10MG should be plenty to do that. This partition will only contains the file necessary to boot NT such as boot.ini, ntldr, ntdetect.com, etc... NT will reside in partition 6 in my example. This partition is Hidden FAT16.
Второй раздел - для DOS. Мне кажется 100 МБ достаточно. Это также FAT16.
Третий раздел - для Win9x. Я выделил 5 ГБ и для лучшей производительности сделал его FAT32.
Затем для оставшегося места на вашем жестком диске создайте расширенный раздел. Здесь он показан как 4-й раздел на диске.
Создайте раздел на 2 ГБ. Этот раздел используется для обмена данными между всеми операционными системами. Проверьте, что сумма этого и всех предыдущих разделов не превышает 8 ГБ. Это ограничение DOS.
Затем создайте раздел для своей Windows 2000. Я выделил 10 ГБ, поскольку этот вид windows словно ожиревшая свинья. Для скорости я сделал его разделом HPFS/NTFS.
После этого добавьте swap-раздел и раздел linux. Убедитесь, что у вас нет отдельного раздела для /boot. Думаю, для GRUB лучше, если /boot вы сохраните в корневом разделе.
По окончанию установки linux отформатируйте разделы fat16: mkdosfs /dev/hda1 mkdosfs /dev/hda2 mkdosfs /dev/hda6
Установка OpenOffice
Прежде всего нужно установить пакет:
urpmi openoffice
После этого производится сетевая установка, для этого нужно, находясь в X и получив права root, запустить:
/usr/lib/openoffice-6.0/setup -n
Во время установки обязательно укажите в качестве каталога для установки общедоступный, например /usr/lib/oo.
По окончании сетевой установки нужно произвести установку для обычного пользователя (для каждого из пользователей). Находясь в X в качестве обычного пользователя, запустите:
/usr/lib/oo/program/setup
и проведите установку для пользователя.
Стартовать программу нужно командой ~/openoffice60/soffice
Abiword - текстовый процессор, совместимый по формату данных с MS Word. Он удобен для создания документов с простой структурой и для просмотра документов.doc и.rtf.
Koffice - все еще недостаточно устойчивая, но интересная офисная система со всеми компонентами, совместимая с MS Office.
Lyx и kLyX Если Вам нужно просто подготовить красивый документ, а для обмена с другими пользователями достаточно плоских текстовых файлов (или эти пользователи уже выбрали Linux), то обратите внимание на LyX и kLyX. Эти
программы представляют из себя развитый, похожий на обычный, текстовый процессор, и являются оболочками для знаменитой издательской системы LaTeX. Функциональность LyX несколько выше, но если Вы привыкли работать в KDE,
то kLyX Вас вполне устроит.
Обе программы полностью адаптированы для работы с русским (равно как с украинским и белорусским языками), Вам не понадобится никаких специальных переключателей клавиатуры. Не забудьте лишь установить TeX/LaTeX, если
хотите использовать изх полнофункционально, не просто для подготовки плоских текстов.
В версии LyX/kLyX из RE добавлена также поддержка создания русских документов в формате SGML/LinuxDOC. Мы рекомендуем установить пакет sgml-tools, если Вы хотите использовать это универсальный формат, позволяющий
легко (при помощи утилит sgml2html, sgml2latex, sgml2rtf, sgml2txt) получать документы в различных форматах. До сих пор этот формат является стандартом для HOWTO и Вы можете переводить и писать новые HOWTO не изучая
язык SGML, в простом интерфейсе LyX.
В дистрибутив включены также многочисленные словари, включая англо-русский словарь Мюллера, работать с которыми можно через системы dictd и Mova.
Интерес могут представлять также программа складского учета ananas и демонстрационная версия правовой базы “Референт”, способная предоставлять юридические документы через веб-интерфейс.
Установка RedHat
Итак, берем ISO-образы дистрибутива с ближайшего российского зеркала. Достаточно двух дисков: документацию, исходники и powertools качать не обязательно. Предварительно неплохо скачать с ftp.redhat.com MD5 суммы для файлов и сравнить их с MD5 суммами скопированных файлов (так, на всякий случай ;). Прожигаем полученные iso-образы на CD. Кстати, покупка комплекта в ближайшем ларьке обойдется гораздо дешевле (но MD5 все равно надо сравнить!).
Затем надо скопировать накопившиеся изменения к дистрибутиву. К моменту выпуска следующей версии изменений набегает на целый CD! При исправлении ошибок основной дистрибутив не изменяется, а просто добавляются файлы в директорию update, т.е. при установке приходится сначала устанавливать плохо работающий дистрибутив, а затем вручную вносить изменения (а это иногда сотни мегабайт!). Иногда RedHat делает называемый "respin", т.е. обновленный дистрибутив, но там изменяется только программа установки, а обновленные пакеты все равно надо качать самому.
Расположение ftp-архивов меняется со временем (фактически каждый раз приходится искать куда же они его переместили и как расположили файлы на этот раз)
Примеры установок для различных версий и ситуаций:
Linux RedHat 7.1 на сервер с CD-ROM без графики Linux RedHat 7.1 на домашнюю рабочую станцию с выходом в интернет по модему с CD-ROM Linux RedHat 7.0 на сервер с CD-ROM Linux RedHat 6.2 на сервер с ftp-сервера
Linux RedHat 6.2 на домашнюю рабочую станцию с выходом в интернет по модему Linux RedHat 6.0 на сервер с ftp-сервера
Linux RedHat 6.0 на SMP сервер с ftp-сервера
Linux RedHat 6.0 на домашнюю рабочую станцию с выходом в интернет по модему
LILO работает через BIOS, а большинство BIOS позволяют доступ только к первым двум IDE-дискам (считая ATAPI CD-ROM) в пределах первых 1023 цилиндров. Так что директория (или раздел) /boot должна удовлетворять данным ограничениям.
Установка ReiserFS
За техническими деталями обращайтесь на сайт NAMESYS и на страницу с FAQ .
ReiserFS присутствует в официальной версии ядра Linux, начиная с версии 2.4.1-pre4. Для работы вам понадобятся специальные утилиты (например, mkreiserfs для создания ReiserFS на пустой партиции, resizer и др.).
Современная версия ReiserFS существует в виде патчей либо для ядер 2.2.x, либо - 2.4.x. Я тестировал патч на ядре 2.2.19
Как обычно первый шаг - это скачать стандартное ядро linux-2.2.19.tar.bz2 с зеркала kernel.org. Потом возьмите для reiserfs 2.2.19 patch. В настоящее время версия последнего патча - 3.5.33.
Пожалуйста, обратите внимание на то, что если вы выбираете патч для ядра 2.4.x, то тогда нужно также скачать тарбол с утилитами reiserfsprogs-3.x.0j.tar.gz.
Теперь распакуйте ядра и патч. Скопируйте тарболы в /usr/src и перенесите каталог linux в linux-old; затем выполните: tar -Ixf linux-2.2.19.tar.bz2 bzcat linux-2.2.19-reiserfs-3.5.33-patch.bz2 | patch -p0 Скомпилируйте ядро, предварительно установив поддержку reiserfs в разделе "Файловая система".
Скомпилируйте и установите утилиты reiserfs: cd /usr/src/linux/fs/reiserfs/utils make make install Установите новое ядро и перезагрузитесь. Теперь можно создать новую файловую системы командой: mkreiserfs /dev/xxxx и смонтировать ее с помощью: mount -t reiserfs /dev/xxx /mount_dir
Установка "режима отображения"
Все поддерживаемые режимы отображения имеют свои условные названия, типа VGA_80x25, VGA_80x30 и т.д. (как вы догадываетесь, первая цифра - количество знаков в строке, вторая - количество строк). Полный список их есть в "краткой сводке".
Для смены режима надо просто выполнить команду
vidcontrol "название режима"
например
vidcontrol VGA_80x30
Установка сети: есть из чего выбирать, главное не запутаться
Настройка сетевых интерфейсов — это самое важное, поскольку вряд ли кто-то ставит FreeBSD или Linux с иной целью, чем задействовать сетевые возможности последних. Представляемые виртуальные машины имеют несколько принципиально различных методов подключения к вашему компьютеру и ко внешней сети. Рассмотрим (как более канонический вариант) схемы подключения vmware и потом перечислим отличия в VirtualPC.
Существует три основных режима подключения виртуальной машины к сети: Bridged mode, NAT и Host Only, схематически показанные на рисунке.
Bridged mode дает виртуальной машине непосредственный доступ к внешнему интерфейсу хост-машины, на котором виртуальная машина самостоятельно устанавливает или получает через DHCP собственные сетевые параметры — такие как IP-адрес, маршрутизатор по умолчанию и тому подобные. Этот вариант подключения нужно использовать для тех случаев, когда на VM вы устанавливаете серверы, которые должны иметь определенные сетевые адреса.
NAT использует трансляцию адресов исходящего трафика. Напомню, что в этом случае адрес виртуальной машины, полученный по встроенному в NAT DHCP, в момент пересылки на внешний протокол подменяется на адрес хост-машины. При этом запрос помещается в таблицу запросов. Полученные ответы от удаленных систем сверяются с этой таблицей — и по ряду параметров находится соответствие, по типу «в ответ на ваше письмо от такого-то какого-то рады вам сообщить…». При пересылке в VM адрес снова подменяется, так чтобы программа, запросившая информацию, получила пакеты на свой порт и адрес. Таким образом пересылаются запросы и в серверные приложения, к которым пользователь обычно не обращается напрямую, например DNS.
NAT без проблем работает на исходящем трафике, но в случае входящего запроса все запросы приходят на адрес хост-машины, поскольку во внешнем мире все NAT-адреса были представлены одним адресом хост-системы. Для того чтобы виртуальная машина могла получать входящий трафик, на хост-машине необходимо вручную установить правило ретрансляции, смысл которого примерно следующий: «входящие пакеты на порту таком-то переводить в ВМ такую-то на порт такой-то (порт обычно тот же самый)». То есть доступ к серверу можно осуществлять и через NAT, но это требует дополнительной настройки. Для более подробной инструкции по настройке NAT под VMWare ищите «Understanding NAT» в справочном пособии и изучайте файл C:\WINNT\system32\vmnetnat.conf.
Третий режим Host Only представляет дела так, будто у хост-машины в дополнение к имеющимся сетевым интерфейсам есть еще одна сетевая карточка (видимая в системе и без запуска VM), к которой подключается наша ВМ, образуя с хост-машиной маленькую подсеть. Таким образом, можно устроить сеть на одном компьютере, что называется, не отходя от дома. При этом совсем не обязательно судьба исходящих пакетов заканчивается на хост-машине — она может выступать как мост между подсетями и переводить пакеты на другой интерфейс, например на модем. Таким образом ВМ может получать доступ к другим подсетям.
Завершая эту тему, нужно отметить, что все это относится к одному сетевому интерфейсу ВМ, виртуальной сетевой карточке, создаваемой по умолчанию при создании ВМ. Впоследствии вы можете создать любое количество таких интерфейсов — и на каждом настроить свой режим, превратив ВМ в маршрутизатор, NAT, DHCP и настроив его, как любой сервер.
Пару слов о VirtualPC, которая «тоже ВМ». Настройки здесь слабее, но, в общем, то же самое. Первый режим — None, никакой сети. Зачем он нужен — большая тайна Connectix. Второй режим — NAT, но, в отличие от VMWare, здесь никакой настройки не предусматривается, так что «A guest PC using Shared Networking is not able to act as an Internet server». Кроме NAT, есть еще режим Virtual Switch, что наиболее точно соответствует Bridged mode в VMWare. То есть виртуальная машина имеет свой собственный IP на внешнем интерфейсе хоста, со всеми вытекающими последствиями. У этого режима есть дополнительный фильтр, который ограничивает хождение пакетов «только между ВМ», «ВМ и хост» и «только наружу». При всей фантазии я не смог придумать этим фильтрам какого-то применения, так что оставляю это читателям в качестве лабораторной работы.
6. Настройка производительности
Естественно, ни для кого не секрет, что несколько приложений, работающих параллельно, будут работать медленнее, чем по отдельности. В случае с виртуальными машинами процесс усугубляется тем, что все приложения на всех машинах разделяют один (если вам повезло, то, возможно, два) процессора. Поскольку виртуальные машины не используют особых средств разделения процессорного времени, кроме системных диспетчеров хост- и виртуальной машин, и учитывая, что накладные расходы современных диспетчеров составляют не более 1%, то для расчета производительности можно применять обычную арифметику.
Например, для нормальной работы Windows 2000 нужен (для ваших целей — в зависимости от того, что вы там гоняете) Pentium II/III 600. Для работы вашего Linux-сервера в терминальном режиме требуется Pentium 300. Просто складывая эти числа, вы получите искомый 1 ГГц, на котором обе системы будут поддерживать прежнюю производительность.
В меню Settings > Preferences на закладке Priority VMWare есть установка приоритетов, помогающая тонко настроить приоритет вашей виртуальной машины при распределении циклов процессора. Global обозначает настройку для всех виртуальных машин. Локальная настройка относится только к текущей виртуальной машине. Grabbed input соответствует режиму, когда виртуальная машина получает управление и захватывает ввод пользователя; Ungrabbed, соответственно,- фоновому режиму виртуальной машины (даже если ее окно и находится на переднем плане).
Особое внимание нужно обратить на память, учитывая, что она выделяется статически, в момент запуска виртуальной машины. Поскольку на хост-системе установлена виртуальная память, можно загрузить несколько виртуальных машин — и под все будет распределена память. Но поскольку вся она (на 90%) будет в файле подкачки, производительность упадет драматически. Рассчитывайте память честно, беря в расчет только физическую память. Например, современные Linux-системы с Gnome для комфортной работы требуют около 128 Мб памяти. Плюс в хост-режиме под NT5 вы планируете обрабатывать графику (как я, например, обрабатываю скриншоты), что, по моим оценкам, тоже требует около 128 Мб. Добавьте сюда еще несколько приложений, таких как браузер, почтовый клиент, текстовый редактор. Таким образом, система с 256 Мб будет показывать несколько замедленную реакцию в требовательных к памяти приложениях, а вот установка 256 + 128 Мб обеспечит полный комфорт в работе.
Чтобы не блуждать в потемках и действовать наверняка, постоянно пользуйтесь Диспетчером задач для просмотра нагрузки на процессор и распределенной памяти, исследуйте, сколько требуют те или иные системы при запуске тех или иных приложений. Стремитесь привести свой компьютер в соответствие с требованиями ваших VM — и тогда вы получите максимум производительности и удовольствия от этой технологии. В конце концов, апгрейд памяти и процессора — это огромная экономия по сравнению с отдельным компьютером, не говоря уже об удобстве работы с несколькими системами одновременно.
7. Вопрос последний, который возникает первым: «Как мне выйти из этой виртуальной машины?»
В VMWare нажмите левые <Alt + Ctrl>, в VirtualPC — правый <Atl>. Эти же комбинации вернут вас к хост-системе из полноэкранного виртуального режима. Другое дело - как вообще вернуться из виртуального компьютерного мира в реальную жизнь, но для этого клавишной комбинации пока не предусмотрено.
Арсений Чеботарев,
ac@comizdat.com [an error occurred while processing this directive]
Установка stageна дискету
Вставьте форматированую дискету в дисковод и введите: [root@heaven /boot/grub ]# dd if=stage1 of=/dev/fd0 bs=512 count=1
И опять, рассмотрим команду в деталях:
if=входной файл т.е., stage1 of=выходной файл т.е., привод для гибких дисков (эта строка может отличаться для вашего компьютера) bs=количество байт для чтения и записи В нашем случае 512 байт. count=сколько раз произвести эту операцию Каждая новая итерация копирует следующие bs байт в место назначения.
[root@heaven /boot/grub ]# dd if=stage2 of=/dev/fd0 bs=512 seek=1
Всё аналогично команде для установки stage1, исключая новый ключ seek. Seek пропускает 1 блок из "bs" байт. Например в приведённой выше команде bs = 512, поэтому seek=1 пропустит первые 512 байт дискового пространства и продолжит с 513го байта. Это сохранит результат выполнения первой операции, т.е. первые 512 байт занятые stage1 не будут перезаписаны.
Всё, вы завершили основную установку на дискету.
Установка VMware
Пользоваться VMware достаточно легко. Я устанавливал только версию для Windows (из-за нехватки скорости для скачивания), и, как отмечено выше, именно эта версия мне более всего необходима. Однако, разумнее было бы использовать более стабильную ОС в качестве основной -- т.е. запускать виртуальную машину с Windows на компьютере с Linux, а не наоборот, как я вынужден делать.[*4]
Установка Linux на виртуальную машину очень проста:
создать новую виртуальную машину с желаемыми характеристиками вставить загрузочный CD с Linux в привод (или установить ISO-образ в качестве виртуального CD-привода) включить виртуальную машину
Таким способом я без проблем устанавливал SuSE 8.1 и Mandrake 8.2, хотя виртуальная машина настаивала на загрузке с IDE CD-привода. Однако, после установки я смог включить SCSI-привод.
Виртуальная машина имеет доступ к сети через разработанный VMware Inc. протокол (так называемый, bridging протокол)[*5], который доступен, если только сетевая карта включена в основной системе. При этом виртуальной сетевой карте можно либо назначать статический IP-адрес, либо получать его от DHCP-сервера в сети.
После этого можно подключаться к серверу виртуальной машины с самой виртуальной машины, других компьютеров в сети и даже с основного компьютера через внешний сетевой адрес виртуальной машины.
Учтите, что для своего протокола моста (bridging protocol) VMware назначает адреса основной системе и виртуальным машинам из подсети 192.168.19.0/24 и 192.168.199.0/24 -- их нельзя использовать для других соединений.[*6]
При наличии других, более прямых способов передачи файлов из одной системы в другую, наиболее легким, который я нашел, является установка Samba-сервера на виртуальной Linux-машине. Этот способ работает достаточно хорошо и логически быстрее 100 Мбитного соединения, хотя может быть неприемлемым в производственной сфере.[*7]
Конечным результатом моих изысканий является то, что концепция VMware, при всех ее недостатках, достаточно привлекательна. Она может быть полезна в среде разработки, для программирования или для системного администрирования. Но ее не стоит использовать в сфере производства -- если действительно необходимы две операционных системы, лучше купить два компьютера!
PS. Не желает ли кто-нибудь перевести эту статью -- я написал ее в духе программной лицензии GPL, т.е. вы можете ее свободно (и это поощряется) копировать, пересылать и переводить, только, пожалуйста, ПОЖАЛУЙСТА, пришлите мне сообщение по e-mail! Мне нравится следить за переводами -- это хорошо для учебного плана :-)
Установка windows :
Мне потребовалось инициализировать первый раздел перед установкой windows 2000. Вставьте стартовый диск DOS и перегрузите компьютер. После появления командной строки DOS сделайте следующее:
FDISK /MBR SYS C:
Теперь вы можете продолжать и устанавливать windows 2000. В этот момент Windows 2000 спросит о разделе, в который вы хотите установить. Раздел, созданный вами с помощью fdisk, будет выглядеть как разрушенный (damaged) или неотформатированный. Продолжайте и выбирайте его.
Чтобы спрятать меню Windows 2000 отредактируйте файл boot.ini, который должен быть на диске C:. Измените время таймаута с 30 на 0.
[boot loader] timeout=0 default=multi(0)disk(0)rdisk(1)partition(1)\WINNT [operating systems] ...
Вставьте дискету GRUB. Когда увидите меню, вставьте аварийную (Emergency) дискету Windows 98. Выберите в меню раздел 3 (floppy). Нажмите enter. Дискета загрузится, а разделы 1 и 2 будут скрыты.
Запустите FDISK и проверьте, что устройство C: является разделом 3. Затем установите Windows 98:
SYS C:
Установка XFS
За техническими подробностями о файловой системе XFS обратитесь на cтраницу SGI о XFS для Linux или страницу публикаций на сервере SGI.
Также посмотрите страницу с FAQ .
XFS - это журналирующая файловая система для Linux, которая была разработана SGI. Это зрелый продукт, который доказал свою работоспособность, функционируя в качестве основной файловой системы на машинах, работающих под IRIX, которые поставлялись всем клиентам SGI. XFS выпущена под GPL.
XFS Linux 1.0 выпущена для ядра Linux 2.4, и я попробовал патч для 2.4.2. Таким образом, первым делом нужно раздобыть ядро linux-2.4.2 с одного из зеркал kernel.org.
Патчи лежат наoss.sgi.com/projects/xfs/download/Release-1.0/patches. Из этого каталога скачайте:
linux-2.4-xfs-1.0.patch.gz
linux-2.4.2-core-xfs-1.0.patch.gz
linux-2.4.2-kdb-04112001.patch.gz Скопируйте файл ядра Linux linux-2.4.2.tar.bz2 в каталог /usr/src, перенесите существующую директорию linux в linux-old и распакуйте новое ядро: mv linux linux-old tar -Ixf inux-2.4.2.tar.bz2 Скопируйте все патчи в корень вашей иерархии исходников Linux (то есть в /usr/src/linux) и применительно к ним сделайте: zcat patchfile.gz | patch -p1 Затем сконфигурируйте ядро, активизируя опции "XFS filesystem support" [Поддержка файловой системы XFS] (CONFIG_XFS_FS) и "Page Buffer support" [Поддержка страничной буфферизации] (CONFIG_PAGE_BUF) в разделе "Файловая система". Обратите внимание на то, что вам также понадобится обновить следующие системные утилиты до указанных или более поздних версий:
modutils-2.4.0
autoconf-2.13
e2fsprogs-devel-1.18 Установите новое ядро и перезагрузитесь
Теперь скачайте пакет инструментов для работы с xfs. Этот тарбол содержит набор программ для использования файловой системы XFS, например mkfs.xfs. Для сборки сделайте: tar -zxf xfsprogs-1.2.0.src.tar.gz cd xfsprogs-1.2.0 make configure make make install После установки этого пакета вы можете создать новую файловую систему XFS командой: mkfs -t xfs /dev/xxx Одной важной опцией, которая может вам понадобиться, является "-f", которая форсирует создание новой файловой системы, в случае если на манипулируемой партиции уже существует файловая система. Заметьте, что все данные на партиции будут уничтожены: mkfs -t xfs -f /dev/xxx После можно смонтировать новую файловую системы командой: mount -t xfs /dev/xxx /mount_dir
Узлы и каталоги
Во времена юности Unix, когда автор Linux еще не ходил в школу, работа с файлами в этой ОС была организована весьма просто: все файлы на диске нумеровались и для каждого создавалась специальная запись - узел (inode; к сожалению, устоявшегося русского перевода этого термина пока нет), где содержалась служебная информация о файле. Имя в состав этой информации не включалось, а связывалось с узлом с помощью ссылки (link). Ссылки оформлялись как пары вида "имя файла - номер узла" и хранились в каталогах. Каталог можно было читать, как обычный файл, однако для его модификации уже тогда требовалось использовать специальные команды.
Найдя по ссылке в каталоге узел, ядро ОС дальше оперировало с файлом, не обращая никакого внимания на его исходное имя, поскольку все необходимые данные (размер файла, права доступа к нему и т. д.) извлекались уже из узла. С тех пор многое изменилось, однако в файловой системе Linux узлы по-прежнему играют важную роль, а вся информация о файле по-прежнему хранится отдельно от его имени.
В лесу далёком клад зарыт
Автор: Александр Супрунов, aforeve2001@mail.ru
Опубликовано: 26.11.2002
© 2002, Издательский дом «КОМПЬЮТЕРРА» | http://www.computerra.ru/
Журнал «СОФТЕРРА» | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу:http://www.softerra.ru/freeos/22024/
В лесу далеком клад зарыт.
Над ним скала – сплошной гранит
Кирка в бессилии визжит
От взоров жадных клад укрыт.
И в нашем первозданном лесу под именем Линукс могут скрываться невидимые клады. Прежде всего, мы сами можем их зарыть. И не понадобится нам ни лопата, ни кирка, как в одноименном произведении. А вот отыскание их – задача нетривиальная, а проще и совсем безнадежная. Если конечно исключить, что в вашей семье все хакеры и даже утро начинается с того, что кто-то сделал «дефейс» вашего завтрака из микроволновки.
Но это оставим на крайний случай – тогда вы и так знаете, как укрыть свои персональные (то есть личные) данные от посторонних глаз. Да-да. Как раз об этом и пойдет речь. Когда-то, во времена безраздельного господства унылой однозадачной DOS я с сожалением мечтал о возможности спрятать одну из директорий от чужого взгляда. У кого-то это могли быть картинки энного содержания, у кого-то код программы, а кто-то просто жадный и когда друг приходит - ничего давать не хочет. А если бы была такая возможность недоступного клада – сказал бы нет ничего – видишь, под голой осью сижу.
В те времена ничего лучше придания атрибута невидимости каталогу не существовало (по крайней мере, мне попадалась всего одна программка якобы скрывающая директории не через атрибут, но я не смог ее заставить работать). А вот действительно великого и светлого – не было. Чтобы спрятать и знать, что никто не найдет.
Возможность такая появилась, когда мы стали пользоваться уникальным явлением - Линукс. Я расскажу несколько способов подобного кладозарывательства. Они не претендуют на какой-то великий подход и непередаваемые уму алгоритмы. Тем они в общем и хороши. Если вы уже прошли эти ступени, то вряд ли это может заинтересовать вас. Вы и без меня давно рулите послушной Линуксой носящейся где-то на скорости близкой к сверхсветовой. (У меня, например под Линуксом 700 Мб файл (да, тот самый в котором кино) переписывается за 40 секунд, что приводит в неописуемый восторг).
А вот остальные может и почитают. Зима на носу. Делать нечего. Ну раз нечего, приготовьте свои лопаты. Клавиатуры, конечно хотел сказать. Лопаты виртуальные. Будем клад зарывать.
с утилитами файловой системы ext2
Кроме совместимости с утилитами файловой системы ext2 и простым переводом файловой системы из ext2 в ext3, файловая система ext3 так же предлагает несколько различных типов журнилирования.
Классический вид журналируемой файловой системы это хранение в журнале (логе) изменений метаданных файловой системы и хранение изменений всех данных файловой системы, включая изменения самих файлов. Файловая система ext3 поддерживает три различных режима журналирования, которые могут быть активированы из файла /etc/fstab. Эти режимы журналирования следующие:
Журнал / journal – запись всех изменений данных файловой системы и мета-данных. Наиболее медленный из всех трех режимов журналирования. Этот режим минимизирует шанс потери изменений файлов которые вы проводите в ext3 файловой системе.
Последовательный / ordered – записываются изменения только мета-данных файловой системы, но записывает обновления данных файла на диск перед изменениями ассоциируемых мета-данных файловой системы. Этот режим журналирования ext3 установлен по умолчанию.
Обратная запись / writeback – записываются только изменения мета-данных файловой системы, основан на стандартном процессе записи изменений данных файлов. Это наиболее быстрый метод журналирования.
Различия между этими режимами журналирования одновременно и едва заметны, и основательны. Использование режима «журнал» требует, что бы файловая система ext3 записывала каждое изменение файловой системы дважды – первый раз в журнал, а затем в саму файловую систему. Это может снизить общую производительность вашей файловой системы, но этот режим наиболее любим пользователями, потому что он минимизирует шанс потери изменения данных ваших файлов, так как и изменения мета-данных и изменения данный файлов записывается в журнал ext3 и может быть повторено при перезагрузке системы.
Используя «последовательный» режим, записываются только изменения мета-данных файловой системы, что понижает избыточность между записью в файловую систему и в журнал, именно в связи с эти метод более быстрый. Не смотря на то, что изменения данных файла не записываются в журнал, они должны быть сделаны до изменений ассоциируемых мета-данных файловой системы, которые проводит журналирующий ext3 демон, что может немного снизить производительность вашей системы. Использование этого метода журналирования гарантирует что файлы в файловой системе никогда не будет рассинхронизированы со связанными мета-данными файловой системы.
Метод «обратная запись» наиболее быстрый, чем остальные два журналируемых метода, так как хранятся данные только о изменениях мета-данных файловой системы, и нет ожидания изменения ассоциируемых данных файла при записи (перед обновлением таких вещей как размер файла и информация о директории). Так как обновление данных файла производиться асинхронно по отношению к журналируемым изменениям мета-данных файловой системы, файлы в файловой системе могут показывать ошибки в мета-данных, например ошибка в указании владельца блоков данных (обновление которых к моменту перезагрузки системы было не закончено). Это не фатально, но может помешать пользователю.
Указание журналируемого режима, используемого в ext3 файловой системе производиться в файле /etc/fstab для этой файловой системы. «Последовательный» режим используется по умолчанию, но вы можете указать различные режимы журналирования, путем изменения опций для требуемого раздела в файле /etc/fstab. Например, запись в /etc/fstab указывающая на использование режима журналирования «обратная запись» будет выглядеть следующим образом:
/dev/hda5 /opt ext3 data=writeback 1 0
/Var
Раздел, предназначеный для хранения изменяемых в процессе работы системы данных. По-хорошему на нём должен стоять флаг noexec, однако из-за недоработок нынешних дистрибутивов это редко удаётся без доводки дистрибутива (или установленного софта) напильником.
Файловая система ? ext3 или reiserfs, noexec(желательно), nosuid(обязательно), скорее всего возможно использовать noatime, однако стоит быть внимательными.
/Var/cache : Данные кэша приложений
Каталог /var/cache предназначен для кэширования данных приложениями. Необходимость такого кэширования возникает при выполнении медленных процессов ввода-вывода или для хранения промежуточных результатов вычислений. В отличие от /var/spool, кэшированные файлы могут быть удалены без потери данных. Но эти данные должны сохраняться между сеансами работы приложения и при перезагрузках системы.
Файлы, расположенные в /var/cache, могут удаляться либо самим приложением, либо администратором. Приложение должно всегда иметь возможность продолжить работу, даже после удаления этих файлов вручную (например, при нехватке дискового пространства). Никаких других требований на формат данных в каталоге кэша не накладывается.
Существование отдельной директории для кэшируемых данных позволяет системным администраторам устанавливать для этого каталога правила использования и резервного копирования, отличающиеся от правил, устанавливаемых для других каталогов в /var.
Обычно в этом каталоге создаются подкаталоги
fonts - локально сгенерированные шрифты,
man - локально отформатированные страницы руководства,
www - кэш данных для WWW proxy,
<package> - кэшируемые данные пакета <package>.
Каталог /var/cache/fonts должен использоваться для хранения динамически создаваемых шрифтов. В частности, все шрифты, автоматически генерируемые программой mktexpk, должны размещаться в соответствующим образом названных подкаталогах каталога /var/cache/fonts.
Примечание: Стандарт FHS не предусматривает поглощение или замену the TeX Directory Structure (документ, который задает размещение файлов формата TeX и структуру соответствующих каталогов), так что этот документ полезно прочитать. Он размещается по адресу ftp://ctan.tug.org/tex/.
Другие динамически создаваемые шрифты могут тоже размещаться в этом дереве, в соответствующим образом названных подкаталогах каталога /var/cache/fonts.
Каталог /var/cache/man предусмотрен для сайтов, в которых файловая система /usr монтируется только на чтение, но в которых допускается создание страниц руководства, отформатированных локально. Сайты, в которых /usr монтируется с правом записи (например, когда у системы всего в один пользователь) могут не создавать каталога /var/cache/man, а использовать вместо него каталоги cat<section> непосредственно в /usr/share/man.
Структура каталога /var/cache/man должна соответствовать наличию нескольких отдельных деревьев каталогов для страниц руководства и возможности наличия многоязыковой поддержки (смотри описание каталога /usr/share/man выше).
/Var/crash : Дампы памяти при крахе системы
Этот каталог предназначен для записи в него содержимого оперативной памяти (дампа памяти) в случае краха системы. На момент выпуска данной версии настоящего стандарта дампы памяти не поддерживаются в системе Linux.
/Var/lock : Файлы блокирования
Файлы блокирования устройств и других ресурсов, используемые многими приложениями, такие как файлы блокирования последовательных портов, должны храниться в каталоговой структуре /var/lock. Названия этих файлов должны формироваться в соответствии с соглашением, согласно которому используется префикс "LCK..", за которым следует базовое имя устройства. Например, для блокирования /dev/ttyS0 должен создаваться файл "LCK..ttyS0". Любое приложение, которое хочет использовать /dev/ttyS0, должно прочитать файл блокирования и действовать соответственно. Следовательно, все файлы блокирования в /var/lock должны быть доступны по чтению всем.
Внутренняя структура таких файлов блокирования должна соответствовать формату, определенному в HDB UUCP. Формат HDB предусматривает сохранение идентификатора процесса (PID) в виде десяти-байтового десятичного числа, за которым следует символ конца строки. Например, если процесс 1230 создает файл блокирования, в этом файле будет записано 11 символов: пробел, пробел, пробел, пробел, пробел, пробел, один, два, три, ноль и конец строки.
/Var/log
Этот раздел делать отдельно обязательно. При сбоях или DoS атаках размер журналов может резко увеличиваться, тем самым переполняя этот раздел. Если сервер используется для узкого круга задач (скажем web-сервер), есть смысл журнал основного сервиса вынести на отдельный раздел (скажем /var/log/apache).
/var/log ? системные логи
/var/log/apache ? логи www-сервера
Файловая система ? ext3 либо xfs, опции noatime,noexec,nodev
/Var/log : Каталоги и файлы протоколов
Эта директория содержит разнообразные файлы протоколов. Большая часть протоколов должна записываться в этот каталог или соответствующий подкаталог.
Следующие файлы или символические ссылки на файлы должны быть в /var/log, если соответствующая подсистема установлена:
lastlog - запись о последнем входе в систему каждого пользователя,
messages - системные сообщения от syslogd,
wtmp - записи о всех входах и выходах пользователей в систему.
/Var/mail : Почтовые ящики пользователей
Область спулинга для почты должна размещаться в /var/mail, а имена файлов с сообщениями должны иметь вид <username>. (Заметим, что /var/mail может быть символической ссылкой на другой каталог.)
Файлы почтовых ящиков в этих каталогах должны хранится в формате стандартных почтовых ящиков UNIX (UNIX mailbox format).
Важно заметить, что нет требования физически переместить область спулинга в указанный каталог. Однако программы и заголовочные файлы должны быть изменены так, чтобы они использовали /var/mail.
/Var/opt : Переменные данные для /opt
Переменные данные для пакетов, установленных в /opt, должны размещаться в /var/opt/<package>, где <package> - это название структуры каталогов в /opt, в которой хранятся статические данные дополнительного пакета ПО, исключая те случаи, когда размещение явно указано в каком-либо файле из /etc. На внутреннюю структуру каталога /var/opt/<package> никаких ограничений не накладывается.
/Var/run : Переменные данные времени выполнения
Этот каталог содержит данные, описывающие состояние системы с того момента, как она была загружена Файлы в этом каталоге должны очищаться (удаляться или урезаться соответствующим образом) в начале процесса загрузки системы. Программы могут иметь подкаталоги в каталоге /var/run; это приветствуется для программ, которые используют более одного файла времени выполнения.
Примечание: Непривилегированные пользователи должны быть лишены права записи в каталог /var/run; с точки зрения безопасности предоставление любому пользователю права записи в этот каталог представляет большую угрозу. Файлы с идентификаторами процессов (PID), которые раньше располагались в /etc, должны быть размещены в /var/run. Соглашение об именах этих файлов следующее: <program-name>.pid. Например, PID-файл для демона crond называется /var/run/crond.pid.
Файл, в котором хранятся идентификаторы процесса (PID), должен состоять из идентификатора процесса в коде ASCII, записанном в десятичной нотации, за которым следует символ конца строки. Например, если crond запущен как процесс с номером 25, /var/run/crond.pid будет содержать три символа: два, пять и символ новой строки.
Программы, которые читают PID-файлы, должны быть достаточно гибкими в отношении того, что они воспринимают: то есть они должны игнорировать лишние пробелы, предшествующие ноли, отсутствие завершающего символа новой строки или дополнительные строки в PID-файле. Программы, которые создают PID-файлы, должны использовать простые спецификации, изложенные в предыдущем параграфе.
В этом каталоге расположен также файл utmp, в котором хранится информация о том, кто в данный момент использует систему.
/Var/spool/cron : Задания для демонов cron и at
Этот каталог содержит переменные данные для программ-демонов cron и at.
Previous: Дополнения, специфичные для отдельных типов операционных систем
Next: Приложение
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
/Var/spool/mail
Каталог с почтой пользователей. ext3 с data=journal,noatime,noexec,nodev. Также на этот раздел обязательно устанавливать квоты.
/Var/spool : Очереди данных для приложений
Каталог /var/spool содержит данные, которые ожидают какой-то последующей обработки (программой, пользователем или администратором); обычно после обработки эти данные удаляются.
Обычно в /var/spool создаются следующие подкаталоги: lpd (каталог спулинга для принтера), mqueue (очередь исходящей почты), news (каталог спулинга новостей), rwho (файлы для программы Rwhod), uucp (каталог спулинга для UUCP).
/Var/tmp
Эта файловая система предназначена в первую очередь для хранения временных данных, которые могут иметь смысл после сбоя сервера (например данные autosave или журнал работы текстовых редакторов). Предназначен исключительно для файлов данных и должен обеспечивать высокую надёжность при аппаратных и программных сбоях.
Оптимальное решение с моей точки зрения ? ext3 со включённым журналированием данных.
ext3 data=journal,noexec,nodev,atime
/Var/tmp : Временные файлы, сохраняемые между перезапусками системы
Каталог /var/tmp сделан доступным для программ, которым требуется временные файлы или каталоги, которые должны сохраняться между перезагрузками системы. Следовательно, данные, хранящиеся в /var/tmp, являются более постоянными, чем данные в /tmp.
Файлы и каталоги, размещенные в /var/tmp, не должны удаляться, когда система (пере)загружается. Хотя данные, сохраняемые в /var/tmp, обычно удаляются специфичным для каждого сайта образом, рекомендуется удалять их чаще, чем данные в /tmp.
Вариант первый - "выделенные скан-коды"
Возьмем за основу метод, рассмотренный в предыдущих примерах - две переменные для номера группы.
Пусть у нас дополнительная переменная (например - base group) хранит номер альтернативной группы. Забудем пока про "гнусное поведение" base group (что она хранит значение только пока нажата соответствующая клавиша).
Тогда пусть основной переключатель манипулирует значением в locked group.
Он должен
для выбора "одной из рус" просто "обнулить" locked group
для "возвращения" в "лат" записать в locked group подходящую "добавку".
Для вычисления "добавки" на время перейдем к "внутренним представлениям номера группы" - 0,1,2...
Тогда
группа "лат" - 0 первая "рус" - 1 вторая "рус" - 2 третья "рус" - 3 максимальное значение номера группы - 3
"Добавки"
если текущая группа - 0, "добавка" - 0 если текущая группа - 1, "добавка" - 3 если текущая группа - 2, "добавка" - 2 если текущая группа - 3, "добавка" - 1
Возвращаясь к обозначениям групп из "конфигов", описание клавиши - основного переключателя получится
key <CAPS> { [NoSymbol], [NoSymbol], [NoSymbol], [NoSymbol], actions[Group1]=[ LockGroup(group=1) ], actions[Group2]=[ LockGroup(group=4) ], actions[Group3]=[ LockGroup(group=3) ], actions[Group4]=[ LockGroup(group=2) ] };
Все хорошо. Но что нам делать с дополнительным переключателем (переключателями)?
Давайте сформулируем - как должны работать наши переключатели.
Итак, у нас три кнопки, каждая включает свою "рус". Поскольку они должны сохранять соответствующие значения в base group, мы должны повесить на них "действия" SetGroup (с подходящим аргументом). Естественно, поскольку base group "держит" значение только пока нажата соответствующая клавиша, наши кнопки должны быть "залипающими". Но при этом...
Если мы нажали кнопку, ответственную за первую "рус", она должна записать свое значение в base group и "залипнуть". Если мы после этого нажмем кнопку, отвечающую за вторую "рус", она должна
"отлепить" "залипшую" кнопку выполнить свое "действие" и, в свою очередь, "залипнуть".
Аналогично должна работать и третья кнопка (из дополнительных переключателей).
Но то, что я только что описал, точь в точь описывает поведение кнопок, принадлежащих одной "радио-группе".
Ну и отлично! Объединим наши три дополнительных переключателя в радио-группу, подвесим на них SetGroup с соответствующими аргументами, и... все.
Однако, "засада" в этом решении (как же без "засады"?) в том, что "залипает" именно клавиша (скан-код), а не отдельное ее "действие" (или символ). То есть, нам понадобятся три кнопки, которые будут использоваться только для этих целей и ни для чего больше, поскольку, даже если мы и "подвесим" на них еще какие-нибудь символы (ну, например, на другой shift level), то воспользоваться ими все равно не сможем. Так как -
кнопка будет "залипать" в любом случае, независимо от того - какая группа и уровень выбраны; если уж она "залипла", то использовать ее, пока не "отлипнет", невозможно.
Итак. Нам придется выделить на клавиатуре три кнопки, которые будут только переключателями "альтернативных" "русских" групп и ничем больше.
(Не огорчайтесь, потом мы это ограничение снимем :-)
Я предлагаю взять кнопки F10, F11, F12. Они стоят рядом и используются сравнительно редко.
Можно составлять их описание (это скан-коды <FK10>,<FK11>,<FK12>)
key <FK10> { radiogroup=2, [NoSymbol], actions[Group1]=[ SetGroup(group=2) ] }; key <FK11> { radiogroup=2, [NoSymbol], actions[Group1]=[ SetGroup(group=3) ] }; key <FK12> { radiogroup=2, [NoSymbol], actions[Group1]=[ SetGroup(group=4) ] };
Обратите внимание, что номер радио-группы должен быть больше единицы. Вообще-то, это "баг" XKB, тем более неприятный, что xkbcomp не будет "возражать" если вы объявите радио-группу номер 1, а вот X-сервер потом "сдуреет".
Теперь можно пробовать.
Надо заметить, что есть еще одно маленькое неудобство. В самом начале, пока еще не нажата ни одна из кнопок радио-группы, получается, что ни одна из альтернативных "рус" раскладок не выбрана и основной переключатель не будет ничего переключать.
Но после первого же нажатия одного из "дополнительных переключателей" все будет работать как задумано. (Если не считать того, что опять же - менять номер альтернативной группы надо только тогда, когда основной переключатель находится в положении "рус". Иначе результаты получаются не очень приятные).
Вариант второй - "перекрытия"
Конечно, предыдущий вариант имеет очень серьезный недостаток - три клавиши "изымаются из общего пользования".
Давайте, все-таки попытаемся вернуть их обратно.
Эта проблема легко решилась бы, если бы могли свободно добавлять на свою клавиатуру новые кнопки (не символы, а именно - физические кнопки).
Хотя это и звучит как пустые фантазии, но не лишено смысла. Конечно, новую физическую кнопку мы на клавиатуре не сделаем, но вот скан-кодов к существующим кнопкам добавить можем.
Напомню, что если кнопка принадлежит к "группе перекрытия" (overlay), она может эмулировать нажатие другой кнопки (с другим скан-кодом), естественно, эта другая кнопка не обязана физически присутствовать на клавиатуре и може быть вполне "виртуальной". К тому же, та кнопка, которая будет эмулировать "виртуальную" не обязана заниматься этим все время. Для того, чтобы он перешла в такой режим, нужно "поднять" "управляющий флаг" Overlay1 ( или Overlay2), а все остальное время она может ваполнять свои "основные обязанности".
В свою очередь, "управляющий флаг" можно "выставить" с помощью специального "действия" (такого же как SetGroup или SetMods), причем можно сделать так, чтобы этот флаг "держался" только пока нажата соответствующая кнопка.
Итак. Давайте сначала объявим скан-коды "виртуальных" кнопок. Заглянем в файл типа xkb_keycodes (скорее всего у вас это keycodes/xfree86).
Можно заметить, что под реальные кнопки задействованы скан-коды от 9 до 120 (ну, на самом деле - даже меньше, в зависимости от типа клавиатуры).
То есть, мы для своих нужд можем спокойно взять скан-коды, например - 121, 122, 123.
Сочиним файл-"добавку" к описанию keycodes (не забудьте его "приплюсовать" к полной конфигурации в строчку, описывающую xkb_keycodes).
xkb_keycodes { <RUS1> = 121; <RUS2> = 122; <RUS3> = 123; };
(напомню, что "название скан-кода" может быть произвольное, но не длинее 4 символов).
Теперь мы можем наши "действия" убрать с реальных кнопок <FK10> - <FK12>
и "повесить" на наши виртуальные (просто поменяем названия скан-кодов) -
key <RUS1> { radiogroup=2, [NoSymbol], actions[Group1]=[ SetGroup(group=2) ] }; key <RUS2> { radiogroup=2, [NoSymbol], actions[Group1]=[ SetGroup(group=3) ] }; key <RUS3> { radiogroup=2, [NoSymbol], actions[Group1]=[ SetGroup(group=4) ] };
Дальше нам надо решить - на какие реальные кнопки мы возложим задачу эмулировать наши виртуальные клавиши.
Поскольку это никак не "ущемляет" реальную кнопку (ее основные обязанности), выбирать мы можем так - как нам будет удобнее. Можно для этого выбрать "цифровые" кнопки - 1,2,3. А можно - какие-нибудь "буквенные", например - K (koi8), A (alt), W (Windows).
Я остановлюсь на первом варианте.
Итак. Описание реальных кнопок (можно не писать их заново, а просто добавить нужную строчку в те описания, которые уже должны быть в нашей раскладке) -
key <AE01> { overlay1 = <RUS1>, [ 1, exclam ], [ exclam, 1 ] };
key <AE02> { overlay1 = <RUS2>, [ 2, at ], [ quotedbl, 2 ] };
key <AE03> { overlay1 = <RUS3>, [ 3, numbersign ], [ apostrophe, 3 ] };
Осталось только выбрать кнопку, которая будет "махать флагом" и превращать наши реальные кнопки в виртуальные. В общем-то, это может быть не одиночная кнопка, а комбинация кнопок, но не забудьте, что вместе с этой "комбинацией" нам надо будет нажимать и одну из "виртуальных" кнопок (пальцев хватит?).
Я остановлюсь на той же <MENU>.
Нам нужно "подвесить" на нее "действие" SetControls(controls=overlay1). Напомню, что это "действие" "держит" флаг только пока кнопка нажата. То есть, кнопки 1-2-3 нажатые вместе с Menu (Menu+1, Menu+2, Menu+3) будут действовать как дополнительные переключатели. А если кнопку Menu не трогать, то эти клавиши работают как обычно.
key <MENU> { [NoSymbol], actions[Group1]=[ SetControls(controls=overlay1) ]};
Все. Можно попробовать.
(Если это не будет работать, попробуйте заменить SetControls на LockControls. Естественно, в этом случае клавишу <MENU> не надо удерживать в нажатом состоянии. По первому нажатию она будет "включать" управляющий флаг overlay1
и кнопки 1-2-3 превратятся в переключатели групп, а по повторному нажатию флаг overlay1 будет "сбрасываться" и кнопки 1-2-3 вернутся к своей "основной работе").
На этом я заканчиваю свои примеры, хотя можно было бы выдумать еще пару-тройку переключателей.
Но, основные механизмы (и "подводные камни") я описал. Все остальное зависит от вашей фантазии.
Иван Паскаль pascal@tsu.ru
Варианты
Теперь при каждой загрузке машины пользователь fred входит в систему с первой виртуальной консоли, инициализируется коммандная оболочка bash, которая читает свой ~/.bash_profile и вызывает команду startx -- и все это без вмешательства пользователя или ввода паролей. Не правда ли мило?
Мы можем пойти дальше и воспользоваться файлом ~/.xinitrc для того, чтобы запустить на рабочем столе конкретную программу (за деталями обращайтесь к man startx). Поместите туда свою любимую игру и Ваша Linux-машина будет работать, что твои игровые автоматы, за вычетом декоративного корпуса. Запустите проигрыватель Ogg Vorbis с визуальными эффектами и Вы получите специализированный музыкальный автомат:).
Автоматический вход в систему может быть полезен и вне контекста графического интерфейса пользователя. Можно настроить специального пользователя, шеллом для которого будет /usr/bin/top. Теперь одна виртуальная консоль будет служить для интерактивного наблюдения за активными процессами. Варианты безграничны.
Важное замечание о безопасности
Файл /etc/group "по умолчанию" может читаться всеми юзерами, а изменять его может только root (администратор системы). Не надо менять эти условия.
Поскольку группы (юзеров) определяют дополнительные права доступа к файлам и директориям других юзеров (подробнее об этом смотри в ****), у некторых из них (в смысле - юзеров) могут возникнуть желания (и реальная необходимость) образовывать новые группы, в которые входили бы только "близкие друзья" какого-либо юзера, но не входили все остальные. Естественно, при обычных условиях, "рядовой" юзер не сможет создать новую группу для себя и своих друзей (хотя ничего опасного для безопасности системы в этом нет). Для этого ему придется обращаться к root'у.
Так вот, даже если есть реальная необходимость некоторым юзерам (не имеющим прав администратора) время от времени создавать новые группы или менять "список членов" какой-либо группы, не надо давать им право менять содержимое /etc/group. Это сильно ослабит безопасность системы.
(Если такая необходимость действительно существует, лучше решать эту проблему, написав специальную программу, которая позволит отдельным юзерам изменять некоторые группы.)
Иван Паскаль pascal@tsu.ru
Входной препроцессор
Еще одна приятная возможность данной утилиты, это то что можно задать конвертор, который запускается перед просмотром. Конвертор задается с помощью переменной окружения LESSOPEN:
$ echo $LESSOPEN |/usr/bin/lesspipe.sh %s
Приведенное выше значение используется по умолчанию в моей красной шапке. Скрипт lesspipe.sh занимается тем что определяет тип файла, и если это не простой текстовый файл, и известен способ его преобразования в текст, то это преобразование выполняется а результат отображается на экране. Так скажем при задании команды less file.txt.gz, будет показан уже распакованный файл, а не сам архив. Данная возможность делает работу с файлами различных типов прозрачной для пользователя. Скажем если в качестве параметра задать rpm-пакет, то будет выведено не его двоичный образ, а общая информация по нему плюс список всех файлов с атрибутами, входящими в данный пакет. Вместо указанного скрипта может применяться ваш собственный, понимающий расширенный список типов файлов.
На этом повествование о less разрешите закончить. Перейдем к следующей теме.
VI Заключение
Журналируемые файловые системы предоставляют значительные преимущества для большого круга пользователей Linux, минимизирует задержки при перезагрузке Linux системы, и почти устраняет возможность появления ошибок в файловой системе. Файловая система ext3 является высокопроизводительной журналируемой файловой системой, которая совместима с файловой системой ext2, а утилиты ext3 делают перевод вашей системы из ext2 в ext3 очень простым. Эта совместимость так же увеличивает возможность использование всех утилит, созданных для работы с файловой системой ext2.
Информация по ext3 и другим журналируемым файловым системам доступна здесь:
Книга Билла фон Хагена «Linux Filesystems» (SAMS, ISBN 0672322722)
http://www.linuxplanet.com/linuxplanet/reports/4136
http://www.redhat.com/support/wpapers/redhat/ext3/index.html#toc
http://people.spoiled.org/jha/ext3-faq.html
Vipw
Эта программа слегка :-) автоматизирует процесс описанный выше. Она сама запускает текстовый редактор, а, по выходу из редактора, pwd_mkdb.
Облегчение состоит в том, что вам не надо помнить - какой файл вы редактируете и как правильно вызвать pwd_mkdb.
Запись в master.passwd вам все равно придется составить самостоятельно. При этом не забудьте, что Name и userID должны быть уникальными для каждого юзера.
Важное замечание по поводу текстового редактора. Программа vipw сама редактором не является. Она запускает текстовый редактор, который задан переменной окружения EDITOR, а если таковой не найдет, то редактор vi. Причем, обычно, при установке FreeBSD в стартовых файлах для root эта переменная устанавливается, но это тот же vi.
Дело в том, что работать с этим редактором без подготовки достаточно сложно. Поэтому, установите переменную EDITOR, выбрав свой любимый редактор. Если любимого редактора у вас пока нет, можно воспользоваться редактором /bin/ee.
VirtualModifier
Указывает виртуальный модификатор. Напомню, что этот модификатор тоже може быть добавлен к описанию скан-кода, если символ переносится в "первый уровень первой группы" таблицы значений для скан-кода.
Справа от присваивания просто указывается название виртуального модификатора.
Например,
virtualModifier = AltGr;
Виртуальность
Автор: Денис Колисниченко, dhsilabs@mail.ru
Опубликовано: 23.11.2001
Оригинал: http://www.softerra.ru/freeos/14250/
Для начала определимся что такое виртуальный сервер? Как и подразумевает слово "виртуальный", наш сервер не будет существовать физически, но пользователь будет считать, что он работает с реальным сервером.
Установка виртуального Web-сервера
Идентификация по имени
Идентификация по IP-адресу
Подключение почтового интерфейса
Установка виртуального FTP-сервера
Директивы файла конфигурации FTP-сервера
Запуск Windows программ в Linux.
Запуск windows-приложений под FreeBSD.
Свой среди чужих ( эмуляторы ОС).
Установка и настройка эмулятора Windows - wine.
Про Wine (и про WineX).
Wine.
Wine: Поднимая тост за ваши Windows-приложения в Linux.
Корабль в бутылке - запускаем Linux в Linux.
Семь вещей, которые нужно знать о VMWare и VirtualPC.
VMware Workstation 3.0 ? "песочница" для взрослых.
Так ли хороша VMware для пользователей Linux?.
VMware в локальной сети с выходом в Internet.
Win4Lin - Windows из-под Linux.
User Mode Linux.
Виртуальность.
Виртуальный компьютер: обмен данными с реальным миром.
Виртуальный хостинг, ftp и LDAP.
Виртуальные машины Linux для всех.
Виртуальные сервера с идентификацией по имени
Идентификация по имени имеет существенное преимущество перед идентификацией по IP-адресу: вы не ограничены количеством адресов, имеющемся у вас в распоряжении. Вы можете использовать любое количество виртуальных серверов и при этом вам не потребуются дополнительные адреса. Такое возможно благодаря использованию протокола HTTP/1.1. Данный протокол поддерживается всеми современными броузерами.
Поддержка виртуальных хостов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве VirtualHost. Внутри блока директивы VirtualHost записывается директива ServerName. Эта директива задает доменное имя для нашего виртуального сервера. Это обязательно нужно сделать, чтобы избежать поиска службой DNS - мы же не хотим, чтобы при неудачном поиске виртуальный сервер был заблокирован? Все директивы VirtualHost используют один и тот же IP-адрес, заданный директивой NameVirtualHost. В блоке VirtualHost записываются параметры виртуального сервера, причем они записываются для каждого виртуального сервера отдельно.
Пример 1.1. Создадим два виртуальных сервера - www и lib ServerName den.dhsilabs.com
<NameVirtulaHost 192.168.1.1>
<VirtualHost 192.168.1.1> ServerName www.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/www/html ErrorLog /var/https/www/logs/error.log TransferLog logs/access.log </VirtualHost>
<VirtualHost 192.168.1.1> ServerName lib.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/lib/html ErrorLog /var/https/lib/logs/error.log TransferLog logs/access.log </VirtualHost>
Если ваша система имеет только один IP-адрес, доступ к основному серверу станет невозможным, то есть вы не сможете использовать его напрямую. Можно основной сервер использовать в качестве виртуального, что я и сделал в примере 1.1.: основной сервер www является виртуальным. При наличии двух IP-адресов можно один присвоить основному серверу, а другой - виртуальным.
Apache позволяет использовать несколько доменных имен для доступа к одному серверу: ServerAlias www.dhsilabs.com www2.dhsilabs.com
Запросы, посланные по IP-адресам, которые присвоены нашим виртуальным хостам, должны соответствовать одному из указанных доменных имен. Чтобы зафиксировать запросы, не соответствующие ни одному их этих имен, нужно с помощью опции default:* создать виртуальный хост, который будет обслуживать такие запросы: <VitrualHost _default_:*>
Обратите внимание на то, что адреса www.dhsilabs.com и lib.dhsilabs.com должны быть прописаны в DNS
Виртуальные сервера с идентификацией по IP-адресу
В директиве VirtualHost в качестве адресов можно использовать доменные имена, но лучше указывать IP-адрес, причем действительный, а не виртуальный. В этом случае вы не будете зависеть от DNS при резолвинге. Также потребуется один IP-адрес для вашего основного сервера. Если распределить все адреса между виртуальными серверами, то нельзя будет получить доступ к основному серверу.
Пример 1.2. <VitrualHost 192.168.1.2> ServerName www.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/www/html ErrorLog /var/https/www/logs/error.log </VirtualHost>
<VirtualHost lib.dhsilabs.com> ServerName lib.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/lib/html ErrorLog /var/https/lib/logs/error.log </VirtualHost>
В приведенном примере сконфигурированы два виртуальных сервера и идентификацией по IP-адресу. Один из них использует сам IP-адрес, а другой - доменное имя, соответствующее IP-адресу.
При конфигурировании виртуальных серверов можно использовать опцию ExeсCGI, которая разрешает выполнение CGI-скриптов на виртуальном сервере. Ниже приведен пример для почтового Web-интерфейса:
Пример 1.3. Подключение почтового Web-интерфейса # Файл httpd.conf
<Directory /home/httpd/mail> order deny,allow deny from all allow from localhost allow from 192.168 allow from 123.123.123.123 Options ExecCGI </Directory>
# Файл vhosts.conf
<VirtualHost 123.123.123.123> ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /home/httpd/mail ServerPath /mail ServerName wwwmail.dhsilabs.com ErrorLog logs/error_log TransferLog logs/access_log ErrorDocument 403 http://www.dhsilabs.com/messages/error403.html </VirtualHost>
# Error 403 - доступ извне, то есть почтовый интерфейс будет доступен только # из локальной сети
ВИРТУАЛЬНЫЕ СЕРВЕРЫ ДЛЯ ЯДРА LINUX
В октябре разработчик Linux Жак Желинас анонсировал свой проект vserver. По его словам, теперь пользователи смогут «запускать виртуальные серверы общего назначения на одном физическом без потери производительности».
Хотя связаться с Желинасом нам не удалось, описание проекта vserver можно найти на его странице Web (см. врезку «Ресурсы Internet»). Автор предлагает использовать виртуальные серверы каждому администратору физических. Помимо снижения затрат он указывает на такое преимущество, как упрощение управления безопасностью множества серверов.
«Производительность компьютеров Linux растет с каждым днем, — пишет он. — Это, казалось бы, должно привести к сокращению их количества. Но, вместо этого, парк оборудования постоянно увеличивается. Хотя тому есть множество причин (одна из которых — расширение числа поддерживаемых услуг), главная проблема связана с безопасностью и администрированием. Возможно ли разделить сервер Linux на виртуальные серверы с их максимальной изоляцией друг от друга, чтобы они не уступали настоящим и совместно выполняли некоторые общие задачи (мониторинг, резервирование, настройка аппаратного обеспечения и т. д.)? Мы полагаем, да».
Текущая версия vserver 0.9, распространяемая по лицензии GNU GPL, уже доступна для загрузки.
Грант Гросс — ответственный редактор News Forge.com и Linux.com. С ним можно связаться по адресу: grant@newsforge.com.
© Grant Gross
Виртуальные терминалы
Прежде всего надо отметить, что syscons изображает из себя несколько "виртуальных терминалов" или "виртуальных консолей". Естественно, пользователь может переключаться из одного такого терминала в другой, с помощью соответствующих клавиш (подробнее смотри "Переключатели виртуальных терминалов.") или выводя на терминал специальные esc-последовательности.
Каждый такой виртуальный терминал является как бы независимым устройством. То есть, вывод на один из виртуальных терминалов никак не влияет на другие, некоторые атрибуты экрана (например цвета символов) могут быть установлены на одном конкретном терминале и не отражаться на других, "модификаторы клавиатуры" (CapsLock, NumLock и т.п.) могут находится в разных положениях на различных терминалах и т.п. Естественно, если пользователь переключится в другой виртуальный терминал, а потом вернется обратно, syscons восстановит и изображение на экране, и аттрибуты, и состояние модификаторов.
Однако, надо сразу оговориться, что некоторые настройки syscons (шрифты, "раскладка клавиатуры" и некоторые другие) действуют сразу на все виртуальные терминалы, независимо от того, в каком из них вы находились в момент изменения этих настроек.
Обычно с каждым виртуальным терминалом связана своя сессия и своя задача, выполняющаяся в этой сессии. Однако, задача, запущенная на первом (например) виртуальном терминале может работать и с другими терминалами (например, выводить часть своих сообщений на экран другого виртуального терминала).
Обычно syscons поддерживает 16 виртуальных терминалов. Это число определяется при сборке ядра системы и может быть изменено при перегенерации ядра (option MAXCONS). Правда, для того, чтобы можно было их все задействовать, в директории /dev должно быть создано соответствующее количество "точек входа" ("устройства" ttyv0 - ttyv9, ttyva-ttyvf). Дело в том, что в "свеже-инсталлированной" системе таких устройств только 4 (ttyv0-ttyv3).
Для того, чтобы "доделать" остальные надо выполнить команду
/dev/MAKEDEV vty*
где * означает количество устройств, которое вам нужно (для чисел больше 9 используются буквы a-f, как для шестнадцатеричных цифр).
Кроме того, чтобы реально переключиться на какой-нибудь из виртуальных терминалов, он должен быть активным. То есть на нем должна быть запущена хоть какая-нибудь задача. Для того, чтобы при старте системы каждый терминал получил свою задачу, на каждом из них запускается программка getty, которая дает возможность открыть сессию на этом терминале. Это задание (запустить getty на каждом терминале) записывается в файле /etc/ttys. Опять же, в "свеже-поставленной" системе в этом файле "охвачены" только три терминала. Поэтому, если вы хотите пользоваться и остальными, то в этом файле придется добавить "задания" для всех виртуальных терминалов. Только, если вы собираетесь запускать систему X-Window, не забудьте оставить для нее хотя бы один свободный терминал.
Виртуальный FTP-сервер
Рассмотрим конфигурирование виртуального FTP-сервера на примере ProFTP. Демон proftpd позволяет обслуживать сразу несколько FTP-узлов. Виртуальные FTP-узлы нужны когда мы, например, хотим организовать несколько FTP-узлов - один для одной рабочей группы, другой - для второй, в третий может быть анонимным и т.д.
Настройка виртуального FTP-узла очень похожа на настройку виртуального Web-сервера - даже используется та же директива VirtualHost. Linux может поддерживать несколько Ip-адресов, благодаря чему мы можем создать виртуальные узлы. Дополнительные IP-адреса, которыми вы располагаете можно использоваться виртуальными узлами. При конфигурировании виртуальных FTP-узлов каждому виртуальному узлу нужно присвоить отдельный IP-адрес.
Для конфигурирования виртуального FTP в файл proftpd.conf нужно добавить директиву VirtualHost, содержащую IP-адрес. <VirtualHost 192.168.1.5> ServerName "Virtual FTP Server" </VirtualHost>
В блок VirtualHost можно другие вставить директивы, например, директиву Anonymous, которая создаст гостевой узел. Можно также задать каталог или порт.
Пример 2.1.
<VirtualHost ftp.library.com> ServerName "Online library" MaxClients 15 MaxLoginAttempts 1 DeferWelcome on <Limit LOGIN> Allow from 192.168.1 Deny from all </Limit>
<Limit WRITE> AllowUser libadmin DenyAll </Limit>
<Anonymous /var/ftp/library/books> User library Group library AnonRequirePassword on
<Anonymous /var/ftp/library> User ftp Group ftp UserAlias anonymous ftp </Anonymous> </VirtualHost>
В примере 2.1 приведена конфигурация виртуального сервера ftp.library.com. В директиве VirtualHost используется доменное имя, которое должно быть прописано в сервере DNS. IP-адрес должен указывать на узел сети, на котором запущен демон proftpd. В конфигурации 2.1 также конфигурируются две анонимных учетных записи - library и ftp. Причем учетная запись library требует ввода пароля при регистрации. Пароль должен совпадать с паролем того пользователя, который запустил демон. Доступ к виртуальному серверу разрешен только для нашей подсети (192.168.1.0). Записывать данные на сервер может только пользователь libadmin.
Виртуальный хостинг, ftp и LDAP
Тристан Гривс
16.10.2001
Виртуальный хостинг (поддержка более чем одного домена на одном физическом сервере) — одно из главных направлений деятельности многих ISP, при этом в качестве программного обеспечения сервера Web, как правило, используется Apache. Однако это только одна сторона медали, кроме этого, клиенты должны иметь доступ для управления собственным Web-сайтом. Недавно мы перевели все домены, обслуживаемые нашим подразделением, на новую архитектуру. Мы рассматриваем этот прецедент как возможность пересмотреть наш подход к решению данной проблемы.
Перед началом работ мы сформулировали для себя два основных требования:
информация заказчика должна храниться в гибкой форме, обеспечивая удобство управления; сервер ftp должен быть устойчивым и защищенным и ограничивать доступ пользователей, при обращениях к нашему специфическому хранилищу информации, пределами их домашнего каталога. Для работы с этим ресурсом разрешен только протокол ftp, что не дает возможности пользователям применять другие инструменты управления (telnet и др.).
Ранее сведения о пользователях сохранялись с помощью типичной для UNIX системы хранения паролей, но нам хотелось бы уйти от этой практики. В качестве механизма для хранения информации о пользователе мы решили использовать LDAP (Lightweight Directory Access Protocol). LDAP — широко применяемый для целей аутентификации протокол, для которого написаны интерфейсные модули на большом количестве языков программирования. Нашей целью стала разработка средств управления на языке Perl.
Виртуальный HTTP-сервер
Концепция виртуальных хостов позволяет Apache поддерживать несколько Web-узлов. Получается, что один Web-сервер заменяет несколько и пользователи видят отдельные Web-узлы. Это очень удобно, если нужно организовать персональные Web-узлы пользователей или собственные Web-узлы подразделений компании, например develop.mycompany.com
Apache можно настроить несколькими способами: чтобы запускался один сервер, который будет прослушивать ВСЕ обращения к виртуальным серверам, или запускать отдельный процесс для каждого виртуального сервера. В первом случае один сервер будет одновременно обслуживать все виртуальные. Если вас интересует такой вариант, нужно настраивать виртуальные сервера с помощью директивы VirtualHost. Настройка отдельных процессов для каждого сервера осуществляется с помощью директивы Listen и BindAddress.
В статье я буду рассматривать именно первый случай. Внутри блока директивы VirtualHost можно использовать любые директивы, кроме ServerType, BindAddress, Listen, NameVirtualHost, ServerRoot, TypesConfig, PidFile, MinRequestPerChild, MaxSpareServers, MinSpareServers, так как некоторые из них относятся к основному HTTP-серверу (например, ServerType), а некоторые - ко второму варианту настройки виртуальных серверов и здесь неприемлемы. Обязательно должны присутствовать директивы ServerName, DocumentRoot, ServerAdmin и ErrorLog
В зависимости от версии и от настроек Apache виртуальные узлы могут прописываться или в файле httpd.conf или в файле vhosts.conf
Виртуальные сервера можно идентифицировать по имени или по IP-адресу.
Включение soft updates
Это, пожалуй, один из важнейших этапов конфигурирования высокопроизводительного FreeBSD-сервера (подробнее про soft updates смотрите http://www.ece.cmu.edu/~ganger/papers/CSE-TR-254-95 и http://www.mckusick.com/softdep). Soft updates это метод увеличения производительности обновления метаданных файловой системы (хочется отметить что soft updates не только повышают производительность (особенно при работе с большим количеством мелких файлов), но и существенно повышают надежность файловой системы ? прим. переводчика). Следующие команды были введены в однопользовательском режиме (вызывается командой shutdown now ? прим. переводчика): tunefs -n enable / tunefs -n enable /usr tunefs -n enable /var tunefs -n enable /tmp
(К сожалению автор статьи несколько недоговаривает: во-первых перед подачей этих команд следует размонтировать файловые системы командой umount, а во-вторых первая команда (tuneft -n enable /) не выполнится, так как размонтировать корневую файловую систему не удастся ? прим. переводчика).
Включение/выключение отдельных событий дополнительной звуковой индикации в AccessX
accessxtimeoutctrlson [ -= | += | = ] событие1 + событие2 + ... (или axtctrlson ...) accessxtimeoutctrlsoff [ -= | += | = ] событие1 + событие2 + ... (или axtctrlsoff ...)
где "событие" - slowkeyspress, slowkeysaccept, feature, slowwarn, indicator, stickykeys, slowkeysrelease, slowkeysreject, bouncekeysreject, dumbbell.
Подробнее об этих событиях можно прочитать в документации (XKBlib), поставляемой в "исходниках" XFree86.
Иван Паскаль pascal@tsu.ru
Владельца и группу
Во-первых, надо отметить - кто может поменять для файла (директории) владельца и группу.
Безусловно, это может сделать root.
Поменять владельца файла не может никто, кроме root'а.
А вот группу для файла может, также, поменять сам владелец файла, но только в том случае, если он сам является членом этой (новой) группы.
Для изменения владельца файла служит команда chown ("change owner"). С ее помощью можно заодно заменить и группу, хотя для изменения этого атрибута есть специальная команда chgrp ("change group").
Подробно об этих командах можно прочитать в соответствующих man'уалах (man chown и man chgrp). Поэтому, рассмотрим только их краткое описание.
Владелец
Владелец файла определяется "эффективным userID'ом" программы, которая его создает. Это означает, что в большинстве случаев владельцем файла будет тот юзер, который его создал (естественно, с помощью какой-нибудь программы). Если же программа "суидная", то есть во время выполнения имеет права того юзера, которой является владельцем этой программы, то, соответственно, все файлы, порожденные этой программой будут принадлежать хозяину программы, а не юзеру, который ее запустил.
Кстати, если даже в программе используются системные функции, которые меняют владельца файла, они сработают только в том случае, если ее "эффективный userID" будет userID root'а. То есть, если ее запустит юзер root или она является "суидной" и ее владелец root.
Другими словами, какие бы программы не использовал рядовой юзер (если, конечно, они не "суидные") он может создать файлы владельцем которых будет только он. "Подарить" файл кому-нибудь другому обычный юзер не может.
Владелец файла и группа "допущенных"
Все юзеры для каждого файла (или директории) делятся на три категории
владелец (или хозяин) этого файла группа "особо допущенных" к этому файлу все остальные.
Это означает, что можно установить три различных "допуска" (набора прав доступа) для каждого файла или директории. Один такой набор будет определять права юзера, который является владельцем файла, другой набор будет определять права для юзеров, которые входят в некую группу, но не являются владельцами и, наконец, третий набор устанавливает права для всех остальных юзеров, которые не входят в эту группу "особо допущенных" и не являются владельцем файла.
Следовательно, у каждого файла (директории) есть три атрибута, которые хранятся где-то в заголовке файла и регулируют доступ к нему. Конечно, атрибутов у файла не три, а больше. К атрибутам можно отнести имя файла, его размер, время создания и т.п. Но в данном случае нас интересуют только эти три.
Итак.
В заголовок файла записывается идентификатор юзера (userID), который считается его владельцем. Заметьте, что "хозяином" может быть только один определенный юзер.
Кроме того, в атрибуты записывается идентификатор группы (groupID), который и определяет ту группу "особо допущенных" о которой говорилось выше. Каждая такая группа (ее название, числовой идентификатор - groupID и состав) определяется администратором системы. То есть "рядовой" юзер, даже если он и является хозяином файла, не может произвольно составить список "близких друзей", которым он доверяет особые права в отношении к своему файлу. Он может только выбрать подходящую группу из имеющихся (и то, только если он сам входит в эту группу). Подробнее создании и изменении групп юзеров смотри в "Как поменять принадлежность юзера к группе (группам)?".
И, наконец, в атрибутах файла есть некий набор битов или "флажков", который и указывает - кто и что может проделать с этим файлом. Этот набор называется permissions, что можно перевести как "допуски" или "права на доступ".
Самое время, рассмотреть конкретный пример.
Если у вас уже есть под рукой какой-нибудь Unix, наберите команду
ls -l
(аналог команда dir в MS DOS)
и вы увидите несколько строчек типа
-rw-r--r-- 1 pascal users 4297 13 мар 21:45 file1 -rw-r--r-- 1 pascal users 1502 13 мар 22:09 file2 -rw-r--r-- 1 pascal users 5354 12 мар 20:11 filt3 \________/ \____/ \___/ \__/ \__________/ \___/ "права" владелец группа длина дата имя файла
В третьей колонке вы видите имя (login name) юзера - "хозяина" этих файлов (в данном случае это - pascal). В четвертой колонке - название группы, приписанной также к этим файлам (в данном случае - users). И, наконец, в самой первой колонке (набор знаков типа "r", "w" и "-") сами permissions для всех трех категорий пользователей.
Надо заметить, что в самом заголовке файла хранятся, не имена юзеров и групп, а их числовые номера, а "права", на самом деле, представляют собой не цепочку букв, а набор двоичных битов.
Просто команда ls изображает их в более "человеческом" виде.
Далее...Собственно "права доступа".
Иван Паскаль pascal@tsu.ru