&dDВведение в системное администрирование Unix&d@
(Версия 1.17. июнь 1998)
(C) Copyright Максим Евгеньевич Мошков, 1993-1998
================ КООРДИНАТЫ ===============================
Максим Евгеньевич Мошков
НИИ Системных Исследований РАН,
Инф.сектор Отделения Математики Президиума РАН
956-2155, 274-6329, 938-1902
moshkow@ipsun.ras.ru
http://www.ras.ru/~moshkow/
.
&dDВВЕДЕНИЕ В СИСТЕМНОЕ АДМИНИСТРИРОВАНИЕ UNIX&d@
&dDОГЛАВЛЕНИЕ&d@
Оглавление ()
Включение Unix-компьютера ()
Регистрация нового пользователя ()
Начало работы в системе ()
Несколько простейших команд Unix ()
Редактор VI для начинающих ()
Какие бывают Unix ()
Команда find, grep ()
Команда cpio, tar и архивирование ()
Загрузка операционой системы, процесс init ()
Базовые принципы системы Unix ()
Специальные файлы ()
Диски, файловые системы ()
Выделение разделов под Swaping ()
Инсталляция системы ()
Пакеты: установка дополнительного софта ()
Несколько сетевых команд Unix (telnet, ftp, mailx...) ()
Hardware локальных сетей: Ethernet, Token ring, FDDI ()
Hardware глобальных сетей ()
Маршрутизация TCP/IP (картинка) ()
Сеть TCP/IP ()
TCP/IP для бедных ()
Сетевая файловая система NFS ()
NFS: конфигурирование авто-монтировщика ()
Конфигурирование DNS ()
Система телефонной пересылки файлов UUCP ()
Система печати LP ()
Графический интерфейс Unix - X Windows ()
&dDПриложения&d@
Редактор VI ()
Как подключить русские фонты к X Windows ()
Что где лежит в SVR4 ()
Конфигурирование DNS. Пример standalone конфигурации ()
Книжки про Unix ()
Несколько управляющих команд модема ()
Конфигурирование сервера HTTPD, формат HTML ()
Ремонт разрушенных файловых систем ()
Истории администратора Unix, или ГРАБЛИ ()
.
&dDВключение Unix-компьютера&d@
Включите системный дисплей или (при отсутствии такового)
консольный терминал, включите питание на системном блоке.
Загрузка операционной системы начнется автоматически. Осталось
немного подождать, пока загрузится операционная система и
отработают все положенные утилиты инициализации системы, и вот
на консоли появляется приглашение
Console login:
а на всех остальных терминалах - просто:
Login:
Введите свой входной login и пароль. Если таковых не
существует, войдите под login'ом root - "суперпользователь" -
изначально он не имеет пароля.
Console login: root
&dDSUN: Перехват загрузки в ручной режим&d@
Процесс нормальной работы Sun SPARCstation в любой момент
времени можно перехватить и передать управление на boot-prom.
Для этого на системной клавиатуре нажмите STOP+A. (STOP - левая
верхняя клавиша на левой дополнительной клавиатуре). Появится
boot-prom prompt Ok:
Ok _
Теперь можно вводить команды для boot-монитора. Пожалуй,
наиболее популярными командами являются:
go - выйти из монитора, вернуться в нормальный режим
help
boot [параметры] - загрузиться
eject - вытолкнуть "застрявший" флоппи-диск или CD-ROM
probe-scsi - опросить опознанные SCSI-устройства
(после этой команды возвращаться к нормальной
работе командой "GO" НЕЛЬЗЯ. Перезагрузитесь.)
Если у вас "безголовый" Sun - сервер, то к нему в качестве
консоля подключается алфавитно-цифровой терминал. Подключать
можно к любому последовательному порту - A или B. Sun, заметив
отсутствие системной клавиатуры, опрашивает все порты по
очереди и, обнаружив на одном из них терминал, делает его
консольным (со всеми вытекающими из этого последствиями).
Чтобы вызвать boot-монитор с алфавитного консоля, нажмите
на нем клавишу BREAK ( На терминале vt220 BREAK - это клавиша
F5).
Выключать алфавитно-цифровой консоль на Sun-сервере
нельзя - при этом терминал генерит сигнал BREAK, и Sun
переходит в останов в boot-мониторе. Как отключить эту
интересную особенность безголовых Sun-серверов, мне не
известно.
На самом деле у этой проблемы существует аж три решения:
Одно из них - новый TTY-дравер "CONSULT-ZSBRK", который игнорирует BREAK.
&dDHP 9000: Перехват загрузки в ручной режим&d@
Процесс нормальной загрузки HP 9000 можно перехватить и
передать управление на boot-prom PDC (Processor Depended code).
Для этого посмотрите на консоль в первые секунды загрузки - там
пишется клавиша, которую нужно нажать для перехвата. На рабочих
станциях это ESCAPE, на серверах - Ctrl-K (или Break, или еще
какая-нибудь)
Появится PDC-prompt
BOOT-ADMIN>
Теперь можно вводить команды для boot-монитора. Пожалуй,
наиболее популярными командами являются:
help
search - найти загрузочные SCSI-устройства
boot [параметры] - загрузиться
secure on - запрет перехвата начальной загрузки
(чтобы потом сделать secure off, придется
вынуть из компьютера диск и перезагрузиться)
Если у вас "безголовый" сервер, то к нему в качестве
консоля подключается алфавитно-цифровой терминал. Подключают
его к консольному порту.
.
&dDРегистрация нового пользователя&d@
Если вам в руки попалась свежеустановленная машина, то на
ней еще не зарегистрировано никаких пользователей за
исключением суперпользователя "root" - системного
администратора. Пароля у него нет. Входите в него.
В суперпользователя можно превратиться. Для этого выполните
команду
su # Super User
Каждый пользователь в системе Unix предварительно должен
быть зарегистрирован. Пользователю полагается иметь: имя,
пароль, номер пользователя, номер группы, к которой он
принадлежит, домашний каталог, командный интерпретатор. У
пароля могут быть дополнительные параметры - как часто его
можно менять, время действия и прочие секретные штучки.
Comment Familiq Imya Otchestwo
logname входное имя пользователя
passwd пароль (пароль вводят дважды)
UID User Identification Descriptor
GID Group Identification Descriptor
$HOME Домашний каталог
shell Командный интерпретатор
&dDБывают такие командные интерпретаторы&d@:
/usr/local/bin/bash Самый удобный
/bin/ksh Чуть похуже, но тоже ничего
/usr/local/bin/tcsh Удобный, но "неправильный" и медленный
/bin/sh Самый "правильный" и самый неудобный
/bin/csh "Неправильный" и чуть более удобный
/etc/passwd - Вся информация о пользователе хранится здесь.
/etc/shadow - Здесь хранятся закодированные пароли.
Закодированные пароли могут лежать и в других местах.
Зависит от вида Unix.
В любом уважающем себя Unix имеется "головная" утилита
оператора (условно называемая sysadm) - диалоговая программа, с
менюшками и окошками для выполнения насущных задач по
системному администрированию. В том числе позволяет
регистрировать новых пользователей. Запускать ее может только
"суперпользователь" root. При запуске "sysadm" может спросить
тип терминала, на котором ему предстоит работать. Ответьте:
vt100
Примечание. В различных операционных системах эта утилита
может называться по-разному:
admintool Solaris 2
adminsuite Solaris 2.7
sysadmsh SCO UNIX 4
scoadmin SCO OpenServer 5
smit, msmit AIX
sam HP-UX
control-panel Linux RedHat
sysadm UnixWare, ISC, SVR4
&dDКоманда регистрации нового пользователя&d@.
adduser Linux
useradd SunOS 4.1
vipw BSD/OS, FreeBSD
&dDКак зарегистрировать нового пользователя "вручную"&d@.
1. Вставляем в /etc/passwd еще одну строчку:
moshkow:x:555:1:Maksim E. Moshkow:/home/moshkow:/bin/ksh
2. Приводим в соответствие файл /etc/shadow
pwconv
3. Создаем пользовательский каталог
mkdir /home/moshkow
chown moshkow /home/moshkow
4. Задаем пароль новому пользователю
passwd moshkow
5. Вот и все.
.
&dDНачало работы в системе&d@
&dDВход в себя&d@
На экране терминала появится строка
login:
Введите имя, под которым вы зарегистрированы в системе,
если нужно, пароль. Если Вы ошиблись при вводе имени, нажмите
CTRL+U, или DEL, или CTRL-D (для отмены), или несколько раз
нажмите на Return, потерпите немного и повторите ввод.
На экране появится приглашение командного интерпретатора.
sunsite:~/$ _
Чтобы выйти из системы, наберите команду exit или просто
нажмите Ctrl-D на пустой строчке.
&dDПеременные окружения&d@.
При входе в систему для пользователя автоматически
устанавливается несколько переменных окружения. Чтобы
посмотреть их значение, выполните команду env.
env # Распечатать проэкспортированные переменные окружения
LOGNAME=moshkow # имя пользователя
HOME=/home/moshkow # его домашний каталог
SHELL=/bin/ksh # его командный интерпретатор
MAIL=/usr/mail/moshkow # файл, в который складывается
# приходящая ему почта
PS1=host1:$PWD/$ # формат приглашения
PATH=:/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/informix/bin:
# список поиска, по которому ищутся выполнимые файлы
TERM=vt100 # устанавливает тип терминала, на
# котором работает пользователь
Чтобы задать значение переменной окружения, выполните
команду:
Imya_Pereemennoj=znachenie export Imya_Pereemennoj
например
abc=Kalosha export abc
просмотреть значение переменной можно командой echo в такой
форме:
echo $abc
&dDПользовательский профайл&d@
Перед входом в систему сперва выполняется общесистемный
профайл /etc/profile
Затем выполняется пользовательский файл ".profile" (если
он есть) - в них можно устанавливать переменные окружения и
делать установки режимов терминала. Просмотреть установленные
переменные окружения можно командой env
##### Пример файла .profile ##################################
# Добавить к списку поиска каталоги с нужными программами
PATH=:$HOME/bin:$PATH:/usr/sbin:/usr/local/bin:/usr/informix/bin
# Разрешить редактирование командной строки в ksh
EDITOR=emacs
export PATH EDITOR
LC_CTYPE=iso_8859_1 export LC_CTYPE # русские буквы - "буквы"
# Характеристики терминала
# Забой=BackSpace СтеретьСтроку=Ctrl-U
# ПрерватьПрограмму=Ctrl-C "Жестокое_прерывание"=Ctrl-|
stty erase "^h" echoe kill "^u" quit "^|" intr "^c"
stty cs8 -parenb -istrip
# 8-битные символы, noparity, не усекать 8-й бит
# при вводе
case "$0" in # В зависимости от командного интерпретатора
*ksh) # В Korn Shellе
# Редактироваться стрелочками
alias __A=`echo "\020"` # ^P = восьмеричный 020
alias __B=`echo "\016"` # ^N
alias __C=`echo "\006"` # ^F
alias __D=`echo "\002"` # ^B
# В приглашение ставить текущий pwd
PS1=$LOGNAME@`uname -n`:'$PWD/$ ' export PS1
;;
*bash) # В bash'е в приглашение ставить host:pwd
PS1='\h:\w/\$ ' export PS1
ulimit -Sc 0 # чтоб программы core не роняла
;;
*sh) # для posix-shell и HP-UX
PATH=$PATH:/usr/sbin
PS1=$LOGNAME@`uname -n`:'$PWD/$ '
HISTFILE=$HOME/.sh_history
ENV=$HOME/.kshrc
export PATH ENV HISTFILE PS1
# и не забыть в файл .kshrc вписать set -o emacs
;;
esac
# обратите внимание: в некоторых местах ПРОСТАЯ кавычка _'_
# а в других - ОБРАТНАЯ _`_ - будьте внимательны, это важно.
&dDКлавиши для редактирования командной строки&d@
Если вы работаете в командном интерпретаторе Korn-Shell
/bin/ksh, и у вас установлена переменная EDITOR=emacs, то вы
сможете редактировать командную строку с помощью стрелок и
Ctrl-клавиш:
^P / ^N PREVIOUS / NEXT команда
^F / ^B FORWARD / BACK на позицию
^A / ^E в НАЧАЛО / КОНЕЦ строки
^D / ^K Удалить СИМВОЛ / Удалить КОНЕЦ СТРОКИ
^Y Вспомнить удаленное
^R Поиск предыдущей команды
ESC ESC Добить имя файла
ESC = Распечатать похожие имена файлов
а если командный интерпретатор bash, то обе эти команды
сидят на клавише TAB
&dDВыключение системы&d@
Чтобы начать процесс выключения системы, следует, будучи
пользователем root и находясь в корневом каталоге, выполнить
команду
cd /
shutdown -y -g0 -i0
Дождитесь полного окончания разгрузки системы и только
тогда выключайте питание.
Для перезагрузки системы выполните команду
shutdown -y -g0 -i6
Перезагрузить или разгрузить систему можно также и из меню
системного администратора команды sysadm.
В некоторых реализациях Unix (в частности, в BSD, SunOS,
Linux, HP-UX) команда shutdown использует другие ключи.
Попробуйте в этом случае:
shutdown -y -h now # для остановки
shutdown -y -r 60 # для перезагрузки через 60 секунд
.
&dDНесколько простейших команд Unix (курс молодого бойца)&d@
1.1. Система Unix различает БОЛЬШИЕ и малые буквы, и к этому
можно привыкнуть.
1.2. Если вы уничтожили какой-нибудь файл, то никаких проблем с
его восстановлением у вас не будет. Потому что восстановить
уничтоженный файл в системе Unix НЕВОЗМОЖНО. В Unix отсутствует
команда unerase, и к этому тоже нужно привыкнуть. Вирусы и
антивирусы в Unix тоже отсутствуют. Так что пока хоть этой
проблемы у администратора машины не будет.
1.3. В имени файла директории отделяются от последующей части
символом "/". (Билл Гейтс тоже хотел, чтоб у него в MSDOS все
как в Unix было, вот и взял символ "\" - перепутал - с кем не
бывает.)
Если имя начинается со слэша - значит, это полное
маршрутное имя.
Простое имя файла может состоять из ЛЮБЫХ символов. Длина
простого имени не более 256 символов. Длина полного маршрутного
имени файла не более 1024 символов.
1.4. Для задания шаблона имен используются символы "*"
(произвольная последовательность символов) и "?" (один
произвольный символ). Имя из одной точки "." обозначает текущую
директорию, имя из двух точек ".." - вышележащую (родительский
каталог).
1.5. Чтобы запустить программу на выполнение, достаточно
набрать ее имя и, если нужно, другие аргументы командной
строки. Имя программы - это маршрутное имя файла, в котором эта
программа находится. Аргументы разделяются одним или
несколькими пробелами и табуляторами. Ключи команды обычно (но
не всегда) выделяются знаком "-".
команда -ключи -ключи ... прочие разные аргументы ...
1.6. Если командная строка кончается знаком &, то команда
запустится параллельно (фоном). На терминале печатается номер,
который получает запущенный процесс. После чего можно
продолжать работу, не дожидаясь завершения фоновой задачи.
команда -всякие разные аргументы ... &
1.7. Команда имеет три предопределенных направления
ввода-вывода - стандартный ввод, стандартный вывод и
стандартный протокол. Как правило, команда берет исходные
данные из стандартного ввода и печатает результаты в
стандартный вывод. В стандартный протокол печатаются сообщения
об ошибках и диагностика. Первоначально стандартные ввод, вывод
и протокол назначены на терминал, однако их можно
переназначить, используя следующие конструкции:
команда > имя_файла
(для стандартного вывода),
команда < имя_файла
(для переназначения стандартного ввода),
команда 2> имя_файла
(для стандартного протокола - системной диагностики).
Пример - записать в файл содержимое текущей директории:
ls > infdir
Если вывод назначен в файл, то перед началом выполнения
команды создается пустой файл с соответствующим именем (если
файл уже существовал, он опустошается), а затем в него
помещается информация. Если информацию нужно дописать в конец
существующего файла, следует воспользоваться конструкцией
команда >> имя файла
команда 2>> имя файла
1.8. Пользователи системы Unix объединяются в группы, и каждая
из групп обладает определенным набором прав доступа к файлам.
1.9. Программы могут распознавать значения переменных
окружения, значения которых были заданы перед их запуском.
TERM=vt220
HOME=/home/moshkow
PATH=:/bin/:dss/rk:/home/moshkow/bin
1.8. Выдачу одной команды можно перенаправлять на вход другой
команды. Для этого используется "|" - конвейер.
Пример: посчитать суммарный размер и число строк всех
файлов в каталоге /tmp, имена которых начинаются с символов
"text" ...
cat /tmp/text* | wc -c
# Команда cat сливает вместе все файлы вида /tmp/text*,
# wc -c -l считает количество символов и число строк во входном
# потоке.
Или просмотреть с листанием длинную выдачу команды:
ps -ef | more
Того же результата можно достичь и без конвейера таким образом:
ps -ef > temp-file
more temp-file
rm temp-file
&dD2. Некоторые наиболее употребительные команды&d@.
pwd - получить имя текущей директории
cd - изменить текущую директорию
ls - распечатать информацию о файлах или директориях
cat - слить или вывести файлы-аргументы на стандартный вывод
cp - копировать файлы
mv - переместить (переименовать) файлы
ln - создать ссылку на файл
rm - удалить файлы
rmdir - удалить директорию
mkdir - создать директорию
echo - вывести аргументы командной строки на стандартный вывод
ps - распечатать информацию и номера выполняемых процессов
kill - "убить" выполняемый процес по его номеру
man - выдать справку об использовании и ключах команды
&dD2.1 pwd Выдать имя текущей директории&d@.
pwd
&dD2.2 cd Сменить текущую директорию&d@.
cd [ директория]
cd /usr/spool/lp/adm
cd ..
Если директория не указана, вы попадаете в свой "домашний"
каталог $HOME
&dD2.3 ls Распечатать каталог&d@.
Формат команды: ls [ключи] [имена]
имена - имена файлов или директорий; для директорий
распечатывается список входящих в нее файлов, для файлов -
выводится его имя и дополнительная информация.
Имена файлов сортируются по алфавиту.
Без аргументов ls выдает содержимое текущей директории.
ls -al - вывод в длинном полном формате:
число владелец время модификации
линков группа имя файла
(имен) размер
-rwxr-xr-x 1 moshkow sys 17 Oct 18 16:13 ../jean
drwxr-xr-x 1 moshkow sys 12 Oct 18 16:11 ../jelly
-rwxr-xr-x 1 moshkow sys 0 Oct 13 14:14 ../j.bu.txt
^^ ^ ^
|| | |
|| | +----- права всех "прочих" по отношению к файлу
|| +-------- права одной с ним группы
|+----------- права "владельца" файла
+------------ "-" - значит файл, "d" - директория
Права:
r - файл доступен для чтения,
w - файл доступен для записи,
x - файл является выполнимым,
- - данное право доступа отсутствует.
-a - вывести все файлы (даже если имена начинаются с точки);
-x - вывод в 4 колонки;
-t - имена файлов сортируются не по алфавиту, а по
времени последнего изменения
-R - рекурсивно пройти по всем подкаталогам
ls -CF - оглавление каталога в несколько столбиков
ls -al - оглавление в полном формате
&dD2.4 cat Слить и вывести файлы на стандартный вывод&d@.
Формат команды: cat файл1 [файл2... ]
Cat выводит содержимое перечисленных на стандартный вывод.
Пример:
cat файл
распечатывает содержимое файла, а
cat файл1 файл2 > файл3
сливает первые два файла и помещает результат в третий. Чтобы
добавить содержимое файла1 к файлу2, надо выполнить команду
cat файл1 >> файл2
&dD2.5 more, pg Просмотреть файл постранично&d@.
more file_name ...
pg file_name ...
less file_name ...
Все эти команды позволяют просматривать файл, листая его
поэкранно. Просмотром можно управлять с помощью клавиш. Самое
удобное управление у команды "less", самое "дубовое" - у "pg"
q - завершить просмотр
ПРОБЕЛ - показать следующую страницу
ENTER - сдвинуться на одну строку
b - показать предыдущую страницу
/ - поиск
h - Help - посмотреть список всех возможных команд
more,less,pg используют, чтобы посмотреть "длинную" выдачу
команды, ставя его конвейером "ей на хвост"
ls -al | more - просмотреть оглавление
ps -e | pg - просмотреть список работающих процессов
&dD2.6 cp Копировать файлы&d@.
Формат команды: cp файл1 файл2
cp файл1 [файл2 ...] каталог
Эта команда копирует файл1, ... , в ФАЙЛ. Если ФАЙЛ - это
директория, то файл1 и др. копируются в нее под своими именами.
Если ФАЙЛ не существовал, то он создается, если существовал,
его старое содержимое теряется.
&dD2.7 mv Переместить (переименовать) файлы&d@.
Формат команды: mv файл1 файл2
mv файл1 [файл2 ...] каталог
Команда аналогична команде cp, но исходный файл уничтожается.
Ее основная роль - переименование файлов и перенос файлов из
одной директории в другую). Пример:
mv /dss/*/rk_*.help /dss/delo
&dD2.8 ln Связать файлы&d@.
Формат команды: ln файл1 файл2
# создается "жесткий" линк
ln -s файл1 файл2
# создается "символический" линк
Эта команда создает файлу файл1 еще одно имя. В итоге файл1 и
файл2 на самом деле физически являются одним и тем же файлом.
Если вы создаете так называемый "символический линк"
(используя ключ "-s"), то файл file1 при этом не обязан
существовать. Имя "файл2" при этом все равно будет создано.
&dD2.9 rm Удалить файл или директорию&d@.
Формат команды: rm [-fri] файл ...
-i - просить подтверждения на каждое удаление
-r - рекурсивно удалить вместе с подкаталогами
-f - не просить подтверждения, а сразу удалять
Для удаления пустой директории можно воспользоваться командой
rmdir директория ...
Чтоб удалить непустую директорию, нужно выполнить команду
rm -r директория
ВНИМАНИЕ: Ввиду того, что под шаблон ".*" подходит каталог ".."
НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ # rm -r .*
(Хотя большинство unix'ов прощают подобную ошибку, но НЕ ВСЕ -
в SCO рискуете напороться)
&dD2.10 mkdir Создать директорию&d@.
Для создания директории применяется команда mkdir.
Формат команды: mkdir имя_директории ...
&dD2.11 chmod Изменение прав доступа к файлам&d@.
Команда chmod меняет атрибуты (права доступа) файла.
Проставить файлам право на выполнение:
chmod u+x file1
Разрешить остальным пользователям исправлять файл
chmod a+w file1
&dD2.12 echo Эхо&d@.
echo Команда выводит на стандартный вывод свои аргументы
echo "\017"
Вывести на терминал символ Ctrl-O, он же 017 восьмеричное.
Восстанавливает латиницу на терминалах типа vt220 и at386
&dD2.13 Создать файл&d@.
Для создания файла можно воспользоваться следующими способами:
touch primer # создает пустой файл primer;
cat > primer # создает файл primer и пишет в него
# со стандартного ввода. Запись в файл закончится
# после нажатия CTRL+D.
&dD2.14 ps Какие программы выполняются&d@.
Сообщает номера процессов, которые выполняются в системе.
ps - запущенные только с этого терминала
ps -ef - все, в "полном" формате (в SYSV Unix)
ps -ax - все, в "полном" формате (в BSD* и Linux)
&dD2.15 kill Прервать процесс&d@.
Команда kill посылает указанному процессу сигнал немедленной
остановки.
Прервать процесс номер 1078 (номер можно узнать командой ps -e)
kill -9 1078
Прервать программу на вашем терминале, запущенную НЕ в фоновом
режиме, можно нажатием клавиши CTRL-C, или клавиши CTRL-\
&dD2.16 man Если вы забыли, как пользоваться командой&d@.
Как правило, при запуске команды без аргументов она выдает
формат своего вызова. Но для большинства команд достаточно
полную информацию вы можете получить так:
man имя_интересующей_вас_команды
man -k ключевое_слово # список команд, относящихся к ...
&dD2.17 who Кто работает в системе&d@.
who - этими командами можно узнать, кто вы такой
who am i и кто еще работает в системе
finger
last | more
id
man -k who - сообщит все возможные команды, которыми можно
узнать, кто и что делает в системе.
.
&dDОчень кратко о редакторе "VI"&d@
По не знаю какой уж там исторической традиции "честные"
(канонические) системы Unix не имеют в своем базовом комплекте
ни одного нормального (еще раз подчеркну это слово -
НОРМАЛЬНОГО) текстового редактора. Поэтому системный
администратор обязан уметь пользоваться тем, что ему дают. А
дают ему несравненный "Визуальный" экранный редактор файлов -
Редактор VI.
&dDРедактор VI имеет три режима:&d@
1. Командный - в этом режиме можно перемещаться по файлу и
выполнять редактирующие команды над текстом. Команды вызываются
ОБЫЧНЫМИ ЛАТИНСКИМИ БУКВАМИ.
2. Ввода текста - в этом режиме обычные латинские буквы будут
вставляться в текст.
3. Режим строчного редактора ED используется для управления
файлами (типа сохранить файл, зачитать файл и т.д.)
Прочитайте предыдущий абзац еще раз. Вы еще не испугались?
Хорошо. Поехали. Итак:
vi имя_файла
VI в КОМАНДНОМ РЕЖИМЕ.
ЧТОБЫ ВЫЙТИ ИЗ ФАЙЛА БЕЗ СОХРАНЕНИЯ, нажмите:
ESC : q ! Enter
чтобы выйти из файла, сохранив изменения, нажмите:
ESC : w ! Enter
ESC : q Enter
выйти из файла с сохранением, одной командой:
ESC : wq Enter
&dDдля перехода В РЕЖИМ ВВОДА нужно нажать команды типа:&d@
"i" вставлять здесь
"A" вставлять с конца строки
"cw" заменять текущее слово
ESC для ВОЗВРАТА В КОМАНДНЫЙ РЕЖИМ
CTRL-[ для возврата в командный режим
для перехода В РЕЖИМ УПРАВЛЕНИЯ ФАЙЛАМИ нужно нажать
":" (перейти в режим редактора ED)
&dDДвигаться по файлу можно командами:&d@
h,j,k,l влево, вниз, вверх, вправо
Ctrl-F На страницу вниз
Ctrl-B На страницу вверх
А если вам очень повезет, то можно будет двигаться стрелочками.
Чтобы перейти в режим везения, нужно описать для операционной
системы ваш терминал. Этим займемся в дальнейшем (см.
"Описание терминалов, terminfo, termcap").
Подгоните курсор к нужному месту и нажмите
i перевод в режим ввода
вводите требуемый текст
ESC прекратить ввод, перейти в командный режим
Подгоните курсор к ненужному месту и нажмите
x удалить символ
dd удалить строчку
&dDЕще парочка полезных команд:&d@
o вставлять с новой строки (под текущей строкой)
a в режим ввода ЗА курсором
5yy запомнить 5 строчек
Подгоните курсор к нужному месту
p вставить запомненные строки под курсором
P вставить запомненные строки НАД курсором
J Склеить две строки
/Шаблон поиска Enter - поиск
n Повторить поиск
На этом ознакомление с редактором VI можно считать законченным.
Того, кто считает, что VI может предоставить больше удобств и
команд по редактированию, я отсылаю к прилагаемому здесь
справочнику-памятке "наиболее употребительные команды VI", ну,
и, естественно (как всегда), к документации. Остальных я отсылаю
к не менее удивительному в своем роде редактору EMACS, которым,
не смотря на это, рекомендую пользоваться впредь.
.
&dDКакие Unix'ы бывают в природе?&d@
&dDГенеалогическое древо&d@
Почти сразу после рождения Unix раскололся на две ветви -
ветвь как бы "прародительская", которой владеет "официальный"
хозяин торговой марки Unix - Unix System Laboratory -
фактически ветвь коммерческая. И проект Исследовательского
института Беркли - ветвь в основном свободных - бесплатных
Unix'ов.
System III
System 6
USL <-- Раскол --> Berkeley
System 7 BSD 4.0
Unix V 3.1
Unix V 3.2 <------- BSD 4.2
/ BSD 4.3
System V Release 4 / Заимствования
/ BSD 4.4 Конец проекта Беркли
SVR4.0 < < ____________________________________
SVR4.1
SVR4.2
Не так давно USL таки окончательно "засудила" BSD за
использование фрагментов кода с копирайтом AT&T, что в немалой
степени способствовало закрытию проекта BSD. Предпоследний из
крупнейших поставщиков коммерческих BSD-подобных систем -
Sun/SunOs перешли на линию SVR4. Торжественно и официально
объявлено, что SVR4 является единственным наследником,
объединившим лучшие решения, пришедшие из Unix V и BSD.
Последним из могикан остается DEC: его OSF/1 для Alpha AXP -
немного искалеченный, но все же достаточно близкий к корням BSD
4.3.
&dDUnix'ы для IBM/PC&d@
&dDНекоммерческие или условно бесплатные&d@
BSD/OS 2.0 BSDi/386 Недорогой коммерческий. Хорошо поддерживается.
Поддерживает бинарную совместимость с SCO Unix
386bsd BSD 4.3 для Интелевской платформы
NetBSD производная от 386bsd
FreeBSD 2.1 Самая качественная сеть. Дабы не связываться с
USL, в нем полностью заново переписаны куски ядра,
на которых стоял копирайт AT&T.
Linux 2.0.30 Самый популярный среди бесплатных Unix'ов. Число
инсталляций оценочно между 100 тыс. и 1 млн.
Непрерывное совершенствование силами сотен
добровольцев довело его до уровня довольно надежной,
быстрой, качественной и удобной системы,
пригодной для работы как в качестве графической
рабочей станции, так и интернет-сервера.
Поддерживает больше всех приложений и hardware.
Поддерживает спецификации iBCS, и потому может
выполнять коммерческие приложения для SCO, в
частности, Oracle и Informix.
В Linux реализованы клиент и сервер Netware и Samba.
Эмулятором MS Windows WABI пользоваться очень даже можно.
&dDКоммерческие Unix'ы&d@
UnixWare 2.1 SVR4.2 от SCO. Совместима с Windows и Netware. До
сих пор не доведена до ума сеть.
Поддерживает мультипроцессорные PC.
После того как ее у Novell перекупило
SCO, будущее этой системы перестало для
меня казаться столь уж заманчивым.
Solaris 2.5 SVR4.0 от SunSoft. Совсем как на Sun'е. В принципе,
это должно говорить само за себя. Начиная с
5-й версии в Solaris наконец пришел Motif.
SCO Unix 4.0 SVR3.2 Пока лидер по количеству установок среди
всех Unix'ов для PC. Старая надежная отлаженная
система. Поддерживает достаточно много hardware.
Поддерживает мультипроцессорные PC.
Непомерно дорог. Морально устарел.
Имеет проблемы с русификацией. Медленный.
ISC Unix 3.2 Надежен и компактен в работе. Морально устарел.
&dDUnix'ы, поставляемые производителями компьютеров&d@
Машина Операционная система "Оригинал"
Sun 1,2,10,... SunOS 4.1.2 BSD 4.3
Sun 10,20,1000 SunOS 5.5 SVR4.0
IBM RS/6000 AIX SV 3.2
HP 9000 HP-UX 10 BSD 4.2 & SV 3.2
Sequent Dynix SV 4.0
Motorola 922 SVR4/88 SVR4.0
Беста-88 Bestix SV 3.1
DEC Ultrix BSD 4.2
DEC Alpha AXP OSF/1 BSD 4.3
SGCS Silicon Graphic IRIX 6.0
Выбирая платформу, мы автоматически получаем с ней "ее
собственный" Unix.
С точки зрения удобства и цельности администраторского
управления самые приятные из них - HP-UX 10.20 и AIX.
А самый распространенный - Solaris 2.5 (естественно).
.
&dDКоманды поиска GREP и FIND&d@.
Команда grep/egrep
"фильтрует" строки - оставляя только "подходящие" под шаблон
egrep шаблон [ file ... ]
В шаблон могут входить обыкновенные символы (представляющие
сами себя), а также - спецсимволы, выполняющие служебные
функции шаблона: . * ^ $ [ ]
. - любой произвольный символ
* - "множитель" (предыдущий символ любое число раз)
.* - любая последовательность символов
^шаблон - привязываем шаблон к началу строки
шаблон$ - привязываем шаблон к концу строки
[символы] - любой один символ из тех, что стоят в скобках
Вывести всех привелигированных пользователей:
egrep ':0:0:' /etc/passwd
Вывести всех непривелигированных пользователей:
egrep -v ':0:0:' /etc/passwd
Вывести всех пользователей, имена которых начинаются с букв
a,b,e,d
cat /etc/passwd | grep "^[abed].*"
Команда find.
find рекурсивно обходит указанные каталоги и файлы, проверяет
для них выполнение указанных условий и может вдобавок выпол-
нять с найденными файлами указанные действия. Например, самое
простое действие - распечатать имя файла.
find файл [ ... ] ключи/условия/действия
Ключи-условия команды find:
-name "*.c" - простое имя подходит под шаблон *.c
-type f - брать только обыкновенные файлы
-type d - брать только каталоги
-size +500 - файлы размером БОЛЬШЕ 500*512 байт
-mtime -3 - дата модификации МЕНЬШЕ 3-х дней
-newer filename - дата модификации нашего файла МЕНЬШЕ, чем у
заданного файла filename
ВНИМАНИЕ: Команда find использует стандартные SHELL'овские
шаблоны. Команда grep использует шаблоны другого формата,
называемые регулярными выражениями.
Ключи-действия команды find
-print - просто распечатать маршрутное имя файла
-exec команда над файлом {} \;
Пример.
Напечатать имена всех обыкновенных Си-шных файлов, изменившихся
за последние 4 дня в текущем каталоге и его подкаталогах.
find . -type f -mtime -4 -print
Уничтожить все файлы с окончаниями *.bu, *%, которые не меня-
лись больше месяца.
find / \( -name "*.bu" -o -name "*%" \) -type f \
-atime +30 -exec rm {} \;
запись "rm {} \;" - обозначает команду Unix, которая будет вы-
полняться для всех таких найденных файлов. Вместо значка "{}"
будет подставляться каждый раз имя найденного файла. Естествен-
но, что таким образом мы их все и уничтожим.
.
&dDАрхивирование. Копирование файлов на стриммер&d@
В Unix для этого можно пользоваться двумя утилитами:
tar попроще в использовании, но не все умеет
cpio более гибкая, чем tar, и посложнее.
&dDКоманда tar (Tape Archiver)&d@.
Предназначен для создания архивов на ленте и в файлах.
Ключи: "-c" Create, "-x" eXtract, "-a" Append, "-t" оглавление
tar -cvf arhiw.tar fajl1 fajl2 katalog3 ... - создать архив
tar -tvf /dev/rmt/ctape вывести оглавление ленты
tar -xvf arhiw.tar katalog3/fajl4 извлечь из архива файл
tar -xvf /dev/rmt/ctape архив лежит на магнитной ленте
извлечь с ленты все файлы
tar -avf arhiw.tar fajl5 добавить файл к архиву
Ключи:
"v" Выводить список файлов в длинном формате (Verbose)
"f" Указывает на имя файла
&dDКоманда CPIO. (Copy In/Out)&d@.
Команда cpio -o берет с системного ввода список имен и склеивает
эти файлы вместе в один архив, выталкивая его на свой системный
вывод.
Сбросить на ленту файлы по списку:
-o - (output) создавать архив.
-H odc - Записывать в "совместимом формате" (чтобы ар-
хив можно было считать на Besta или Sun)
-c - Записывать в "престарелом" совместимом формате
cat spisok | cpio -ovB -H odc > /dev/rmt/ctape1
find katalog -print | cpio -ovc > arhiwnyj-fajl.cpio
Команда cpio -i читает с системного ввода cpio-архив и извлека-
ет из него файлы
# Просмотреть содержание стриммера.
cpio -itB < /dev/rmt/ctape
# Извлечь файлы со стриммера.
cpio -idmvB ["шаблон" ...] < /dev/rmt/ctape
-B Размер блока 5120 байт - стриммерный формат.
-d Создавать каталоги в случае необходимости.
-v Вывести список имен обработанных файлов.
-m Сохранять прежнее время последней модификации.
-f Брать все файлы, кроме указанного шаблоном.
-u Безусловно заменять существующий файл архивным.
-l Где можно, не копировать, а делать ссылки.
&dDАрхивация со сжатием&d@.
Архиваторы tar и cpio, в отличие от DOS-овских архиваторов, не
занимаются компрессией. Чтобы получить сжатый архив, нужно вос-
пользоваться специализированной командой compress или gzip.
Команда compress читает свой системный ввод, а на свой систем-
ный выход подает "прожатые" данные.
Команда zcat ("сжатый cat":-) читает с системного входа "пожа-
тый" файл, а на выход подает "разжатые" данные.
Создать сжатый tar-архив:
tar -cvf - emacs-19.28 | compress > emacs-19.28.tar.Z
Прочитать оглавление сжатого tar-архива:
zcat < emacs-19.28.tar.Z | tar -tvf -
Обратите внимание на ключ минус "-" на том месте, где в tar
нужно указывать имя файла с архивом. Он означает "брать данные
со стандартного входа" (или выводить архив на стандартный вы-
ход).
GNU Zip - достаточно известный упаковщик, имеет степень сжатия
более высокую, чем у compress, почти как у arj или pkzip. Соз-
дать сжатый cpio архив, используя "компрессор" gzip.
find . -print | cpio -ovcaB | gzip > arhiw.gz
Извлечь файлы из сжатого cpio-архива
gunzip < arhiw.gz | cpio -idmv
&dD mt - управление магнитной лентой &d@
Специализированная программа для работы с магнитными лентами. В
частности, с ее помощью можно дописывать файлы на ленту один за
другим.
Чтобы узнать, что она может делать, наберите:
man mt
В SCO Unix программа управления лентой называется "tape"
&dDДругие утилиты архивации&d@
В зависимости от версии Unix могут существовать и другие программы для
бэкапирования и создания архивов.
backup/restore
dump
fbackup/frestore (HP/UX)
pax
. . .
.
&dDНачальная загрузка операционной системы&d@
&dD * Boot-процедура * &d@
Boot, bootstrapping - слова, обозначающие сейчас
"Загрузить/пнуть, процесс начальной загрузки", на самом деле
произошли из английской фразы "Pull itself up by its own boot
straps" (Поднять себя за шнурки собственных ботинок)
Начинается все с Boot-prom'a - небольшой программы, которая
хранится в нестираемой памяти компьютера и начинает
выполняться сразу после включения.
Естественно, boot-prom умеет делать многое: форматировать
диски, инсталлировать операционную систему, запускать тесты
hardware. Однако главное его предназначение - найти на диске и
запустить на выполнение файл /unix - ядро операционной системы.
И своего собственного разума на это ему обычно не хватает,
поэтому он в первую очередь загружает с жесткого диска
"загрузчика операционной системы", а уж тот делает все
остальное.
&dDSUN&d@
Boot-prom загружает "BOOT BLOKS" - 1-ю ПРОГРАММУ НАЧАЛЬНОЙ
ЗАГРУЗКИ. "boot-bloks" расположены в 1-15 секторах раздела,
содержащего корневую файловую систему "/". Обычно корневая
файловая система располагается на разделе номер 0.
"Boot- blocks" можно записать на корневой раздел
загрузочного диска (обычно это внутренний диск со SCSI-номером
3) командой installboot. Для этого выполняется что-нибудь
такое:
installboot /dev/rdsk/c0t3d0s0
Boot-blocks "умеет читать" формат файловой системы unix -
ufs . Он находит на корневой файловой системе файл "/ufsboot"
- 2-Ю ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ - и загружает ее.
/ufsboot находит ядро /kernel/unix и загружает его.
Ядро Unix загружается в оперативную память. Затем подключает
дополнительные загружаемые модули с драверами устройств. Как только ядро
"набирает" достаточное количество драверов, чтобы самостоятельно
смонтировать корневую файловую систему, оно тут же это и делает, после чего
начинает действовать самостоятельно, не используя кода начальных
загрузчиков.
Перехват в boot-prompt:
STOP+A
Загрузка в single user:
bo: boot -s
&dDMotorola 922&d@.
Boot-prom загружает с диска ЗАГРУЗЧИК - файл /stand/boot,
Загрузчик загружает ядро /stand/unix
Поскольку boot-prom не в состоянии вместить кода для
работы со стандартной unix'овской файловой системой, файлы unix
и boot лежат в отдельном разделе жесткого диска - разделе
/stand. На нем создана "ОЧЕНЬ ПРОСТАЯ ФАЙЛОВАЯ СИСТЕМА" bfs
(Boot File System), чтобы boot-prom'у было полегче найти и
считать с диска загрузочные файлы.
Перехват в boot-prompt:
После того как на консоли появится сообщение: "Idle MPU: none"
нажать клавишу ПРОБЕЛ
Загрузка в single user:
Во время начальной загрузки на несколько секунд
появляется приглашение: "Press _что-то_to enter system_maintence.
Нажать требуемую клавишу
&dDLinux&d@.
BIOS загружает блок начальной загрузки активного раздела.
Он грузит загрузчик LILO (LInux LOader). Lilo загружает
файл /vmlinuz
Параметры начальной загрузки записываются в файле
/etc/lilo.conf После любых изменений в этом файле необходимо
выполнить команду
lilo
Перехват в Lilo-prompt:
Left_ALT сразу после появления сообщения "Lilo ..."
Загрузка в single user:
Lilo: linux root=/dev/hda2 single
Загрузка в еще более single user:
Lilo: linux init=/bin/sh
mount -n -o remount /dev/hda2 /
insmod de4x5
ifconfig eth0 195.232.171.30
route add -net 195.232.171.0 gw 195.232.171.30
insmod nfs
&dDHP-UX&d@
В ПЗУ HP 9000 проживает "PDC" - "Processor Dependent Code"
- чтоб поговорить с ним, надо нажать клавишу ESC в первые
секунды загрузки.
На загрузочном диске есть Boot-раздел формата LIF
(линейная файловая система) В LIF-томе 4 "файла"
ISL - "операционная" программа
HPUX - собственно загрузчик ядра
AUTOBOOT - текстовый файл, в котором написано имя ядра по
умолчанию
Итак: PDS вызывает ISL командой
bo scsi.6.0 isl
ISL загружает ядро командой
hpux /stand/vmunix
Перехват в PDC-prompt:
Нажать ESC в первые 10 секунд
Загрузка в single user:
PDC> bo pri isl
ISL> hpux -is /stand/vmunix
&dD * Процесс init * &d@
Ядро инициализирует себя и после этого запускает процесс init.
А init - все остальные процессы, программы, которые необходимы
для нормального функционирования операционной системы.
Все дальнейшие действия в системе определяются этим процессом.
Все, что нужно делать init-у, определяет специальная таблица.
Процесс init всегда находится на каком-либо "УРОВНЕ ВЫПОЛНЕНИЯ".
Уровень выполнения определяет состояние и поведение всей систе-
мы. Уровень обозначается цифрой (или буквой) 0,1,2,3,4,5,6,s,S
0 - prom монитор - Полный останов системы;
1, s, S - single user mode. Однопользовательский режим;
2 - многопользовательский режим без NFS-сервера;
3 - многопользовательский режим с NFS-сервером;
6 - перезагрузка;
&dD * Примерный фрагмент управляющей таблицы /etc/inittab * &d@
bchk::sysinit:/etc/bcheckrc/dev/console 2>&1
brc::sysinit:/etc/brc > /dev/console 2>&1
is:3:initdefault:
rc:12345:wait:/etc/rc > /dev/console 2>&1
r0:0:wait:/etc/rc0 > /dev/console 2>&1
r2:23:wait:/etc/rc2 > /dev/console 2>&1
r3:3:wait:/etc/rc3 > /dev/console 2>&1
pf:12345:powerfail:/etc/powerfail > /dev/console 2>&1
co:12345:respawn:/etc/sysmonitor console console
t1:23:respawn:/etc/sysmonitor tty01 9600
t2:23:off:/etc/sysmonitor tty02 9600
Формат таблицы:
ИМЯ:Уровни_выполнения:вид_действия:запускаемая команда
ИМЯ: - просто имя строчки - они все должны быть разными
вид_действия:
sysinit запустить один раз после начальной загрузки;
на соответствующем уровне выполнения:
wait - запустить один раз и дожидаться, пока не окончится;
respawn - запустить параллельно, а если окончится, перезапус-
кать снова;
off - ничего не делать (просто игнорировать эту строку).
Если посмотреть внимательно на таблицу, то можно разобраться,
что же в действительности происходит при загрузке и откуда бе-
рутся все эти загадочные сообщения.
Сперва init запускает процессы, которые "sysinit"
Отработав все строки "sysinit" уровня, init идет все
дальше по /etc/inittab и обнаруживает строку initdefault 3 -
она заставляет его "перейти" на уровень 3.
&dD * Run Command - стандартные RC-каталоги запуска * &d@
Перейдя на уровень выполнения 3, init и отрабатывает
первую встретившуюся строчку с уровнем "3" - запускается
командный файл /etc/rc2 - загляните в него. Там все просто:
/etc/rc2 берет и выполняет командные файлы /etc/rc2.d/S*,
лежащие в каталоге /etc/rc2.d. Каждый файл выполняется с
параметром "start"
Отработав /etc/rc2, init точно таким же образом запускает
файл /etc/rc3. Вслед за этим он запускает несколько процессов
sysmonitor - по одному на каждый имеющийся терминал. Это те
самые процессы, которые говорят на терминал: "Login: "
Пользователь, войдя на терминал, некоторое время работает, но
как только он "уходит" из системы, на указанном терминале
ничего не остается. init тут же выполняет действие "respawn" -
перезапускает на терминал sysmonitor - и опять жизнерадостное
"Login: " появляется на терминале.
&dDLinux Slackware&d@
По умолчанию init устанавливает уровень выполнения 5.
При начальной загрузке отрабатывается файл
/etc/rc.d/rc.S
Затем для перехода в многопользовательский режим
/etc/rc.d/rc.M
из которого запускаются файлы
/etc/rc.d/rc.inet1 устанавливающий сетевые интерфейсы
/etc/rc.d/rc.inet2 запускающий сетевые сервисы
/etc/rc.d/rc.local запускающий несколько полезных программ и
демонов - например, поддержка мыши, httpd,
русификация консоля и т.п.
&dDLinux RedHat&d@
Используется стандартная технология rc-файлов System V
RC-каталоги:
/etc/rc.d/rc[0123456].d/
/etc/rc.d/init.d/
Конфигурационные параметры для RC-команд:
/etc/sysconfig/
&dDHP-UX 10.20&d@
Не смотря на BSD-евое происхождение, используется стандартная
технология rc-файлов System V
RC-каталоги:
/sbin/rc[0123].d/
/sbin/init.d/
Конфигурационные параметры для RC-команд:
/etc/rc.defaults.d/
&dDSVR4: SUN, Motorola&d@
Используется стандартная технология rc-файлов System V
RC-каталоги:
/etc/rc[0123456].d/
/etc/init.d/
.
&dDUnix, базовые принципы и особенности&d@.
Все системные действия выполняет ядро операционной системы
Unix. Ядро - обычный выполняемый файл, расположен в файле /unix
или /stand/unix или /vmunix или /vmlinuz (в зависимости от кон-
кретной реализации). Можете посмотреть размер этого файла - не
маленький. При начальной загрузке системы ядро целиком загружа-
ется в оперативнную память и в дальнейшем резидентно находится
в ней, выполняя все необходимые работы.
Что входит в ядро.
ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но
могут быть, а также и такие, которые никогда вам не
понадобятся.
УПРАВЛЯЮЩИЕ ПОДПРОГРАММЫ: части кода, ответственные за
обеспечение работы пользовательских программ - разделение
времени и прочих ресурсов системы.
СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, от-
крытых файлов, управляющие структуры...
СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOS называется "21 прерывание",
можно считать некоторой аналогией/пародией на системные
вызовы.) С точки зрения программиста это обычная си-шная
функция, только выполняет она системно-зависимые действия,
например: прочитать данные из файла, установить сетевое
соединение, создать каталог, и т.д. и т.п. Все системные вызовы
( а всего их более 1500 штук ) вкомпилированы в тело ядра Unix.
Пользовательские программы, вызывающие функции, являющиеся
системными вызовами, на самом деле содержат только jump'ы на
соответствующие адреса памяти в ядре. В пользовательскую
программу системные вызовы не влинковываются.
Что находится в оперативной памяти.
ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ.
БУФЕРНЫЙ КЭШ. Часть оперативной памяти резервируется под кэши-
рование чтения и записи на диск. Любая операция чтения с диска
приводит к тому, что прочитанные блоки помещаются в буферный
кэш, а из него уже передаются запросившим данные программам.
Если блок попал в кэш, то все последующие обращения к нему бу-
дут получать образ блока из кэша, причем независимо от того -
та же самая программа обращается к блоку или какая-либо дру-
гая. Кэшируется также и запись на диск, опять же, разделяемая
между всеми выполняемыми программами.
ПРОЦЕССЫ. Процессом в Unix называется выполняющаяся программа.
Средства экономии памяти. Виртуальная память.
РЕЕНТЕРАБЕЛЬНОСТЬ КОДА. Когда одна и та же программа(выполня-
емый файл) запущена в нескольких экземплярах, то в оперативную
память загружается только одна копия выполняемого ассемблерного
кода на всех. Каждый выполнямый процесс использует один и тот
же текст программы, просто у каждого процесса имеется свой соб-
ственный указатель на текущий оператор.
РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В Windows есть похожее понятие DLL -
динамически подгружаемая библиотека). Некоторое количество час-
то выполняемых функций (например, printf, да и много других)
оформляется в виде специальным образом подготовленной библиоте-
ки (SHARED LIBRARY). При компиляции программы, использующей
разделяемые библиотеки, эти функции не линкуются внутрь кода
программы. Они "выдергиваются" из библиотеки на стадии
выполнения программы. Этим мы экономим место на диске и в
оперативной памяти: в программах отсутствует код разделяемых
функций, а в оперативной памяти эта функция присутствует в
одном экземпляре на всех.
SWAPING. Каждый Unix-процесс функционирует в своем собственном
32-х битном виртуальном адресном пространстве, не пересекающем-
ся с другими. Адресное пространство процесса может быть боль-
шим, чем физическая оперативная память. Виртуальная память под-
держивается с помощью PAGING'а - разрешения виртуальных адресов
в физические "на лету", с подкачкой отсутствующих страниц
памяти со swap-области на жестком диске.
На самом деле SWAPING'а как такового в Unix'е нет, вместо него
применяется гораздо более гибкий PAGING. (swaping - по опреде-
лению, это ПОЛНАЯ выгрузка программы на swap-область с целью
освобождения места в оперативной памяти).
Область памяти, занятая программой, разделена на три части: TEXT
(выполняемые коды программы), DATA (статические данные програм-
мы), STACK (динамические данные). Когда операционка освобождает
место в памяти за счет TEXT'а, то она не занимается сбросом
его на диск. Она сразу помечает его как свободный. Действи-
тельно, когда потребуется загрузить TEXT обратно в память, его
можно будет взять из самого выполняемого файла с программой.
Такая экономия имеет один побочный эффект. Файл программы, ко-
торая в данный момент выполняется, невозможно уничтожить. Опе-
рационная система сообщит в этом случае: "text file busy", и
откажется выполнять удаление.
БИТ НАВЯЗЧИВОСТИ. (sticky bit). Выполняемая программа может
иметь дополнительный атрибут. Так называемый "бит навязчивос-
ти". Когда такая программа заканчивает выполнение, операционка
(по возможности) старается не занимать память, в которой нахо-
дился текст программы. Соответственно, повторный ее запуск про-
изойдет очень быстро - ведь программа все еще загружена в па-
мять, ее не требуется зачитывать с диска. Нужно просто передать
на нее управление.
&dDФайловая система Unix&d@.
Файловая система в Unix - "деревянная", состоит из файлов и
каталогов. На каждом разделе диска создается собственная неза-
висимая файловая система. Отдельные файловые системы "сцепляют-
ся" вместе, в единое общее дерево директорий. Такая операция
называется "монтированием". Выглядит это примерно так:
mount -F ufs /dev/dsk/m197_c0d0s5 /home1
mount -F ufs /dev/dsk/m197_c0d0s4 /usr
df
Получить доступ к файлам "несмонтированной" файловой системы
невозможно. Порочная пракика MS-DOSа - сколько разделов, столь-
ко и "дисков" ( a: b: c: d: e: ... k: l: m: n:) в Unix не при-
меняется. В Unix всегда есть ровно одно общее дерево каталогов,
и, по большому счету, пользователям совершенно все равно, на
каком именно диске или разделе диска расположены его файлы
/usr/spool/moshkow или /home1/moshkow/bin/mcopy ...
Файловая система Unix кэшируется буферным кэшем. Операция запи-
си на диск выполняется не тогда, когда это приказывает выполня-
емый процесс, а когда операционная система сочтет нужным это
сделать. Это резко поднимает эффективность и скорость работы с
диском, и повышает опасность ее использования. Выключение
питания на "горячей", работающей Unix-машине приводит к
разрушениям структуры файловой системы.
При каждой начальной загрузке Unix проверяет - корректно ли бы-
ла выключена машина в прошлый раз, и если нет - автоматически
запускает утилиту fsck (File System Check) - проверку и ремонт
файловых систем..
&dDВнутренняя структура файловой системы Unix&d@.
Раздел диска, в котором создана файловая система, разбит на три
части.
СУПЕРБЛОК. Занимает 1 Kb.
Содержит служебную информацию:
Тип файловой системы,
Размер
Начало списка свободных блоков.
. . . что-то еще
ОБЛАСТЬ INOD-ов. Занимает примерно 8% общего размера раздела.
inode - Index-node - описатель файла. Он содержит всю информа-
цию о файле, за исключением имени файла, и собственно данных
файла. В inod'е хранится:
тип файла (файл, каталог, именованный канал, специальный файл)
кто владелец
права(атрибуты) файла
время модификаци/создания файла
адреса блоков, из которых состоит файл
что-то еще ...
ОБЛАСТЬ ДАННЫХ. В этой области расположенвИРТУАЛЬНАЯЯы блоки с данными фай-
лов. Незанятые блоки провязаны в СПИСОК СВОБОД-
НЫХ БЛОКОВ
Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ.
ФАЙЛ - он и есть файл.
КАТАЛОГ - файл фиксированного формата: состоит из строчек с
именами файлов, входящих в каталог
имя_файла1 Номер_Инода1
имя_файла2 Номер_Инода2
. . .
Чтобы получить доступ к файлу по имени, операционная система
1. находит это имя в каталоге, содержащем файл,
2. берет Номер_Инода файла,
3. по номеру находит inod в области inod'ов,
4. из inod'а берет адреса блоков, в которых расположены данн-
ые файла,
5. по адресам блоков считывает блоки из области данных.
Все.
Формат индексного описателя файла.
Область инодов разбита на 64-х байтные структуры - inod'ы.
В inod'е хранится:
Тип файла (файл/каталог/специальный файл/fifo/socket)
Атрибуты (права доступа)
Владелец файла
Группа-владелец файла
Времена создания, модификации, последнего доступа к файлу
Длина файла
Адрес 1-го блока файла
Адрес 2-го блока файла
...
Адрес 10-го блока файла
Адрес блока косвенной адресации (блока с 256 адресами блоков)
Адрес блока 2-й косвенной адресации
(блока с 256 адресами блоков с адресами)
Адрес блока 3-й косвенной адресации
(блока с адресами блоков с адресами блоков с адресами)
Точный формат структуры файловой системы см.
man fs
.
&dDСпециальные файлы&d@
В Unix помимо обычных файлов и каталогов существуют еще и спе-
циальные файлы. Они используются для обозначения физических ус-
тройств компьютера. (Железок). В сущности, что такое файл? Это
"нечто", куда можно записывать данные как последовательность
байтов и считывать их оттуда. И, значит, вполне естественным
выглядит, например, файл /dev/console - соответствующий кон-
сольному терминалу. Все, что выводится в файл /dev/console,
будет просто появляться на экране терминала. При попытке чтения
из файла /dev/console вы будете получать (внимание!) не то,
что нарисовано в данный момент на экране, а то, что вводится с
клавиатуры. Попробуйте выполнить команды
su
echo Привет > /dev/console
cat /dev/console
Ctrl-C
Для каждого терминала unix-машины существует соответствующий
ему файл. Обычным терминалам соответствуют файлы, которые
называются примерно так:
/dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttyS0
(и т.д., возможны варианты)
Псевдотерминалам (они эмулируются, когда вы входите в систему
по сети, посредством команд типа telnet, rlogin) соответствуют
специальные файлы
/dev/pty*, или /dev/pty/*
Команда who, или who am i сообщит вам, как называется ваш
собственный терминал.
Существуют специальные файлы, соответствующие жесткому диску в
целом (/dev/rdsk/m197_c0d0s7) и всем его разделам
(/dev/dsk/m197_c0d0s*). Если вы будете читать из этих файлов,
то получите все байтики, как они лежат на жестком диске, с
нулевого цилиндра и до последнего... А если вы в этот файл
что-нибудь запишете, то получите (потом) богатый опыт по
переформатированию и разметке жесткого диска.
/dev/mem - файл, изображающий оперативную память.
/dev/audio - если "закатить" в него файл звукового формата
(*.wav, *.au, ...?) - то он будет озвучен динами-
ком компьютера, а команда cat /dev/audio будет
принимать все, что произносится в микрофон. Впро-
чем, я отвлекся, у нас ведь не PC, не Silicon
Graphic и не SPARCstation.
/dev/zero - из него можно считать сколько угодно нулевых байтов
/dev/null - а в него можно писать, и читать из него - тоже, в
неограниченных количествах и с неизменным резуль-
татом: NULL - он и есть null. А в MSDOS его аналог
называется NUL.
Специальные файлы бывают двух типов:
блочные - запись и чтение допускаются только блоками. Нап-
ример, разделы дисков с файловой системой являются
таковыми.
ls -al /dev/fd*
brw-rw---- 1 root floppy 2, 28 Jul 18 1994 /dev/fd0H1440
brw-rw---- 1 root floppy 2, 32 Jul 18 1994 /dev/fd0H2880
brw-rw---- 1 root floppy 2, 12 Jul 18 1994 /dev/fd0H360
символьные(бесструктурные, сырые, row) - можно читать и писать
отдельными байтами. К ним относятся терминалы, маг-
нитные ленты, неформатированные диски и разделы дис-
ков без файловой системы.
ls -al /dev/tty*
crw--w--w- 1 moshkow sys 4, 1 Jan 15 22:00 /dev/tty1
crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2
crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2
Различие - первая буква в листинге команды ls -l
Понятия "размер" у специального файла не существует. Ведь этот
файл обозначает физическое устройство. Фактически это ссылка
на соответствующий драйвер. Вместо длины команда ls показывает
для таких файлов два числа: "мажорный" и "минорный" номера ус-
тройств. Будем считать для ясности, что "мажор" - это порядковый
номер драйвера устройства, а "минор" - внутренний номер устрой-
ства в таблице обслуживающего его драйвера.
&dDСоздание специальных файлов&d@
Обычно их создавать не нужно - они все уже есть для всех
известных настоящих и будущих устройств. Созданы при
инсталляции системы.
Ручное создание спецфайла
mknod /dev/filename { c | b } MAJOR MINOR
&dDHP-UX: полуавтоматическое создание спецфайлов&d@
При начальной загрузке в /etc/inittab отрабатывает скрипт
/sbin/ioinitrc, который, обнаружив новые платы и устройства,
автоматически запускает команду их инициализации, конфигурации
и создания необходимых для них спецфайлов.
см. документацию по командам
ioscan
mksf
insf
&dDSolaris: полуавтоматическое создание спецфайлов&d@
При загрузке выйти в boot-монитор и загрузиться с ключем -r
STOP+A
ok boot -r - реконфигурационная загрузка
все необходимые спецфайлы для вновь подключенных устройств будут
при этом созданы автоматически.
.
&dDДиски, ленты, файловые системы&d@.
&dD * Какие есть SCSI устройства * &d@
&dDMOTOROLA: Какие есть SCSI устройства&d@.
scsiscan - эта утилита сообщит вам, какие SCSI
устройства подключены и как они
называются (SCSI-id)
После подключения новых устройств к компьютеру Motorola
922 он самостоятельно их распознает при очередной начальной
загрузке и запускает программу из каталога /sbin/auto-boot,
которая создает специальные файлы, соответствующие этим
устройствам.
&dDSUN: Какие есть SCSI устройства&d@.
На компьютере Sun SPARC для определения SCSI-устройств:
Перейдите в BOOT-prom монитор (Нажмите клавиши Stop+A) Введите
команду probe-scsi
ok probe-scsi
Чтобы создать специальные файлы, выполните
"reconfiguration boot": из BOOT-промпта
ok boot -r
&dDLINUX: Какие есть SCSI устройства и жесткие диски&d@.
IBM PC/Linux сообщает об опознанных устройствах при
начальной загрузке. Предполагается, что соответствующий драйвер
SCSI (if exists) сконфигурирован в ядре. Чтобы еще раз
просмотреть эти сообщения, выполните команду
dmesg
Все специальные файлы для дисков и лент уже созданы
&dDHP-UX&d@
Перехватить boot промпт, дать команду SEA (search)
Или на живой машине ioscan
&dD * Описание геометрии диска при подключении * &d@
Для нормальной работы с диском, возможно, (зависит от
системы) придется позаботиться об описании геометрии диска.
При покупке диска ТРЕБУЙТЕ с поставщика бумажки с
характеристиками и геометрией диска.
Seagate, например, все характеристики держит на
http://www.seagate.com
&dDLinux, FreeBDS: ничего описывать не надо&d@
Переходите к следующему разделу.
&dDMOTOROLA: описание геометрии диска&d@
Уже имеющиеся описания для "фирменных" дисков расположены
в каталоге /etc/dskdefs/. Выберите описание "похожего" диска,
запомните его имя, например, 1Gb Seagate-ST31 - "msea11200".
Подсказка: загляните в /etc/scsifmt.info
Командой ddefs записать геометрию диска и сохранить ее под
новым именем. В ответ на запрос "Template" введите имя
описания "похожего" диска. Поправьте параметры, которые вы
знаете, и оставьте как есть, если не знаете, зачем они.
ddefs -n filename
Актуальные параметры: естественно, число голов, секторов...
А также (по собственной шкуре проверено):
Root offset: 648 (т.к. VTOC занимает 648 блоков)
Slice count: 16 (Положено 16 разделов на диске)
Interleave: 1 (Что означает "отсутствует")
Precomp cylinder: {последний} (Ныне прекомпенсация не используется)
Bad spots: 100 (Резерв для замещения bad-блоков)
Controller attribute: 850 (кто его знает, зачем, но так
Attribute: 10 у всех остальных дисков)
Word attribute: 10
Выход из команды ddefs "w" и "q" в ДОКУМЕНТАЦИИ НЕ ОПИСАН.
Подсказка по остальным командам ddefs выводится командой "help"
В таблице /etc/scsifmt.info добавить строчку со ссылкой
на файл с геометрией диска. В качестве ключевых слов указать
то, что выводит команда scsiscan. Например, так:
scsiscan
SEAGATE ST51080N m187_0c0d1 ...
cat >> /etc/scsifmt.info
"SEAGATE" "ST51080N" filename 7 "1GB SCSI"
^D
&dDSUN: описание геометрии диска&d@
Чтобы диск опознавался Sun'ом, для него должно
существовать описание геометрии в файле /etc/format.dat
&dD * Как называются диски и разделы на машине * &d@
Каждое "устройство" имеет соответствующий ему "специальный
файл". От системы к системе имена эти абсолютно друг на друга не
похожи. Одно, пожалуй, постоянно: все специальные файлы обычно
расположены в каталоге /dev или его подкаталогах.
В SVR4 устройства собраны в отдельные каталоги:
/dev/rdsk/* - бесструктурные диски и разделы дисков
/dev/dsk/* - блочные диски и разделы дисков
/dev/rmt/* - стриммерные накопители на магнитной ленте
/dev/term/* - линии для подключения терминалов (dial-in)
/dev/cua/* - линии с модемным управлением (dial-out)
/dev/pts/* - псевдотерминальные линии
&dDMOTOROLA: Общий формат имени:&d@
controller_cXdYsuffix где:
controller - тип устройства
X - номер контроллера
Y - логический номер устройства
suffix - зависит от устройства, например:
номер раздела на жестком диске
Логические диски (разделы физического SCSI диска)
с блочной структурой на станции Motorola 922
/dev/dsk/m197_c0d0s1 SCSI контроллер m197 номер 0,
SCSI устройство 0
логический раздел (slice) 1
/dev/dsk/m328_c0d0s0 SCSI контроллер m328 номер 0,
. . . SCSI устройство 0
логический раздел (slice) 0
Физический диск (целиком)
/dev/rdsk/m328_c0d0s7 Условное обозначение всего жесткого
/dev/rdsk/m197_c0d1s7 диска, целиком
Бесструктурные (сырые) разделы
/dev/rdsk/m197_c0d0s1
/dev/rdsk/m197_c0d1s2
Магнитные ленты.
/dev/rmt/ctape1 а также
/dev/rmt/m197_c0d4
CD-ROM.
/dev/rdsk/m197_c0d6s7 - "сырой" (физический)
/dev/dsk/m197_c0d6s0 - раздел CD-ROM с файловой системой
"Моторольного" формата ufs
/dev/dsk/m197_c0d6s7 - CD-ROM со стандартной файловой
системой iso9660
&dDSUN:&d@.
Логические разделы (блочные) на станции SPARCstation:
Диск может быть разбит на 8 логических разделов с 0 по 8.
Общий формат имени SCSI устройства:
/dev/dsk/c0t2d0s3 Controller 0 (обычно 0)
Taget 2 (SCSI ID)
Disk 0 (LUN Logical Unit Number
- обычно 0)
Slice 3 (Номер раздела)
Физический диск (целиком)
/dev/rdsk/c0t3d0s2 Весь жесткий диск представляется разде-
лом 2
Загрузочный внутренний жесткий диск SPARC-
station имеет 3-й SCSI номер.
CD-ROM (целиком)
/dev/dsk/c0t6d0s2 CD обычно вешают на 6-й SCSI номер.
Имеет ровно один раздел - весь диск.
Магнитные ленты.
/dev/rmt/0 1-я лента (обычно 150Мб)
/dev/rmt/1 2-я лента (обычно DAT 4Гб)
После подключения новых устройств к Sun'у.
Нужно выполнить "reconfiguration boot". Из boot prom'a:
ok boot -r
&dDLinux:&d@.
Диск может быть разбит на 4 primary раздела с 1 по 4. Один
из разделов может быть extended - тогда он может быть разбит
еще на 4 раздела с 5 по 8
Физический диск (целиком)
/dev/hda Первый IDE жесткий диск
/dev/hdb Второй IDE жесткий диск
/dev/hdc IDE hd (или CD) - master на втором интерфейсе
/dev/hdc IDE hd (или CD) - slave на втором интерфейсе
/dev/sda Первый SCSI жесткий диск ...
/dev/sda1, /dev/sda2, ... ,8 Разделы жесткого SCSI диска
/dev/hdb1, /dev/hdb2, ... ,8 Разделы жесткого IDE диска
CD-ROM
/dev/sbpcd,/dev/sonycd, ...
/dev/hdc - IDE CD
а лучше /dev/cdrom
Магнитные ленты.
/dev/rmt1
Дискеты.
/dev/fd0 - флоппи A:
/dev/fd1 - флоппи B:
&dDHP-UX&d@
Физический диск (целиком)
/dev/rdsk/c0t6d0 Весь жесткий диск (raw)
/dev/dsk/c0t6d0 Весь жесткий диск
Жестких разделов в HP-UX нет, зато есть LVM - и в нем
логические тома
/dev/vg00/lvol12 char logical volume
/dev/vg00/rlvol12 block logical volume
Магнитные ленты
/dev/rmt/0m лента с перемоткой
/dev/rmt/0mn лента без перемотки
&dD * Как отформатировать SCSI диск * &d@.
Форматировать SCSI на низком уровне не умеет ни один Unix
в мире.Форматирование обычно заключается в тестировании bad block'ов
и нанесении логической разметки диска - делении его на
логические разделы.
&dDMOTOROLA: низкоуровневое форматирование диска &d@
Хотите по-простому - воспользуйтесь командой scsifmt.
Применяется она к БЕССТРУКТУРНОМУ цельному диску (каталог
/dev/rdsk, slice номер 7). Например:
scsifmt /dev/rdsk/m197_c0d1s7
scsifmt /dev/rdsk/m328_c1d0s7
ВНИМАНИЕ: вы уже набрали эту команду? Сосчитайте до 20 и
немного подумайте. Подумали? Теперь нажмите Ctrl-C. Вы нажали
ENTER вместо Ctrl-C ? У вас есть 30 свободных минут. Можете за
это время ознакомиться с главой "Инсталляция Unix". Ведь
команда scsifmt ничего не переспрашивает и сразу начинает
форматировать указанный диск, не требуя никаких подтверждений.
scsifmt просто вызывает команду dinit с соответствующими
ключами, которая все и делает. Для более тонких работ
пользуйтесь dinit непосредственно.
Инициализация диска(низкоуровневое форматирование, тестирование
бад-блоков, загрузочная запись) делается командой dinit.
dinit [-f] [-q] [-b] filename /dev/rdsk/m187_c0d1s7
-X 9 debug-level
-f переформатировать
-q "быстрый" формат
-b сделать диск загрузочным
-v {0-4} write тест
man dinit сообщить все остальные подробности
&dDSUN:&d@
Физическое форматирование диска на SunOS не делают. Считается,
что диск должны отформатировать на заводе. Можно посмотреть
информацию о диске.
prtvtoc /dev/rdsk/c0t0d0s2
&dDHP-UX&d@
Физическое форматирование
format /dev/rdsk/c0t6d0
&dD * Разметка диска на разделы. Partition Table * &d@
&dDLinux: fdisk&d@
Раметка partiotion table в Linux делается командой fdisk.
Это диалоговая утилита - без особых изысков, все делается
просто.
fdisk /dev/hda # или /dev/sdb ...
mke2fs /dev/hda1
# создает файловую систему типа ext2 на первом разделе
Распечатать таблицу разделов:
fdisk -p /dev/hda # или /dev/sdb ...
&dDSUN: Разметка форматированного диска на разделы&d@
Чтобы диск опознавался Sun'ом, для него должно
существовать описание в файле /etc/format.dat
Из-под СуперПользователя запустите команду format, и в
диалоговом режиме сможете проинициализировать и протестировать
диск и разбить его на разделы.
format
Boot-монитор при загрузке операционной системы ищет на корневом
разделе boot-блок. Он записывается командой installboot или dd
installboot /dev/rdsk/c0t3d0s0
dd if=/usr/lib/fs/ufs/bootblk bs=1k skip=1 of=/dev/dsk/c0t3d0s0
&dDSUN: Создание файловой системы&d@.
newfs /dev/dsk/c0t0d0s7
SUN: виды файловых систем.
ufs Unix File System
основной тип файловых систем для жестких дисков
hsfs High Sierra, ISO 9660, Rock Rige Extension
файловая система на CD-ROM'ах
pcfs MS-DOS FAT для дискет 3"
nfs Network File System
наиболее популярная сетевая файловая система
rfs Remote File System
тяжелое наследие System V - еще одна сетевая FS
tmpfs для хранения Временной Файловой системы используется
свободное место swap-области
lofs Loop Back FS
фактически mount -F nfs localhost:/ /mnt
procfs Process FS - "для каждого процесса имеется файл"
fifofs FIFO FS
fdfs File Descriptors FS
namefs
&dDMOTOROLA: Разметка форматированного диска на разделы&d@.
Производится Disk Slice Editorom dse. На диске может быть
до 15 slice'ов (разделов). Они нумеруются числами от 0 до 6, от
8 до f. Номер 7 зарезервирован, чтобы обозначать весь диск
целиком.
dse имя_бесструктурного_диска # например:
dse /dev/rdsk/m197_c0d0s7
DSE имеет экранный интерфейс, схожий с редактором VI
Команды:
:q! выйти без внесения изменений в таблицу разделов
:wq сохранить изменения и выйти
h,j,k,l команды перемещения по экрану (это если у вас не ра-
ботают стрелочки)
C создать раздел на свободном месте
dw стереть поле
dd уничтожить раздел
cw изменить значение поля
ВНИМАНИЕ: самый первый раздел должен начинаться с блока номер
648 (или больше), поскольку на диске должно оставаться место
для хранения разметки диска VTOC (Volume Table Of Contents).
На создаваемом разделе должна быть создана файловая
система. В SVR4/88 используются 3 разных типа - ufs, s5, bfs.
Выбирайте "UFS".
Motorola: виды файловых систем.
ufs Unix File System
основной тип файловых систем для жестких дисков
s5 System V. Устарелый тип файловой системы, исполь-
зовался в старых версиях SV 3.1. Более медленная,
но занимает меньше места под служебную информацию
bfs Boot File System для каталога /stand
Служебная "очень простая" файловая система. В ней
лежат файлы начальной загрузки boot и unix
cdfs CD File System
Стандартная для CD ROM'ов разметка ISO 9660
После переразметки диска dse автоматически запустит
команду mkfs со всеми необходимыми параметрами - для создания
чистых файловых систем на новых разделах, поэтому пункт,
относящийся к команде mkfs, имеет скорее академический интерес.
Реально dse только ГОТОВИТ описание VTOC, а прописывает
ее на диск команда fmthard. Параметры у нее непростые, именно
она применяется при инсталляции системы.
fmthard -S file_with_vtoc_description /dev/rmt/m187_c0d1s7
Для обычных же юзеров к ней написан пользовательский
интерфейс dse.
Распечатать таблицу разделов:
prtvtoc /dev/rdsk/m187_c0d0s7
&dD * Какого типа у нас файловые системы * &d@
&dDMOTOROLA: Какого типа у нас файловые системы&d@
fstyp имя_дискового_раздела
Рекомендуемый тип для неспециализированных (т.е. не тех,
которые /stand, /boot и некоторые другие) файловых систем
стандартный Unix'овский "ufs" - Unix File System. Это быстрая
файловая система BSD-подобного типа с символическими линками,
длинными именами файлов (до 256 байт), изменяемым размером
блока, "размазанной" таблицей inod'ов (описатели файлов
расположены группами, которые равномерно распределены по диску)
&dDmkfs - создает пустую файловую систему&d@.
# создаем файловую систему типа s5 на 4-ом разделе диска, раз-
# мером 200 Мб !!! Размер указывается в 512-байтных блоках
mkfs -F s5 /dev/rdsk/m328_c2d0s4 400000
# создаем файловую систему типа ufs на 5-ом разделе диска
mkfs -F ufs -o bsize=4096,nsect=36,ntrack=9,free=1 \
/dev/rdsk/m328_c2d0s5
&dDLinux: создание файловой системы&d@
mke2fs /dev/hda9
&dDHP-UX: создание файловой системы&d@
newfs -F hfs /dev/rvol12
&dDHP-UX: JFS vs HFS&d@
HP-UX использует два формата файловых систем:
HFS (High Perfomance) - AKA старая добрая ufs,
и новомодная JFS (Journal) AKA Verytas vxfs
0. vxfs - это не файловая система, а база данных с журналом транзакций
и откаткой. Любая операция записи в файловую систему содержит только
завершенные транзакции, поэтому fs на диске _всегда_ находится в корректном
состоянии. В лог пишется "протокол намерений", и его можно использовать для
откатки.
&dDПлюсы:&d@
1. vxfs использует физический журнал для записи
критической метаинформации на диск. Это гарантирует эффективное
восстанавление fs. Большая сохранность позволяет дольше
кэшировать данные. Очень заметен выигрыш по скорости "close
file" - закрытие файла НЕ форсирует sync inod'а на диск, в
отличие от ufs.
2. vxfs применяет кластерную адресацию последовательных
блоков - выигрыш в адресации блоков и скорости доступа к большим
файлам.
3. inod в vxfs-е имеет длину 256 байт (а не 128), и короткие (<=96байт)
директории или симлинки хранятся прямо в inod'е
4. Директории vxfs проиндексированы - следовательно, повышена скорость
поиска файла по имени.
5. По необходимости vxfs умеет создавать дополнительные области
inod'ов, и вообще - место в vxfs распределяется по мере заполнения.
Написать подробнее про транзакции.
&dDМинусы:&d@
1. Служебные структуры vxfs занимают больше места на диске
2. Загрузчик ядра не умеет читать формат vxfs, поэтому
каталог /stand обязан быть HFS'ным
&dDПлюсы для Live JFS (AKA OnLine VxFS) Only:&d@
Это расширение стандартной vxfs, коммерческий продукт, поставляемый за
отдельные деньги, после его установки стандартная vxfs получает
дополнительные возможности:
6. Увеличение размера fs без отмонтирования.
7. Уменьшение размера fs (а-ля speed disk) без отмонтирования.
8. Snapshot (заморозка) fs. По команде возникает параллельное
дерево-копия раздела - "остановленное" на момент подачи команды. Реализация:
использует дополнительно раздел диска для сохранения изменяемых блоков с
данными. При обращении к "замороженным" данным блоки, еще не измененные -
считываются из оригинальной файловой системы, если же менялись, то оригинал
берется с сохраненной на отдельный раздел копии.
Примеры, на которых vxfs дает заметный (в 2-4 раза) выигрыш
cd /hfs ; time tar xf /tmp/big.tar
cd /vxfs ; time tar xf /tmp/big.tar
time cat bigfile bigfile bigfile bigfile bigfile > /vxfs/big
time cat bigfile bigfile bigfile bigfile bigfile > /hfs/big
Вывод: в некоторых операциях vxfs быстрее, в остальных -
не медленнее, устойчивее к выключению питания, но несколько
больше съедает дискового пространства.
HFS имеет смысл на статических "readonly" каталогах,
например /usr - скорость чтения одинакова, а hfs компактнее.
&dDLinux. Запись директории на вритабле CDROM&d@
mkisofs -R -o image directory
затем записать образ на cd-r командой cdrecord
&dD * Монтирование файловых систем * &d@.
Чтобы сделать "видимыми" файлы, лежащие на дисковом разделе,
Unix использует команду mount. Mount "подцепляет" файловую
систему к общему дереву файлов. При монтировании нужно указать
"точку монтажа" - каталог, к которому "подцепляется" наша новая
файловая система. Например:
mount -F ufs /dev/dsk/m197_c0d0s8 /home1
Чтобы посмотреть, какие файловые системы у нас смонтированы,
выполните команду
df
Чтобы наши файловые системы монтировались, а swap области акти-
визировались автоматически при каждой загрузке, необходимо
вставить соответствующие строки в файл /etc/vfstab . Формат
строчек можно посмотреть в этом же файле.
&dDMOTOROLA: Монтирование CD-ROM&d@.
Если на CDROM'е записана файловая система формата "ufs" - т.е.
это "родной", моторольный cdrom, то монтировать его нужно по
тем же правилам, что и обычный жесткий диск, только "read only"
mount -F ufs -r /dev/dsk/m197_c0d6s0 /cdrom
Если же это обычный "game'овый" диск для MSDOS'а, а точнее, CDROM
стандартного формата iso9660, то монтировать его надо так:
mount -F cdfs -o ro /dev/dsk/m197_c0d6s7 /cdrom
(использование ключей -r и -o ro - равнозначно)
&dDОтмонтирование файловых систем&d@.
umount /home1
&dD * Изменение параметров fs * &d@
Sun: tunefs
Linux: tune2fs
HP-UX: fsadm
&dD * Bad-блоки * &d@.
Симптомы достаточно красноречивы: заметные задержки при
доступе к диску (из-за retrying'a), и на консоль сыплются
страшные сообщения "Bad media", "Read failure"... "при доступе
к блоку такому-то".
Запишите номера bad-блоков - их можно "подлечить".
&dDФирменные операционки: лечится, но с трудом-с&d@
Современные SCSI адаптеры сами заменяют bad-блоки. Если
засекли бад-блоцк, пропишите по нему (или файлу с ним) нули,
адаптер заодно и пропишет, и подменит, и навсегда спрячет его,
и он больше не покажется.
&dDMotorola: Bad-блоки&d@
Рекомендую ознакомиться с документацией - раздел "Bad
blocks" в Томе "Disks and Tapes Managment"
см. также man по ddefs, mvme328, scsi1x7, dinit, ...
Надеюсь при описании геометрии диска командой ddefs вы не
поскупились указать число "Bad spots" больше нуля. Замещение
бад-блоков выполняется все той же командой dinit
dinit -n dskdeffilename /dev/rdsk/m187_c0d107
-n номера bad-блоков вводятся с клавиатуры
dinit -t bad-list dskdeffilename /dev/rdsk/m187_c0d107
-t bad-list файл со списком bad-блоков
Как протестировать диск на бад-блоки? У dinit есть ключ
-v 1 - verify with pattern
&dDLinux: Bad-блоки&d@
Linux'овский fsck с ключом "-c" умеет сам находить и
лечить от bad-блоков (они собираются в отдельный "bad" inode)
# -y yes на все вопросы, -f force checking, -c bad-blocks
e2fsck -c -y -f /dev/hda3
&dD * Диагностика оборудования * &d@
&dDMOTOROLA: Утилита тестирования оборудования GOLD&d@
Для тестирования и диагностики оборудования станции
Motorola 922 можно воспользоваться утилитой gold. Она имеет
систему меню, очень похожую на систему меню утилиты sysadm.
&dDSUN: Утилита тестирования оборудования sundiag&d@
Sundiag - многофункциональная утилита тестирования
оборудования на Sun
&dDUnix для PC&d@
Да чего там выпендриваться. Грузитесь в MSDOS и там
тестируйте железо всем, чем пожелаете.
.
&dDВыделение разделов под swap&d@
Под swap область рекомендуется выделять не более одного
раздела (предпочтительнее самого первого) на каждом жестком
диске.
Под swap рекомендуется выделять 1*RAM - 2*RAM места, а
если на машине активно используется X-Windows, то 3*RAM.
В случае срочной необходимости под swap можно выделить и
обычный файл. Создайте файл большого размера, а затем
подключите его под swapping. Пример: выделяем 20 Mb-овый файл
dd if=/dev/zero of=/var/swapfile bs=1k count=20480
Чтоб swap подключался автоматически при начальной загрузке,
надо вписать строку в /etc/fstab - что-нибудь типа:
---------------------------------------------------------------
# device mountpoint type flags
/dev/hdb2 none swap sw
---------------------------------------------------------------
&dDMOTOROLA: swap&d@
После выделения раздела под swap его надо активизировать:
swap -a /dev/rdsk/m328_c2d0s0 0 0 # подключаем раздел
swap -a /var/swapfile 0 40960 # подключаем файл
# Внимание - здесь длина указывается в 512-байтных блоках
&dDLinux: swap&d@
# размечаем партицию,
# устанавливаем ей partition ID == 82 "Linux-swap"
fdisk /dev/hda
# Swap-файл для Linux _ОБЯЗАН_ лежать в каталоге /dev/
dd if=/dev/zero of=/dev/swapfile bs=1k count=40000
# После выделения раздела или файла под swap его надо прописать:
mkswap /dev/hda2 40000 ; sync # размер в килобайтах
swapon /dev/hda2 # подключаем swap-раздел
free # смотрим
swapoff /dev/swapfile # отключаем swap-файл
Для постоянного включения добавить строчку
в /etc/fstab :
---------------------------------------------------------------
/dev/hdb2 none swap sw
---------------------------------------------------------------
&dDHP-UX 10.20: swap&d@
Душка HP-UX позволяет все запросто сделать менюшками SAM.
Специфика: swap в файловой системе называется экзотическим
словом "File system swap", организуется в виде каталога и
хватает не все сразу, как имеет место с swap-файлом, а "по
требованию", чем экономит место на диске.
В HP-UX отключить на лету swap-область нельзя - отключение
swap форсирует перезагрузку компьютера
Primary-swap указывается в конфигурации ядра, остальные в файле
/etc/fstab
swapon # подключаем
swapinfo # смотрим
&dDSUN (Solaris и SunOS)&d@
swap -l # листинг
swap -s # листинг
mkfile 40m swap-file # создать свапфайл в 40 Мб
swap -a swap-file # активизировать его.
Для постоянного включения добавить строчку
в /etc/vfstab:
/swap/file - - swap - no -
.
&dDИнсталляция операционной системы&d@
Для инсталляции операционной системы на Unix-компьютер
используются загрузочные дискеты, загрузочные магнитные ленты,
а также CD-ROM'ы.
С дистрибутивного носителя загружается минимальная версия
операционной системы Unix, и под управлением этого Unix-а
запускается программа инсталляции, которая извлекает и
устанавливает с носителя пакеты.
&dDMotorola 922. Загрузка с магнитной ленты&d@
Вставить ленту с дистрибутивом Unix SVR4/88. Включить
питание. После того, как на консольном терминале появится
сообщение
"Idle MPU: none"
нажать на клавишу "ПРОБЕЛ"
Появится меню из нескольких пунктов.
Выбираем "3" (System debugger) , ENTER
В ответ на приглашение 197-Diag> вводим "bo 0 40" ENTER (0:
загрузить с 0-го SCSI контроллера, 40 - магнитная лента, 4-й
scsi-номер) и ждем 5 минут.
197-Diag> bo 0 40
Boot-prom организует в оперативной памяти RAM-диск,
считывает на него с магнитной ленты начальные 8 Mb - образ
файловой системы, загружает ядро операционной системы,
монтирует RAM-диск в качестве корневой файловой системы и
запускает с него программу инсталляции, управляемую меню.
Дальше надо ответить на некоторое количество вопросов, после
чего программа приступит к установке пакетов Unix'а, которые
размещены на ленте вслед за образом загрузочного RAM-диска.
Собственно извлечение файлов с ленты занимает 20-40 минут, в
зависимости от того, сколько и какие пакеты вы решили
устанавливать.
Первым вопросом система спросит, какой у вас терминал.
Ответьте, что у него 24 строки и он имеет позиционирование
курсора в стиле vt100 или unknown
Программа инсталляции имеет три основных режима:
1. Full install
2. upgrade
3. Maintance mode
Вторым своим вопросом программа инсталляции предложит
выбрать один из них.
INSTALL - предусматривает полную установку операционной
системы. Все файловые системы на диске будут заново
переразмечены - и, следовательно, ВСЕ ФАЙЛЫ, которые до этого
существовали на диске, БУДУТ СТЕРТЫ.
UPGRADE - обновление "старинной" (образца 1988 года и древнее)
системы до современной версии. Старые данные при этом не
уничтожаются.(За исключением тех, естественно, которые включены
в новоустанавливаемые пакеты). Нас этот режим не касается,
поскольку у нас и так новая система установлена с самого
начала.
MAINTANCE MODE - однопользовательский shell для
суперпользователя. Подготовленный администратор сможет,
загрузившись с ленты, вручную заняться ремонтом и устранением
неисправностей в операционной системе, которые ему не удалось
бы отремонтировать, загрузись он с диска. (И вообще, не всегда
же удается загрузиться с диска).
По выходе из maintance shell'а (клавиша Ctrl-D) нажмите
Ctrl-C, чтоб гарантировать перезапуск инсталляционной
процедуры.
Если вы инсталлитесь на диск неизвестной породы, вам
придется перед запуском 1. Install уйти в Maintance моду и по
стандартной схеме сделать описание этого диска.
&dDБеста-88. Загрузка с магнитной ленты.&d@
Вставить мастер-ленту Unix'а. Включить питание. На консольном
терминале появится сообщение:
boot:
Вводим "t:unix" ENTER (Загрузить unix с магнитной ленты)
boot: t:unix
RAM-диск у Bestix'а занимает 1000 Кб, вслед за ним расположен
архив формата cpio с дистрибутивом операционной системы. Оста-
ется ответить на несколько вопросов и затем ждать минут 20,
пока все содержимое ленты будет извлечено на диск.
&dDSun SPARCstation. Загрузка с CD-ROM.&d@
Вставить CD-ROM. Включить питание. Подождать, пока станция
"разогреется". Нажать STOP+A. (STOP - левая верхняя клавиша на
левой дополнительной клавиатуре). Появится boot-rom prompt Ok:
вводим "boot cdrom". Если SPARC старой модели - SS1, SS1+, SS2,
придется вводить "boot sd(0,6,2)"
Ok boot sd(0,6,2)
Если приглашение имеет другой вид: "> " (??), то вместо "boot"
надо набрать "b"
> b sd(0,6,2)
После загрузки Unix запустите команду "suninstall", которая и
проведет инсталляцию.
# suninstall
&dDLinux Slackware. Загрузка с дискет&d@
В Linux'е для инсталляции нужно иметь две загрузочные
дискеты: BOOT (с нее загружаются, на ней находится ядро), и
ROOT (на ней находится минимальная файловая система с
программой инсталляции). Образы этих дискет в сжатом виде
хранятся в файлах boot*/*.gz и root*/*.gz соответственно. Вам
нужно выбрать по одному файлу из каждого множества (например
boot12/net.gz и root144/color144.gz) и изготовить из них
дискеты. Программа GZIP.EXE -D ИЛИ GUNZIP.EXE "разожмет" эти
файлы, а RAWRITE.EXE "зальет" их на дискеты. Сами пакеты с
дистрибутивом Linux могут лежать на DOS-партиции инсталлируемой
машины, на NFS-сервере, на дискетах, на CD-ROM, на магнитной
ленте.
Загрузитесь с boot-дискеты, в ответ на prompt "Lilo boot:"
введите соответствующий параметр и Enter, подождите немного.
ВНИМАНИЕ: Если ваша машина с Ethernet'ной картой ne2000
"зависает" при попытке загрузить ядро, повторите загрузку с
дополнительными параметрами, примерно такими:
Lilo boot: ether=10,0x320,eth0
Вставьте ROOT дискету, нажмите Enter. Когда появится "Console
login:" залогиньтесь как root и запустите:
# fdisk /dev/hda
# setup
&dDLinux RedHat. Загрузка с дискеты&d@
В Linux версии RedHat одна загрузочная дискета. Грузимся с
нее - а дальше все делаем по менюшкам. Дистрибутив может лежать
на локальном диске, NFS, FTP, SMB-сервере.
&dDHP-UX 10.20. Загрузка с CD-ROM&d@
Перехватываем начальную загрузку клавишей ESC и из
PDC-промта даем команду "нащупать cdrom"
BOOT-ADMIN> search scsi
....
scsi.2.0 ... CDROM ....
Из выдачи вылавливаем "scsi ID CD" и грузим его
BOOT-ADMIN> boot scsi.2.0
Дальше действовать по обстановке, отвечая на возникающие в
менюшках вопросы.
&dDHP-UX 10.20. Инсталляция по сети&d@
&dDГотовим сервер&d@
1. Установить с Install диска пакет "Network cold install utils"
1a. (Если надо инсталлить C-200 и старше) Установить с Install
диска пакет-patch ACE/PHCO-10751 "Enabling network install for ... C-200"
2. В файл /etc/instl_boottab вписать несколько _незанятых_ адресов
3. Подмонтировать Install CD и зарегистрировать его как Depot
mount /dev/dsk/c0t2d0 /cdrom
/usr/sbin/swreg -l depot /cdrom
4. Не забыть по окончании работ разрегистрировать Depot
/usr/sbin/swreg -u -l depot /cdrom
&dDНа станции&d@
Перехватить PDC-boot промпт (ESC или Break в первые 10 сек)
PDC> search lan install
Некоторые станции могут ничего не обнаружить, но все равно -
тогда втемную дается команда
PDC> boot lan.10.188.101.14.3.52 install
где 10.188.101.14 - IP адрес сервера,
а что такое 3.52 - не знает никто
.
&dDПакеты: установка дополнительного софта&d@
&dD * Как устанавливать пакеты в Solaris 2.5 * &d@
&dDАдминистрирование программного обеспечения&d@
Этот вопрос очень важен для поддержки и обновления
программного обеспечения. Для этой цели в ОС Solaris
предусмотрен специальный механизм, поддерживаемый с помощью
утилит "pkgadd" и "pkgrm", соответственно добавляющих и
удаляющих пакеты из системы. Чтобы эти утилиты могли
оперировать с пакетами, они должны быть представлены в
соответствующем виде, или формате. К сожалению, далеко не все
программные продукты доступны непосредственно в формате,
пригодном для "pkgadd". Подавляющее большинство продуктов для
Unix, доступных через Internet, находятся в виде исходных
текстов, которые надо откомпилировать и скопировать в нужные
места. Это имеет место, т.к. ОС Unix установлена на машинах с
различными типами процессоров и различной архитектурой.
Original is here
&dDРучная установка&d@
Глава подготовлена Сергеем Богомоловым
Здесь описана только установка пакета для себя (standalone
sysтем), если вам нужно установить пакет в режиме
server/dataless/diskless - читайте другие книжки (делать это надо
только с большой тоски).
1. Станьте суперпользователем
2. введите:
/usr/sbin/pkgadd -d имя_директории_где_лежит_пакет имя_пакета
например:
/usr/sbin/pkgadd -d /cdrom/solaris_2_5/s0/Solaris_2.5 SUNWpkgA
можно установить несколько пакетов сразу (укажите их имена через пробелы).
Имя пакета можно узнать из инструкции или с помощью команды:
/usr/sbin/pkginfo -d имя_директории_где_лежит_пакет
Внимание: Solaris не очень хорошо отслеживает взаимозависимость между
пакетами, так что вы сами должны позаботиться о порядке установки.
Многие пакеты любят задавать всякие вопросы во время установки (куда
все это поместить, весь ли пакет установить и т.д.), так что
будьте готовы. Например, при установке тома AnswerBook спрашивается,
что копировать на жесткий диск: описание или весь том.
Если вы копируете только описание, то исходный CD-ROM должен
быть установлен каждый раз, когда вы запускаете AnswerBook, иначе
ненайденный том будет помечен как "неживой" и его придется
восстанавливать. Кстати, тома разбросаны по 7 дискам!!!
-----------------------------------------------------------------
&dDПроверка установки пакета.&d@
/usr/sbin/pkgchk <имя_пакета>
-----------------------------------------------------------------
&dDПолучение информации о пакете:&d@
/usr/bin/pkginfo -l <имя_пакета>
например:
pkginfo -l SUNWcar
PKGINST: SUNWcar
NAME: Core Architecture, (Root)
CATEGORY: system
ARCH: sparc.sun4m
VERSION: 11.5.1,REV=94.07.15.22.10
BASEDIR: /
VENDOR: Sun Microsystems, Inc.
DESC: Core Architecture, (Root)
PSTAMP: fourstar940718191413
INSTDATE: Aug 16 1995 03:39
HOTLINE: Please contact your local service provider
STATUS: completely installed
FILES: 51 installed pathnames
16 shared pathnames
7 directories
29 executables
3794 blocks used (approx)
---------------------------------------------------------------
&dDУдаление пакета:&d@
/usr/sbin/pkgrm <имя_пакета>
---------------------------------------------------------------
&dDРабота с пакетами в графическом интерфейсе&d@
(swmtool для 2.4 или admintool для 2.5)
не надо устанавливать AnswerBook с их помощью.
SWMTOOL
запуск:
1. станьте суперпользователем
2. перейдите в графический режим, если вы еще не перешли в него
3. введите:
/usr/sbin/swmtool &
На экране возникает новое окно, программа долго-долго собирает
информацию об уже инсталлированных пакетах, затем переходит в
режим установки (режим INSTALL/REMOVE переключается
соответствующими кнопочками) и, скорее всего, сообщает вам, что
"устройство не готово, поменяйте установки (property)" Дело в
том, что swmtool по умолчанию считает, что устанавливаемый
пакет лежит на CD-ROM и менеджер томов выключен. Если это
действительно так, то вставьте CD-ROM перед запуском swmtool.
Иначе нажмите кнопку Props... (установки), возникает бланк, на
странице (категории) Source Media которого вам надо задать
устройство или директорию, где лежит пакет.
Например, меняем Media Type на Mounted Directory, Directory
Name устанавливаем в /cdrom/cdrom0 (установка с CD-ROM при
включенном менеджере томов) и нажимаем кнопку Apply. Если в
указанной вами директории есть пакеты, то их описания будут
перечислены в главном окне swmtool. Для каждого пакета
указывается: иконка (один ящик - простой пакет - на такую
иконку можно жать два раза, и появляется подробное описание, 3
ящика - составной пакет - на такую иконку можно жать два раза, и
она раскрывается в список внутренних пакетов - уровень
вложенности не ограничен), описание пакета и его предполагаемый
размер. Выбираете необходимые вам пакеты и нажимаете кнопку
Begin Installation (начать установку). Далее весь диалог
происходит в а/ц режиме как при установке pkgadd. Кстати, бланк
установок имеет большое количество кнопочек, менюшек и пр.:
есть с чем поиграться...
Для того, чтобы удалить пакет, нажимаете кнопку Remove,
выбираете пакет (пакеты), который вы хотите удалить, и
нажимаете кнопку Begin Removal.
&dDИзготовление собственного пакета&d@
Чтобы легче администрировать этот разрозненный набор файлов, получающийся
после компиляции, их можно привести к формату утилиты "pkgadd"
самостоятельно. Легче всего этот вопрос рассмотреть на конкретном примере.
Пусть у нас есть пакет, состоящий из 3х программ: "MyProg.bin", "Myprog.lib"
и "MyProg.man", которые должны храниться в каталогах "/usr/local/bin",
"/usr/local/lib" и "/usr/local/man" соответственно. Чтобы сделать из них
пакет, надо проделать следующие простые шаги:
а) Создадим директорию, где будут храниться исходные
данные для утилиты "pkgmk", которая и делает собственно пакет.
Пусть в нашем примере это будет директория "~/tmp/MyPackage".
б) Создадим под ним систему директорий, где должны
располагаться файлы пакета, и затем скопируем эти файлы на свои
места. Т.о. в результате у нас должны получиться файлы:
~/tmp/MyPackage/bin/MyProg.bin, ~/tmp/MyPackage/lib/MyProg.lib
и ~/tmp/MyPackage/man/MyProg.man
в) Затем надо создать файлы "pkginfo" и "prototype". Они
должны выглядеть примерно так (более подробную информацию об
этих файлах вы можете получить, набрав команды
man -s4 pkginfo
man -s4 prototype
Файл "prototype":
!PROJDIR=/usr/local
1 i pkginfo=pkginfo
1 d none bin 0755 root other
1 f none bin/MyProg.bin 0644 root other
1 d none lib 0755 poul insects
1 f none lib/MyProg.lib 0644 root other
1 d none man 0755 poul insects
1 f none man/MyProg.man 0644 root other
Файл "pkginfo":
PKG=MyProg
NAME=MyPackage
ARCH=sparc
VERSION=Version 1.0
CATEGORY=application
VENDOR=Pavel K. Klodin
EMAIL=webmaster@reksoft.ru
PSTAMP=Pstamp
BASEDIR=/usr/local
CLASSES=none
г) После того, как файлы сделаны, выполним следующие
команды:
cd ~/tmp/MyPackage
pkgmk -o -d /tmp -r .
После этого в директории "/tmp" будет создан пакет "MyPackage" в виде
структуры файлов и директорий. С ним уже можно оперировать утилитой
"pkgadd". д) Теперь, наконец, выполним команды (предварительно став
суперпользователем с помощью команды "su -"):
cd /tmp
pkgadd -d .
ПРИМЕЧАНИЕ: Следует помнить, что пакеты могут быть
представлены в двух равноправных формах:
в виде структуры директорий (как уже было рассмотрено выше);
в виде так называемых "потоковых пакетов" (stream packages).
Они представляют собой простой файл, как если бы были
записаны на стриммерной кассете или каком-либо другом
последовательном устройстве (отсюда, возможно, и название).
Обращаться с ними следует так же, как и с "обычными" пакетами в
виде структуры директорий и файлов. Эти 2 формы взаимно
преобразуются командой "pkgtrans".
Советом поделился Павел Клодин
&dDSummary of pkg commands:&d@
pkginfo {pkg} - test for presents of package.
pkgadd -d /cdrom/Solaris_2.3 <pkg ...>
- add missing packages
pkgrm {pkg ...} - remove packages.
pkgchk -q {pkg} - test for existance of package
pkgchk {options} [pkg] - check installed packages for
integrity.
Let's say your Solaris2 workstation is called "sol" and the
4.1.x server is called "bertha" and you want the printer name
to be "printer" (imaginative, eh?).
sol# lpsystem -t bsd bertha # says bertha is a bsd system
sol# lpadmin -p printer -s bertha # creates "printer" on "sol"
# to be printed on "bertha"
sol# accept printer # allow queuing
sol# enable printer # allow printing
sol# lpstat -t # check the status
sol# lpadmin -d printer # default
To get transparent mode, try this:
lpadmin -I any -p printer
&dD * Пакеты в Linux RedHat * &d@
Поставить пакет
rpm -i filesystem-1.2-1.i386.rpm
Удалить пакет
rpm --erase filesystem-1.2-1
Список всех пакетов
rpm -qa
Список файлов, входящих в неустановленный пакет:
rpm2cpio < packetname-1.2-1.i386.rpm | cpio -it
rpm2cpio < packetname-1.2-1.i386.rpm | cpio -it rpm2cpio < packetн
name-1.2-1.i386.rpm | cpio -it
rpm2cpio < packetname-1.2-1.i386.rpm | cpio -it
Список файлов, входящих в установленный пакет:
rpm -l nfs-server-2.2beta16-5
Апдейты к RedHat лежат здесь. Обязательно ставить security updates
ftp://ftp.funet.fi/pub/Linux/mirrors/redhat/redhat/redhat-4.2/updates/i386/
Установка апдейта
rpm -Uvh samba-1.9.18p7-0.i386.rpm
&dD * Пакеты в HP-UX 10.20 * &d@
Пакеты в HP-UX ставятся через подменюшку SAM.
Список всех пакетов
swlist -l product
.
&dDНесколько сетевых команд Unix&d@
&dD1. ping&d@. Прозвонить удаленую машину.
Проверяет, откликается ли указанная машина по сети:
ping host.name
Включить непрерывную "прозвонку" (с интервалом в 1 сек.):
ping -s host.name
Прервать "прозвонку" - Сtrl-С .
&dD2. finger&d@. Кто работает в системе.
Формат использования:
finger [-l] пользователь@сетевое.имя.компьютера
Кто работает на машине по имени ipsun.ras.ru :
finger @ipsun.ras.ru
Как поживает пользователь Мошков на этой машине:
finger -l moshkow@ipsun.ras.ru
&dD3. talk&d@. Вызвать пользователя на разговор
talk moshkow или
talk moshkow@fedfond - вызвать указанного пользователя на
указанной машине на разговор.
У этого пользователя на экране появится приглашение поговорить:
Message from Talk_Daemon@ipsun at 23:29 ...
talk: connection requested by ivanov@server.fedfond.msk.su
talk: respond with: talk ivanov@server.fedfond.msk.su
И если он наберет ответную команду
talk ivanov@server.fedfond.msk.su
То вы сможете поговорить друг с другом. Окончание разговора -
Ctrl-C
&dD4. mailx&d@. Послать кому нибудь электронную почту.
/* в Linux надо использовать не mailx, а просто маил */
mailx username@host.name
Subject: Тема письма
Текст сообщения
. . .
Окончание текста сообщения
Чтобы окончить ввод текста письма, в пустой строке нажмите
Ctrl-D. Или поставьте точку "." в начале строки и нажмите ENTER.
Если письмо уже готово и находится в файле let.txt, то отп-
равить его можно так:
mailx -s "Проверка почты" semen@server.fedfond.spb.su < let.txt
&dD5. mailx&d@. Прочитать пришедшую на мой адрес почту.
mailx, запущенный без аргументов, переходит в командный режим
чтения поступившей почты. В этом режиме можно пользоваться
такими командами:
? - выдать help по всем доступным командам
h 12 - заголовки писем начиная с 12-го номера
6 - читать 6-ое письмо
d - уничтожить текущее письмо
s fajl - сохранить письмо в файле "fajl"
r - ответить на письмо
для настроек программы mailx используется файл .mailrc, который
должен лежать в домашнем каталоге пользователя. В нем
желательно иметь строчки такого примерно содержания:
########### вставьте эти строки в свой файл .mailrc !!!!
set crt=22
set record='/home/moshkow/Mail.sended'
##############################################################
# чтобы длинные письма "листались" постранично командой more ;
# сохранять копии всех отправленных писем
# в файле /home/moshkow/Mail.sended ;
alias max moshkow@ipsun.ac.msk.su
alias kafedra petrov smirnov@nic.com lapin@sovim.mit.edu
# почтовые алиасы - можно задать синонимы для длинных почтовых
# адресов или группы адресов, и использовать эти синонимы
# вместо адреса при отправке почты
Если вы хотите завести себе благозвучное имя для адреса своей
электронной почты, вставьте в файл /etc/aliases примерно такие
строчки:
Maksim.Moshkow: moshkow
moshkov: moshkow
и выполните команду
newaliases
И теперь мне можно отправлять письма по таким адресам:
moshkow@moshkow.ru
moshkov@moshkow.ru
Maksim.Moshkow@moshkow.ru
Если вы хотите переадресовывать все пришедшие вам письма
на другой адрес, создайте файл $HOME/.forward и впишите в него
новый@емаил.адрес
или, если нужно отсылать письма, но оставлять себе копию, то
\yourlogin, newadres@email.adres
Если используется Linux, то можно пользоваться системой procmail
Чтобы письма присланные вам по списку рассылки складывались в
отдельный folder, поместите в свой $HOME/.procmailrc :
###############################################################
####### Удаляем дублированние писем (с одинаковым message-id)
:0 Wh: msgid.lock
| formail -D 8192 msgid.cache
####### Mail-листы сбрасываем в отдельный фолдер
:0
* ^(Sender|To|CC): .*(ezh@cdru.com|ezh@ezhe.com|banners@list.techno.ru)
nsmail/ezh
####### Перенаправить тело письма (без заголовка) на программу
:0 b
* Subject: .*uuencoded
| uudecode
####### Если письмо небольшого размера и не касается mailing-листа
####### "zhurnal@sharat.co.il" то копию пересылать на мой домашний email.
#######$HOME/.procmailrc :
:0 c
* < 10000
* !^To: .*zhurnal
! moshkow@home.moshkow.ru
####### Посылаем подтверждение о получении писем больше 30Кб
:0 h c
* > 30000
* !^From: CityCat
* !^From: .*linux
* !^FROM_DAEMON
* !^Subject: BOOK614
* !^X-Loop: moshkow@moshkow.ru
| ( egrep -v '^From moshkow|^Return-Path: moshkow' | formail -r -A"Precedence: junk" -A"X-Loop: moshkow@moshkow.ru" ; echo "Thanks, I have got your mail.") | $SENDMAIL -t
###############################################################
&dD6. telnet&d@. Залогиниться на удаленную машину.
telnet host.name
Команда telnet позволяет вам залогиниться на удаленную машину,
и работать на ней, как-будто вы сидите за терминалом, подклю-
ченным непосредственно к ней.
У команды telnet есть "горячий ключ" "Ctrl-]" , который перево-
дит telnet в командный режим. В этом режиме можно менять пара-
метры работы telnet'а. Выход из командного режима - ENTER.
Среди полезных команд назову так же "exit" и "help"
&dD7. ftp&d@. File Trasfer Protocol. Пересылка файлов.
Что делать, если нужно "перетащить файл" с чужой машины на
свою (или наоборот), а NFS между ними не запущен? Используйте
программу ftp. Это простенькая команда, позволяющая пересылать
файлы между машинами по протоколу TCP/IP.
ftp host.name
User name (moshkow): ivanov
Passwd:
Удаленная машина спросит у вас ваше входное имя и па-
роль (под которыми вы зарегистрированы НА УДАЛЕННОЙ машине).
Если вы на ней не зарегистрированы, попробуйте указать входное
имя "anonymous", а в качестве пароля - свой email-адрес.
После этого ftp переходит в командный режим. В этом режиме вы
можете "перемещаться" по каталогам удаленной машины, по катало-
гам своей машины, просматривать их оглавление, и забирать файлы
оттуда к себе, или класть их от себя - туда.
ftp> help - говорит само за себя
ftp> quit - завершить работу
ftp> bin - установить режим пересылки бинарных файлов
(настоятельно рекомендую)
ftp> cd katalog - перемещаться по "тамошним" каталогам
ftp> ls - выдать "тамошнее" оглавление
ftp> lcd katalog - перемещаться по "здешним" каталогам
ftp> !dir - выдать "здешнее" оглавление
ftp> !ls -al - выдать "здешнее" оглавление
ftp> get file-tam [ file-name-zdes ] - взять файл оттуда
ftp> put file-zdes [ file-name-tam ] - положить файл туда
&dDКак послать письмо вручную&d@
&dDtelnet localhost 25&d@
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 t30.systud.msk.su ESMTP Sendmail 8.8.5/8.8.5; Thu, 14 May 1998 18:01:21 +0400
vrfy ryba@aquarium.ru
expn ryba@aquarium.ru
&dDhelo whitehouse.gov&d@
250 t30.systud.msk.su Hello localhost [127.0.0.1], pleased to meet you
&dDmail from: god@heavens.com&d@
250 god@heavens.com... Sender ok
&dDrcpt to: moshkow@ipsun.ras.ru&d@
250 moshkow@ipsun.ras.ru... Recipient ok
&dDdata&d@
354 Enter mail, end with "." on a line by itself
&dDSubject: Time to pray!
This the time to pray caoming along!
God
.&d@
250 SAA01324 Message accepted for delivery
&dDquit&d@
.
&dDЛокальная сеть: Ethernet, Token ring, FDDI&d@
&dDEthernet&d@
Carrier Sense Multiple Access Collision Detect (CSMA/CD)
Контроль несущей с множественным доступом и разрешением
коллизий.
Стандарт Ethernet/2 и IEEE 802.3 похожи, но имеют различный
формат фрейма
&dDEthernet'ов существует 3 типа:&d@
10baseT Неэкранированная витая пара, разъем RJ45
Twisted pair (Длинна одной пары до 100м).
В любой цепочке должно быть не более 4-х хабов.
10base5 Толстый Ethernet. Желтый 2см кабель, 15 пиновый AUI
Thick ethernet коннектор у hosta. "Краб" - для подключения к основному
кабелю. На концах - N-терминаторы.(L<= 500м)
10base2 Тонкий Ethernet с коаксиальным 50-омным кабелем
Thin ethernet и BNC коннекторами.
Официальная длина кабеля 185 m (<=300m)
30 хостов на одном сегменте
+-----+
|Host o------------------. "Звезда"
+-----+ \
\ ___
+-----+ \o | Hub
|Host o----------------------o | 10-base-T
+-----+ o___|
/
+-----+ /
|Host o------------------'
+-----+
+-----+ +-----+ +-----+ "Общая шина"
|Host | |Host | |Host |
+--+--+ +--+--+ +--+--+ Thin
z-+---------------+---------------+-z
+-----+ +-----+ +-----+
|Host | |Host | |Host |
+--ш--+ +--ш--+ +--ш--+ Толстый ethernet
n n n ^
n n n |до 50м
"краб" n n v
n==M===============M===============M=======n
&dDToken ring&d@
Стандарт Token ring разработан для сетей IBM, и практически
совпадает с IEEE 802.5
Аппаратно - звезда (8 шт) на витой shielded или unshielded
паре, подключенная к MultiStationAccessUnit (MSAU) Несколько
MSAU можно соединять друг с другом, они при этом организуют
логическое общее кольцо.
Логически - кольцо по которому идет маркер-тележка. Принявший
маркер с сообщением считывает если оно ему, может положить свое
если маркер "пуст", ищ в любом случает передает маркер дальше.
Пройдя круг маркер уничтожается станцией, его запустившей, и
запускается новый. Допустим ровно один маркер. Маркер везет не
более одного пакета с данными. Назначается станция-Monitor,
которая следит, чтоб маркеры не шли второй круг, если станция
его породившая не смогла его удалить.
&dDFDDI&d@
Аппаратно - двойное оптоволоконное кольцо. В базовом режиме
одно из кольец не используется. В кольце есть некоторое
количество Dual Attachment станций. Если такая станция
замечает, что прошедший сквозь нее пакет не вернулся по кругу
(кольцо порвано), она автоматически активизирует второе кольцо.
(То же должна сделать DAS на другой стороне от обрыва)
___0 DAS ___0 DAS
/___o /___|
// \\ //
|| |* --> || *
|| o| || o*
\\___/o DAS \\___/| DAS
\___/ \___/
Логически - как и Token ring. Маркер может везти пакеты сразу
от нескольких станций. Функции Monitor'а выполняют все
участники кольца.
&dDРаспай Unshielded twisted pair&d@.
1 оранж Tx+ | +-1---8-+ | Rx+ 3
2 ОРАНЖ Tx- | | | | Rx- 6
3 зелен Rx+ | |_____| | Tx+ 1
4 СИНИЙ | |
5 синий | |
6 ЗЕЛЕН Rx- |___________| Tx- 2
7 корич (провод на нас)
8 КОРИЧ
-----------------------------------------------------------------
Для соединения двух адаптеров напрямую, без HUB'а (point-to-point)
используется "перевернутый" провод. Tx+<-->Rx+, Tx-<-->Rx-,...
Многие современные ethernet-контроллеры имеют автоматическое
определение кабеля, и их можно вязать напрямую стандартным
"прямым" кабелем - не переворачивая.
.
&dDГлобальная сеть: хардваре и порты&d@
DTE DCE
(station, router) ** ------ ** (modem) <==== провайдерский линк
&dDФизические интерфейсы подключения:&d@
EIA/TIA-232
EIA/TIA-449
V.24
V.35
X.21
G.703
EIA.530
HSSI
&dDЛогические протоколы WAN подключения:&d@
Data link encapsulation для синхронных линий:
&dDDedicated WAN&d@
SDLC - Synchronous Data Link Control
HDLC - High-level Data Link Control
LAPB - Link Access Procedure Balanced
PPP - Point-to-Point Protocol
&dDSwitched WAN&d@
Frame Relay - упрощеная версия HDLC фрейминга
X.25
ISDN
.
&dDМаршрутизация TCP/IP&d@
Сеть "Office"
+--------+ +--------+ Network 195.1.2.0
| | | | Netmask 255.255.255.0
+--------+ +--------+ Broadcast 195.1.2.255
| 195.1.2.3 | 195.1.2.10
----+-------------------+--------------------------+-------------
|195.1.2.1 | 195.1.2.2
+--------+ +--------+
|-|GatewayD| |GatewayO|
| +--------+ +--------+
| 198.8.2.1 SLIP : 122.5.6.9
| Сеть "Developers" :
| +-------+ Network 198.8.2.0 :
|-| | Netmask 255.255.255.0 Modem
| +-------+ Broadcast 198.8.2.255 . . .
| 198.8.2.2
| Modem
| +-------+ . . .
|-| | :
| +-------+ SLIP: 122.5.6.10
| 198.8.2.3 +--------+
|GatewayF|
122.5.6.3+----+---+
--------------------------------------------------+--------
| 122.5.6.1 | 122.5.6.2 Сеть "Filial"
+--------+ +--------+ Network 122.5.6.0
| | | | Netmask 255.255.255.192
+--------+ +--------+ Broadcast 122.5.6.63
Статические таблицы маршрутизации
Обычный Host IP 198.8.2.2
сети "Developers" Net: 198.8.2.0 -- 198.8.2.255
198.8.2.0 Default: 198.8.2.1
Мост "GatewayD" ifconfig eth0 198.8.2.1
ifconfig eth1 195.1.2.1
route add net 198.8.2.0 198.8.2.1 0
route add net 195.1.2.0 195.1.2.1 0
route add default 195.1.2.2 1
Мост "GatewayO" ifconfig eth0 195.1.2.2
ifconfig sl0 122.5.6.9 pointopoint 122.5.6.10
route add net 195.1.2.0 195.1.2.2 0
route add net 198.8.2.0 195.1.2.1 1
route add default 122.5.6.10 1
Обычный Host IP 195.1.2.3
сети "Office" Net: 195.1.2.0 -- 195.1.2.255
195.1.2.0 Default: 195.1.2.2
route add net 198.8.2.0 195.1.2.1 1
.
&dDСеть TCP/IP&d@
Протокол TCP/IP (Transmission Control Protocol/Internet Proto-
col) является базовым транспортным сетевым протоколом в
UNIX'е. В заголовке TCP/IP пакета указывается:
IP-адрес отправителя
IP-адрес получателя
Номер порта (Фактически - номер прикладной программы,
которой этот пакет предназначен)
TCP/IP-ишные пакеты имеют интересную особенность: они способны
"добраться" до адресата, пройдя сквозь разнородные локальные
сети, используя разнообразные физические носители. "Маршрутиза-
цию" IP-пакета (переброску его в требуемую сеть) осуществляют
"на добровольных началах" компьютеры, входящие в TCP/IP сеть.
&dDВсемирная сеть Internet&d@.
Все компютеры мира, поддерживающие протокол TCP/IP и каким-либо
образом подключенные друг к другу, образуют глобальную
всемирную сеть TCP/IP "Internet". Темпы роста "Internet":
100000 IP-адресов в месяц. В настоящий момент (конец 1994 года)
к Internet'у подключено около:
20,000 сетей
4,000,000 компьютеров
35,000,000 пользователей
&dD1. IP-адрес&d@.
Каждая машина в мире имеет свой уникальный IP-адрес.
IP-адрес - 32-битное число, которое принято записывать в сме-
шанном 16-рично-десятичном формате, в виде 4 чисел, разделенных
точками. Например:
193.124.148.73
128.8.2.1
Каждое десятичное число здесь представляет на самом деле два
шестнадцатеричных разряда. Может принимать значения от 0 до
255. Допустима также шестнадцатеричная запись:
c1.7c.94.49 или 0xC17C9449
80.08.02.01 или 0x80080201
В условиях корректно сконфигуренной локальной сети, и при усло-
вии подключения ее к всемирной сети Internet, протокол TCP/IP
позволяет вашей сетевой программе работать с ЛЮБЫМ компьютером
в мире, как если бы он находился в вашей локальной сети.
Уникальность IP-адресов поддерживается просто. Они выдаются
централизованно. Контора, которая этим занимается, называется
NIC - Network Informational Center. Европейское отделение NIC
расположено в Амстердаме. Она ВЫДАЕТ IP-адреса. В адрес NIC
нужно послать форму-запрос установленного образца, и через не-
которое время вам пришлют "пачку" IP-адресов, выделенных для
вашей сети. E-mail адрес, по которому нужно послать запрос:
hostmaster@sri-nic.net
Московский узел, раздающий IP-адреса, а так же домены *.ru
доступен по адресу
РосНИИРОС xSU/RU NetworkInformationalCenter
ncc@ripn.net или ncc@ussr.eu.net
www.ripn.net/nic/ripn-docs/
&dDIP-сеть, подсеть.&d@
IP-сеть - "пачка" из 2**n IP-адресов, ИДУЩИХ ПОДРЯД. Самый
младший - резервируется. Этот адрес называется адресом IP-сети.
Например 128.8.0.0, или 193.125.149.64 . Адрес сети использует-
ся, когда требуется указать всю сеть целиком, например, когда
задается маршрутизация до этой сети.
Маска сети - фактически размер сети, задает число адресов в се-
ти. Задается либо количеством битов в маске сети (например 8бит
- 256 адресов, 6 бит - 64 адреса), либо битовой маской вида
b'111...11100...00'
число^^ ^^ битов
которую тоже принято записывать в десятично-побайтной записи,
например:
255.255.255.192 - маска на 64 адреса
255.255.255.0 - маска на 256 адресов
255.255.0.0 - маска на 64Kb адресов
Broadcast адрес сети - самый старший адрес в сети. Резерви-
руется для передачи сообщений типа "все-всем-всем" (в сети).
128.8.255.255
Сети делятся на классы:
Класс A. "Огромные" сети.
Адреса этих сетей лежат в промежутке: 1 - 126.
Маска сети: 255.0.0.0
Содержит до 16387064 адресов (256*256*256).
Адреса хостов в этих сетях вида: 125.*.*.*
Класс B. "Средние" сети.
Адреса этих сетей лежат в промежутке: 128.0 - 191.255
Маска сети: 255.255.0.0
Содержит до 64516 адресов (256*256).
Адреса хостов в этих сетях вида: 136.12.*.*
Класс C. "Маленькие" сети.
Адреса сетей лежат в интервале: 192.0.0 - 255.254.255
Маска сети: 255.255.255.0
Содержит 254 адреса.
Адреса хостов в этих сетях вида: 195.136.12.*
Класс D. "Multicast-сети" (групповая адресация) (в стадии разработки)
Адреса сетей лежат в интервале: 224-239
Класс E. "Экспериментальные" 240-250
Адреса 0, 127, 255 - специальные и для обычных IP не используется
&dD2.1. Private Address Space&d@
Если ваша сеть будет использоваться только внутри
организации, и машины не будут иметь непосредственного выхода в
интернет, то адреса для нее можно брать "с потолка".
В документе RFC 1597 "Address Allocation for Private Internets"
March 1994:
The Internet Assigned Numbers Authority (IANA) зарезервировал
три блока IP адресов для использования во внутренних сетях:
10.0.0.0 - 10.255.255.255 Класс A
172.16.0.0 - 172.31.255.255 Класс B
192.168.0.0 - 192.168.255.255 Класс C
Роутеры большинства ISP эти адреса не маршрутизируют, что
добавляет им(адресам) безопасности.
&dD2. Объявляем IP-адрес на наш ethernet'ный контроллер&d@.
Конфигурация сети на UNIX-машине обычно делается автоматически
при начальной загрузке. Вкратце ее можно описать так:
Определение трех однотипных карт в Linux (1*ISA, 2*PnP):
/etc/conf.modules
alias eth0 ne
alias eth1 ne
alias eth2 ne
options ne io=0x220,irq=5
Объявляем, что наш IP-адрес 198.8.2.1 и он поднят на
ethernet'ную карту по имени elx70 . В случае Motorol'ы так на-
зывается ethernet, торчащий из главной системной платы - платы
с процессором.
ifconfig e1x70 198.8.2.1 up
Объявляем, что наш второй контроллер с именем m3760 (нижняя
плата) имеет IP-адрес 198.8.3.1
ifconfig m3760 198.8.3.1 up
&dD3. Маршрутизация локальной сети&d@.
Объявляем, что машины с адресами вида 198.8.2.* *=1,...,254 си-
дят на нашем верхнем локальном сегменте ethernet, и разговари-
вать с ними надо напрямую, через верхний ethernet, соответству-
ющий нашему адресу 198.8.2.1 - т.е. - elx70. А с машинами, име-
ющими адреса вида 198.8.3.* - через нижний ethernet - с адресом
198.8.3.1
route add net 198.8.2.0 198.8.2.1 netmask 255.255.255.0 0
route add net 198.8.3.0 198.8.3.1 netmask 255.255.255.0 0
Сетевые пакеты для IP-адресов, которые не лежат в нашей локаль-
ной сети, переправлять на машину с сетевым адресом 198.8.2.107
- а уж она сама будет разбираться, что с ними делать, и как
доставить их до конкретных адресатов.
route add default 198.8.2.107 1
Последний аргумент команды route - метрика. Ее можно интерпре-
тировать как "расстояние" до "того" gateway'я, или "сколько пе-
ресадок между gateway'ями придется сделать IP-пакету по дороге
туда. Поскольку IP-адреса 198.8.2.1 и 198.8.3.1 соответствуют
нашим собственный платам ethernet, то и метрика (расстояние) до
них 0. 198.8.2.107 - другая машина - "расстояние до нее" 1.
Смотрим, что у нас получилось
netstat -rn # распечатать таблицу маршрутизации
ping -s fedfond # "прозвонить" узлы сети
ping -s fedfond-gate
ping -s 198.8.2.107
netstat -i # статистика о работе сетевых интерфейсов
Настала пора объяснить, что такое lo0 и localhost. Это так на-
зываемый Loop-back интерфейс. Он имитирует сетевой интерфейс
локально, не выходя за границы нашего компьютера. Loop-back ин-
терфейсу соответствует зарезервированный за ним IP-адрес
127.0.0.1
&dD4.&d@ Конфигурирование TCP/IP на Мотороле 922.
Придумайте сетевое имя вашего компьютера. Пусть вы решили, что
ваш компьютер должен называться fedfond, и иметь IP-adres
198.8.2.1 . Однако не забывайте, что у Моторолы ДВА etherн
net-контроллера, и КАЖДЫЙ из них ДОЛЖЕН иметь свой УНИКАЛЬНЫЙ
IP-адрес. Мы решаем, что второй наш ethernet будет иметь
IP-адрес 198.8.3.1, ну и этому адресу можно назначить вполне
человеческое имя, например "fedfond-gate".
ВНИМАНИЕ: если вы внимательно рассмотрите содержание файла
/etc/inet/rc.inet, особенно строку вида
/usr/sbin/ifconfig e1x70 `uname -n`-gate $net_mask up
то поймете, что второй ethernet должен называться именно
fedfond-gate , и никак иначе.
Итак, чтобы установить сетевое имя и IP-адреса нашего host'а
1. командой sysadm установите "nodename" . ВНИМАНИЕ: именно
nodename (имя узла) а не systemname (имя операционной системы)
2. В файл /etc/hosts вставьте строчки, привязывающие IP-адреса
к имени fedfond и, ВНИМАНИЕ!, fedfond-gate
198.8.2.1 fedfond
198.8.3.1 fedfond-gate
3. Перезагрузитесь.
&dDКонфигурирование 2-го ethernet в Linux&d@
Первый-то ethernet конфигурится с раздачи - сложность появится,
когда мы захотим увидеть второй. Например можно в
/etc/rc.d/rc.local поставить такие команды:
# подгрузка дравера с дековским чипом 2140
insmod /lib/modules/2.0.18/de4x5.o io=0
# выделение IP # статический роутинг на вторую сетку
ifconfig eth1 10.232.172.1
route add -net 10.232.172.0 gw 10.232.172.1 netmask 255.255.255.0
Если дравер 2-го ethernet'а вкомпилирован в ядро, то
активизировать его можно так: в файл /etc/lilo.conf вписать
append="ether=0,0,eth0 ether=0,0,eth1" # если сработает autoprobe
# в случае явного задания параметров карт
append="ether=10,0x300,0xe800,eth0 ether=12,0x280,eth1"
Включить роутинг:
echo 1 > /proc/sys/net/ipv4/ip_forward
&dDКак узнать hardware адрес ethernet'ной карты&d@
Если машины нормально сконфигурированы для TCP/IP, то
достаточно попинговать их явно или по броадкасту, затем arp -a
ping [-s] 123.456.789.255
arp -a
Почти всегда можно разобрать машину, и посмотреть адрес,
напечатанный на самой плате.
Linux: Адрес печатается при загрузке ядра.
Если карта сконфигурирована, то адрес сообщает команда
ifconfig
Sun: Адрес печатается boot-монитором при старте
Hardware адрес ethernet'а на Sun можно произвольно менять
находясь в boot-мониторе, или командой ifconfig
подробности см. в Sun NVRAM & hostid FAQ
HP-UX: Адрес можно узнать командой lanscan. На рабочих станциях
адрес можно узнать еще и из boot-монитора PDC.
&dD5. Прикладные интерфейсы&d@.
Чтобы писать программы, работающие с сетью, программист должен
пользоваться каким-либо набором системных вызовов и функций. От
BSD-Unix'а в жизнь вошел получивший большую популярность API
Berkеlеy-sockets. AT&T System V породила TLI (Transport Level
Interface) - построенный на технологии "потоков" (streams).
SVR4 поддерживает и то, и другое. Поддержку сокетов
обеспечивает демон inetd (Internet Super Server), поддержку TLI
обеспечивает демон listen (Network Listener).
&dD6.&d@ Конфигурация TLI
Демон listen управляется специальной базой данных, в которую
необходимо вписать IP-адрес нашего host'а. Делается это "один
раз в жизни". IP-адрес задается в хитрой шестнадцатеричной за-
писи.
Итак, если наши IP-адреса 198.8.2.1 и 198.8.3.1, их шестнадца-
теричная запись C6080201, C6080301 , то мы должны единовременно
выполнить три команды:
nlsadmin -i tcp
nlsadmin -l '\x00020acec60802010000000000000000' tcp
nlsadmin -l '\x00020acec60803010000000000000000' tcp
"волшебное ^^^^^^^^шестнадцать нулей
слово 0acе" |
|
сюда вписывается наш фактический IP-адрес
&dD7.&d@ Конфигурация BSD сокетов.
Для этого ничего делать не надо. Врочем, в дальнейшем,
возможно, вам придется этим заниматься. Настройки inetd лежат в
файлах:
/etc/inetd.conf название сетевого --> имя обслуживающей
сервиса программы
/etc/services номер порта --> название сетевого сервиса
Состояние текущих соединений можно посмотреть командой:
netstat (или netstat -ta - если у вас Linux)
&dDЕще несколько протоколов&d@
ARP - Address Resolution Protocol
Протокол низкого уровня. Поддерживается на уровне ядра и/или
дравера сетевой платы. Для определения, какой ethernet'ный
адрес имеет машина, если известен ее IP-адрес. Работает по
принципу broadcаst: "эй, все, все, все: IP-такой_то -
отзовись", и он один отзывается.
arp -a # распечатать известные нам IP-адреса и их eth-адреса
RARP - Reverse Address Resolution Protocol.
Для оповещения бездисковых клиентов, какой у них IP-адрес. На
сервере запускается демон rarpd. У него есть файл-таблица:
ether-адрес -> IP-адрес. По запросу-broadcast'у бездискового
клиента вида: "эй, все,все,все, мой eth-адрес такой-то. Как
меня зовут?" rarpd сообщает ему, какой у него IP (а другой де-
мон bootparamd сообщает ему дополнительную информацию - где ему
брать свою корневую файловую систему, например).
Для обмена информацией о роутинге (маршрутизации) используются
протоколы RIP, BGP, EGP, ICMP.
RIP - Routing Information Protocol
Внутренний протокол роутинга (внутри автономной системы). Его
поддерживают демоны routed и/или gated.
BGP - Border Gateway Protocol
EGP - External Gateway Protocol
Роутинг между автономными системами. Их поддерживает демон
gated
ICMP - Internet Control Message Protocol
передает сообщения об ошибках в TCP/IP (например "port
unreachable"), используется программами ping, traceroute, может
передавать сообщение о нерациональном роутинге типа "redirect":
"вообще-то можно направлять пакеты через меня, однако есть и бо-
лее короткий путь".
Для обмена информацией о символических именах host'ов,
пользователей, групах пользователей и пр. используются
протоколы DNS и NIS/YP
DNS - Domain Name System.
Позволяет использовать символические имена хостов помимо цифро-
вых IP-номеров, и организовывать "деревянную" структуру наиме-
нования доменов (типа pc101.fedfond.msk.su , ftp.sco.com и
т.п.) Сервер DNS - хост, на котором запущен демон bind, и хра-
нятся имена хостов в зоне(домене). На остальных хостах для оп-
ределения IP-адреса по имени используются библиотечные функции
библиотеки "resolver" - gethostbyname, gethostbyaddr, которые
обращаются по сети к ближайшему серверу DNS, и выясняют у него
IP-адрес машины по ее имени (domain-name).
NIS/YP - Network Information System (используется так же
название, пришедшее от фирмы Sun - Yellow Pages). Позволяет
хранить на одном NIS-сервере (с демоном ypserv) информацию,
единую для всей локальной сети: имена хостов, имена и права
пользователей, групп пользователей, название их домашних
каталогов, символические имена портов и т.д. и т.п.
Еще раз об отличиях DNS от NIS/YP: DNS - система "глобальная" -
действует в рамках всего Интернета, но содержит ТОЛЬКО имена
хостов. NIS/YP - содержит помимо имен хостов несколько других
информационных баз, но зато поддерживается только в рамках сети
одной организации.
&dDКонфигурирование TCP/IP на скорую руку&d@
В большинстве unix-ов имеется простая менюшная утилита
позволяющая сконфигурировать основные параметры компьютера: Имя
хоста, IP адрес и параметры сети, DNS сервера
HP/UX: /etc/set_parms initial
Linux Slackware: net_config
Solaris: /etc/???
.
&dDОрганизация TCP/IP по последовательным линиям&d@
Протокол TCP/IP не обязательно требует наличия etherн
net'ной сети. Вполне допустимы и другие физические носители,
например:
Последовательные линии с подключением через порты RS-232,
Скоростные линии с подключением через параллельные порты,
или скоростные синхронные порты (например 485, V.435).
Эти возможности обеспечиваются специализированными реализациями
протокола IP:
для подключения через RS-232
SLIP - Serial Line IP - самая первая реализация TCP/IP "для
бедных", широко используется до сих пор.
CSLIP - Compressed SLIP - модификация протокола SLIP.
Сжатию подвергаются заголовки IP-пакетов. ВНИМАНИЕ: но
не сами данные! В стандартном IP-пакете IP-заголовки со
служебной информацией занимают порядка 40 байт. В
CSLIP'е эти заголовки ужимаются до 3 байт. При пересыл-
ке большого числа мелких пакетов получается существен-
ный выигрыш в скорости. Если пакеты крупные, то выигры-
ша не будет никакого.
PPP - Point-to-Point Protocol
Еще одна, современная реализация TCP "для бедных". Яв-
ляется стандартным для SVR4. Более универсален. Позво-
ляет также организовать передачу по последовательной
линии протокола IPX. Поддерживает режимы эмуляции slip
и cslip - для совместимости.
для подключения через Centronix-параллельный порт
PLIP - Parallel Line IP - некоторые скажут - экзотика.
Ничуть не бывало. Весьма распространенная вещь. Вот
когда TCP/IP по SCSI-шине - это да, это - экзотика.
Кстати, RFC 1149 описывает передачу пакетов IP голубиной
почтой.
&dDTCP/IP по спутниковой связи&d@.
Теоретических трудностей организация связи TCP/IP через
спутниковую антенну нет - все выглядит также, как при модемной
связи по телефону. Технология примерно следующая: с антенны
выходит высокочастотный сигнал, сигнал прогоняется сквозь
спутниковый модем, из модема выходит поток данных по формату
High Speed Interface - завести в компьютер его можно через
скоростной порт, например V.435 (логически он ведет себя
приблизительно как обычный последовательный порт), и со стороны
хоста - поднимается протокол PPP. Естественно, на "том конце"
предполагается та же схема подключения.
+-------------------+ +-----------------+ (
| протокол порт| данные |порт спутниковый| сигнал ( ><
|Host PPP V.435|========|V.435 модем | ~~~~~~ (
| -TCP/IP-> | | | ~~~~~~ /\
+-------------------+ +-----------------+ Антенна
Вместо Хоста со скоростным портом, модем можно подключить к
специализированному устройству - "Роутеру", внутри которого
"зашит" протокол TCP/IP (PPP, Ether), и имеются порты Ethernet,
и High Speed Interface. Достаточно популярны для таких целей
роутеры "Cisco router", "NetBlaser".
+-------------------+ +-----------------+ (
| протокол порт| данные |порт спутниковый| сигнал ( ><
|Router PPP V.435|========|V.435 модем | ~~~~~~ (
| -TCP/IP-> | | | ~~~~~~ /\
+-------+-----------+ +-----------------+ Антенна
|
... -Ethernet------ ...
&dDСкорость, которую можно получить&d@.
Скорость главным образом зависит от типа и качества линии свя-
зи, используемых модемов, и типа порта, в который этот модем
воткнут.
Практические ограничения на скорость:
Скорость данных между модемами V32bis/V42 по городскому телефо-
ну, или междугородней линии "Искра" до 16800 бит/сек. Реально ~
12000 бит/с. Наличие встроенного протокола V42 сжатия данных
позволяет поднять реальную (замеренную уже не между модемами, а
между портами) скорость передачи несжатых данных в 2-4 раза,
т.е. до 38400-57600 бит/с
Максимальная скорость приема/передачи данных на
последовательном порту RS-232 зависит от наличия в оном
микросхем UART (Universal Asyncronous Receiver-Transmitter)
16450 - 19200 bit/s.
16550 - 19200 bit/s. (отсутствие буковки "A" - фатально)
16550A - 38400 bit/s.
16550A до 115200 bit/s. (Если операционная система "тянет")
(в частности - Solaris, Unixware - нет,
FreeBSD, Netblaser, Cisco router - да)
В итоге реальная скорость пересылки данных:
Телефон/"Искра", V32bis/V42 - 19200 бит/с.
Выделенная 2-х проводка, V32bis/V42 - 38400 бит/с.
Выделенная 4-х проводка, RAID,????? - 115200 бит/с.
Физическая 4-х проводка<=4км, ????? до 1 Мбит/с.
Оптоволокно <=?км, ????? ?? 2 Мбит/с.
Антенна. Спутниковый модем. Порт V.435. PPP 64, 128, 256 Кбит/с
&dD * Конфигурирование SLIP/CSLIP * &d@.
Для этого соединяем два host'а нульмодемным кабелем через
последовательные порты, и запускаем фоном программу slattach,
переводящую порты в режим передачи протокола TCP/IP.
Естественно, что SLIP надо запускать с обоих концов, причем
"одинаковый".
SVR4, slip
slattach /dev/comport NASH-IP-ADRES IH-IP-ADRES 19200 &
# переводит порт /dev/comport в режим "slip" на скорости 19200
# и устанавливает IP-адрес на slip-интерфейс
SVR4, cslip
slattach -c /dev/comport NASH-IP-ADRES IH-IP-ADRES 38400 &
# переводит порт /dev/comport в режим "Compressed-slip"
# на скорости 38400
# и устанавливает IP-адрес на C-slip-интерфейс
slattach -e /dev/comport NASH-IP-ADRES IH-IP-ADRES 38400 &
# переводит порт в режим slip или cslip,
# автоматически определяя, какой именно протокол запущен
# "на том конце", и устанавливает со своей стороны такой же
Linux, SLIP.
Теперь SLIP в Linux заряжается командой DIP, с конфигурационным файлом:
/usr/sbin/dip config-file-name
---------------------------------------------------------------
# прямой коннект нульмодемным кабелем
main:
get $local 193.232.171.22
get $remote 193.232.171.19
port /dev/modem
speed 9600
mode SLIP
exit
---------------------------------------------------------------
# slip с телефонной дозвонкой
---------------------------------------------------------------
main:
get $local uwalt.hacktic.nl
get $remote xs4all.hacktic.nl
port /dev/modem
speed 38400
send ATQ0V1E1X4\r
wait OK 2
dial p555-1234
login:
sleep 2
wait ogin: 20
send MYLOGIN\n
wait ssword: 20
send MYPASSWD\n
# We are now logged in.
wait SOMETEXT 15
get $mtu 296
# Ensure "route add -net default xs4all.hacktic.nl" will be done
default
mode SLIP
---------------------------------------------------------------
На обоих концах иметь симметричные файлы и запустить dip'ы
Linux, CSLIP.
# сперва переводим порт в режим "cslip"
slattach -p cslip /dev/modem &
ifconfig cs0 NASH-IP-ADRES pointopoint IH-IP-ADRES
route add IH-IP-ADRES
route add default gw IH-IP-ADRES
Linux, PLIP.
ifconfig plip1 NASH-IP-ADRES pointopoint IH-IP-ADRES
route add IH-IP-ADRES
route add default gw IH-IP-ADRES
Установка SLIP по телефонной линии через модем.
Надо заставить наш модем созвониться с "тем" модемом.
После этого мы получаем прозрачное соединение между
последовательными портами, по которому и "поднимаем"
SLIP, см. предыдущие пункты.
( stty 19200 ; echo atdp9120123 ) < /dev/modem > /dev/modem
sleep 55
Выдаем на модем команду atdp - набрать телефонный номер, и ждем
55 секунд. Надеюсь, модемам хватит этого времени, чтобы "сню-
хаться".
Восстановление связи в случае обрыва.
Как узнать, что связь порвалась? Ping'ануть "тот" конец линка.
Прежде, чем набирать модемом номер для новой дозвонки,
необходимо "снять" slip с нашего последовательного порта
(поскольку в режиме slip он функционирует не как
последовательный порт, а как канал передачи TCP/IP). Как снять
slip? Кильнуть slattach.
while true # В вечном цикле
do sleep 60 # Подождать минутку
if ping 107.65.8.254 | grep 'is alive' ;
then echo Ok > /dev/null # Если IH-IP-ADRES отзывается
else
# Иначе зарубаем slattach
slip_pid=`ps -ef | grep slattach | cut -c1-6`
kill -9 $slip_pid
# набираем тамошний телефонный номер
(stty 19200; echo atdp9120123) < /dev/modem > /dev/modem
sleep 55
# поднимаем slattach
slattach -e /dev/modem 195.8.2.3 107.65.8.254 19200 &
fi
done
&dD * PPP * &d@
&dDMOTOROLA: PPP&d@
/etc/inet/ppphosts - перечисляет ppp-хосты
Правила дозвонки и соединения с этими хостами описываются
стандартными описаниями из UUCP
Убедиться, что поддержка ppp присутствует в
конфигурационном файле /etc/strcf
Убедиться, что при загрузке запускается команда slink
Непосредственное ppp-соединение активизируется при
обращении ("по требованию").
Подробности искать в
man ppp
man pppd
man ppphosts
&dDLinux&d@
Все делается командой pppd. В комплект pppd входит
командочка chat, в аргументах же pppd задаются IP-адреса,
телефонные номера, инициализация модема, chat-овый диалог с
машиной провайдера.
Пример: (Почти из жизни) явно задаем наш IP=123.456.789.12
pppd connect 'chat -v ABORT "NO DIALTONE" ABORT BUSY "" ATZ OK \
atdp9386933 Username: ppmoshkow Passwd: mypasswd mode ;' \
crtscts defaultroute modem noipdefault -detach mru 1500 \
123.456.789.12:194.85.105.1 /dev/modem 38400
Пример: взять адреса заданные сервером
pppd connect 'chat -v ABORT "NO DIALTONE" ABORT BUSY "" ATZ OK \
atdp9386933 Username: ppmoshkow Passwd: mypasswd mode ;' \
crtscts defaultroute modem noipdefault -detach mru 1500 \
0.0.0.0: /dev/modem 38400
&dDWindows 95&d@
Поставить допоолнительный пакет из MS Plus - "Network dialup
script editor"
Подключить через него скрипт:
---------------------------------------------------------------
proc main
waitfor "login:" until 5
transmit $USERID, raw
transmit "^M"
waitfor "Password:"
transmit "password^M"
waitfor "modem" until 5
endproc
---------------------------------------------------------------
В звонильной форме вписать logname, password не вписывать, ибо
все равно он забывается при каждом перезапуске.
&dDHP-UX 10.20&d@
На рабочих станциях под HP-UX/10.20 родного ppp НЕТ. Только slip.
Можно сftpить free-варный пакет iij-ppp
http://www.verinet.com/~barthold/ftp/iij-ppp0.94beta2.hpux10.tar.gz
Документация по конфигурации и инсталляции прилагается к пакету.
На серверах и рабочих станциях SLIP назван "ppl" и включен в
стандартный пакет "LAN/9000 Link" product.
.
&dDСетевая файловая система NFS&d@
- Network File System.
Стандартной сетевой файловой системой для UNIX'а является NFS.
Любая Unix-машина умеет монтировать по протоколу NFS удаленные
файловые системы и использовать их как свои собственные, а так
же может выделять свои каталоги для других машин. Выглядит это
примерно так:
mount -F nfs udalennaq.mashina:/katalog_tam /katalog
или, если у вас BSD или Linux
mount -o rsize=8192,wsize=8192 mashina:/katalog_tam /katalog
ls -al /katalog
Хотя NFS был когда-то разработан для Unix'а, имеется реализация
NFS для MSDOS-овских PC. Эти пакеты принято называть сводным
именем PC/NFS (Не путать с названием "PC-NFS" - это реализация
PC/NFS от фирмы "Sun Select"). Т.е. PC'юк, на котором запущен
NFS для PC, может монтировать в качестве сетевых дисков
каталоги Unix'овской машины, которые она выделяет в NFS. -
Фактически, PC/NFS дает для PC те же самые возможности, что и
Netware - удаленный сетевой диск и удаленный сетевой принтер.
Разница лишь в том, что Unix-host, помимо позволения NFS-ения
себя, в состоянии заниматься и своими собственными задачами, а
сервер Netware ничем кроме обслуживания своих клиентов,
изображая для них диск с ethernet'ом, заниматься не
приспособлен, но работает быстрее раза в 1.5-2. Ну и занимают
NFS-ные резиденты порядка 100 Kb оперативной памяти, в то время
как Netwar'ные - порядка 50.
&dD2.&d@ Оценочные скорости пакетов PC/NFS различных произво-
дителей: 486dx2/66, адаптер wd8013 16 bit:
Пакет: чтение Kb/сек запись
NFS for PC
PC-NFS 4.0 220 120
PC-NFS 5.0(**) 220 120
Pathway 350 170
PCTCP 3.0 350 200
TSOFT (*) 200 100
XFS (*) 500 50
Chameleon NFS(**) 2-е место по результатам тестов
Unix for PC
Linux/NFS(*) 400 350
FreeBSD/NFS(*) 900 300
Unixware/NFS 400 300
Прочие
Netware 3.11 500 600
NW Lite 400 500
WFW (Samba) 150 150
Lantastic ? ?
(*) - условно-бесплатные или бесплатные пакеты
(**) - защищен от нелицензированного копирования
Для сравнения: скорость чтения/записи NFS между двумя
SUN SPARCstation и/или IBM/RS6000 900/400 Kb/сек
&dD3. Для того, чтобы Unix-машина служила NFS сервером&d@
На ней должны быть запущены следующие демоны:
rpc.portmap - демон портов RPC (Remote Procedure Call)
(поскольку NFS использует RPC)
(На Motorole не требуется.)
mountd - обслуживание команд монтирования (он решает -
разрешить/ не разрешить)
nfsd - непосредственное обслуживание протокола NFS
biod - кэширование NFS-чтений на клиенте
(только в SunOS)
pcnfsd - проводит дополнительную "авторизацию" пользо-
вателей на PC/NFS клиентах. Поскольку MSDOS
не занимается учетом и регистрацией пользова-
теля, pcnfsd сам спрашивает у PC-ишного
user'а его имя и пароль.
(не обязателен, но желателен)
Обычно все эти демоны запускаются на уровне выполнения 3. Пос-
мотрите, с большой вероятностью вы обнаружите на своей машине
файл с названием наподобие:
/etc/rc3.d/S22nfs - предназначен для запуска NFS-сервера
Должно быть указано, какие именно каталоги, разрешается "ви-
деть" по NFS, и каким именно машинам это разрешается.
Эти каталоги указываются в файле
/etc/dfs/dfstab и экспортируются явной командой
shareall или share (если у вас SVR4)
или в файле
/etc/exports и экспортируются явно командой
exportfs -a (если у вас какой либо другой UNIX)
&dD4.&d@ Активизация NFS.
Обычно, на машине со свежеустановленным Unix'ом NFS сервер не
активизирован. Чтобы он запустился, системный администратор
должен обеспечить выполнение условий перечисленных в предыдущем
пункте. Для этого достаточно:
&dDMotorola 922&d@
После загрузки переходить на уровень выполнения 3.
В файле /etc/inittab исправить строку
is:2:initdefault:
на строку
is:3:initdefault:
Запускать pcnfsd - демона "авторизации" PCNFS'ных пользователей
В файл /etc/rc3.d/S22nfs вставить команду запуска демона:
/usr/lib/nfs/pcnfsd
Из меню sysadm в network_services / remote_files /
local_recources / share / nfs задать каталоги, которые вы раз-
решаете "раздавать" по NFS. Например, проэкспортируйте каталог
/home
Чтобы исправления в /etc/inittab подействовали, перезагрузите
unix командой
shutdown -y -g0 -i6
&dDLinux&d@
В файле /etc/rc.d/rc.inet2 раскомментируйте строки, запускающие
демонов
rpc.portmap
rpc.nfsd
rpc.mountd
rpc.ugidd
В файл /etc/exports вставьте строку
/ (rw)
Перезагрузитесь
&dDSun Solaris 1.1&d@.
В файл /etc/exports вставьте строки...
/home
/usr
Перезагрузитесь
&dDSun Solaris 2.3&d@.
В файле /etc/dfs/dfstab вставьте строки для экспортируемых фай-
ловых систем. (Формат указан в комментариях в этом файле)
Перезагрузитесь
&dD5.&d@ ЕЩЕ ОДНА СЕТЕВАЯ ФАЙЛОВАЯ СИСТЕМА. RFS. DFS.
RFS - Remote File Sharing. Тоже сетевая файловая система. NFS -
порождение BSD Unix'а, RFS - System V Unix'а. Назначение такое
же, как и у NFS. Каких либо преимуществ по сравнению с NFS не
имеет. Ярко выраженных недостатков, пожалуй, тоже. Значительно
менее распространена, чем NFS. Не имеет automounter'а. Клиентов
RFS for MSDOS PC нет. Зато RFS поддерживает захват и блокировку
файлов, и специальные файлы. Активизировать RFS вряд ли имеет
смысл. Действительно, зачем нам второй Генеральный секретарь?
DFS - Distributed File System. Тоже сетевая файловая система.
Вот и все, что я могу про нее сказать.
.
&dDКонфигурирование automount-демона&d@
Авто-монтировщик - демон, запущенный на NFS-клиенте. Этот
демон монтирует удаленные каталоги "ПО ТРЕБОВАНИЮ" - т.е.,
когда к ним происходит обращение. Если к автоматически
смонтированному каталогу долго не было обращений,
автомонтировщик его автоматически отмонтирует.
Авто-монтирование поддерживается демоном automountd. Этот демон
запускается при начальной загрузке операционной системы.
Запускается он в командном файле
/etc/rc2.d/S20nfs.client
automountd # если все карты будут браться из NIS
или
automountd -m -f /etc/auto.master # брать только локальные
# карты
Управляется automountd несколькими "картами" - файлами с описа-
нием кого и куда надо монтировать. В простейшем случае нужно
иметь три файла:
/etc/auto_master - головной конфигурационный файл
Ссылается на:
/etc/auto_direct - указывает, какие каталоги куда монтировать
/etc/auto_home - задает правила монтирования домашних
каталогов пользователей, расположенных на
удаленных машинах.
/etc/auto_master :---------------------------------------------
#
# Master map for automounter
#
/net -hosts
# задает: корневой каталог компьютера по имени imyarek монтиро-
# вать на каталог /net/imyarek
#
/- /etc/auto_direct
/home /etc/auto_home
/etc/auto_direct :---------------------------------------------
#
#
/usr/informix -ro,soft classic00:/usr/informix
/usr/local -rw,soft classic00:/usr/local
#
# Смонтировать с первого откликнувшегося сервера.
#
/usr/share/man -ro,soft classic00:/usr/share/man \
-ro,soft sun21:/usr/share/man \
-ro,soft sun22:/usr/share/man
/etc/auto_home :---------------------------------------------
moshkow s08:/udd/moshkow
leo classic00:/export/home/leo
# а лучше написать так:
* classic00:/export/home/&
* sun21:/export/home/&
Каждый пользователь polxzowatelx на этой машине должен быть за-
регестрирован с домашним каталогом /home/polxzowatelx
.
&dDDNS - Domain Name Service&d@
&dDКонфигурирование DNS-клиента&d@
&dDУказываем наш dns-server&d@
/etc/resolv.conf :
search moshkow.pp.ru sosed.msk.ru
nameserver 127.0.0.1
;nameserver 194.8.2.1
&dDПорядок просмотра информации о именах хостов задается в &d@
/etc/host.conf : (Linux, BSD)
order bind, hosts, nis
multi on
/etc/nsswitch.conf : (В Solaris, HP-UX)
. . .
hosts: files bind nis
. . .
&dDИмя домена нашего хоста&d@ (Не всегда, но часто)
/etc/defaultdomain :
moshkow.pp.ru
&dDКак посмотреть зоны DNS&d@
nslookup -ty=ns msk.ru
zzz=msk.ru ; named-xfer -z $zzz -f filename ns.$zzz
egrep '^[a-z]' filename | egrep -v A | grep NS| cut -f1 | sort -u| wc
или сходить в RIPE:
ftp://ftp.ripe.net/ripe/hostcount
ftp://ftp.ripe.net/ripe/dbase
&dDРезультат на февраль 1997:&d@
ru 1400
msk.ru 217
spb.ru 490
ras.ru 20
msu.su 19
rssi.ru 42
&dD * Конфигурирование DNS-сервера * &d@
Для этого нужно создать начальный конфиг-файл named.boot и
в каталоге /var/named сложить файлы с описанием наших зон
&dDПример заполнения файлов&d@
Моя зона moshkow.pp.ru
делегируется из pp.ru (а значит - в RIPN)
Revers-зона 173.233.193.in-addr.arpa
делегируется у хозяина зоны 233.193.in-addr.arpa (а значит - в RIPN)
/etc/named.boot ; config-файл вашего DNS
/var/named/moshkow.pp.ru ; описание вашей зоны
/var/named/193.233.173.0 ; описание реверс-dns для той же зоны
/var/named/root.cache ; нужно иметь. У всех стандартный
/var/named/127.0.0.1 ; нужно иметь. У всех стандартный
Если ваша локальная сеть не подключена к Интернет, все
равно полезно иметь в ней DNS сервер для внутренних нужд. Чтоб
он не порождал 1.5 минутных таймаутов при обращении к заведомо
"внешним" недостижимым хостам, просто сделайте файл
/var/named/root.cache пустым.
Заведенные вами dns зоны надо зарегистрировать в
"вышестоящей" зоне, чтоб они делегировали ее вам.
Реверс-dns'ную зону тоже необходимо регистрировать -
делегировать вам ее обязан тот, кто выдал ваши IP-адреса.
/var/named/moshkow.pp.ru: ========================
@ IN SOA ns.moshkow.pp.ru. moshkow.ipsun.ras.ru. (
1997093001 ; serial
28800 ;8 Refresh как часто secondary проверяет обновления
7200 ;2 Retry как часто secondary тыкается после "непрохода"
6048000;70d Expire сколько запись живет на secondary
864000);10d Minimum сколько запись живет в кэше
IN NS ns.moshkow.pp.ru.
IN NS nss.ras.ru.
IN MX 10 mail.moshkow.pp.ru.
IN MX 50 mail.ras.ru.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ns IN A 193.233.173.111
nss IN A 193.233.172.8
proxy CNAME t111
mail CNAME t111
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
t01 IN A 193.233.173.1
t02 IN A 193.233.173.2
. . .
t254 IN A 193.233.173.254
t255 IN A 193.233.173.255
/var/named/193.233.173.0 : ========================
@ IN SOA ns.moshkow.pp.ru. moshkow.ipsun.ras.ru. (
1997093001 ; serial
28800 ; refresh ( 8 hours)
7200 ; retry ( 2 hours)
6048000 ; expire (70 days )
864000 ) ; minimum (10 days )
IN NS ns.moshkow.pp.ru.
IN NS nss.ras.ru.
IN MX 10 mail.moshkow.pp.ru.
IN MX 50 mail.ras.ru.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1 IN PTR t01.moshkow.pp.ru.
2 IN PTR t02.moshkow.pp.ru.
. . .
255 IN PTR t255.moshkow.pp.ru.
/var/named/root.cache -----------------------------------------
; ftp://ftp.rs.internic.net/domain/named.root
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
/var/named/127.0.0.0 --------------------------
@ IN SOA localhost. root.localhost. (
1997071201 ; Serial
36000 ; Refresh
3600 ; Retry
3600000 ; Expire
36000 ) ; Minimun
IN NS localhost.
1 IN PTR localhost.
=========== И НАКОНЕЦ /etc/named.boot
directory /var/named ;
cache . root.cache ;
primary 0.0.127.in-addr.arpa 127.0.0.0 ;
; forwarders 193.124.148.65 193.124.23.4
primary moshkow.pp.ru moshkow.pp.ru ;
primary 173.233.193.in-addr.arpa 193.233.173.0 ;
; secondary moshkow.orc.ru 193.124.148.81 second/moshkow.orc.ru
&dDДополнительная информация&d@
$INCLUDE /var/named/header
@
$INCLUDE /var/named/fedfond-hosts-spisok
@
&dDПояснения:&d@
&dDПервая строка содержит: &d@
имя зоны с обязательной точкой в конце
предопределенные поля IN и SOA
имя сервера, на котором содержится заведомо правильная
информация о зоне, с
обязательной точкой на конце. При необходимости размещения вторичных
серверов мы будем брать информацию о зоне именно с этого сервера.
почтовый адрес ответственного за сервер, в котором знак @
заменен на . а если
требуется использовать . в левой части адреса, она должна
быть префиксирована
двумя знаками \ Именно по этому адресу будет отправлено сообщение в случае
успешного делегирования зоны. Адрес в приведенном примере будет выглядеть
как
andrei.arkhipov@elvis.ru
открывающая круглая скобка
На следующих 5 строках описываются важные для зоны параметры:
&dDSerial&d@
Определяет порядковый номер редакции файла с описанием зоны.
Это число должно изменяться только в сторону увеличения и
изменяться оно должно при каждом внесении изменения в файл
описания зоны. Рекомендуемый формат:
&dDYYYYMMDDNN&d@
где YYYY - год, MM - месяц, DD - день, NN - порядковый номер
внесения изменения в указанный день.
&dDRefresh&d@
Каждые "refresh" секунд вторичные сервера проверяют основной на
предмет увеличения значения "serial", и если это произошло
обновляют у себя зону. Рекомендуемое значение: 86400, что
составляет 24 часа.
&dDRetry&d@
Если основной сервер был недоступен, вторичный будет
производить повторные попытки каждые "retry" секунд.
Рекомендуемое значение: 7200, что составляет 2 часа.
&dDExpire&d@
Если в течение "expire" секунд вторичный сервер не смог
соединиться с основным и обновить информацию о зоне, он считает
себя неспособным давать ответы на запросы о зоне. Рекомендуемое
значение: 2592000, что составляет 30 суток.
&dDMinimum TTL&d@
Значение по умолчанию для времени, в течение которого сервер
держит запись в кэше. Рекомендуемое значение: 345600, что
составляет 4 суток.
Далее идет описание всех серверов зоны, причем сервер указанный
в первой строке (в записи SOA) обязательно должен
присутствовать в этом списке, а если необходимо размещение
вторичных серверов на маших АО Релком (ns.spb.su и/или
ns.ussr.eu.net), то и они должны присутствовать в списке, а
также в заявке.
В приведенном примере утверждается, что зона присутствует на
серверах ns.elvis.ru и ns2.elvis.ru и требуется размещение
вторичных серверов на ns.spb.su и ns.ussr.eu.net
Обратите внимание, что все имена серверов заканчиваются точкой.
===================================== EOF ===========================
[ Article crossposted from comp.protocols.tcp-ip.domains ]
[ Author was Craig Richmond - division (craig@ecel.uwa.edu.au) ]
[ Posted on 3 Aug 1993 10:53:51 GMT ]
Setting up a basic DNS server for a domain
Revision 1.1.1
Craig Richmond
craig@ecel.uwa.edu.au
3rd August 1993
About this document
I have written this file because it seems that the same questions seem to
pop up time and time again and when I had to install DNS from scratch the
first time, we found very little to help us.
This document covers setting up a Domain Name Server with authority over
your domain and using a few of the more useful but less well known
(hopefully this document will take care of that) features of nslookup to
get information about the DNS and to work out why yours isn't working.
If you are using a Sun Workstation and you want to make NIS interact with
the DNS, then this is not the FAQ for you (but it may well be when you try
to set up the DNS). Mark J. McIntosh points
out that it is included in the comp.sys.sun.admin FAQ and for the benefit
of those of you who can't get that (it is posted in comp.sys.sun.admin,
comp.sys.sun.misc, comp.unix.solaris, comp.answers and news.answers) I have
included the relevant parts at the bottom in appendix C.
Contents:
Contents
An Overview of the DNS
Installing the DNS
*The Boot File
*The Cache File
*The Forward Mapping File
*The Reverse Mapping File
Delegating authority for domains within your domain
Troubleshooting your named
*Named doesn't work! What is wrong?
*I changed my named database and my local machine has noticed,
but nobody else has the new information?
*My local machine knows about all the name server information,
but no other sites know about me?
*My forward domain names work, but the backward names do not?
How to get useful information from nslookup
*Getting number to name mappings.
*Finding where mail goes when a machine has no IP number.
*Getting a list of machines in a domain from nslookup.
Appendicies
*Appendix A sample root.cache file
*Appendix B Excerpt from RFC 1340 - Assigned Numbers - July 1992
*Appendix C Installing DNS on a Sun when running NIS
An Overview of the DNS:
The Domain Name System is the software that lets you have name to number
mappings on your computers. The name decel.ecel.uwa.edu.au is the number
130.95.4.2 and vice versa. This is achieved through the DNS. The DNS is a
heirarchy. There are a small number of root domain name servers that are
responsible for tracking the top level domains and who is under them. The
root domain servers between them know about all the people who have name
servers that are authoritive for domains under the root.
Being authoritive means that if a server is asked about something in that
domain, it can say with no ambiguity whether or not a given piece of
information is true. For example. We have domains x.z and y.z. There are
by definition authoritive name servers for both of these domains and we
shall assume that the name server in both of these cases is a machine
called nic.x.z and nic.y.z but that really makes no difference.
If someone asks nic.x.z whether there is a machine called a.x.z, then
nic.x.z can authoritively say, yes or no because it is the authoritive name
server for that domain. If someone asks nic.x.z whether there is a machine
called a.y.z then nic.x.z asks nic.y.z whether such a machine exists (and
caches this for future requests). It asks nic.y.z because nic.y.z is the
authoritive name server for the domain y.z. The information about
authoritive name servers is stored in the DNS itself and as long as you
have a pointer to a name server who is more knowledgable than yourself then
you are set.
When a change is made, it propogates slowly out through the internet to
eventually reach all machines. The following was supplied by Mark Andrews
Mark.Andrews@syd.dms.csiro.au.
If both the primary and all secondaries are up and talking when
a zone update occurs and for the refresh period after the
update the old data will live for max(refresh + mininum)
average (refresh/2 +mininum) for the zone. New information will
be available from all servers after refresh.
So with a refresh of 3 hours and a minimum of a day, you can expect
everything to be working a day after it is changed. If you have a longer
minimum, it may take a couple of days before things return to normal.
There is also a difference between a zone and a domain. The domain is the
entire set of machines that are contained within an organisational domain
name. For example, the domain uwa.edu.au contains all the machines at the
University of Western Australia. A Zone is the area of the DNS for which a
server is responsible. The University of Western Australia is a large
organisation and trying to track all changes to machines at a central
location would be difficult. The authoritive name server for the zone
uwa.edu.au delegates the authority for the zone ecel.uwa.edu.au to
decel.ecel.uwa.edu.au. Machine foo.ecel.uwa.edu.au is in the zone that
decel is authoritive for. Machine bar.uwa.edu.au is in the zone that
uniwa.uwa.edu.au is authoritive for.
Installing the DNS:
First I'll assume you already have a copy of the Domain Name Server
software. It is probably called named or in.named depending on your
flavour of unix. I never had to get a copy, but if anyone thinks that
information should be here then by all means tell me and I'll put it in.
If you intend on using the package called Bind, then you should be sure
that you get version 4.9, which is the most recent version at this point in
time.
The Boot File:
First step is to create the file named.boot. This describes to named
(we'll dispense with the in.named. Take them to be the same) where the
information that it requires can be found. This file is normally found in
/etc/named.boot and I personally tend to leave it there because then I know
where to find it. If you don't want to leave it there but place it in a
directory with the rest of your named files, then there is usually an
option on named to specify the location of the boot file.
Your typical boot file will look like this if you are an unimportant leaf
node and there are other name servers at your site.
directory /etc/namedfiles
cache . root.cache
primary ecel.uwa.edu.au ecel.uwa.domain
primary 0.0.127.in-addr.arpa 0.0.127.domain
primary 4.95.130.in-addr.arpa 4.95.130.domain
forwarders 130.95.128.1
Here is an alternative layout used by Christophe Wolfhugel
He finds this easier because of
the large number of domains he has. The structure is essentially the same,
but the file names use the domain name rather than the IP subnet to
describe the contents.
directory /usr/local/etc/bind
cache . p/root
forwarders 134.214.100.1 192.93.2.4
;
; Primary servers
;
primary fr.net p/fr.net
primary frmug.fr.net p/frmug.fr.net
primary 127.in-addr.arpa p/127
;
; Secondary servers
;
secondary ensta.fr 147.250.1.1 s/ensta.fr
secondary gatelink.fr.net 134.214.100.1 s/gatelink.fr.net
secondary insa-lyon.fr 134.214.100.1 s/insa-lyon.fr
secondary loesje.org 145.18.226.21 s/loesje.org
secondary nl.loesje.org 145.18.226.21 s/nl.loesje.org
secondary pcl.ac.uk 161.74.160.5 s/pcl.ac.uk
secondary univ-lyon1.fr 134.214.100.1 s/univ-lyon1.fr
secondary wmin.ac.uk 161.74.160.5 s/wmin.ac.uk
secondary westminster.ac.uk 161.74.160.5 s/westminster.ac.uk
;
;
; Secondary for addresses
;
secondary 74.161.in-addr.arpa 161.74.160.5 s/161.74
secondary 214.134.in-addr.arpa 134.214.100.1 s/134.214
secondary 250.147.in-addr.arpa 147.250.1.1 s/147.250
;
; Classes C
;
secondary 56.44.192.in-addr.arpa 147.250.1.1 s/192.44.56
secondary 57.44.192.in-addr.arpa 147.250.1.1 s/192.44.57
The lines in the named.boot file have the following meanings.
directory
This is the path that named will place in front of all file names
referenced from here on. If no directory is specified, it looks for files
relative to /etc.
cache
This is the information that named uses to get started. Named must know
the IP number of some other name servers at least to get started.
Information in the cache is treated differently depending on your version
of named. Some versions of named use the information included in the cache
permenantly and others retain but ignore the cache information once up and
running.
primary
This is one of the domains for which this machine is authorative for. You
put the entire domain name in. You need forwards and reverse lookups. The
first value is the domain to append to every name included in that file.
(There are some exceptions, but they will be explained later) The name at
the end of the line is the name of the file (relative to /etc of the
directory if you specified one). The filename can have slashes in it to
refer to subdirectories so if you have a lot of domains you may want to
split it up.
BE VERY CAREFUL TO PUT THE NUMBERS BACK TO FRONT FOR THE REVERSE LOOK UP
FILE. The example given above is for the subnet ecel.uwa.edu.au whose IP
address is 130.95.4.*. The reverse name must be 4.95.130.in-addr.arpa.
It must be backwards and it must end with .in-addr.arpa. If your reverse
name lookups don't work, check this. If they still don't work, check this
again.
forwarders
This is a list of IP numbers for forward requests for sites about which we
are unsure. A good choice here is the name server which is authoritive for
the zone above you.
secondary (This line is not in the example, but is worth mentioning.)
A secondary line indicates that you wish to be a secondary name server for
this domain. You do not need to do this usually. All it does is help make
the DNS more robust. You should have at least one secondary server for
your site, but you do not need to be a secondary server for anyone else.
You can by all means, but you don't need to be. If you want to be a
secondary server for another domain, then place the line
secondary gu.uwa.edu.au 130.95.100.3 130.95.128.1
in your named.boot. This will make your named try the servers on both of
the machines specified to see if it can obtain the information about those
domains. You can specify a number of IP addresses for the machines to
query that probably depends on your machine. Your copy of named will upon
startup go and query all the information it can get about the domain in
question and remember it and act as though it were authoritive for that
domain.
Next you will want to start creating the data files that contain the name
definitions.
The cache file:
You can get a copy of the cache file from FTP.RS.INTERNIC.NET. The current
copy can be found in Appendix A.
The Forward Mapping file:
The file ecel.uwa.edu.au. will be used for the example with a couple of
machines left in for the purpose of the exercise. Here is a copy of what
the file looks like with explanations following.
; Authoritative data for ecel.uwa.edu.au
;
@ IN SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. (
93071200 ; Serial (yymmddxx)
10800 ; Refresh 3 hours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
IN A 130.95.4.2
IN MX 100 decel
IN MX 150 uniwa.uwa.edu.au.
IN MX 200 relay1.uu.net.
IN MX 200 relay2.uu.net.
localhost IN A 127.0.0.1
decel IN A 130.95.4.2
IN HINFO SUN4/110 UNIX
IN MX 100 decel
IN MX 150 uniwa.uwa.edu.au.
IN MX 200 relay1.uu.net
IN MX 200 relay2.uu.net
gopher IN CNAME decel.ecel.uwa.edu.au.
accfin IN A 130.95.4.3
IN HINFO SUN4/110 UNIX
IN MX 100 decel
IN MX 150 uniwa.uwa.edu.au.
IN MX 200 relay1.uu.net
IN MX 200 relay2.uu.net
chris-mac IN A 130.95.4.5
IN HINFO MAC-II MACOS
The comment character is ';' so the first two lines are just comments
indicating the contents of the file.
All values from here on have IN in them. This indicates that the value is
an InterNet record. There are a couple of other types, but all you need
concern yourself with is internet ones.
The SOA record is the Start Of Authority record. It contains the
information that other nameservers will learn about this domain and how to
treat the information they are given about it. The '@' as the first
character in the line indicates that you wish to define things about the
domain for which this file is responsible. The domain name is found in the
named.boot file in the corresponding line to this filename. All
information listed refers to the most recent machine/domain name so all
records from the '@' until 'localhost' refer to the '@'. The SOA record
has 5 magic numbers. First magic number is the serial number. If you
change the file, change the serial number. If you don't, no other name
servers will update their information. The old information will sit around
for a very long time.
Refresh is the time between refreshing information about the SOA (correct
me if I am wrong). Retry is the frequency of retrying if an authorative
server cannot be contacted. Expire is how long a secondary name server
will keep information about a zone without successfully updating it or
confirming that the data is up to date. This is to help the information
withstand fairly lengthy downtimes of machines or connections in the
network without having to recollect all the information. Minimum is the
default time to live value handed out by a nameserver for all records in
a zone without an explicit TTL value. This is how long the data will live
after being handed out. The two pieces of information before the 5 magic
numbers are the machine that is considered the origin of all of this
information. Generally the machine that is running your named is a good
one for here. The second is an email address for someone who can fix any
problems that may occur with the DNS. Good ones here are postmaster,
hostmaster or root. NOTE: You use dots and not '@' for the email address.
eg root.decel.ecel.uwa.edu.au is correct
and
root@decel.ecel.uwa.edu.au is incorrect.
We now have an address to map ecel.uwa.edu.au to. The address is
130.95.4.2 which happens to be decel, our main machine. If you try to find
an IP number for the domain ecel.uwa.edu.au it will get you the machine
decel.ecel.uwa.edu.au's IP number. This is a nicety which means that
people who have non-MX record mailers can still mail fred@ecel.uwa.edu.au
and don't have to find the name of a machine name under the domain to mail.
Now we have a couple of MX records for the domain itself. The MX records
specify where to send mail destined for the machine/domain that the MX
record is for. In this case we would prefer if all mail for
fred@ecel.uwa.edu.au is sent to decel.ecel.uwa.edu.au. If that does not
work, we would like it to go to uniwa.uwa.edu.au because there are a number
of machines that might have no idea how to get to us, but may be able to get
to uniwa. And failing that, try the site relay1.uu.net. A small number
indicates that this site should be tried first. The larget the number the
further down the list of sites to try the site is. NOTE: Not all machines
have mailers that pay attention to MX records. Some only pay attention to
IP numbers, which is really stupid. All machines are required to have
MX-capable Mail Transfer Agents (MTA) as there are many addresses that can
only be reached via this means.
There is an entry for localhost now. Note that this is somewhat of a
kludge and should probably be handled far more elegantly. By placing
localhost here, a machine comes into existance called
localhost.ecel.uwa.edu.au. If you finger it, or telnet to it, you get your
own machine, because the name lookup returns 127.0.0.1 which is the special
case for your own machine. I have used a couple of different DNS packages.
The old BSD one let you put things into the cache which would always work,
but would not be exported to other nameservers. In the newer Sun one, they
are left in the cache and are mostly ignored once named is up and running.
This isn't a bad solution, its just not a good one.
Decel is the main machine in our domain. It has the IP number 130.95.4.2
and that is what this next line shows. It also has a HINFO entry. HINFO
is Host Info which is meant to be some sort of an indication of what the
machine is and what it runs. The values are two white space seperated
values. First being the hardware and second being the software. HINFO is
not compulsory, its just nice to have sometimes. We also have some MX
records so that mail destined for decel has some other avenues before it
bounces back to the sender if undeliverable.
It is a good idea to give all machines capable of handling mail an MX
record because this can be cached on remote machines and will help to
reduce the load on the network.
gopher.ecel.uwa.edu.au is the gopher server in our division. Now because
we are cheapskates and don't want to go and splurge on a seperate machine
just for handling gopher requests we have made it a CNAME to our main
machine. While it may seem pointless it does have one main advantage.
When we discover that our placing terrabytes of popular quicktime movies
on our gopher server (no we haven't and we don't intend to) causes an
unbearable load on our main machine, we can quickly move the CNAME to
point at a new machine by changing the name mentioned in the CNAME. Then
the slime of the world can continue to get their essential movies with a
minimal interuption to the network. Other good CNAMEs to maintain are
things like ftp, mailhost, netfind, archie, whois, and even dns (though the
most obvious use for this fails). It also makes it easier for people to
find these services in your domain.
We should probably start using WKS records for things like gopher and whois
rather than making DNS names for them. The tools are not in wide
circulation for this to work though. (Plus all those comments in many DNS
implementation of "Not implemented" next to the WKS record)
Finally we have a macintosh which belongs to my boss. All it needs is an
IP number, and we have included the HINFO so that you can see that it is in
fact a macII running a Mac System. To get the list of preferred values,
you should get a copy of RFC 1340. It lists lots of useful information
such as /etc/services values, ethernet manufacturer hardware addresses,
HINFO defualts and many others. I will include the list as it stands at
the moment, but if any RFC superceeds 1340, then it will have a more
complete list. See Appendix B for that list.
NOTE: If Chris had a very high profile and wanted his mac to appear like a
fully connected unix machine as far as internet services were concerned, he
could simply place an MX record such as
IN MX 100 decel
after his machine and any mail sent to chris@chris-mac.ecel.uwa.edu.au
would be automatically rerouted to decel.
The Reverse Mapping File
The reverse name lookup is handled in a most bizarre fashion. Well it all
makes sense, but it is not immediately obvious.
All of the reverse name lookups are done by finding the PTR record
associated with the name w.x.y.z.in-addr.arpa. So to find the name
associated with the IP number 1.2.3.4, we look for information stored in
the DNS under the name 4.3.2.1.in-addr.arpa. They are organised this way
so that when you are allocated a B class subnet for example, you get all of
the IP numbers in the domain 130.95. Now to turn that into a reverse name
lookup domain, you have to invert the numbers or your registered domains
will be spread all over the place. It is a mess and you need not understand
the finer points of it all. All you need to know is that you put the
reverse name lookup files back to front.
Here is the sample reverse name lookup files to go with our example.
0.0.127.in-addr.arpa
--
; Reverse mapping of domain names 0.0.127.in-addr.arpa
; Nobody pays attention to this, it is only so 127.0.0.1 -> localhost.
@ IN SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. (
91061801 ; Serial (yymmddxx)
10800 ; Refresh 3 hours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
;
1 IN PTR localhost.ecel.uwa.edu.au.
--
4.95.130.in-addr.arpa
--
; reverse mapping of domain names 4.95.130.in-addr.arpa
;
@ IN SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. (
92050300 ; Serial (yymmddxx format)
10800 ; Refresh 3hHours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
2 IN PTR decel.ecel.uwa.edu.au.
3 IN PTR accfin.ecel.uwa.edu.au.
5 IN PTR chris-mac.ecel.uwa.edu.au.
--
It is important to remember that you must have a second start of authority
record for the reverse name lookups. Each reverse name lookup file must
have its own SOA record. The reverse name lookup on the 127 domain is
debatable seeing as there is likely to be only one number in the file and
it is blatantly obvious what it is going to map to.
The SOA details are the same as in the forward mapping.
Each of the numbers listed down the left hand side indicates that the line
contains information for that number of the subnet. Each of the subnets
must be the more significant digits. eg the 130.95.4 of an IP number
130.95.4.2 is implicit for all numbers mentioned in the file.
The PTR must point to a machine that can be found in the DNS. If the name
is not in the DNS, some versions of named just bomb out at this point.
Reverse name lookups are not compulsory, but nice to have. It means that
when people log into machines, they get names indicating where they are
logged in from. It makes it easier for you to spot things that are wrong
and it is far less cryptic than having lots of numbers everywhere. Also if
you do not have a name for your machine, some brain dead protocols such as
talk will not allow you to connect.
Since I had this I had one suggestion of an alternative way to do the
localhost entry. I think it is a matter of personal opinion so I'll
include it here in case anyone things that this is a more appropriate
method.
The following is courtesy of jep@convex.nl (JEP de Bie)
The way I did it was:
1) add in /etc/named.boot:
primary . localhost
primary 127.in-addr.ARPA. IP127
(Craig: It has been suggested by Mark Andrews that this is a bad practice
particularly if you have upgraded to Bind 4.9. You also run the risk of
polluting the root name servers. This comes down to a battle of idealogy
and practicality. Think twice before declaring yourself authorative for
the root domain.)
So I not only declare myself (falsely? - probably, but nobody is going to
listen anyway most likely [CPR]:-) athorative in the 127.in-addr.ARPA domain
but also in the . (root) domain.
2) the file localhost has:
$ORIGIN .
localhost IN A 127.0.0.1
3) and the file IP127:
$ORIGIN 127.in-addr.ARPA.
1.0.0 IN PTR localhost.
4) and I have in my own domain file (convex.nl) the line:
$ORIGIN convex.nl.
localhost IN CNAME localhost.
The advantage (elegancy?) is that a query (A) of localhost. gives the
reverse of the query of 1.0.0.127.in-addr.ARPA. And it also shows that
localhost.convex.nl is only a nickname to something more absolute.
(While the notion of localhost is of course relative :-)).
And I also think there is a subtle difference between the lines
primary 127.in-addr.ARPA. IP127
and
primary 0.0.127.in-addr.ARPA. 4.95.130.domain
=============
JEP de Bie
jep@convex.nl
=============
Delegating authority for domains within your domain:
When you start having a very big domain that can be broken into logical and
seperate entities that can look after their own DNS information, you will
probably want to do this. Maintain a central area for the things that
everyone needs to see and delegate the authority for the other parts of the
organisation so that they can manage themselves.
Another essential piece of information is that every domain that exists
must have it NS records associated with it. These NS records denote the
name servers that are queried for information about that zone. For your
zone to be recognised by the outside world, the server responsible for the
zone above you must have created a NS record for your machine in your
domain. For example, putting the computer club onto the network and giving
them control over their own part of the domain space we have the following.
The machine authorative for gu.uwa.edu.au is mackerel and the machine
authorative for ucc.gu.uwa.edu.au is marlin.
in mackerel's data for gu.uwa.edu.au we have the following
@ IN SOA ...
IN A 130.95.100.3
IN MX mackerel.gu.uwa.edu.au.
IN MX uniwa.uwa.edu.au.
marlin IN A 130.95.100.4
ucc IN NS marlin.gu.uwa.edu.au.
IN NS mackerel.gu.uwa.edu.au.
Marlin is also given an IP in our domain as a convenience. If they blow up
their name serving there is less that can go wrong because people can still
see that machine which is a start. You could place "marlin.ucc" in the
first column and leave the machine totally inside the ucc domain as well.
The second NS line is because mackerel will be acting as secondary name
server for the ucc.gu domain. Do not include this line if you are not
authorative for the information included in the sub-domain.
Troubleshooting your named:
Named doesn't work! What is wrong?
Step 1: Run nslookup and see what nameserver it tries to connect you to.
If nslookup connects you to the wrong nameserver, create a /etc/resolv.conf
file that points your machine at the correct nameserver. If there is no
resolv.conf file, the the resolver uses the nameserver on the local
machine.
Step 2: Make sure that named is actually running.
Step 3: Restart named and see if you get any error messages on the
console and in also check /usr/adm/messages.
Step 4: If named is running, nslookup connects to the appropriate
nameserver and nslookup can answer simple questions, but other programs
such as 'ping' do not work with names, then you need to install resolv+
most likely.
I changed my named database and my local machine has noticed, but nobody
else has the new information?
Change the serial number in the SOA for any domains that you modified and
restart named. Wait an hour and check again. The information propogates
out. It won't change immediately.
My local machine knows about all the name server information, but no other
sites know about me?
Find an upstream nameserver (one that has an SOA for something in your
domain) and ask them to be a secondary name server for you. eg if you are
ecel.uwa.edu.au, ask someone who has an SOA for the domain uwa.edu.au.
Get NS records (and glue) added to your parent zone for your zone. This is
called delegating. It should be done formally like this or you will get
inconsistant answers out of the DNS. ALL NAMSERVERS FOR YOUR ZONE SHOULD
BE LISTED IN THIS MANNER.
My forward domain names work, but the backward names do not?
Make sure the numbers are back to front and have the in-addr.arpa on the
end.
Make sure you reverse zone is registered. For Class C nets this can be done
by mailing to hostmaster@internic.net. For class A & B nets make sure that
you are registeres with the primary for your net and that the net itself
is registered with hostmaster@internic.net.
How to get useful information from nslookup:
Nslookup is a very useful program but I'm sure there are less than 20
people worldwide who know how to use it to its full usefulness. I'm most
certainly not one of them. If you don't like using nslookup, there is at
least one other program called dig, that has most/all(?) of the
functionality of nslookup and is a hell of a lot easier to use.
I won't go into dig much here except to say that it is a lot easier to get
this information out of. I won't bother because nslookup ships with almost
all machines that come with network software.
To run nslookup, you usually just type nslookup. It will tell you the
server it connects to. You can specify a different server if you want.
This is useful when you want to tell if your named information is
consistent with other servers.
Getting name to number mappings.
Type the name of the machine. Typing 'decel' is enough if the machine is
local.
(Once you have run nslookup successfully)
> decel
Server: ecel.uwa.edu.au
Address: 130.95.4.2
Name: decel.ecel.uwa.edu.au
Address: 130.95.4.2
>
One curious quirk of some name resolvers is that if you type a
machine name, they will try a number of permutations. For example if my
machine is in the domain ecel.uwa.edu.au and I try to find a machine
called fred, the resolver will try the following.
fred.ecel.uwa.edu.au.
fred.uwa.edu.au.
fred.edu.au.
fred.au.
fred.
This can be useful, but more often than not, you would simply prefer a good
way to make aliases for machines that are commonly referenced. If you are
running resolv+, you should just be able to put common machines into the
host file.
DIG: dig
Getting number to name mappings.
Nslookup defaults to finding you the Address of the name specified. For
reverse lookups you already have the address and you want to find the
name that goes with it. If you read and understood the bit above where it
describes how to create the number to name mapping file, you would guess
that you need to find the PTR record instead of the A record. So you do
the following.
> set type=ptr
> 2.4.95.130.in-addr.arpa
Server: decel.ecel.uwa.edu.au
Address: 130.95.4.2
2.4.95.130.in-addr.arpa host name = decel.ecel.uwa.edu.au
>
nslookup tells you that the ptr for the machine name
2.4.95.130.in-addr.arpa points to the host decel.ecel.uwa.edu.au.
DIG: dig -x
Finding where mail goes when a machine has no IP number.
When a machine is not IP connected, it needs to specify to the world, where
to send the mail so that it can dial up and collect it every now and then.
This is accomplished by setting up an MX record for the site and not giving
it an IP number. To get the information out of nslookup as to where the
mail goes, do the following.
> set type=mx
> dialix.oz.au
Server: decel.ecel.uwa.oz.au
Address: 130.95.4.2
Non-authoritative answer:
dialix.oz.au preference = 100, mail exchanger = uniwa.uwa.OZ.AU
dialix.oz.au preference = 200, mail exchanger = munnari.OZ.AU
Authoritative answers can be found from:
uniwa.uwa.OZ.AU inet address = 130.95.128.1
munnari.OZ.AU inet address = 128.250.1.21
munnari.OZ.AU inet address = 192.43.207.1
mulga.cs.mu.OZ.AU inet address = 128.250.35.21
mulga.cs.mu.OZ.AU inet address = 192.43.207.2
dmssyd.syd.dms.CSIRO.AU inet address = 130.155.16.1
ns.UU.NET inet address = 137.39.1.3
You tell nslookup that you want to search for mx records and then you give
it the name of the machine. It tells you the preference for the mail
(small means more preferable), and who the mail should be sent to. It also
includes sites that are authorative (have this name in their named database
files) for this MX record. There are multiple sites as a backup. As can
be seen, our local public internet access company dialix would like all of
their mail to be sent to uniwa, where they collect it from. If uniwa is
not up, send it to munnari and munnari will get it to uniwa eventually.
NOTE: For historical reasons Australia used to be .oz which was changed to
oz.au to move to the ISO standard extensions upon the advent of IP. We
are now moving to a more normal heirarchy which is where the .edu.au comes
from. Pity, I liked having oz.
DIG: dig mx
Getting a list of machines in a domain from nslookup.
Find a server that is authorative for the domain or just generally all
knowing. To find a good server, find all the soa records for a given
domain. To do this, you set type=soa and enter the domain just like in the
two previous examples.
Once you have a server type
> ls gu.uwa.edu.au.
[uniwa.uwa.edu.au]
Host or domain name Internet address
gu server = mackerel.gu.uwa.edu.au
gu server = uniwa.uwa.edu.au
gu 130.95.100.3
snuffle-upagus 130.95.100.131
mullet 130.95.100.2
mackerel 130.95.100.3
marlin 130.95.100.4
gugate 130.95.100.1
gugate 130.95.100.129
helpdesk 130.95.100.180
lan 130.95.100.0
big-bird 130.95.100.130
To get a list of all the machines in the domain.
If you wanted to find a list of all of the MX records for the domain, you
can put a -m flag in the ls command.
> ls -m gu.uwa.edu.au.
[uniwa.uwa.edu.au]
Host or domain name Metric Host
gu 100 mackerel.gu.uwa.edu.au
gu 200 uniwa.uwa.edu.au
This only works for a limited selection of the different types.
DIG: dig axfr @
Appendix A
;
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . "
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: April 21, 1993
; related version of root zone: 930421
;
99999999 IN NS NS.INTERNIC.NET.
NS.INTERNIC.NET. 99999999 A 198.41.0.4
99999999 NS KAVA.NISC.SRI.COM.
KAVA.NISC.SRI.COM. 99999999 A 192.33.33.24
99999999 NS C.NYSER.NET.
C.NYSER.NET. 99999999 A 192.33.4.12
99999999 NS TERP.UMD.EDU.
TERP.UMD.EDU. 99999999 A 128.8.10.90
99999999 NS NS.NASA.GOV.
NS.NASA.GOV. 99999999 A 128.102.16.10
99999999 A 192.52.195.10
99999999 NS NS.NIC.DDN.MIL.
NS.NIC.DDN.MIL. 99999999 A 192.112.36.4
99999999 NS AOS.ARL.ARMY.MIL.
AOS.ARL.ARMY.MIL. 99999999 A 128.63.4.82
99999999 A 192.5.25.82
99999999 NS NIC.NORDU.NET.
NIC.NORDU.NET. 99999999 A 192.36.148.17
; End of File
Appendix B
An Excerpt from
RFC 1340 Assigned Numbers July 1992
MACHINE NAMES
These are the Official Machine Names as they appear in the Domain Name
System HINFO records and the NIC Host Table. Their use is described in
RFC-952 [53].
A machine name or CPU type may be up to 40 characters taken from the
set of uppercase letters, digits, and the two punctuation characters
hyphen and slash. It must start with a letter, and end with a letter
or digit.
ALTO DEC-1080
ALTOS-6800 DEC-1090
AMDAHL-V7 DEC-1090B
APOLLO DEC-1090T
ATARI-104ST DEC-2020T
ATT-3B1 DEC-2040
ATT-3B2 DEC-2040T
ATT-3B20 DEC-2050T
ATT-7300 DEC-2060
BBN-C/60 DEC-2060T
BURROUGHS-B/29 DEC-2065
BURROUGHS-B/4800 DEC-FALCON
BUTTERFLY DEC-KS10
C/30 DEC-VAX-11730
C/70 DORADO
CADLINC DPS8/70M
CADR ELXSI-6400
CDC-170 EVEREX-386
CDC-170/750 FOONLY-F2
CDC-173 FOONLY-F3
CELERITY-1200 FOONLY-F4
CLUB-386 GOULD
COMPAQ-386/20 GOULD-6050
COMTEN-3690 GOULD-6080
CP8040 GOULD-9050
CRAY-1 GOULD-9080
CRAY-X/MP H-316
CRAY-2 H-60/68
CTIWS-117 H-68
DANDELION H-68/80
DEC-10 H-89
DEC-1050 HONEYWELL-DPS-6
DEC-1077 HONEYWELL-DPS-8/70
HP3000 ONYX-Z8000
HP3000/64 PDP-11
IBM-158 PDP-11/3
IBM-360/67 PDP-11/23
IBM-370/3033 PDP-11/24
IBM-3081 PDP-11/34
IBM-3084QX PDP-11/40
IBM-3101 PDP-11/44
IBM-4331 PDP-11/45
IBM-4341 PDP-11/50
IBM-4361 PDP-11/70
IBM-4381 PDP-11/73
IBM-4956 PE-7/32
IBM-6152 PE-3205
IBM-PC PERQ
IBM-PC/AT PLEXUS-P/60
IBM-PC/RT PLI
IBM-PC/XT PLURIBUS
IBM-SERIES/1 PRIME-2350
IMAGEN PRIME-2450
IMAGEN-8/300 PRIME-2755
IMSAI PRIME-9655
INTEGRATED-SOLUTIONS PRIME-9755
INTEGRATED-SOLUTIONS-68K PRIME-9955II
INTEGRATED-SOLUTIONS-CREATOR PRIME-2250
INTEGRATED-SOLUTIONS-CREATOR-8 PRIME-2655
INTEL-386 PRIME-9955
INTEL-IPSC PRIME-9950
IS-1 PRIME-9650
IS-68010 PRIME-9750
LMI PRIME-2250
LSI-11 PRIME-750
LSI-11/2 PRIME-850
LSI-11/23 PRIME-550II
LSI-11/73 PYRAMID-90
M68000 PYRAMID-90MX
MAC-II PYRAMID-90X
MASSCOMP RIDGE
MC500 RIDGE-32
MC68000 RIDGE-32C
MICROPORT ROLM-1666
MICROVAX S1-MKIIA
MICROVAX-I SMI
MV/8000 SEQUENT-BALANCE-8000
NAS3-5 SIEMENS
NCR-COMTEN-3690 SILICON-GRAPHICS
NEXT/N1000-316 SILICON-GRAPHICS-IRIS
NOW SGI-IRIS-2400
SGI-IRIS-2500 SUN-3/50
SGI-IRIS-3010 SUN-3/60
SGI-IRIS-3020 SUN-3/75
SGI-IRIS-3030 SUN-3/80
SGI-IRIS-3110 SUN-3/110
SGI-IRIS-3115 SUN-3/140
SGI-IRIS-3120 SUN-3/150
SGI-IRIS-3130 SUN-3/160
SGI-IRIS-4D/20 SUN-3/180
SGI-IRIS-4D/20G SUN-3/200
SGI-IRIS-4D/25 SUN-3/260
SGI-IRIS-4D/25G SUN-3/280
SGI-IRIS-4D/25S SUN-3/470
SGI-IRIS-4D/50 SUN-3/480
SGI-IRIS-4D/50G SUN-4/60
SGI-IRIS-4D/50GT SUN-4/110
SGI-IRIS-4D/60 SUN-4/150
SGI-IRIS-4D/60G SUN-4/200
SGI-IRIS-4D/60T SUN-4/260
SGI-IRIS-4D/60GT SUN-4/280
SGI-IRIS-4D/70 SUN-4/330
SGI-IRIS-4D/70G SUN-4/370
SGI-IRIS-4D/70GT SUN-4/390
SGI-IRIS-4D/80GT SUN-50
SGI-IRIS-4D/80S SUN-100
SGI-IRIS-4D/120GTX SUN-120
SGI-IRIS-4D/120S SUN-130
SGI-IRIS-4D/210GTX SUN-150
SGI-IRIS-4D/210S SUN-170
SGI-IRIS-4D/220GTX SUN-386i/250
SGI-IRIS-4D/220S SUN-68000
SGI-IRIS-4D/240GTX SYMBOLICS-3600
SGI-IRIS-4D/240S SYMBOLICS-3670
SGI-IRIS-4D/280GTX SYMMETRIC-375
SGI-IRIS-4D/280S SYMULT
SGI-IRIS-CS/12 TANDEM-TXP
SGI-IRIS-4SERVER-8 TANDY-6000
SPERRY-DCP/10 TEK-6130
SUN TI-EXPLORER
SUN-2 TP-4000
SUN-2/50 TRS-80
SUN-2/100 UNIVAC-1100
SUN-2/120 UNIVAC-1100/60
SUN-2/130 UNIVAC-1100/62
SUN-2/140 UNIVAC-1100/63
SUN-2/150 UNIVAC-1100/64
SUN-2/160 UNIVAC-1100/70
SUN-2/170 UNIVAC-1160
UNKNOWN
VAX-11/725
VAX-11/730
VAX-11/750
VAX-11/780
VAX-11/785
VAX-11/790
VAX-11/8600
VAX-8600
WANG-PC002
WANG-VS100
WANG-VS400
WYSE-386
XEROX-1108
XEROX-8010
ZENITH-148
SYSTEM NAMES
These are the Official System Names as they appear in the Domain Name
System HINFO records and the NIC Host Table. Their use is described
in RFC-952 [53].
A system name may be up to 40 characters taken from the set of upper-
case letters, digits, and the three punctuation characters hyphen,
period, and slash. It must start with a letter, and end with a
letter or digit.
AEGIS LISP SUN OS 3.5
APOLLO LISPM SUN OS 4.0
AIX/370 LOCUS SWIFT
AIX-PS/2 MACOS TAC
BS-2000 MINOS TANDEM
CEDAR MOS TENEX
CGW MPE5 TOPS10
CHORUS MSDOS TOPS20
CHRYSALIS MULTICS TOS
CMOS MUSIC TP3010
CMS MUSIC/SP TRSDOS
COS MVS ULTRIX
CPIX MVS/SP UNIX
CTOS NEXUS UNIX-BSD
CTSS NMS UNIX-V1AT
DCN NONSTOP UNIX-V
DDNOS NOS-2 UNIX-V.1
DOMAIN NTOS UNIX-V.2
DOS OS/DDP UNIX-V.3
EDX OS/2 UNIX-PC
ELF OS4 UNKNOWN
EMBOS OS86 UT2D
EMMOS OSX V
EPOS PCDOS VM
FOONEX PERQ/OS VM/370
FUZZ PLI VM/CMS
GCOS PSDOS/MIT VM/SP
GPOS PRIMOS VMS
HDOS RMX/RDOS VMS/EUNICE
IMAGEN ROS VRTX
INTERCOM RSX11M WAITS
IMPRESS RTE-A WANG
INTERLISP SATOPS WIN32
IOS SCO-XENIX/386 X11R3
IRIX SCS XDE
ISI-68020 SIMP XENIX
ITS SUN
Appendix C Installing DNS on a Sun when running NIS
====================
2) How to get DNS to be used when running NIS ?
First setup the appropriate /etc/resolv.conf file.
Something like this should do the "trick".
;
; Data file for a client.
;
domain local domain
nameserver address of primary domain nameserver
nameserver address of secondary domain nameserver
where: "local domain" is the domain part of the hostnames.
For example, if your hostname is "thor.ece.uc.edu"
your "local domain" is "ece.uc.edu".
You will need to put a copy of this resolv.conf on
all NIS(YP) servers including slaves.
Under SunOS 4.1 and greater, change the "B=" at the top
of the /var/yp/Makefile to "B=-b" and setup NIS in the
usual fashion.
You will need reboot or restart ypserv for these changes
to take affect.
Under 4.0.x, edit the Makefile or apply the following "diff":
*** Makefile.orig Wed Jan 10 13:22:11 1990
--- Makefile Wed Jan 10 13:22:01 1990
***************
*** 63 ****
! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byname; \
--- 63 ----
! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byname; \
***************
*** 66 ****
! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byaddr; \
--- 66 ----
! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byaddr; \
====================
--
Craig Richmond. Computer Officer - Dept of Economics (morning) 380 3860
University of Western Australia Dept of Education (afternoon) 2368
craig@ecel.uwa.edu.au Dvorak Keyboards RULE! "Messes are only acceptable
if users make them. Applications aren't allowed this freedom" I.M.VI 2-4
.
&dDUUCP - Unix to Unix Copy&d@
Система пересылки файлов по телефону.
Если uucp правильно сконфигурировано, то его использование
выглядит примерно так:
uucp -r moj_fajl 'pulsar!fajl_tam'
перешлет moj_fajl на удаленную машину pulsar. Хотя, скорее
всего не сделает, из-за ограничений на права доступа. А,
впрочем, такая команда скорее всего сработает:
uucp -r moj_fajl 'pulsar!~'
через некоторое время этот файл вы сможете обнаружить на машине
pulsar в каталоге
/usr/spool/uucppublic/
в этот каталог разрешено копирование с удаленных машин, для не-
го используется специальное обозначение: "~"
Пусть вас не удивляет, что в команде uucp использовались оди-
нарные кавычки. Они нужны, чтобы заэкранировать "!" и "~" от
вашего командного интерпретатора ksh или bash. Ключ -r в коман-
де uucp нужен, чтобы НЕ ЗАСТАВЛЯТЬ нашу машину немедленно начи-
нать звонить на pulsar. Она сама позвонит, в предусмотренное
для этого время.
uucp поддерживается на двух уровнях:
1. Пользовательский. Это команды uucp - постановка файла
в очередь на удаленную пересылку, и uux - постановка
в очередь на пересылку удаленной команды.
2. Системный. Периодически, автоматически запускается демон
uucico - (UUCP Copy in Copy out). Он созванивается с удаленными
машинами по телефону. На удаленной машине также запускается
"встречный" демон uucico. Наш демон "проталкивает" на удаленную
машину все файлы, которые к этому времени накопились в очереди
на отправку туда. После этого он "принимает" файлы, которые
приготовила для нас удаленная машина (их к нам проталкивает
"встречный" демон uucico, а наш принимает). После этого сеанс
uucico заканчивается. А пользователи обнаруживают, что у них
возникли новые файлы.
Предполагается, что системные администраторы на нашей и на
удаленной машине не забыли правильно описать и проконфигуриро-
вать систему UUCP.
&dDКонфигурация нашей машины как UUCP клиента.&d@
После этого наша машина сможет звонить на удаленные машины и
посылать/забирать оттуда файлы. Для этого мы должны задать:
1. Наше собственное UUCP имя.
2. Имя(имена) удаленной(ых) UUCP системы.
3. Телефонный номер(а), по которому нужно туда звонить.
4. Login и пароль, которые выделены там для нашего uucp-account'а.
5. Порт, к которому подключен наш модем.
6. Наборщик - описание "AT" команд для управления нашим модемом.
Эти данные задаются в нескольких конфигурационных файлах, кото-
рые должны лежать в каталоге /etc/uucp/ (или /usr/lib/uucp/ ,
или /usr/lib/uucp/taylor_config ) (или в каком нибудь
другом, см. man uucp для более точной информации). Это файлы:
Config # задает имя нашей машины (и многое другое) ;
Systems # описывает удаленные uucp-системы: имя, но-
# мер телефона, uucp-logname, uucp-passwd ;
Devices # порты, к которым подключены модемы.
Dialers # описывает модемы-наборщики (систему AT-ко-
# манд).
(А в Linux они называются: config, sys, port, dial)
Итак, представим классический случай. У вас один Hayes-совмес-
тимый модем V32/V42bis на 14400 baud (GVC, ZyXEL, US-
Robotics...), подключенный к последовательному порту /dev/modem
(если у вас порт называется /dev/contty03, вам никто не мешает
сделать символический линк ln -s /dev/contty03 /dev/modem не
так ли ?). Имя вашего узла fedfuru.
ВНИМАНИЕ. На большинстве Unix-ов выделены раздельные специаль-
ные файлы для одного и того-же порта: терминальная линия (для
подключения терминала или модема, НА который будут звонить -
используется для getty или ttymon), и линия с модемным управле-
нием, на выход - например, чтоб звонить НАРУЖУ модемом. Эти
специальные файлы и называются по разному, например:
SunOS: /dev/ttyy01 IN, /dev/ttyz01 OUT
Linux: /dev/ttyS1 IN, /dev/cua1 OUT
ISC: /dev/ttyFD01 IN, /dev/ttyFM01 OUT
SVR4/88: /dev/contty00 IN, /dev/??????? OUT
###следующий абзац написан "мелким шрифтом"(можно не читать)###
На самом деле все не совсем так. Цитирую Linux-Serial-HOWTO:
> There has been some discussion on the merits of /dev/mouse
> and /dev/modem. I strongly discourage the use of these links.
> In particular, if you are planning on using your modem for
> dialin you will run into problems because the lock files will
> not work correctly if you use /dev/modem. Also, Taylor UUCP
does not support symlinks either. Однако uugetty позволяет
корректно отрабатывать эту ситуацию. См. параметр ALTLOCK в
/etc/defaults/getty файле.
################_конец_"мелкого шрифта"_#######################
Вам надо подключиться к двум uucp-узлам:
1: Узел Релком, имя узла kiae, телефоны: 9469984, 9469994. Вы
зарегистрированы там под именем/паролем uufedurp/ABCd8
2: Ваше московское отделение, имя узла fedfond, телефон 095-
125-7623. Вы зарегистрированы там под именем/паролем
uufedurp/KLmn10
В каталоге /etc/uucp редактируем файлы Systems, Devices, Dialers
Systems: ------- Удаленные машины -----------------------------
kiae Any modem1 19200 946-9984 "" \n\r\d\r\d\r ogin:-BREAK-ogin:
uufedurp ssword: ABCd8
fedfond Any modem1 19200 8w095-125-7623 "" \n\r ogin:-BREAK-ogin:
uufedurp ssword: KLmn10
Devices: --------------- Описание портов ----------------------
modem1 contty03 - 19200 gvc1440
Dialers: --------------- Команды модемов ----------------------
gvc1440 =,-, "" \M\dATZ\r\c OK\r \EATDP\T\r\c CONNECT \m\c
---------------- Это все --------------------------------------
###следующий абзац написан "мелким шрифтом"(можно не читать)###
А дальше идет описание Taylor-uucp. Проблема в том, что в стан-
дартной поставке SVR4/88 _нет_ Taylor-uucp, а есть только т.н.
HoneyDanBer-uucp, он же BNU (Basic Networking Utilities).
Taylor новее и гибче, к тому же поддерживает два формата конфи-
гурационных файлов - традиционный (Config, Systems, Devices,
Dialers, ...) и свой (config, sys, port, dial, ...). Есть кон-
вертер туда-обратно. В Linuxе Taylor-uucp скомпилирован так,
чтобы сначала искать Taylor-конфигурацию в
/usr/lib/uucp/taylor_config/, если там ничего нет - искать
HDB-конфигурацию в /usr/lib/uucp/hdb_config/. IMHO главный
изъян HDB - невозможность указывать альтернативные номера теле-
фонов.
################_конец_"мелкого шрифта"_#######################
###следующий абзац написан "мелким шрифтом"###
Если вы используете не устаревший BNU-uucp, а Taylor-uucp 1.05:
В каталоге /usr/lib/uucp/taylor_config создаем файлы config,
sys, port, dial следующего содержания:
/* Примечание: в дистрибутивах RedHat Linux конфигурационные файлы
uucp должны лежать в /etc/uucp/ */
config: -------------------------------------------------------
uuname fedfuru # Наше собственное имя
sys: ------- Удаленные машины ---------------------------------
system kiae # Узел Релком ############################
myname fedfuru
time Any
port modem # Имя описания порта в файле port
speed 38400
chat ogin:-BREAK-ogin: uufedurp ssword: ABCd8
phone 946-9984
alternate # Второй телефонный номер.
phone 946-9994
system fedfond # Московское отделение ##################
time Any
myname fedfuru
port modem # Имя описания порта в файле port
speed 38400
chat ogin:-BREAK-ogin: uufedurp ssword: KLmn10
phone 8w095-125-7623
port: --------------- Описание портов ------------------------
port modem # Обозначение порта из файла sys
type modem
device /dev/modem
speed 38400
dialer gvc1440 # Имя наборщика-модема в файле dial
dial: --------------- Команды модемов ------------------------
dialer gvc1440 # Обозначение наборщика из файла port
# Строка инициализации модема.
# Вместо \T будет подставлен телефонный номер
chat "" ATZ OK ATH0E0Q0 OK ATDP\T CONNECT
# ATZ - загрузить profile 0
# ATH0 - повесить трубку
# ATE0 - no echo
# ATQ0 - выводить код возврата
chat-fail BUSY # Воспринимать как ошибку набора
chat-fail ERROR
chat-fail NO\sCARRIER
chat-fail NO\sDIALTONE
---------------------------------------------------------------
################_конец_"мелкого шрифта"_###################### #
Все. Клиентская часть UUCP сконфигурирована. Теперь, чтобы
"протолкнуть" посланные файлы, достаточно периодически
выполнять команды:
uucico -s kiae
uucico -s fedfond
А еще лучше, добавить эти команды в crontab, чтобы они выполнялись
автоматически, по несколько раз в сутки.
&dDКонфигурирование UUCP с использованием sysadm&d@.
Все вышеперечисленные настройки можно сделать, используя утили-
ту системного администратора sysadm. Надо войти в меню
network_services / basic_network
&dDКонфигурирование серверной части UUCP.&d@
Итак, мы уже можем звонить на чужие машины, и пересылать на них
файлы. Теперь нужно сделать, чтобы чужие машины (клиенты) могли
звонить нам. Для этого нужно:
1: Иметь описание звонящей нам uucp-системы в файле Systems -
для клиента такое же, как и для сервера.
2: Проверить права доступа для клиента в файле Permitions
2: Завести для него специальный uucp-login
3: Убедиться, что модем стоит в "Auto-answer" режиме, и на порт
/dev/modem запущена программа getty (или ttymon), позволяю-
щая логиниться по телефону на порт /dev/modem
1. Описание добавляется в файл Systems, (номер телефона и
название порта не обязательны), если мы сами не
собираемся туда звонить, но я бы посоветовал их вписать, для
единообразия.
2. В файле /etc/passwd завести строчку вида:
uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico
выполнить команды:
pwconv
passwd uupetrov
3. Любой терминальной программой "войти" в модемный порт и вы-
полнить команды
atz0 # Загрузить пользовательский profile 0
ats0=1 # Регистр0=1 - снимать трубку после 1-го звонка
at&w0 # Сохранить текущий setup в profile 0
at&y0 # Чтобы при включении питания загружался профайл 0
# at&f # загрузить заводские установки, если вы запутались
# с профайлами, можно сделать модему "reset"
Ввиду отсутствия коммуникационных программ в SVR4 (за
исключением сумасшедшего "cu"), используйте "echo".
echo atz0 > /dev/modem
echo ats0=0 > /dev/modem
echo at&w0 > /dev/modem # и так далее
А еще лучше gold, там есть режим прямой связи с любым портом.
4. В файле /etc/inittab иметь строчку вида:
c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem -l contty
&dDЧто где лежит в системе UUCP.&d@
/usr/bin/uucp - переслать файлы с/на удаленную uucp-систему
/usr/bin/uux - выполнить команду на удаленной uucp-системе
/usr/bin/uustat - статистика по выполненным пересылкам
/usr/lib/uucp/uu* - системные утилиты UUCP
/etc/uucp/ - каталог конфигурационных файлов UUCP
/usr/lib/uucp/taylor_config - конфигурация UUCP в Linux
/usr/lib/uucp/ - конфигурация UUCP в других
системах
/var/spool/uucppublic - каталог в который можно пересылать
файлы с удаленных машин
/usr/spool/mqueue - очереди отправляемой электронной почты
/usr/ucblib/mqueue - или здесь эта очередь ?
/var/spool/uucp/"машина" - очередь файлов на отправку на "машину"
/var/spool/uucp/.Log - статистика о работе uucp
&dDОсталось настроить нашу электронную почту.&d@
Если у вас самый простейший случай: вся ваша почта проходит че-
рез один "знающий" host, с которым вы соединены по uucp, то на-
до в файле /etc/sendmail.cf иметь такую строку:
. . .
# "Smart" relay host (may be null)
DSuucp-dom:kiae
. . .
В этом случае вся ваша внешняя почта (т.е. отправляемая за
пределы вашей локальной сети) будет переправляться по uucp на
uucp-узел "kiae" и дальнейшей ее доставкой будет озабочен
именно kiae. Предполагается, что он успешно справится с этой
задачей.
А еще чтобы было описание uucp-dom (ниже в том же файле).
Кстати, чтобы всех окончательно запутать, sendmail.cf на Motoн
role лежит вовсе не в /etc/, а в /usr/ucblib/.
Если у вас какой-либо другой случай - то это - тяжелый случай.
Дерзайте, успехов вам!
# И надо сделать, чтоб сендмаил не отрезал 8-й бит у посылаемой почты
# Если sendmail8.x.x, то в sendmail.cf:
# strip message body to 7 bits on input?
O7False
# А еще бывает, что sendmail не знает, как правильно называется
# наша машина. Тогда мы пишем что-то в таком стиле:
Cwlocalhost feduru.urup.ru feduru.mss.ru
&dDПроверка работоспособности и отладка конфигурации.&d@
Для начала проверим, правильно ли подсоединен модем.
Запускаем программу cu - эмулятор терминала.
cu -l /dev/modem # Или как там у вас этот порт называется
После этого вы переключитесь на работу со своим модемным пор-
том. Все, что вы будете набирать с клавиатуры, будет перенап-
равляться в порт /dev/modem , все, что "приходит" с этого пор-
та, будет рисоваться на вашем терминале. Попробуйте модемом
набрать телефонный номер
atdp100
Проверьте, правильно ли сконфигурирован "порт" модема и описа-
ние системы в файле Systems.
cu pulsar
Проверьте права доступа к файлам /dev/modem, /dev/contty*. Дол-
жно быть (???):
crw-rw---- 1 root uucp ... /dev/contty0
crw-rw---- 1 root uucp ... /dev/modem
Запустите uucico с максимальным уровнем выдачи отладочной ин-
формации. Запускать надо из под пользователя uucp
/usr/lib/uucp/uucico -r1 -x9 -f -s pulsar
/usr/lib/uucp/uucico -x all -f -s kiae
А затем посмотрите на содержание файлов со статистикой uucp в
каталоге /var/spool/uucp :
.Admin/audit.local
.Log/
.Status/
ERRLOG
LOGFILE
SYSLOG
Например, такой командой
tail -f /var/uucp/.Admin/audit.local &
tail -f /var/uucp/.Log/uucico/kiae
&dDПо результатам переписки&d@.
###следующий абзац написан "мелким шрифтом"(можно не читать)####
Dmitry Mayorov Compulsory Health Insurance Fund
Phone: +7 (812) 112-3517 St. Petersburg, Russia
> Навешал фильтров на sendmail, rmail,
> а вот это непонятно. Или они научились все из кои8 в исо пере-
> ворачивать на лету ?
Нет, конечно, потребовалось лечить. Дело сильно упростило то
обстоятельство, что внутри сети везде ISO. Перекодировать по-
этому мне надо только то, что идет через UUCP, то бишь наружу.
Для этого пришлось:
1. Поправить sendmail.cf:
# RelCom UUCP - with ISO 8859-5 to KOI-8 translation
Muucp-koi, P=/usr/local/bin/_uux, F=mDFMhu, S=52/31, R=21, M=100000,
^^^^^^^^^^^^^^^^^^^ мой, см. ниже
A=_uux - -r -a$f -gC $h!rmail ($u)
2. Сделать /usr/local/bin/_uux из трех строк:
#!/bin/sh
PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
/usr/local/bin/iso-koi | /usr/bin/uux $*
(iso-koi - понятно какой фильтр)
Это все, на самом деле, весьма грязный hack - вряд ли стоит его
включать в учебник. Оно, конечно, работает, но вот надо по
крайней мере еще и правильный код возврата как-то обеспечить -
с проверкой ошибок и прочими фенечками.
Чтобы принимаемая почта из KOI превращалась в ISO, достаточно:
1. Переименовать rmail в /usr/local/bin/__rmail;
2. Сделать свой rmail, тоже из трех строчек:
#!/bin/sh
PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
/usr/local/bin/koi-iso | /usr/local/bin/__rmail $*
Вышеуказанную экзекуцию надо производить именно над rmail, по-
тому что rbmail проверяет контрольные суммы.
А вот rbmail в SVR4/88 совсем нет. Надо искать исходники, соби-
рать... А RelCom (по крайней мере мой провайдер) именно его
пользует. Это третья причина (после отсутствия Taylor-uucp и
удобного Mail-user агентa), по которой я не стал поднимать
uucp/e-mail на Motorolе.
--
Dmitry Mayorov Compulsory Health Insurance Fund
Phone: +7 (812) 112-3517 St. Petersburg, Russia
-- Конец цитаты --
################_конец_"мелкого шрифта"_#######################
&dDSolaris: настройка uucp по direct line&d@
В файле Systems на Солярке удаленная машина описывается так:
ranisi Any dirt06 9600 unused "" P_ZERO "" \n\c ogin:-\n\c-ogin: uuintra\n\c ssword: parolf9f10\n\c "" P_ZERO
По сравнению с нормальным tailor-uucp престарелый соляркин
по прямому кабелю выкинул несколько фортелей:
Не захотел идти наружу с 38400, пришлось ставить 9600
Посылаемый ^M в конце каждой строки chat-а принимающий
Linux понимать отказался, пришлось делать в конце \n\c
Работать стал только с насильственно взведенным P_ZERO -
"no parity" - без этого на приеме вместо латиницы получалась
8-битная русица.
В uucp-овый crontab ставим раз в 5 минут вызов uucico
0,5,10,15,18,20,25,30,35,40,45,50,55 * * * * (\
/usr/lib/uucp/uucico -r1 -f -s ranisi ; sleep 30 ; \
/usr/lib/sendmail -q ) > /dev/null 2>&1
У солярного uucico не оказалось ключа "force" redial (-f -
совсем не тот форце, которого хотелось мне)
&dDЧтоб заставить uucico ходить на телнетовский порт&d@
> в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177}
port type pipe
port command /bin/telnet -8E hostname
&dDSecure uucp по tcp&d@
&dDВариант 1. port type tcp with ssh-port forwarding&d@
НА СЕРВЕРЕ: конфигурите uucp-tcp-сервер с localhost
/etc/inetd.conf :
uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/uucico -l
/etc/hosts.allow :
uucico: 127.0.0.1
# uucico желает его читать, а работает он с uid uucp - приходится дать read
chmod og+r /etc/hosts.allow
/etc/uucp/passwd : propisatx uu-логин, пароль _нешифрованный_
uuyourlogin yourpasswd
НА КЛИЕНТЕ: коннект будете делать на localhost, а ssh делает его проброс
/etc/inetd.conf :
uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/uucico -l
/etc/hosts.allow :
uucico: 127.0.0.1
/etc/uucp/port : описать порт tcp-connect
port tcp-connect
type tcp
service 540
/etc/uucp/sys : добавить тип порта
. . .
port tcp-connect
address 127.0.0.1
chat ogin: \L ssword: \P
alternate
. . .
"Перед употреблением" запускаем из под root ssh с активизированным forward
ssh1 -C -L 540:127.0.0.1:540 193.232.173.6
.
&dDСистема печати в Unix. LP spoolling&d@
(описана система печати в System V)
Печатать, конечно, можно и так: cat file > /dev/lp. Но в
многопользовательской системе такой фокус не всегда пройдет.
Поэтому печатаемый файл ставят в очередь на печать.
Имеем принтер. У принтера есть
ИМЯ_ПРИНТЕРА - придумывается администратором.
ПОРТ_ПРИНТЕРА - специальный файл в который надо
выталкивать данные для печати.
ИНТЕРФЕЙСНАЯ_ПРОГРАММА - программа, которая как раз и
будет этим заниматься.
Если у нас нормально сконфигурена система печати, то
печататься можно так:
lp -d ИМЯ_ПРИНТЕРА file
или, если мы хотим напечатать на "default" принтере
cat file | lp
lpstat Посмотреть в каком состоянии очередь печати
cancel [идентификатор_запроса ...] [принтер ...]
Срубить запрос на печать
lp просто складывает файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ
lpsched обнаруживает вновь поступивший файл, ставит его в
очередь на печать, и, когда очередь доходит, запускает наконец
ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход которой берется из печатаемого
файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.
&dDПодключить к системе новый принтер&d@
---------------------------------------------------------------
lpshut # на время реконфигурации надо "гасить" lpsched
lpadmin -pLJ_printer -i/usr/lib/lp/model/lj_print -v/dev/lpt2
или
lpadmin -pNash_Nowyj_Printer -mstandard -v/dev/contty
enable Nash_Nowyj_Printer
accept Nash_Nowyj_Printer
lpsched # после реконфигурации надо вновь запустить lpsched
---------------------------------------------------------------
accept - позволяет ставить в очередь печать на этом принтере
enable - разрешает печатать стоящие в очереди задания
ключи команды lpadmin
-pИмя_Нового_Принтера
-vПОРТ_ПРИНТЕРА
-iИНТЕРФЕЙСНАЯ_ПРОГРАММА - маршрутное имя программы,
которая печатает
-mМОДЕЛЬ_ПРОГРАММЫ - имя "модели" такой программы,
лежащей в каталоге
/usr/lib/lp/model
-o nobanner - разрешить userу писать lp -o nobanner
(рекомендую ампутировать banner в интерфейсном скрипте)
-d printer - сделать принтером по умолчанию
-?Удаленный_хост - можно подключать принтер удаленной машины
-?Имя_принтера_на_удаленном_хосте
(ключи не помню, посмотреть в man)
-s host!printer - для Solaris - подключение удаленного принтера
# перед этим вписать принтер в /etc/lp/Systems
Вместе с системой накопления вывода на принтеры
поставляются образцы интерфейсных программ. Они представляют
собой shell-процедуры, перекодирующими печатаемый файл в формат
соответствующего принтера.
&dDПримеры&d@
lpadmin -pstar1 -i/udd/print/inter -v/dev/xpit0 # локальный принтер
lpadmin -pstar1 -mdumb -v/dev/lpt1
&dDПодключить к системе удаленный принтер&d@
(ключи варьируются для разных версий Unix)
HP-UX:
lpadmin -pLJ_printer -?host -?printer
Solaris:
вписать удаленную машину в /etc/lp/Systems а затем
lpadmin -pLJ_printer -s 'host!printer' ; accept LJ_printer
lpadmin -dstar1 # Установить принтером по умолчани`
lpadmin -xstar1 # Ликвидировать принтер star1
&dDФайлы&d@
/usr/lib/lp/model # Образцы интерфейсных программ (модели)
/etc/lp # Каталог конфигурации системы LP
/var/spool/lp/* # Каталоги с очередями
man lpadmin # Естественно!
.
&dDГрафическая оболочка X-Windows System&d@
Для начала немного истории и общих мест. Представим, что
нам нужно написать программу, которая будет работать в
графическом режиме. Нам потребуется: опрашивать клавиатуру,
снимать события и координаты мыши, рисовать на экране, ... Как
это делалось на MS-DOSе? Очень просто. Пишем одну большую
программу, в ней - все: и логика, и обработка событий, и
слежение за перемещениями мыши, ну, а когда требуется что-то
нарисовать, мы даем команду на запись в порты EGA контроллера,
рисуем пиксел... Через год появляется контроллер VGA, еще через
год SVGA 800x600, 16 цветов, вслед за ним UVGA 1024x768, 256
цветов, затем XGA 1280x1024, 16Мб цветов...
&dDОсновная идея X Windows&d@.
Имеем две независимых программы. Одна умеет рисовать на
графическом мониторе, и вообще, обслуживать все это железо. Она
называется X-сервер. Вторая программа - называем ее клиент X
Windows, рисовать физически не умеет. Зато она знает, что
именно надо рисовать, и умеет командовать. Команды типа:
"нарисовать прямоугольник", "провести линию", "открыть окно",
"вывести символ в заданном фонте", "опросить координаты мыши",
и т.п. передаются X-серверу, а тот их исполняет - рисует.
Формат и спецификации этих команд опубликованы,
стандартизованы, и широко известны. Все вместе они называются
"Протокол X Windows".
Итак, повторим.
X-сервер. Программа, которая написана специально под
конкретное физическое устройство (имеется в виду - монитор,
графконтроллер, мышь и клавиатура), умеет на нем рисовать, и
умеет понимать команды рисования по протоколу X Windows System.
X-клиент. Прикладная программа, обеспечивающая графический
интерфейс с пользователем. Команды для рисования на экране
передает X серверу по протоколу X Windows System.
X-терминал. Ящик (монитор, графконтроллер, мышь,
клавиатура, ну и, естественно, процессор и оперативная память),
на котором запущена программа X-сервер. X-терминалом может
служить самая обыкновенная графическая Unix-рабочая станция, на
которой X сервер выполняется, как одна из многих прикладных
задач. Специализированный X-terminal - ящик, на котором
запускается только X сервер, и ничего кроме. Можно использовать
PC под MS-DOSом, на котором запущена DOSовская программа,
реализующая X сервер.
Xlib - библиотека C-ишных функций, реализующих протокол X
Windows System. С помощью этой библиотеки можно писать
графические программы - X-клиенты.
Что мы с этого имеем.
Мы получаем универсальный GAPI - (Graphical Application
Programming Interface) - средство программирования графических
приложений. Пользовательские графические программы при этом
полностью отвязаны от железа, от конкретного графконтроллера.
О железе пусть беспокоится X-сервер.
Протокол X Windows умеет "ездить" по сети: например по TCP/IP,
или по DEC-net. Поэтому Xсервер может крутиться на одной
машине, а X-клиент - на другой. То есть, картинка рисуется на
одной машине, а программа, которая ее обеспечивает - крутится
на другой.
X-сервер способен обслуживать сразу много клиентов, причем всех
- одновременно. На нашем графическом экране может быть открыто
сразу много окон - каждое окно порождается его собственным X
клиентом. Клиенты эти могут быть запущены и на нашей машине (к
которой подключена графическая подсистема), и на удаленных ма-
шинах, соединеннных с нами по сети.
Чего нам это стоит.
Понятно чего. Ресурсов. X Windows очень любит ресурсы - память,
процессор, диск. Способен съесть их в неограниченных количес-
твах. А еще ведь надо программировать. (К счастью, не всем на-
до). Кто видел, как выглядят программы для MS Windows или Mac,
может представить себе внешний вид исходных текстов X-овой
программы.
&dDКак это запускается&d@.
Пусть в нашей сети есть машина с графической подсистемой и X
сервером, и сетевой адрес этой машины pcat107.foms.msk.ru
на pcat107 нужно выполнить команду:
xhost + # разрешить X-овым программам с ЛЮБОЙ машины
# рисовать на экране машины pcat107
Запускаем на нашем компьютере X-овую программу, так, чтобы ее
окошко рисовалось на мониторе pcat107. Для этого на нашем
компьютере нужно выполнить команду:
xterm -display pcat107:0.0 &
&dDБиблиотеки, Motif, и война круглых и квадратных кнопок&d@.
Можно писать X-овые программы, используя библиотеку Xlib.
Многие так и пишут, хотя это весьма тяжело - уж больно невысок
уровень Xlib'а. В помощь программистам было создано несколько
toolkit'ов - библиотек более высокого уровня, в которых реали-
зованы различные widget'ы. Widget - непереводимый термин X
Windows. Склеен из двух слов - Window и Gadget
(приспособление), является графическим объектом с привязанными
к нему свойствами и реакциями на действия пользователя. Примеры
widgetow: "кнопка", "менюшка", "окошко с текстом", "линейка
прокрутки",...
Известны следующие toolkit'ы:
Xaw -
Anthena Widgets. Очень черно-белый, очень плоский,
весьма небогатый. Зато - бесплатный. Посмотрите, как
выглядят программы xterm, xedit, xman. Они сделанны
на Xaw.
xview -
Набор библиотек и объектов, использованных в реализа-
ции набора пользовательских утилит Sun-овской версии
X Windows - "Open Windows". Весьма симпатично. Круг-
лые кнопки, "шприцы-иголки" (замечательная вещь!),
очень хорошо продуманный интерфейс пользователя, в
том числе активно используемая трех-кнопочная мышь.
Исходные тексты библиотек xview открыты, предоставля-
ются бесплатно. Однако набор DeskSet - 15 пользова-
тельских утилит входящих в OpenWindows, сделанный на
библиотеке xview, SunSoft готов предоставить только
за плату. В бинарном виде - весьма дешево ($100). В
исходных текстах - весьма дорого ($200K)
Motif -
Библиотека поставляются организацией OSF за не совсем
маленькую плату. Исходные тексты библиотек недоступ-
ны, либо чрезмерно дороги. Кнопки - квадратные, да и
вообще Motif'овские приложения до безобразия напоми-
нают MS Windows (что, IMHO, является серьезным прес-
туплением)
В борьбе BSD и Unix V победил, как известно, System V, а в вой-
не круглых и квадратных кнопок выиграл Motif.
&dDКонфигурирование X Windows&d@
В Linux используется X11 в реализации XFree86.
Чтобы его сконфигурировать, выполните команду
xf86config
&dDЗапуск X Windows&d@.
На некоторых машинах он сам запускается. А также иногда
удается запустить его вручную командами: startx и/или openwin
Solaris:
1. Установите переменные окружения:
OPENWINHOME=/usr/openwin export OPENWINHOME
LD_LIBRARY_PATH=/usr/openwin/lib export LD_LIBRARY_PATH
PATH=/usr/openwin/bin:$PATH export PATH
XAPPLERESDIR=/usr/openwin/lib/app-defaults export XAPPLERESDIR
2. Запустите X Windows командой
openwin
"Нормальные" Unix'ы:
1. Установите переменные окружения:
PATH=/usr/bin/X11:$PATH
XAPPLERESDIR=/usr/lib/X11/app-defaults
2. Запустите X Windows командой
startx
"Ненормальные" Unix'ы (Unixware).
Когда регистрируете пользователя, ответьте Yes на вопрос
"Хотите графический DeskTop". Тогда после login'а X Windows
будет запускаться автоматически. Если вы прозевали, и ответили
No, то никаким осмысленным способом запустить X Windows для
себя вам не удастся.
&dDНастройки пользовательского окружения X Windows&d@
При наличии пользовательских настроечных файлов, лежащих в
домашнем каталоге пользователя, используются они. Если их нет,
используются стандартные, общественные, обычно лежащие в
каталоге /usr/lib/X11 или /usr/openwin/lib
Персональные и общественные пользовательские настройки
хранятся в файлах:
$HOME/.Xdefaults
$HOME/.OWdefaults
/usr/lib/X11/Xdefaults
/usr/openwin/lib/Xdefaults
/usr/openwin/lib/app-defaults/*
После любых исправлений файл с ресурсами необходимо перезачитать:"
xrdb -merge .Xdefaults
Окружение (desktop) - т.е. программы, которые стартуют
автоматически при запуске X Windows находится в файлах:
Solaris:
$HOME/.openwin-init
/usr/openwin/lib/openwin-init
"Нормальнные" X windows:
$HOME/.xinitrc
/usr/lib/X11/xinit/xinitrc
Настройки window-manager'a - т.е. - поведение окон,
менюшки пользователя, раскладка команд на клавиши мышки, ...
Solaris:
$HOME/.openwin-menu
$HOME/.openwin-menu-*
/usr/openwin/lib/openwin-menu
/usr/openwin/lib/openwin-menu-*
Linux
$HOME/.fvwmrc
/usr/lib/X11/fvwm/system.fvwmrc
.
&dDРедактор VI. Список команд&d@
&dDРЕЖИМЫ&d@: Ввода == ESC ====> Командный == :Q ==> Редактора ed
^ | ^ |
+----aAiIcCrRs <---+ +----- vi -------+
&dD &d@ &dDПЕРЕМЕЩЕНИЕ ПО ФАЙЛУ&d@
{стрелки},hjkl
^U/^D табуляция вверх/вниз
^F/^B страницу вниз/вверх
^E/^Y подвинуться на строку вниз/вверх
w/b/e вперед/назад на слово/в конец слова
W/B/E вперед/назад на слово/в конец опробеленного слова
(/) назад/вперед на предложение
{/} назад/вперед на абзац
[[/]] назад/вперед на функцию или секцию
% найти парную скобку ( или {
{n}G на строку {n}
{n}| в колонку {n}
H/M/L в начало/середину/конец экрана
z/z./z- текущую строку в начало/середину/конец экрана
^/$/0 начало/конец строки
&dD &d@ &dDРЕДАКТИРОВАНИЕ ТЕКСТА&d@
x уничтожить символ
X забой
J склеить строки
&dD &d@ &dDВ РЕЖИМЫ ВВОДА&d@
a/i / A/I вставка за/перед _ / концом/началом строки
R режим замены
r буква на букву
s буква на буквы
o/O вставить строку под/над _
C$ Заменить конец строки
&dD &d@ &dDИНФОРМАЦИЯ&d@
^G о текущем файле и строке
&dD &d@ &dDОТКАТКА&d@
u откатка (одна)
^L/^R перерисовать
&dD &d@ &dDРЕДАКТИРОВАНИЕ В РЕЖИМЕ ВВОДА&d@
ESC вернуться в командный режим
Забой Забой
^W/^U Убрать слово/Убрать строку
^V Вставить CRTL-символ[ы]
&dD &d@ &dDОПЕРАТОРЫ С ПОЗИЦИОНИРОВАНИЕМ&d@
p/P вспомнить фрагмент за/перед _
{n} ["буква_буфер] "команда" {m}"команда позиционирования"
весь фрагмент запоминается! или повтор команды для строки
d уничтожать фрагмент
y запоминать фраг
c заменить фрагмент (==> в режим ввода )
&dD<&d@/&dD>&d@ сдвинуть влево/вправо
! команда пропустить фрагмент через фильтр
&dD &d@ &dDПРИМЕРЫ&d@
7yy запомнить 7 строк в неименованном буфере
"aAd{ добавить к буф a с удалением от _ до начала абзаца
!G sort отсортировать строки от курсора и до конца
&dD &d@ &dD"МАКРОКОМАНДЫ"&d@
:map клавиша_имя_макро тело_макрокоманды {CR}
:map! клавиша_имя_макро тело_макрокоманды {CR} - в режиме ввода
:ab сокращение сокращаемый_текст {CR} - в режиме ввода
&dD &d@ &dDПОИСК&d@
?строка искать вверх
/строка искать вниз
n повторить поиск
N вернуться на последнюю найденную строку
&dD &d@ &dDПОИСК_С_ЗАМЕНОЙ&d@
:s/рег_выраж/замена/gc - глобальный с подтверждением
:Q/vi вход / выход в режим ed
:g/строка - поставить визуальный фильтр
:+5 движение по файлу
&dD &d@ &dDРЕДАКТОР_ED. Вход ":" (надолго "Q") Выход "CR" / (VI)&d@
^^ Перейти в альтернативное окно
:[1,$] w [>>] [file] записать в file [от 1 до $ строки]
:q[!] закончить сеанс [форсированно]
:[15]r [file] или [!komanda] вставить после [15] стр
:e редактировать новый файл
:n редактировать следующий файл
:sh выйти в Shell
:! команда запустить на выполнение Shelloм
&dD &d@ &dDУСТАНОВКА РЕЖИМОВ VI&d@
:set nu / nonu нумеровать/ненумеровать строки
:set smd{CR} показывать текущий режим
EXINIT="конфигурационные команды" - переменная окружения
.exrc - файл с командами конфигурации
.
&dDКак подключить русские фонты к компьютеру с X11&d@
1. Создаем каталог cyrfonts. Копируем туда файлы *.bdf или *.pcf
mkdir cyrfonts
cp *.bdf *.pcf cyrfonts
Замечание: предпочтительно добыть фонты в формате PCF а не
BDF Проблема в том, приложение заказывает размер фонта,
которого у X или FONT-сервера нет, то FONT-сервер пытается
скалировать и в случае .BDF погибает и убивает все, что под ним
запущено. Конвертировать bdf-фонты можно командой bdftopcf.
2. В каталоге с фонтами создаем оглавление фонтов для
X-server'а : fonts.dir
cd cyrfonts
mkfontdir
3. Указываем X-server'у, чтоб он брал фонты из нашего каталога
xset +fp $HOME/cyfonts
xset fp rehash
4. Пользуемся русскими фонтами.
xterm -fn koi9x15
mailtool -fn koi6x10
и т.д.
&dDЧтобы русские фонты включались и находились по умолчанию&d@
5. До запуска X-Windows установить переменную окружения FONTPATH
Если у вас Bourne Shell /bin/sh или bash или ksh
FONTPATH=$HOME/cyrfonts: export FONTPATH
Если судьба угораздила пользоваться C-Shell /bin/csh или tcsh
setenv FONTPATH $HOME/cyrfonts:
6. Или скопировать фонты в директорию со стандартными фонтами.
cp *.bdf /usr/lib/X11/fonts/misc
cd /usr/lib/X11/fonts/misc
mkfontdir
xset fp rehash
7. Если у вас XFree, то добавить строчку в файл /etc/X11/XF86Config
FontPath "/home/yourname/cyrfonts/"
8. Установить фонт по умолчанию в своем .Xdefaults файле.
Добавить в файл .Xdefaults такие строчки:
font.name: koi9x15
icon.font.name: koi6x10
XTerm*font: koi6x10
XTerm*VT100*font1: koi6x10
XTerm*VT100*font2: koi8x13
XTerm*VT100*font3: misc16
XTerm*VT100*font4: misc24
XTerm*VT100*font5: demos8x14
XTerm*VT100*font6: demos8x16
emacs.font: koi9x15
emacs.default_font: koi9x15
&dDЕсли у вас SunOs 4.1.1 и, соответственно, NeWS&d@
Тогда вся вышеописанная процедура не сработает. У NeWS
совершенно собственный формат фонтов.
1. Преобразуем фонты в формат NeWS
convertfont *.bdf
2. Создаем оглавление для NeWS server'а
bldfamily
3. Подключаем фонты в точности, как в стандартном X11
xset +fp `pwd` # Дополняем каталог, подключаем фонты.
xset fp rehash # Чтоб сервер перезачитал каталоги с фонтами
все.
Еще можно в файл Synonims.list воткнуть строчку с aliaсами.
Иначе фонты будут браться только по имени файлов.
&dDРедактирование фонтов.&d@
Некоторые комплектты X-Windows имеют редактор фонтов. Он может называться
xfed, fontedit, xfd. Если у вас такового нет, попробуйте найти исходники.
xfed font.bdf
convertfont -v font получаем font.vfp
fontedit font.vfp
затем convertfont -b ?? font.vfp и получаем font.ff
&dDПодключение русской клавиатуры в X-Windows&d@
Достаньте файлы с раскладкой клавиатуры. (Их можно найти во
многих местах, в частности здесь ). Выполните команду
xmodmap файл-с-раскладкой.xmm
Переключатель рус/лат - клавиша CapsLock
Чтобы отключить русскую клавиатуру, выполнитте команду
xmodmap default.xmm
&dDПодключение русской клавиатуры в XFree86&d@
XF86Config:
Section Keyboard
LeftAlt Meta
AltGr ModeShift
Right_Ctl ModeLock
ScrollLock ScrollLock
EndSection
Вешает переключатель на правый Ctrl, при этом еще и лампочка
CapsLock будет загораться.
&dDПереключатель кирилицы в XFree86 3.2.2&d@
В свежей версии Xfree_3.3.2
переключатель кирилицы встроенный с раздачи, раскладка йцукен
переключатель задается в /etc/X11/XFconfig
Section "Keyboard"
# XkbDisable
Protocol "Standard"
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "us"
XkbOptions "grp:shift_toggle"
EndSection
Варианты переключателей:
grp Group Shift/Lock behavior
grp:switch R-Alt switches group while pressed
grp:toggle Right Alt key changes group
grp:shift_toggle Both Shift keys together change group
grp:ctrl_shift_toggle Control+Shift changes group
grp:ctrl_alt_toggle Alt+Control changes group
&dDПодключение русской клавиатуры в OpenWindows на SUN&d@
Возьмите файл с раскладкой для SUNа (например у меня),
поместите в своем домашнем каталоге под именем .keytable и
запустите openwin. Переключатель рус/лат - клавиша правый AltGraph
&dDПодключение русской клавиатуры в DT/CDE HP-UX&d@
keymap_ed -i 1101
&dDЧтоб bash воспринимал русские буквы с клавиатуры&d@
Вписать в $HOME/.inputrc строки
set meta-flag on
set convert-meta off
set output-meta on
Или вписать в .profile строки
LC_CTYPE=iso_8859_1 export LC_CTYPE
LC_LOCALE=iso_8859_1 export LC_LOCALE
LESS="-e -r" export LESS # чтоб лесс показывал русские буквы
&dDГде все лежит&d@
См. каталог русификации
&dDЕсли что-то не получилось.&d@
1. Если у вас Solaris 2.3, то:
Во всех "родных" (которые не X11) Sun'овских программах русских
букв не будет. Как то: textedit, cmdtool, mailtool
2. Поставьте свежий Solaris 2.5 или 2.4. Если не можете, то
используйте вместо них emacs, xterm, xedit.
3. Или разбирайтесь самостоятельно с такими понятиями как
ctype, LC_LOCALE, LC_CTYPE, -lc_basic_locale , NLS, and so on.
хотя все же можете попробовать:
LC_LOCALE=iso_8859_1 export LC_LOCALE
LC_CTYPE=iso_8859_1 export LC_CTYPE
LANG=iso_8859_1 export LANG
&dDРусификация Netscape&d@
В Netscape 3 уже реализован encoding koi8-r. Достаточно
установить комплект фонтов koi8-r (заалиасенные as iso8859-1),
и виндовские, заалиасенные as Family (Mswin)-*-iso8859-1 А
затем выбрать Доцумент енцодинг кои8-р и поставить для него
русские фонты.
&dDЧтоб отправляемая почта уходила с полем charset=koi8-r&d@
Вставить в .Xdefaults строчки:
Netscape*defaultCharset: koi8-r
Netscape*localeCharset*C: koi8-r
Netscape*localeCharset*koi8-r: koi8-r
Netscape*localeCharset*koi8-u: koi8-r
Netscape*localeCharset*ru: koi8-r
Netscape*localeCharset*ru_SU: koi8-r
Netscape*localeCharset*ru_SU.KOI8-R: koi8-r
&dDА еще я умею русифицировать, но не написал инструкции:&d@
Системная консоль Linux - подключение русских шрифтов на экране
и переключателя клавиатуры на правый ALT.
&dDКирилизация Applixware&d@
Applixware - огромный (140Mb) оффисный пакет под Unix
(Соларис/AIX/Linux/SCO/...), в котором есть все, что полагается
- вордпроцессор, электронные таблицы, image-editor,
веб-броузер, html-редактор, почтовый клиент и т.д.
Пользоваться им не собираюсь, мне достаточно Winword-6 в
WABI 2.2b
Кирилизацию Applixware описал Виктор Колосов
http://triton.itep.ru/ru/skynet/system.html
> Простой и очевидный способ добавления TTF-шрифтов в Applix-e - через меню,
> сожалению, приводит к заметной на глаз кривизне букв при печати
> (для TTF). Поэтому там описано как то же самое сделать через PostScript.
From: Василий Егошин
По-моему на этой страничке все слишком сложно. Я проще
поступил: с помощью Applix'овского фонт-инсталлера прикрутил
виндовские ttf'ы и на этом в принципе и все :) И отображается и
печатается все на ура. (Причем обмен с вордом через rtf - без
проблем).
Единственное неудобство - ttf'ы должны быть параграфовские
- с юникодными работать не будет, т.к. там русские символы
начинаются с кодов 400 (вроде бы).
.
&dDПутеводитель по конфигурационным файлам Unix&d@.
Корневой каталог "/"
bin - каталог наиболее употребительных команд пользователя.
sbin - утилиты системного администратора
это все, что у него будет в однопользовательском режиме
dev - "устройства" - специальные файлы
etc - место для конфигурационных файлов
tmp - каталог временных файлов - для системы и для пользо-
вателей. Чистится при каждой загрузке.
lib - библиотеки и файлы, используемые компиляторами, раз-
деляемые библиотеки
shlib - разделяемые библиотеки
usr - страшно говорить, но чего там только нет
mnt - "дежурный" каталог, для подмонтирования
файловых систем
var - изменяемые конфигурационные и служебные файлы
home - здесь живут "userы"
export - "экспортируемые" файлы. В частности, содержит файловые
системы для бездисковых клиентов, монтирующих их по NFS
proc - псевдо-файловая система отображает состояние запущенных
процессов
stand - раздел с загрузочными файлами (unix, kdebug)
tftpboot "загрузчики" для бездисковых клиентов
unix - ядро операционной системы. - обыкновенный выполняемый
файл. Возможно, что лежит он не в /, и называется по
другому (например vmunix, vmlinuz)
lost+found - каталог, куда при ремонте файловой системы склады-
ваются файлы, "потерявшие" свои имена.
Каталог /etc - место для конфигурационных файлов
--------------------------------------------------
passwd здесь определены все пользователи
shadow их пароли (в закодированном виде)
group группы пользователей
aliases синонимы почтовых адресов локальных пользователей
ftpusers список пользователей, на которых нельзя ftp-иться
shells список нормальных "shell'ов"
issue файл, содержимое которого выдается на экран перед
приглашением к входу в систему.
motd файл, содержимое которого выдается на экран после
приглашения к входу в систему.
ttydefs параметры терминальных линий
TIMEZONE файл с информацией о часовом поясе, в котором
находится компъютер
uucp конфигурационные файлы системы UUCP
mail конфигурационные файлы системы mailx/sendmail
vfstab таблица монтируемых файловых систем
dfs/dfstab таблица экспортируемых в NFS каталогов
auto_home карты автоматически монтируемых каталогов для automount
auto_master
format.dat параметры всех возможных дисков
hosts имена и IP адреса локальных host'ов
networks задает символические имена IP сетей
netmasks net маски IP сетей
ethers ethernet'ные адреса бездисковых клиентов
hosts.equiv список host'ов, которым позволено делать у нас rsh
defaultdomain задает NDS домен
resolv.conf кто служит нам DNS сервером
inetd.conf конфигурационный файл inetd демона
services соответствие номеров TCP портов их символическим именам
named.boot стартовая конфигурация сервера DNS
inittab схема работы процесса init.
rc0.d/ каталоги с командными файлами, которые запуска-
rc2.d/ ют при переходе на/с соответствующего уровня
rc3.d/ выполнения
init.d/ а этом каталоге лежат копии ВСЕХ таких файлов вместе
rc0, rc2, rc3 Командные файлы, которые их запускают
magic Таблица с "магическими числами". Используется коман-
дой file для определения типа бинарного файла.
termcap файл с описаниями терминалов в формате termcap
wtmp Файл с информацией о сеансах работы пользователей в
системе. Рекомендуется иногда опустошать его.
Каталог /usr
sadm - файлы системного администратора
adm - накапливаемая информация о работе системы и
пользователей
bin - утилиты
sbin - утилиты системного администратора
ucb/bin - утилиты, характерные для BSD Unix
mail - каталог почтовой службы.
man - документация системы в man формате
tmp - временные файлы. Очищается при загрузке
include - include файлы для компилятора C
lib - библиотеки - системные, пользовательские,
разделяемые и статические, а так же многие
служебные каталоги начинаются отсюда.
/usr/lib/acct утилиты для сбора статистики
/usr/lib/terminfo база данных с описаниями терминалов.
/usr/lib/lp каталог системы LP спулинга печати
/usr/lib/uucp каталог системы UUCP пересылки файлов по модему
spool - место для служебных временных файлов
/usr/spool/lp каталоги для работы системы спулинга печати
/usr/spool/cron/crontabs команды, выполняемые по расписанию
/usr/spool/cron/atjobs поставленные на выполнение
/usr/spool/uucp спулинг системы uucp
/usr/local - GNU-сный каталог
/var - локальные служебные файлы
/var/yp/Makefile - конфигуратор NIS
/var/named - карты описания DNS
.
&dDПример конфигурационных файлов DNS для standalone сети&d@.
Задача: сконфигурировать DNS-сервис в отдельностоящей локальной
сети.
домен: foms.msk.ru
адреса: 198.8.3.0
адреса: 198.8.2.0
DNS сервер: server.foms.msk.ru
Для этого нужно заполнить файлы:
/etc/named.boot
/var/named/named.root
/var/named/127.0.0.0
/var/named/foms.msk.ru
/var/named/foms-hosts-spisok
/var/named/198.8.2.0
/var/named/198.8.3.0
и запускать при начальной загрузке демона /sbin/in.named
Примерное содержание конфигурационных файлов приведено ниже.
Переделайте их под конкретную конфигурацию вашей сети.
Приблизительная идеология такова: сервис DNS поддерживается
демоном named. Named при старте считывает файл стартовой
конфигурации /etc/named.boot . В нем указывается, как зовется
наш домен, и в каких файлах лежат описания имен хостов нашего
домена (параметр primary). Мы должны локально поддерживать три
карты описаний:
foms.msk.ru - все хосты нашего домена.
3.8.198 - "обращенная" карта нашего домена (просто
переворачиваем наши IP-адреса задом наперед)
0.0.127 - зачем требуется еще карта нашей "local-network"
известно только разработчикам DNS, однако
ее тоже нужно описать.
в /etc/named.boot записано, в каких файлах лежат описания
доменов, named их считывает, и начинает вещать на весь мир.
;##############
; type domain source host/file backup file
;
directory /var/named
cache . named.root
primary 0.0.127.in-addr.arpa 127.0.0.0
primary foms.msk.ru foms.msk.ru
primary 3.8.198.in-addr.arpa 198.8.3.0
primary 2.8.198.in-addr.arpa 198.8.2.0
; Зоны, для которых мы служим резервным name-сервером
secondary gatelink.fr 134.214.100.1 secondary/gatelink.fr
secondary 214.134.in-addr.arpa 134.214.100.1 secondary/134.214.0.0
;############## конец файла ###################################
;##############
; Initial cache data for root domain servers 1-may-98
;;;;Get it from
. 99999999 NS A.ROOT-SERVERS.NET
. 99999999 NS B.ROOT-SERVERS.NET
. 99999999 NS C.ROOT-SERVERS.NET
. 99999999 NS D.ROOT-SERVERS.NET
. 99999999 NS E.ROOT-SERVERS.NET
. 99999999 NS F.ROOT-SERVERS.NET
. 99999999 NS G.ROOT-SERVERS.NET
. 99999999 NS H.ROOT-SERVERS.NET
. 99999999 NS I.ROOT-SERVERS.NET
. 99999999 NS J.ROOT-SERVERS.NET
. 99999999 NS K.ROOT-SERVERS.NET
. 99999999 NS L.ROOT-SERVERS.NET
. 99999999 NS M.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET internet address = 198.41.0.4
B.ROOT-SERVERS.NET internet address = 128.9.0.107
C.ROOT-SERVERS.NET internet address = 192.33.4.12
D.ROOT-SERVERS.NET internet address = 128.8.10.90
E.ROOT-SERVERS.NET internet address = 192.203.230.10
F.ROOT-SERVERS.NET internet address = 192.5.5.241
G.ROOT-SERVERS.NET internet address = 192.112.36.4
H.ROOT-SERVERS.NET internet address = 128.63.2.53
I.ROOT-SERVERS.NET internet address = 192.36.148.17
J.ROOT-SERVERS.NET internet address = 198.41.0.10
K.ROOT-SERVERS.NET internet address = 193.0.14.129
L.ROOT-SERVERS.NET internet address = 198.32.64.12
M.ROOT-SERVERS.NET internet address = 202.12.27.33
;############## конец файла ###################################
;##############
; local dns file local.reverse 0.0.127.in-addr.arpa
;
@ IN SOA server.foms.msk.ru. moshkow.server.foms.msk.ru. (
94061801 ; Serial (yymmddxx)
10800 ; Refresh 3 hours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
IN NS server.foms.msk.ru.
1 IN PTR localhost.
;############## конец файла ###################################
;##############
; foms.msk.ru zone hosts file for DNS-server server.foms.msk.ru
;
@ IN SOA server.foms.msk.ru. moshkow.server.foms.msk.ru. (
95031802 ; Serial (yymmddxx)
10800 ; Refresh 3 hours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
NS server.foms.msk.ru.
NS ns2.msk.ru.
MX 0 server.foms.msk.ru.
; MX 20 mail.msk.ru.
; MX 30 mailhost.kiae.su.
localhost A 127.0.0.1
$INCLUDE /var/named/primary/foms-hosts-spisok
;; Если хотите отпустить свой поддомен *.develop.foms.msk.ru
;; на выселки, самостоятельно поддерживать свой домен.
;margo.develop IN A 193.95.100.4
;develop IN NS margo.develop.foms.msk.ru.
;############## конец файла ###################################
;##############
;;;;;;;;;;;; Hosts in foms.msk.ru zone ;;;;;;;;;;;;;;;;;;;;;;;;
; Our main server with DNS, ftp, gopher, www, mailrelay, NFS,
;
server A 198.8.2.1 ; e1x70 ethernet
A 198.8.3.1 ; m3760 ethernet
A 193.124.158.33 ; sl0 slip link
MX 0 mailrelay
HINFO Motorola88/110 "SVR4.1/88"
WKS 198.8.2.1 UDP ( time domain name )
WKS 198.8.2.1 TCP ( echo telnet hostnames domain )
mailrelay CNAME server
ftp CNAME server
fedfond CNAME server
; Host s20
;
s20 A 198.8.2.20
MX 0 mailrelay
MX 20 linux
HINFO Besta/31 UNIX-V.3
besta CNAME s20
; Host pcat101
;
pcat101 A 198.8.2.101
MX 0 mailrelay
HINFO PC486/66DX2 "MSDOS 6.2"
pc101 CNAME pcat101
guest CNAME pcat101
; Host pcat106
;
pcat107 A 198.8.3.107 ; eth0
A 193.124.158.34 ; sl0 slip link
MX 0 pcat107
MX 10 mailrelay
HINFO PC486/66DX2 "Linux 1.2.1"
pc107 CNAME pcat101
linux CNAME pcat101
;############## конец файла ###################################
;##############
@ IN SOA server.foms.msk.ru. moshkow.server.foms.msk.ru. (
94102501 ; Serial
10800 ; Refresh 3 hours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
NS server.foms.msk.ru.
; Reverse-name [ttl] PTR Real-name-dot
;
1 PTR server.foms.msk.ru.
20 PTR s20.foms.msk.ru.
101 PTR pcat101.foms.msk.ru.
;############## конец файла ###################################
;##############
@ IN SOA server.foms.msk.ru. moshkow.server.foms.msk.ru. (
94102501 ; Serial
10800 ; Refresh 3 hours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
NS server.foms.msk.ru.
; Reverse-name [ttl] PTR Real-name-dot
;
1 PTR server.foms.msk.ru.
106 PTR pcat106.foms.msk.ru.
107 PTR pcat107.foms.msk.ru.
;############## конец файла ###################################
.
&dDКнижки про Unix&d@
Рекомендуются любые книги в твердой обложке импортных
авторов в переводе на русский, ОСОБЕННО переводы книг
издательства O'Raily, все остальные (за редчайшим исключением)
- не рекомендуются. Т.е., написанные совками (ибо учебники
должны писать профессиональные преподаватели, а не
профессиональные программисты) и в мягкой обложке (естественно,
не считая издательства O'Raily)
На русском есть:
&dDКерниган, Пайк&d@
Керниган, Пайк, название почему-то перевели как "UNIX -
универсальная среда программирования". Warning! При наборе
русского издания наляпали ОКЕАН ачипяток и ашипок в части regex
и не только. Читать ее imho надо в параллель с manpages,
отдавая оным приоритет в стремных ситуациях.
Не смотря на это - отличная книжка. Мне было даже интересно ее
читать.
&dDГотье&d@
Готье "Руководство по операционной системе UNIX". Точнее,
SysV.release-unknown. Но тоже ничего для начала.
&dDБаурн&d@
Баурн (название я забыл) хорошая книжка и troff описан. Старая,
из серии "со стрелочками" из-ва "Мир".
&dDИнмос85&d@
Беляков Рабовер Фридман -- что-то на тему Инмос85. Интересно
почитать.
Но сильно устарела. МОЖНО НЕ ЧИТАТЬ
&dDМорис Дж. Бах. Архитектура операционной системы Unix&d@
Очень толково и доступно описаны "потроха" - идеи и алгоритмы
реализации ядра. Описание Unix изнутри. Написана на "языке C" с
комментариями. Книга весьма старая, но тем не менее тем, кто
захочет узнать больше - ЧИТАТЬ РЕКОМЕНДУЮ.
Бах Морис -- русский перевод его книги ходил в виде 480Кб
архива.
&dD"Мобильная опер. система"&d@
Беляков и Co. "Мобильная опер. система" (оранжевая книжечка в
мягкой обложке) -- компиляция из POSIX стандартов времен ок.
1989г. Маленькая такая, хороша как справочник.
и еще довольно много других...
&dD"UNIX/руководство системного администратора"&d@
"UNIX/руководство системного администратора", Эви Немет, Гарт
Снайдер, Скотт Сибас, Трент Р.Хент. Киев, bhv, 1997. 830 стр.,
50 тр.
Очень, очень достойная книжка. Помогает почти от всех
болезней. Единственное, что отсутствует - Интернет security, а
ВСЕ остальное есть. ОБЯЗАТЕЛЬНО КУПИТЬ.
&dD"Linux/введение в операционную систему"&d@
Автора выясню позже. Киев, bhv, 1997. 760 стр.
Издательство bhv, известное выпоском нескольких
высококласных книг по Unix, на этот раз напечатало откровенную
халтуру. Оригинал был весьма могословен и неряшливо написан.
Перевод еще хуже оригинала. КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЮ.
&dD * Где купить * &d@
&dDИздательство BHV"&d@
За последнее время издало несколько очень качественных переводных книг
по Unix и Internet
"BHV - Москва" 270-2032
1. "Дом технической книги" Ленинский пр., 40 (095) 137 6019
0633*
2. "Библио-Глобус" ул. Мясницкая, 6 (095) 928 8744
3. "Молодая Гвардия" ул. Б. Полянка, 28 (095) 238 0032
5001*
4. "Центр-Техника" ул. Петровка, 15 (095) 924 3624
5. ТД "Москва" ул. Тверская, 8 (095) 229 7355
6. "Дом книги" ул. Новый Арбат, 8 (095) 203 8242
7. "Дом педагогической ул. Большая Дмитровка, (095) 229 4392
книги" 7/5
8. "Мир" Ленинградский пр., 78 (095) 152 8282
9. "Новый" ш. Энтузиастов, 24 (095) 362 0923
10. "РиС" ул. Красного маяка, 11 (095) 313 8345
11. "Ридас" Новоданиловская наб., 9 (095) 954 3044
12. "Кнорус" Милютинский пер., 19/4 (095) 928 6269
13. "Мидикс" Ленинский пр., 29 (095) 955 4101
14. "Десс" Рогожский вал, 15 (095) 366 9295
______________________________________________________
* - телефоны, где что-то могут сказать про наличие книг
ЛИТЕК - мелкооптовая торговля от "КноРуса" 911-9863
911-9742 ул. Николо-Ямская, 45 под.2. Идти от м.Таганская
кольцевая, по Садовому кольцу вниз до б.Дровянного пер,
завернуть туда и до упора в ул. Николо-Ямскую. Перейти улицу и
направо до 45 дома(там меховое ателье) вход со двора.
Полуподвал
Информацию и можно получить
http://www.book.ru
http://www.bhv.ru
&dDКниги о Linux&d@
Алгоритм такой:
пойти в крупный книжный,
взять там все книжки по линуксу, какие есть,
потом попытаться каждую из них почитать 5-10 минут.
Если от книжки не тошнит - то ее вполне можно брать.
.
&dDНесколько управляющих команд Hayes-совместимого модема&d@
(Компиляциия из документации модемов ZyXEL 1496*, GVC-1440)
AT&F0 Factory setting
Или на ZyXEL включить модем с нажатой кнопкой
Enter или Data/Voice
ATZ0 Загрузить profile 0
AT&V Распечатать setup
AT&W0 Сохранить setup в profile 0
AT&Y0 При включении загружать profile 0
ATE0 Выключить эхо
atdpТЕЛЕФОННЫЙ НОМЕР Пульсовый набор номера
+++ Выйти из connect'а в командный режим
ATO Вернуться из командного режима в CONNECT
ATH Положить трубку
ATA Поднять трубку и ответить на звонок
ATS0=2 Снимать трубку после 2-го звонка
&dDКоманды, которые обычно и сами по себе установлены&d@.
AT&P1 Make / break 33/67 (Europe)
ATQ0 Возвращать код возврата
ATV1 Код возврата текстовый
&dDКоманды, которые возможно захочется установить&d@.
AT&L1 В режим выделенных линий
AT\N5 Запретить соединение БЕЗ сжатия MNP5 или V42bis
ATB6 Поставить скорость 2400 и ниже
ATL0 Самый тихий звук
ATM0 Speaker always off
&dDКоманды GVC-1440&d@
B_ B1 Bell mode (*)
B2 Autoscan mode
D_ R originate call in answer mode
W whait for second dialtone
, pause
@ wait for 5 seconds silence
! flash
; return to command mode after dialing
H 1 make busy
I [0-4] info
L 2 medium speacker
M 0 internal speacker off
1 internal speacker on until carrier
2
3
O 0 return to data mode
1 return to data mode and initiate equaliser retrain
Регистры
s0 autoanswer ring 0
s1 ring counter 0
s2 Escape code character +
s3 CR character 13
s4 LF character 10
s5 BS character 8
S6 dial tone whait time 2 sec
S7 remote carrier whait time 45 sec
s8 comma pause time 2 sec
s9 carrier dettect responce time 6 *1/10 sec
s10 carrier loss time 14 *1/10 sec
s11 touch tone dialing speed 95 ms
s12 esc character detect time 50 1/50 sec
s14 bitmap
s16 bitmap
s18 modem test timer 0
s21 bitmap
s22 bitmap
s23 bitmap
s25 DTR delay 5 sec
s26 RTS to CTS delay interval 1 *1/100 sec
s27 bitmap
s28 bitmap
.
&dDКонфигурирование сервера HTTPD и формат языка HTML&d@
Внимание Этот текст будет слегка более доступным
для понимания, если вы посмотрите на него в исходном виде -
&dD"Document source"&d@
&dDФайлы в каталогах с документами&d@
index.html Если просят выдать каталог, то выдают index
если его нет, выдается просто оглавление каталога
HEADER.html Его содержимое добавляется перед началом листинга
README.html Его содержимое добавляется к концу листинга
.htaccess Управляющий файл с локальными настройками текущей директории
Разобраться стоит с этими характеристиками:
Alias - где то должна лежать расшифровка. а сервер будет
ее подставлять.
Вот только где ?
&dDСпецсимволы:&d@
Нужно задавать так:
& - &
" - "
> - >
< - <
>> - >>
<< - <<
(C) - © или ©
(R) - ®
-
-
<= - <=
>= - >=
Extra space -
&dDЗаголовки&d@
Заголовок всего документа
Заголовок 2-го уровня
Ссылка на подраздел в документе
Ссылка открываемая в другом окне
Так это место должно быть помечено в Документе
&dDНенумерованный список (Unnumbered list)&d@
Одна позиция
Другая позиция
&dDПронумерованный список (Numbered list)&d@
Первая позиция
Вторая позиция
&dDЕсть так же и более "мелкие" списки:&d@
1 2 ,
1 2
&dDСписки с подзаголовками (Definition list)&d@
Название пункта
Текст, расписывающий содержимое пункта
Название пункта
Текст, расписывающий содержимое другого пункта
Преформатированный фрагмент текста
Преформатированный фрагмент текста в ширину 80
Устанавливает общий отступ вправо.
Вынесенный вправо фрагмент текста
Горизонтальная черта
Окончание параграфа
Жесткий конец строки
Текст между этими тагами не будет переноситься
на новую сторку каким бы длинным он не был
&dDФизические стили&d@
Bold жирный текст
Itallic курсив текст
Underline подчеркнутый Работает только в Netscape 3
Typewriter текст с фонтом фиксированной ширины
Blink мигающий текст
Strike перечеркнутый текст
&dDЛогические стили&d@
Definition. Определяемое слово italic
Emphasis. Ударение italic
Titles of books. Цитата italic
Programm. Программный текст fixed
User keyboard entry. bold fixed
Status message fixed
Variable. italic
Strong emphasis. bold
Выделяется адрес italic
&dDУправление цветами и фонтами&d@
_BODY_ таги срабатывают только если расположены в самом начале документа
А так устанавливают собственные цвета во всем документе
А так делали траурные колера, когда протестовали.
Текст бОльшего размера, и покрашенный в красный цвет, с заданным типом фонта
Дальше пойдет текст с фонтом заданного размера
а так же background звук
&dDТак выглядит обычная ссылка.&d@
Low impact
&dDТак вставляют картинку&d@
Если нужен текст сбоку
от картинки
Отступ текста от картинки
ALT - что написать, если картинка не читается,
LOWRES - перед рисованием большой картинки загрузить эту - маленькую
Так подкладывают BACKGROUND
&dDТаблички -&d@
tr - задает строку Столбец Столбец
Внутри таблицы может быть такой таг, Подзаголовок?
Табличка фиксированной ширины, не зависящая от размеров внутреннего текста
&dDВстроенная imagemap&d@
&dDО протоколе HTTP/1.*&d@
Клиент открывает tcp соединение с хостом www.host.com на порт
(обычно 80) и говорит туда
GET /local/url/file/name.html HTTP/1.0
Host: www.host.com
Http_referer: url_документа_на_котором_стоял_клиент
Еще некоторое количество заголовков,
которые рассказывают серверу, кто с ним имеет дело.
Все они, кроме GET необязательны
. . .
^M^J - пустая строка - конец заголовков - конец запроса
Обратно вываливается ответ сервера:
http-шные заголовки
на нескольких строках
^M^J - пустая строка
Собственно запрошенный документ as is
&dDУпражнение:&d@ скажите
$ telnet www 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /index.html HTTP/1.0
И потом два раза нажмите на Enter
&dDКак работет докачка в HTTP/1.1 протоколе?&d@
В запрос вставляется специальное поле "Range: bytes nnn-".
Сервер с докачкой возвращает код 206 - "Часть содержимого" и
передает запрошенную часть файла. Если сервер не поддерживает
докачки, он просто возвращает 200 и высылает весь файл как при
обычном запросе.
&dDSSI - Server Side Includes&d@
Полная спецификация лежит, например на www.apache.org
0. Чтобы SSI-файлы взводили Last-modified, добавить в конфиг
XBitHack full
и сделать им chmod g+x file.shtml
1. Чтобы SSI выполнялись, необходимо задать в конфигурационных
файлах сервера:
/etc/httpd/conf/access.conf :------------------------
# "Включить"
Options +Includes # или даже Options All
/etc/httpd/conf/srm.conf :------------------------
AddType text/html .shtml
AddHandler server-parsed .shtml
2. Тогда SSI отрабатываются только в файлах с расширением .shtml
Примеры:
charset=
The value will often be enclosed in double quotes; many comн
mands only allow a single attribute-value pair.
The allowed ELEMENTS are:
config - параметры парсинга
Атрибуты config
errmsg - сообщение об ошибке, посылаемое клиенту
sizefmt - формат размера файла
timefmt - формат даты модификации файла
var - напечатать имя переменной
exec - выполнить shell или CGI-скрипт
cgi - (%-encoded) URL relative path to the CGI script.
cmd - выполнить shell
fsize - напечатать размер файла
file - относительное имя файла
virtual -(%-encoded) URL-path relative файла
flastmod - последннее время модификации файла
include - вставить документ
file - вставляемый файл
virtual - URL - только на этом же хосте
Include variables
These are available for the echo command, and to any program
invoked by the document.
DATE_GMT
The current date in Greenwich Mean Time.
DATE_LOCAL
The current date in the local time zone.
DOCUMENT_NAME
The filename (excluding directories) of the document requested
by the user.
DOCUMENT_URI
The (%-decoded) URL path of the document requested by the user.
Note that in the case of nested
include files, this is not then URL for the current document.
LAST_MODIFIED
The last modification date of the document requested by the user.
If server side includes are enabled, you will see data values below:
The date is:
The current version of the server
The CGI gateway version
The server name
This file is called:
This file's URI
The query string
This file was last modified:
The size of the unprocessed file
sample.html was last modified
You are using
You came from
# Эмуляция SSI в perl-cgi
if (//) {
print $`;$tmp = $';
open (INC,"$inc") || die "Can't Open $inc: $!\n";
while () {
if (//) {
@time = localtime ( time() ); $time[4]++;
if ($time[4] < 10) { $time[4] = "0" . "$time[4]"; }
s//$time[3].$time[4].$time[5]/g;
}
print $_;
}
close(INC);
print "$tmp";
}
&dDУправление доступом через httpd.conf&d@
SetEnvIfNoCase Referer rusf\.ru internal_referer
SetEnvIfNoCase User-Agent Teleport internal_referer
SetEnvIfNoCase User-Agent Vampire internal_referer
SetEnvIfNoCase User-Agent ReGet internal_referer
SetEnvIfNoCase User-Agent GetRight internal_referer
SetEnvIfNoCase User-Agent Wget internal_referer
ErrorDocument 403 http://rusf.ru/books/index.htm
order deny,allow
deny from all
allow from env=internal_referer
# No offline browsers в robots.txt
User-Agent: DISCo Pump, Wget, WebZIP, Teleport Pro, WebSnake, Offline
Explorer, Web-By-Mail
Disallow: /
&dDCGI - спецификация интерфейса между сервером httpd&d@
и внешними, вызываемыми программами - gateeway'ями.
Сам CGI-script должен лежать в /home/httpd/cgi-bin
тогда его находят (или в других каталогах, описанных в acces.conf
Данные передаются в командной строке, через переменные
окружения, и через стандартный ввод. Возвращаются на
стандартный вывод, в начале должна стоять "волшебная строка"
Если добавить в коннфигурационный файл
/etc/httpd/conf/srm.conf :------------------------
AddType application/x-httpd-cgi .cgi
То CGI-скрипты можно будет клась в любой подкаталог дерева
документов - с расширением .cgi
&dDФормы и индексы&d@
Войти в файл, и спозиционироваться на строку с шаблоном "cl"
http://hoohoo.ncsa.uiuc.edu/file.html#cl
Request for a CGI script with no extra path information and no query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi
Request for a script with extra path information, and no query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path
Request for a script with no extra path information, and an ISINDEX query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?query
Request for a script with extra path information as well as an ISINDEX query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path?a+query
Вызывается одна и та же программа, но ей передается 0,1,1 или 2 аргумента:
extra path - "добавочный маршрут", идущий вслед за именем екзешника
query - длинная строка после знака "?"
на extra path работает image map - им передается имя описателя картинки
query передается заполненным ISINDEX
&dDCGI-скрипту передаются такие параметры:&d@
Параметры передаются в переменных окружения.
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=localhost
HTTP_REFERER=http://www.ac.msk.su:80/cgi-bin/html-KOI?KSP/bachurin.txt
REQUEST_METHOD=GET
QUERY_STRING=query
PATH_INFO=/marshrut
PATH_TRANSLATED=/home/httpd/docs/marshrut
SCRIPT_NAME=/cgi-bin/proba
HTTP_USER_AGENT=NCSA Mosaic for the X Window System/2.4 libwww/2.12 modified
А теперь вот как оформляются формы с checkbox'ами:
# ISINDEX - параметр запроса передается пргограмме CGI в $1
# В форме METHOD=GET - там вызывается команда которой передается
# аргумент в переменной окружения QUERY_STRING
# http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?button1=on&button2=off
# А вот как работает POST, и PUT. Дополнительная информация проталкивается
клиентом на сервер. Сервер подает ее cgi-программе на стандартный ввод.
длина посылаемого файла устанавливается в переменной окружения CONTENT_LENGTH
а тип данных - в CONTENT_TYPE
FORM ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi" METHOD="POST"
&dDЧто мы посылаем клиенту обратно:&d@
Status: 200 OK
Status: 404 File not found
Content-type: text/html
Содержимое, которое кидается сквозь нашего сервера - клиенту
Если я генерю не содержимое, а только ссылку, то:
Location: /path/doc.txt
или
Location: gopher://gopher.ncsa.uiuc.edu/
Генерим текст в чистом серверном виде - он поедет
клиенту сразу, без дополнительной фильтрации:
--- start of output ---
HTTP/1.0 200 OK
Date: Tuesday, 26-Dec-95 15:17:10 GMT
Server: NCSA/1.3
MIME-version: 1.0
Content-type: text/html
Last-modified: Tuesday, 24-Dec-95 15:15:41 GMT
Content-length: 3132
This is a plaintext document generated on the fly just for you.
--- end of output ---
Подставляйте туда соответствующие значения переменных
$SERVER_PROTOCOL $SERVER_SOFTWARE
&dDФенечки&d@
Автоподстановка URL с timeout'ом. Подставить в начало документа:
Дальше идет местный HTML-документ - который через 12 секунд будет
автоматически заменен на вышеуказанный URL
Вообще - таг META HTTP-EQUIV позволяет взвести дополнительные поля в
HTTP-заголовок документа. Например "насильственное взведение charset'а:
I'm entering for the first time from (city, state/country)
Content-type: text/html
Set-Cookie: cookiename=valueofcookie; expires=Saturday, 28-Feb-96 23:59:59 GMT; path=/cgi-bin/mycgiprogram
Эта штучка будет автоматом отсылаться в наш сервер клиентом, как только он ее получил
Подробнее см. http://citforum.ru/win/internet/html/c_what_is.shtml
Если сказать так, то клиент останется на старом месте, и не
будет переходить по ссылке
Status: 204 No Content
А такой линк позволяет сразу заполнить некоторые поля в mailto послании
tets
Самокликаемое письмо
> Была идея посылать в него сообщение когда мышкой над баннером проводят.
> (Когда баннер интересен, часто к нему курсор подводят)
> Но что-то я не допгр как это реализовать без hidden frame.
В правилах устанавливаешь, что у тебя _стандартный код_
твоей сетки содержит:
Когда клиент будет снизу _пересекать_ мышью твою однопиксельную
полоску будет автоклик, а чтоб клиента не напрягать -
пускай твой http://koshelev.ru/cgi-bin/bannerOver
возвращает код 204 No Content - т.е. _не переходить_ на линк а
остаться на старой странице.
&dDСсылка на которую переходят автоматически&d@
Достаточно навести на эту ссылку мышь, и броузер пойдет по
линку - без клика.
&dDПростые эксплойты&d@
MSIE 4.0. 4.01 can be crashed with a little help of the < EMBED > tag.
<EMBED SRC=file://C|/A.ABOUT_200_CHARACTERS_HERE___________________>
opens a dialog box and closes IE 4.0. the long file extension causes stack overrun.
--------cut here and save as crashmsie.html---------------------
Trying to crash IE 4.0
<EMBED
SRC=file://C|/A.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789>
40
80 160 170 180 190 200
</HTML>
---------------------------------------------------------------
&dDЗакрытие каталогов для внешних клиентов&d@
Создаем в каталоге файл .htaccess такого содержания
order deny,allow
deny from all
allow from polimos.ras.ru localhost
AuthType Basic
AuthName lenta.ru
AuthUserFile /home/www/passwd
# moshkow:1HrhNpfYnwTau стандартный crypt()
require valid-user
&dDСм. так же&d@
Константин Окраинец. Учебник по HTML из Дубны
Фреймы и прочие дополнения, возникшие в HTML 2.0 и HTML 3
.
&dDРемонт разрушенных файловых систем&d@
Практически единственное средство лечения разрушений файловой системы во
всех Unix - утилита &dDfsck&d@. Если не лечит она, то дело ваше почти безнадежно.
Я бы посоветовал в морг, но энтузиасты могут еще немного подергаться.
&dD * LINUX * &d@
Примечание: команды приведенные в примерах следует выполнять только
внимательно взвесив возможные последствия. Поэтому в примерах реальные
имена спецфайлов разделов жесткого диска заменены на &dD/dev/hd-name&d@
(в реальной жизни применяется /dev/hda2, /dev/hdb3 /dev/sda1...)
Тонкая рихтовка fs &dDtune2fs&d@ позволяет поменять настраиваемые параметры
файловой системы -c max-mount-counts -m reserved-blocks-percentage и т.п.
tune2fs -m 1 /dev/hd-name # найдет вам еще 50Mb свободного места,
# и позволит учинить на оставшемся клочке
# свободного места катастрофическую фрагментацию
Стандартное лечение файловой системы:
fsck -y -c -f /dev/hd-name
Форсированное лечение с проверкой и "замещением" bad-блоков
fsck -y -c -f /dev/hd-name
# -y неинтерактивное лечение "yes" на все вопросы
# -c найти bad-блоки readonly тестом и перенести в inod bad-блоков
# -f форсировать проверку (игнорировать флаг "fs is clean"
Если погиб основной суперблок, добавить ключ -b 8193 или -b 16385 ...
указав запасную копию. Номера запасных sb сообщает при разметке раздела
утилита newfs. (Вы конечно же сохранили ее листинг?)
Распечатать размещение служебных структур fs и параметры суберблока
могут команды &dDtune2fs -l&d@ и &dDdumpe2fs&d@
tune2fs /dev/hd-name
dumpe2fs /dev/hd-name
Если погибли _все_ копии суперблока - последний шанс &dDmke2fs -S&d@ прописать
_только_ структуры суперблоков и описатели групп, не трогая самих данных
mke2fs -S /dev/hd-name # Write superblock and group descriptors only
fsck -y /dev/hd-name # сразу всед за этим запустить fsck
И даже это еще не конец. Для сильных духом остается отладчик файловой
системы &dDdebugfs&d@
man debugfs
&dDПоведение в авариной ситуации&d@
Естественно, целее будете, если загрузитесь в single-user mode
Для этого перехватить при загрузке LILO-промпт (Left-alt)
И в команду загрузки добавить параметр single
Lilo: &dDlinux single&d@
В linux'овский single-user можно попасть только зная пароль root. Не зная
пароля, надо грузиться так:
Lilo: linux init=/bin/sh
или даже так (если подготовлена rescue-дискета с файловой системой unix)
Lilo: linux init=/bin/sh root=/dev/fd0H1440
Перемонтировать корневой раздел из readonly в write
mount -t ext2 -n -o remount,rw /dev/hd-root /
Смонтировать разрушенную fs, используая альтернативный суперблок
mount -t ext2 -o sb=8193,nocheck /dev/hd-name /mntname
Пдробности (вы будете смеяться):
man mount
.
&dDМаксим Мошков. Истории из жизни администратора Unix, или Грабли&d@
&dDИстория 1 со счастливым концом. Испорченный /etc/passwd&d@
&dD
> Один товарищ (не я :), это из Коми) решил своему root'y вместо положенного
> /sbin/sh сделать /bin/ksh
> Для чего отредактировал /etc/passwd, но неудачно, ошибся и назначил
> /sbin/ksh.
> Пробовали:
> $ su root -c /sbin/sh
> Не помогло. Теперь он горько плачет и хакера зовет.
> Можешь помочь, или суровое: переустанови юних?
&d@
Это мы проходили. Классика. Перво- наперво "никогда, НИКОГДА
не меняй shell у суперюзера..." :-)
0. Запустить shell из-под root'а все-таки можно: su root -m -s /bin/sh
Но если еще и пароль забыт, тогда - поможет загрузка в
single user mode или загрузка с CD/floppy/tape
1. Дать команду df, посмотреть минор/мажор у девайса, на
который монтируется корень, и затем почитать мануал по команде
mknod # mkdev, mknode, mksf - создать специальный файл
# или как там еще она называется
и записать на бумажке команду, которой создается
спец-файл /dev/root (или куда там монтируется "/"
2. Загрузиться с инсталляционного стриммера/дискеты/CD.
и там где уход на install/update/system maintance пойти на
"system maintence" (это всего навсего shell root'овый)
Осталось смонтировать /dev/root на /mnt
и редактировать /mnt/etc/passwd
&dDЗасада No 1&d@
Сразу после загрузки мини-системы специальных файлов
соответствующих жесткому диску нет (!). Сделать его ручками -
команда mknode уже записана на бумажке.
&dDЗасада No 2&d@
Редактор vi не запускается (Нет terminfo) Ну и черт с ним.
Придумаешь что нибудь. Например
echo "toor::0:0:Yet another Super-User:/:" >> /mnt/etc/passwd
^^^^^^
обрати внимание что >> а не > (Угадай почему :-)
а можно и так:
PATH=$PATH:/mnt/bin:/mnt/usr/bin export PATH
TERMINFO=/mnt/usr/lib/terminfo # или где он там
Короче - ты дома потренируйся, а потом в Коми напиши точные
имена файлов и команд, а то боюсь необученный админ сможет
промахнуться пару раз, а здесь промахиваться нельзя.
Приложение: Обход root passwd в Motorola Unix SVR4/88.
1. Посмотреть major/minor для / и /usr
104 0 /dev/root
104 3 /dev/dsk/m197_c0d0s3
2. Загрузка с ленты, уход на maintance .
3. Подмонтировать разделы диска, соответствующие / и /usr, с
восстановлением файловой системы (т.к. система была выключена некорректно
при отсутствии root пароля).
mkdir /mnt
mknod /dev/rootn b 104 0
/etc/fs/ufs/fsck /dev/rootn
mount -F ufs /dev/rootn /mnt
аналогично для /usr
mknod /dev/usr3 b 104 3
/etc/fs/ufs/fsck /dev/usr3
mount -F ufs /dev/usr3 /mnt/usr
4. Отредактировать /etc/passwd, сделать беспарольного root
echo "toor::0:1:Adm:/:/sbin/sh" >> /mnt/etc/passwd
5. Cменить корень root'у (будет в /mnt)
chroot /mnt /sbin/sh
6. Обновить shadow
pwconv
Все.
&dDИстория 2 почти о том же. Испорченный /etc/fstab&d@
Date: 20 Apr 1997
From: Bernshtam Pavel (barnshte@CS.bgu.ac.il)
У меня тоже было - запортил я /etc/fstab и сделал reboot не
заметив ошибки - бабах - поднимается (а это был Axil с SunOS
4.1) в single user.
я делаю ls - Command not found - понятно - не замоунтил /usr
посмотрел я на другом SUN'е что есть в /sbin - нашел mount,
обрадовался - сделал /sbin/mount /usr.
Есть VI!
Помучался пока установил нужный set TERM с полчаса - запустил
VI. открываю fstab - фигня со строками (вот оно - не работайте
в PICO, учите VI !!!), исправил, save'лю - а root partition то
READ ONLY !!!
Делаю stop-A.
Слава богу, посоветовали мне, что в boot-мониторе можно сделать
b -rw (замаунтить с write), после этого я повторил всю
процедуру с mount и VI и исправил /etc/fstab.
а... еще забыл - VI не запускался пока я /var не замаунтил, т.к
/tmp - линк на /var/tmp , а VI без /tmp не идет.
/* а на Linux специальная команда есть - перемонтироваться на
read-write - ее из single-user-mode можно выполнить
mount -n -o remount /
*/
&dDКоманда rm -rf в SCO&d@
Ввиду того, что под шаблон ".*" подходит каталог ".."
НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ rm -r .*
(Большинство unix'ов прощают подобную ошибку, но НЕ ВСЕ)
&dD
From: Павел Северов
"... решил я на нашем SCO-шном сервере с Oraclовской базой
расчистить немного свободного места на диске..."
# cd /usr/tmp
# rm -rf *
гляжу, а там всякий хлам остался /usr/tmp/.X11-0 ну и т.п.
А я тогда
# rm -rf .* # ОЙ!
# du
ldd: Can not open file
# df
ldd: Can not open file
# ls -al
ldd: Can not open file
&d@
. . .
У этой истории грустный конец. Вы уже догадались, что
/usr/tmp/.* содержит в себе /usr/tmp/.. После reboot'а машина,
не найдя каталога /usr уже не ожила.
&dDУдаленный доступ или "Запасной ключ от сейфа лежит в сейфе"&d@
Хорошая штука, Unix + TCP/IP - можно отконфигурить машину
у черта на куличках не вставая с рабочего места и даже не
выходя из дома.
&dDИстория 1.&d@ Вот и я однажды менял то ли IP-адрес, то ли
роутинг на удаленной машине... Короче - промахнулся, сказал
ifconfig eth0 down
Вот собственно и все. Сказать
ifconfig eth0 NEW-IP было уже некому.
Вы конечно догадались, что _НАДО БЫЛО_ одной строкой писать
ifconfig eth0 down ; ifconfig eth0 NEW-IP up ; route add ...
&dDИстория 2.&d@ Захотелось повысить уровень security. Пишем
в /etc/hosts.deny
ALL:ALL
в /etc/hosts.allow
ALL:193.263.12.13
^^^ вроде бы маленькая ошибочка, цифры переставить, а
нельзя - я уже успел отлогиниться.
&dDУдаленный "доступ" или "Ключа вообще нет"&d@
Повис у нас однажды сервер, надо reset нажать,
перегрузить, а комната заперта, и ключи уже унесли. И telnet'ом
не войдешь - некуда.
Вырубили свет на всем этаже, включили вновь - voila!
&dDНовая /lib/libc.so - апгрейд LIB C&d@
Linux. 1993 год. Потребовалось подменить LibC. Ну, вперед,
делов-то - старую передвинуть, новую - на ее место.
cd lib
mv libc.so libc.so-old
mv libc.so-new libc.so
ldd: Can not execute, shared library not found
Finish.
Пришлось грузиться с дискеты, монтировать hd.
Но, как это ни смешно, в следующий раз те же команды,
записанные в одну строку, сработали. Или библиотечка в кэше
оказалась... Темна вода в Linuxе. Впрочем, файлы из каталога
/sbin - обычно staticaly-linked - им для работы разделяемая
libc без надобности.
&dDИстория 1. Trusted mode - безопасность превыше всего&d@
В HP-UX новички администраторы очень любят sam'ом поиграть
- GUI, мышиный интерфейс - администрируй на здоровье. Вот
только читать сообщения надо - а они по-английски все.
Очень легко, одним "Ok" в SAM включается перевод системы в
trusted режим. Включают, и не замечают. А замечают через пару
дней, когда с трех раз не угадают пароль root. В trusted режиме
логин после этого блокируется совсем, а другого юзера ПЕРЕД
ЭТИМ завести - не догадываются.
Как всегда - нас спасет single user mode: перехват
загрузки в prompt IPL и затем
IPL> hpux -is
А затем запуск sam. И переконвертировать систему в "untrusted"
# mount -a
# sam
Но если вы ухитрились еще и пароль на boot включить - то
помогайте себе сами.
&dDИстория 2. Security class C2: о том же, но в SCO&d@
Security class C2 - это повышенная безопасность. И повышенный
геморрой для пользователей. И для администратора - тоже.
Привелось нам позвонить на защищенную SCO машину из Москвы
в Питер, по модему. Скорости getty с первого раза подобрать не
смогли, на логин прорывался 6-битный мусор, после третьей
попытки вместо getty Login мы увидели "Intruder attempts, tty
line /dev/modem disabled".
Через пару недель хозяин машины вернулся в Питер и вернул getty.
&dDScreen-сейвер и кнопка Enter&d@
Когда screen-saver гасит экран, что вы нажимаете? Не знаю, как остальные, а
я жму клавишу CTRL.
Один мой знакомый решил почистить каталог /tmp. Из-под root'а. набирает он
rm -rf /tmp/*, точнее хочет набрать, поскольку в момент
rm -rf /_ звонит телефон и его куда-то вызывают.
Через час он вернулся, увидел погашенный экран, и нажал _свою_ любимую
клавишу. Угадайте, какую?
.
Last-modified: Mon, 10 Sep 2001 12:43:31 GMT