Введение в системное администрирование Unix

Сетевая файловая система NFS - 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.

Оценочные скорости пакетов 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/сек

Для того, чтобы Unix-машина служила NFS сервером

На ней должны быть запущены следующие демоны:

  • 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)

    Активизация NFS

    Обычно, на машине со свежеустановленным Unix'ом NFS сервер не активизирован. Чтобы он запустился, системный администратор должен обеспечить выполнение условий перечисленных в предыдущем пункте. Для этого достаточно:

    Motorola 922

    После загрузки переходить на уровень выполнения 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

    Linux

    В файле /etc/rc.d/rc.inet2 раскомментируйте строки, запускающие демонов

    rpc.portmap
     rpc.nfsd
     rpc.mountd
     rpc.ugidd

    В файл /etc/exports вставьте строку

    / (rw)

    Перезагрузитесь

    Sun Solaris 1.1

    В файл /etc/exports вставьте строки...

    /home
     /usr

    Перезагрузитесь

    Sun Solaris 2.3

    В файле /etc/dfs/dfstab вставьте строки для экспортируемых файловых систем. (Формат указан в комментариях в этом файле)

    Перезагрузитесь

    Еще одна сетевая файловая система. 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. Тоже сетевая файловая система. Вот и все, что я могу про нее сказать.

    Конфигурирование automount-демона

    Авто-монтировщик - демон, запущенный на 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

    Самба: настройки и кириллизация

    При компиляции ядра задать

    CONFIG_SMB_FS=m
    CONFIG_SMB_NLS_DEFAULT=y
    CONFIG_SMB_NLS_REMOTE="cp866"
    
    smb.conf
    
    [global]
    client code page = 866
    character set = koi8-r

    /etc/fstab

    Монтирование MS-шары

    //server/f /f smbfs noauto,rw,username=yourlogin,
    passwd=blablabla,uid=1234,umask=000,iocharset=koi8-r,codepage=866 0 0
  • iocharset - кодировка на клиенте (т.е. у нас, на Linux - koi8-r)
  • codepage - кодировка на сервере (на винде - 866 иногда - cp866)
  • DNS - Domain Name Service

    Конфигурирование DNS-клиента

    Указываем наш dns-server

    /etc/resolv.conf :
    search moshkow.pp.ru sosed.msk.ru
    nameserver 127.0.0.1
    ;nameserver 194.8.2.1

    Порядок просмотра информации о именах хостов задается в

    /etc/host.conf : (Linux, BSD)
    order bind, hosts, nis
    multi on
    
    /etc/nsswitch.conf : (В Solaris, HP-UX)
    . . .
    hosts: files bind nis
    . . .

    Имя домена нашего хоста (Не всегда, но часто)

    /etc/defaultdomain :
    moshkow.pp.ru

    Как посмотреть зоны DNS

    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

    Результат на февраль 1997:

    ru 1400
    msk.ru 217
    spb.ru 490
    ras.ru 20
    msu.su 19
    rssi.ru 42

    Конфигурирование DNS-сервера

    Для этого нужно создать начальный конфиг-файл named.boot и в каталоге /var/named сложить файлы с описанием наших зон

    Пример заполнения файлов

    Моя зона 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

    Дополнительная информация

    $INCLUDE /var/named/header
    @
    $INCLUDE /var/named/fedfond-hosts-spisok
    @

    Пояснения:

    Первая строка содержит:

  • имя зоны с обязательной точкой в конце
  • предопределенные поля IN и SOA
  • имя сервера, на котором содержится заведомо правильная информация о зоне, с обязательной точкой на конце. При необходимости размещения вторичных серверов мы будем брать информацию о зоне именно с этого сервера.
  • почтовый адрес ответственного за сервер, в котором знак @ заменен на . а если требуется использовать . в левой части адреса, она должна быть префиксирована двумя знаками \ Именно по этому адресу будет отправлено сообщение в случае успешного делегирования зоны. Адрес в приведенном примере будет выглядеть как andrei.arkhipov@elvis.ru
  • открывающая круглая скобка
  • На следующих 5 строках описываются важные для зоны параметры:

  • Serial Определяет порядковый номер редакции файла с описанием зоны. Это число должно изменяться только в сторону увеличения и изменяться оно должно при каждом внесении изменения в файл описания зоны. Рекомендуемый формат:
    YYYYMMDDNN
    где YYYY - год, MM - месяц, DD - день, NN - порядковый номер внесения изменения в указанный день.
  • Refresh Каждые "refresh" секунд вторичные сервера проверяют основной на предмет увеличения значения "serial", и если это произошло обновляют у себя зону. Рекомендуемое значение: 86400, что составляет 24 часа.
  • Retry Если основной сервер был недоступен, вторичный будет производить повторные попытки каждые "retry" секунд. Рекомендуемое значение: 7200, что составляет 2 часа.
  • Expire Если в течение "expire" секунд вторичный сервер не смог соединиться с основным и обновить информацию о зоне, он считает себя неспособным давать ответы на запросы о зоне. Рекомендуемое значение: 2592000, что составляет 30 суток.
  • Minimum TTL Значение по умолчанию для времени, в течение которого сервер держит запись в кэше. Рекомендуемое значение: 345600, что составляет 4 суток.
  • Далее идет описание всех серверов зоны, причем сервер указанный в первой строке (в записи SOA) обязательно должен присутствовать в этом списке, а если необходимо размещение вторичных серверов на маших АО Релком (ns.spb.su и/или ns.ussr.eu.net), то и они должны присутствовать в списке, а также в заявке.

    В приведенном примере утверждается, что зона присутствует на серверах ns.elvis.ru и ns2.elvis.ru и требуется размещение вторичных серверов на ns.spb.su и ns.ussr.eu.net

    Обратите внимание, что все имена серверов заканчиваются точкой.

    UUCP - Unix to Unix Copy

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

    Если 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 поддерживается на двух уровнях:

  • Пользовательский. Это команды uucp - постановка файла в очередь на удаленную пересылку, и uux - постановка в очередь на пересылку удаленной команды.
  • Системный. Периодически, автоматически запускается демон uucico - (UUCP Copy in Copy out). Он созванивается с удаленными машинами по телефону. На удаленной машине также запускается "встречный" демон uucico. Наш демон "проталкивает" на удаленную машину все файлы, которые к этому времени накопились в очереди на отправку туда. После этого он "принимает" файлы, которые приготовила для нас удаленная машина (их к нам проталкивает "встречный" демон uucico, а наш принимает). После этого сеанс uucico заканчивается. А пользователи обнаруживают, что у них возникли новые файлы.
  • Предполагается, что системные администраторы на нашей и на удаленной машине не забыли правильно описать и проконфигурировать систему UUCP.

    Конфигурация нашей машины как UUCP клиента

    После этого наша машина сможет звонить на удаленные машины и посылать/забирать оттуда файлы. Для этого мы должны задать:

  • Наше собственное UUCP имя.
  • Имя(имена) удаленной(ых) UUCP системы.
  • Телефонный номер(а), по которому нужно туда звонить.
  • Login и пароль, которые выделены там для нашего uucp-account'а.
  • Порт, к которому подключен наш модем.
  • Наборщик - описание "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-узлам:

  • Узел Релком, имя узла kiae, телефоны: 9469984, 9469994. Вы зарегистрированы там под именем/паролем uufedurp/ABCd8
  • Ваше московское отделение, имя узла 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, чтобы они выполнялись автоматически, по несколько раз в сутки.

    Конфигурирование UUCP с использованием sysadm

    Все вышеперечисленные настройки можно сделать, используя утилиту системного администратора sysadm. Надо войти в меню network_services / basic_network

    Конфигурирование серверной части UUCP

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

  • Иметь описание звонящей нам uucp-системы в файле Systems - для клиента такое же, как и для сервера.
  • Проверить права доступа для клиента в файле Permitions
  • Завести для него специальный uucp-login
  • Убедиться, что модем стоит в "Auto-answer" режиме, и на порт /dev/modem запущена программа getty (или ttymon), позволяющая логиниться по телефону на порт /dev/modem
  • Описание добавляется в файл Systems, (номер телефона и название порта не обязательны), если мы сами не собираемся туда звонить, но я бы посоветовал их вписать, для единообразия.
  • В файле /etc/passwd завести строчку вида:
    uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico
    выполнить команды:
    pwconv
    passwd uupetrov
  • Любой терминальной программой "войти" в модемный порт и выполнить команды
    atz0 # Загрузить пользовательский profile 0
    ats0=1 # Регистр0=1 - снимать трубку после 1-го звонка
    atw0 # Сохранить текущий setup в profile 0
    aty0 # Чтобы при включении питания загружался профайл 0
    
    # atf # загрузить заводские установки, если вы запутались
     # с профайлами, можно сделать модему "reset"
  • Ввиду отсутствия коммуникационных программ в SVR4 (за исключением сумасшедшего "cu"), используйте "echo".
    echo atz0 > /dev/modem
     echo ats0=0 > /dev/modem
     echo atw0 > /dev/modem # и так далее
    А еще лучше gold, там есть режим прямой связи с любым портом.
  • В файле /etc/inittab иметь строчку вида:
    c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem -l contty
  • Что где лежит в системе UUCP

  • /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
  • Осталось настроить нашу электронную почту

    Если у вас самый простейший случай: вся ваша почта проходит через один "знающий" host, с которым вы соединены по uucp, то надо в файле /etc/sendmail.cf иметь такую строку:

    . . .
    # "Smart" relay host (may be null)
    DSuucp-dom:kiae
    . . .

    В этом случае вся ваша внешняя почта (т.е. отправляемая за пределы вашей локальной сети) будет переправляться по uucp на uucp -узел "kiae" и дальнейшей ее доставкой будет озабочен именно kiae. Предполагается, что он успешно справится с этой задачей.

    А еще чтобы было описание uucp-dom (ниже в том же файле). Кстати, чтобы всех окончательно запутать, sendmail.cf на Motorole лежит вовсе не в /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

    Проверка работоспособности и отладка конфигурации

    Для начала проверим, правильно ли подсоединен модем. Запускаем программу 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

    По результатам переписки

    ###следующий абзац написан "мелким шрифтом"(можно не читать)####

    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
     -- Конец цитаты --

    ################_конец_"мелкого шрифта"_#######################

    Solaris: настройка uucp по direct line

    В файле 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 - совсем не тот форце, которого хотелось мне)

    Чтоб заставить uucico ходить на телнетовский порт

    > в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177}

    port type pipe
     port command /bin/telnet -8E hostname

    Secure uucp по tcp

    Вариант 1. port type tcp with ssh-port forwarding

    НА СЕРВЕРЕ: конфигурите 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

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

    DHCPD: Сервер DHCP

    touch /var/lib/dhcpd/dhcpd.leases
    
    записываем в файл /etc/dhcpd.conf
    #########################################################
    #########################################################
    # временные параметры
    max-lease-time 604800;
    default-lease-time 86400;
    allow unknown-clients;
    
    # сетевые параметры локальной сети для настройки клиентов
    option routers 195.0.0.1;
    option broadcast-address 195.0.0.255;
    option domain-name-servers 195.0.0.2;
    option domain-name "your.domain.ru";
    
    # раздавать блок адресов
    subnet 195.0.0.0 netmask 255.255.255.0 {
    range 195.0.0.4 195.0.0.7;
    }
    
    # группа хостов с фиксированными адресами и именами
    group { use-host-decl-names true;
     host min { hardware-ethernet 0:0:39:8c:26:9e;
     fixed-address 195.0.0.3; }
     host lada { hardware-ethernet 0:0:39:8c:26:9a;
     fixed-address 195.0.0.2; }
    }
    #########################################################
    #########################################################
    
    #########################################################
    # для запуска dhcpd
    #########################################################
    
    dhcpd eth1 # запускаем сервер на eth1 интерфейс. Все
    
    ## эта команда скорее всего не понадобится (ибо исполняется при загрузке)
    # route add -hosts 255.255.255.255 dev eth1

    Клиент DHCP

    Вписать в файл /etc/sysconfig/network-scripts/ifcfg-eth0

    BOOTPROTO=dhcp

    И исполнить команду /etc/rc3.d/S10network restart скрипт сам проведет всю работу, обратится к клиентскому демону dhcpcd, и сохранит полученныые от dhcpd данные в каталоге

    /etc/dhcpc:
     -rw------- 1 root root 265 Apr 1 10:22 dhcpcd-eth0.cache
     -rw-r--r-- 1 root sys 507 Apr 1 10:22 dhcpcd-eth0.info
     -rw-r--r-- 1 root sys 5 Apr 1 10:22 dhcpcd-eth0.pid

    DHCP клиент pump, если он, конечно, установлен

    pump -i eth0 # получить адрес
    pump -i eth0 --status # посмотреть статус

    True64: DHCP Join daemon

    В True64 dhcp обеспечивает демон joind.

    cjoin # Конфигурационный GUI
    
    jdbdump > tmpfile # выгрузить конфиг в текстовый файл
    vi tmpfile
    jdbmod -e tmpfile # применить новый конфиг join-демона

    Настройка времени, сервер синхронизации времени XNTPD

    Настройка временной зоны: Linux

    Каталог файлов с описаниями временных зон /usr/share/zoneinfo/

    Список кратких описаний доступных временных зон /usr/share/zoneinfo/zone.tab

    Компилятор временных зон zic filename

    Декомпилятор временных зон отсутствует

    Временная зона записана в /etc/timezone

    echo Europe/Moscow > /etc/timezone

    и одновременно залинкована на /etc/localtime

    ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

    Установка времени вручную

    date 082816452003 # MMDDhhmm[YYYY]
    hwclock -w # прописать текущее время в HW-clock
    
    FILES
     /etc/adjtime /usr/lib/zoneinfo/ /dev/rtc

    Сервер со своими часами

    /etc/ntp.conf
    
    server	127.127.1.0	# local clock
    fudge	127.127.1.0 stratum 10
    
    driftfile /etc/ntp/drift
    broadcastdelay	0.008
    
    # права доступа: всем - ничего, localhost - все, клиентам - readonly
    restrict default ignore
    restrict 127.0.0.1
    restrict 195.0.0.0 mask 255.255.255.0 notrust nomodify notrap

    Клиент

    1 вариант: берем время несколько раз в день, с запуском через crontab:

    1 1/4 * * * ntpdate -b ntp.server1.name ntp.server2.name

    2 вариант: берем время из бродкастов

    /etc/ntp.conf :
    
    broadcast yes
    driftfile /etc/ntp/drift

    3 вариант: берем время с сервера, через XNTPD

    /etc/ntp.conf :
    
    server	ntp.server.name
    driftfile /etc/ntp/drift
    
    # Проследить, чтоб при начальной загрузке запускался xntpd

    Система печати в Unix. LP spoolling

    (описана система печати в System V)

    Печатать, конечно, можно и так: cat file > /dev/lp. Но в многопользовательской системе такой фокус не всегда пройдет. Поэтому печатаемый файл ставят в очередь на печать.

    Имеем принтер. У принтера есть

  • ИМЯ_ПРИНТЕРА - придумывается администратором.
  • ПОРТ_ПРИНТЕРА - специальный файл в который надо выталкивать данные для печати.
  • ИНТЕРФЕЙСНАЯ_ПРОГРАММА - программа, которая как раз и будет этим заниматься.
  • Если у нас нормально сконфигурирована система печати, то печататься можно так:

    lp -d ИМЯ_ПРИНТЕРА file
     или, если мы хотим напечатать на "default" принтере
     cat file | lp
    
     lpstat Посмотреть в каком состоянии очередь печати
    
     cancel [идентификатор_запроса ...] [принтер ...]
     Срубить запрос на печать

    lp просто складывает файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ lpsched обнаруживает вновь поступивший файл, ставит его в очередь на печать, и, когда очередь доходит, запускает наконец ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход которой берется из печатаемого файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.

    Подключить к системе новый принтер

    ---------------------------------------------------------------
     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-процедуры, перекодирующими печатаемый файл в формат соответствующего принтера.

    Примеры

    lpadmin -pstar1 -i/udd/print/inter -v/dev/xpit0 # локальный принтер
    lpadmin -pstar1 -mdumb -v/dev/lpt1

    Подключить к системе удаленный принтер (ключи варьируются для разных версий 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

    Файлы

    /usr/lib/lp/model # Образцы интерфейсных программ (модели)
    
    /etc/lp # Каталог конфигурации системы LP
    
    /var/spool/lp/* # Каталоги с очередями
    
    man lpadmin # Естественно!

    Linux

    LinuxPrinting.org Printer Database
    http://linuxprinting.org/printer_list.cgi
    Страницы:

    Стандартной сетевой файловой системой для 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.

    Оценочные скорости пакетов 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/сек

    Для того, чтобы Unix-машина служила NFS сервером

    На ней должны быть запущены следующие демоны:

  • 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)

    Активизация NFS

    Обычно, на машине со свежеустановленным Unix'ом NFS сервер не активизирован. Чтобы он запустился, системный администратор должен обеспечить выполнение условий перечисленных в предыдущем пункте. Для этого достаточно:

    Motorola 922

    После загрузки переходить на уровень выполнения 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

    Linux

    В файле /etc/rc.d/rc.inet2 раскомментируйте строки, запускающие демонов

    rpc.portmap
     rpc.nfsd
     rpc.mountd
     rpc.ugidd

    В файл /etc/exports вставьте строку

    / (rw)

    Перезагрузитесь

    Sun Solaris 1.1

    В файл /etc/exports вставьте строки...

    /home
     /usr

    Перезагрузитесь

    Sun Solaris 2.3

    В файле /etc/dfs/dfstab вставьте строки для экспортируемых файловых систем. (Формат указан в комментариях в этом файле)

    Перезагрузитесь

    Еще одна сетевая файловая система. 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. Тоже сетевая файловая система. Вот и все, что я могу про нее сказать.

    Конфигурирование automount-демона

    Авто-монтировщик - демон, запущенный на 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

    Самба: настройки и кириллизация

    При компиляции ядра задать

    CONFIG_SMB_FS=m
    CONFIG_SMB_NLS_DEFAULT=y
    CONFIG_SMB_NLS_REMOTE="cp866"
    
    smb.conf
    
    [global]
    client code page = 866
    character set = koi8-r

    /etc/fstab

    Монтирование MS-шары

    //server/f /f smbfs noauto,rw,username=yourlogin,
    passwd=blablabla,uid=1234,umask=000,iocharset=koi8-r,codepage=866 0 0
  • iocharset - кодировка на клиенте (т.е. у нас, на Linux - koi8-r)
  • codepage - кодировка на сервере (на винде - 866 иногда - cp866)
  • DNS - Domain Name Service

    Конфигурирование DNS-клиента

    Указываем наш dns-server

    /etc/resolv.conf :
    search moshkow.pp.ru sosed.msk.ru
    nameserver 127.0.0.1
    ;nameserver 194.8.2.1

    Порядок просмотра информации о именах хостов задается в

    /etc/host.conf : (Linux, BSD)
    order bind, hosts, nis
    multi on
    
    /etc/nsswitch.conf : (В Solaris, HP-UX)
    . . .
    hosts: files bind nis
    . . .

    Имя домена нашего хоста (Не всегда, но часто)

    /etc/defaultdomain :
    moshkow.pp.ru

    Как посмотреть зоны DNS

    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

    Результат на февраль 1997:

    ru 1400
    msk.ru 217
    spb.ru 490
    ras.ru 20
    msu.su 19
    rssi.ru 42

    Конфигурирование DNS-сервера

    Для этого нужно создать начальный конфиг-файл named.boot и в каталоге /var/named сложить файлы с описанием наших зон

    Пример заполнения файлов

    Моя зона 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

    Дополнительная информация

    $INCLUDE /var/named/header
    @
    $INCLUDE /var/named/fedfond-hosts-spisok
    @

    Пояснения:

    Первая строка содержит:

  • имя зоны с обязательной точкой в конце
  • предопределенные поля IN и SOA
  • имя сервера, на котором содержится заведомо правильная информация о зоне, с обязательной точкой на конце. При необходимости размещения вторичных серверов мы будем брать информацию о зоне именно с этого сервера.
  • почтовый адрес ответственного за сервер, в котором знак @ заменен на . а если требуется использовать . в левой части адреса, она должна быть префиксирована двумя знаками \ Именно по этому адресу будет отправлено сообщение в случае успешного делегирования зоны. Адрес в приведенном примере будет выглядеть как andrei.arkhipov@elvis.ru
  • открывающая круглая скобка
  • На следующих 5 строках описываются важные для зоны параметры:

  • Serial Определяет порядковый номер редакции файла с описанием зоны. Это число должно изменяться только в сторону увеличения и изменяться оно должно при каждом внесении изменения в файл описания зоны. Рекомендуемый формат:
    YYYYMMDDNN
    где YYYY - год, MM - месяц, DD - день, NN - порядковый номер внесения изменения в указанный день.
  • Refresh Каждые "refresh" секунд вторичные сервера проверяют основной на предмет увеличения значения "serial", и если это произошло обновляют у себя зону. Рекомендуемое значение: 86400, что составляет 24 часа.
  • Retry Если основной сервер был недоступен, вторичный будет производить повторные попытки каждые "retry" секунд. Рекомендуемое значение: 7200, что составляет 2 часа.
  • Expire Если в течение "expire" секунд вторичный сервер не смог соединиться с основным и обновить информацию о зоне, он считает себя неспособным давать ответы на запросы о зоне. Рекомендуемое значение: 2592000, что составляет 30 суток.
  • Minimum TTL Значение по умолчанию для времени, в течение которого сервер держит запись в кэше. Рекомендуемое значение: 345600, что составляет 4 суток.
  • Далее идет описание всех серверов зоны, причем сервер указанный в первой строке (в записи SOA) обязательно должен присутствовать в этом списке, а если необходимо размещение вторичных серверов на маших АО Релком (ns.spb.su и/или ns.ussr.eu.net), то и они должны присутствовать в списке, а также в заявке.

    В приведенном примере утверждается, что зона присутствует на серверах ns.elvis.ru и ns2.elvis.ru и требуется размещение вторичных серверов на ns.spb.su и ns.ussr.eu.net

    Обратите внимание, что все имена серверов заканчиваются точкой.

    UUCP - Unix to Unix Copy

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

    Если 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 поддерживается на двух уровнях:

  • Пользовательский. Это команды uucp - постановка файла в очередь на удаленную пересылку, и uux - постановка в очередь на пересылку удаленной команды.
  • Системный. Периодически, автоматически запускается демон uucico - (UUCP Copy in Copy out). Он созванивается с удаленными машинами по телефону. На удаленной машине также запускается "встречный" демон uucico. Наш демон "проталкивает" на удаленную машину все файлы, которые к этому времени накопились в очереди на отправку туда. После этого он "принимает" файлы, которые приготовила для нас удаленная машина (их к нам проталкивает "встречный" демон uucico, а наш принимает). После этого сеанс uucico заканчивается. А пользователи обнаруживают, что у них возникли новые файлы.
  • Предполагается, что системные администраторы на нашей и на удаленной машине не забыли правильно описать и проконфигурировать систему UUCP.

    Конфигурация нашей машины как UUCP клиента

    После этого наша машина сможет звонить на удаленные машины и посылать/забирать оттуда файлы. Для этого мы должны задать:

  • Наше собственное UUCP имя.
  • Имя(имена) удаленной(ых) UUCP системы.
  • Телефонный номер(а), по которому нужно туда звонить.
  • Login и пароль, которые выделены там для нашего uucp-account'а.
  • Порт, к которому подключен наш модем.
  • Наборщик - описание "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-узлам:

  • Узел Релком, имя узла kiae, телефоны: 9469984, 9469994. Вы зарегистрированы там под именем/паролем uufedurp/ABCd8
  • Ваше московское отделение, имя узла 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, чтобы они выполнялись автоматически, по несколько раз в сутки.

    Конфигурирование UUCP с использованием sysadm

    Все вышеперечисленные настройки можно сделать, используя утилиту системного администратора sysadm. Надо войти в меню network_services / basic_network

    Конфигурирование серверной части UUCP

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

  • Иметь описание звонящей нам uucp-системы в файле Systems - для клиента такое же, как и для сервера.
  • Проверить права доступа для клиента в файле Permitions
  • Завести для него специальный uucp-login
  • Убедиться, что модем стоит в "Auto-answer" режиме, и на порт /dev/modem запущена программа getty (или ttymon), позволяющая логиниться по телефону на порт /dev/modem
  • Описание добавляется в файл Systems, (номер телефона и название порта не обязательны), если мы сами не собираемся туда звонить, но я бы посоветовал их вписать, для единообразия.
  • В файле /etc/passwd завести строчку вида:
    uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico
    выполнить команды:
    pwconv
    passwd uupetrov
  • Любой терминальной программой "войти" в модемный порт и выполнить команды
    atz0 # Загрузить пользовательский profile 0
    ats0=1 # Регистр0=1 - снимать трубку после 1-го звонка
    atw0 # Сохранить текущий setup в profile 0
    aty0 # Чтобы при включении питания загружался профайл 0
    
    # atf # загрузить заводские установки, если вы запутались
     # с профайлами, можно сделать модему "reset"
  • Ввиду отсутствия коммуникационных программ в SVR4 (за исключением сумасшедшего "cu"), используйте "echo".
    echo atz0 > /dev/modem
     echo ats0=0 > /dev/modem
     echo atw0 > /dev/modem # и так далее
    А еще лучше gold, там есть режим прямой связи с любым портом.
  • В файле /etc/inittab иметь строчку вида:
    c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem -l contty
  • Что где лежит в системе UUCP

  • /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
  • Осталось настроить нашу электронную почту

    Если у вас самый простейший случай: вся ваша почта проходит через один "знающий" host, с которым вы соединены по uucp, то надо в файле /etc/sendmail.cf иметь такую строку:

    . . .
    # "Smart" relay host (may be null)
    DSuucp-dom:kiae
    . . .

    В этом случае вся ваша внешняя почта (т.е. отправляемая за пределы вашей локальной сети) будет переправляться по uucp на uucp -узел "kiae" и дальнейшей ее доставкой будет озабочен именно kiae. Предполагается, что он успешно справится с этой задачей.

    А еще чтобы было описание uucp-dom (ниже в том же файле). Кстати, чтобы всех окончательно запутать, sendmail.cf на Motorole лежит вовсе не в /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

    Проверка работоспособности и отладка конфигурации

    Для начала проверим, правильно ли подсоединен модем. Запускаем программу 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

    По результатам переписки

    ###следующий абзац написан "мелким шрифтом"(можно не читать)####

    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
     -- Конец цитаты --

    ################_конец_"мелкого шрифта"_#######################

    Solaris: настройка uucp по direct line

    В файле 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 - совсем не тот форце, которого хотелось мне)

    Чтоб заставить uucico ходить на телнетовский порт

    > в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177}

    port type pipe
     port command /bin/telnet -8E hostname

    Secure uucp по tcp

    Вариант 1. port type tcp with ssh-port forwarding

    НА СЕРВЕРЕ: конфигурите 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

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

    DHCPD: Сервер DHCP

    touch /var/lib/dhcpd/dhcpd.leases
    
    записываем в файл /etc/dhcpd.conf
    #########################################################
    #########################################################
    # временные параметры
    max-lease-time 604800;
    default-lease-time 86400;
    allow unknown-clients;
    
    # сетевые параметры локальной сети для настройки клиентов
    option routers 195.0.0.1;
    option broadcast-address 195.0.0.255;
    option domain-name-servers 195.0.0.2;
    option domain-name "your.domain.ru";
    
    # раздавать блок адресов
    subnet 195.0.0.0 netmask 255.255.255.0 {
    range 195.0.0.4 195.0.0.7;
    }
    
    # группа хостов с фиксированными адресами и именами
    group { use-host-decl-names true;
     host min { hardware-ethernet 0:0:39:8c:26:9e;
     fixed-address 195.0.0.3; }
     host lada { hardware-ethernet 0:0:39:8c:26:9a;
     fixed-address 195.0.0.2; }
    }
    #########################################################
    #########################################################
    
    #########################################################
    # для запуска dhcpd
    #########################################################
    
    dhcpd eth1 # запускаем сервер на eth1 интерфейс. Все
    
    ## эта команда скорее всего не понадобится (ибо исполняется при загрузке)
    # route add -hosts 255.255.255.255 dev eth1

    Клиент DHCP

    Вписать в файл /etc/sysconfig/network-scripts/ifcfg-eth0

    BOOTPROTO=dhcp

    И исполнить команду /etc/rc3.d/S10network restart скрипт сам проведет всю работу, обратится к клиентскому демону dhcpcd, и сохранит полученныые от dhcpd данные в каталоге

    /etc/dhcpc:
     -rw------- 1 root root 265 Apr 1 10:22 dhcpcd-eth0.cache
     -rw-r--r-- 1 root sys 507 Apr 1 10:22 dhcpcd-eth0.info
     -rw-r--r-- 1 root sys 5 Apr 1 10:22 dhcpcd-eth0.pid

    DHCP клиент pump, если он, конечно, установлен

    pump -i eth0 # получить адрес
    pump -i eth0 --status # посмотреть статус

    True64: DHCP Join daemon

    В True64 dhcp обеспечивает демон joind.

    cjoin # Конфигурационный GUI
    
    jdbdump > tmpfile # выгрузить конфиг в текстовый файл
    vi tmpfile
    jdbmod -e tmpfile # применить новый конфиг join-демона

    Настройка времени, сервер синхронизации времени XNTPD

    Настройка временной зоны: Linux

    Каталог файлов с описаниями временных зон /usr/share/zoneinfo/

    Список кратких описаний доступных временных зон /usr/share/zoneinfo/zone.tab

    Компилятор временных зон zic filename

    Декомпилятор временных зон отсутствует

    Временная зона записана в /etc/timezone

    echo Europe/Moscow > /etc/timezone

    и одновременно залинкована на /etc/localtime

    ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

    Установка времени вручную

    date 082816452003 # MMDDhhmm[YYYY]
    hwclock -w # прописать текущее время в HW-clock
    
    FILES
     /etc/adjtime /usr/lib/zoneinfo/ /dev/rtc

    Сервер со своими часами

    /etc/ntp.conf
    
    server	127.127.1.0	# local clock
    fudge	127.127.1.0 stratum 10
    
    driftfile /etc/ntp/drift
    broadcastdelay	0.008
    
    # права доступа: всем - ничего, localhost - все, клиентам - readonly
    restrict default ignore
    restrict 127.0.0.1
    restrict 195.0.0.0 mask 255.255.255.0 notrust nomodify notrap

    Клиент

    1 вариант: берем время несколько раз в день, с запуском через crontab:

    1 1/4 * * * ntpdate -b ntp.server1.name ntp.server2.name

    2 вариант: берем время из бродкастов

    /etc/ntp.conf :
    
    broadcast yes
    driftfile /etc/ntp/drift

    3 вариант: берем время с сервера, через XNTPD

    /etc/ntp.conf :
    
    server	ntp.server.name
    driftfile /etc/ntp/drift
    
    # Проследить, чтоб при начальной загрузке запускался xntpd

    Система печати в Unix. LP spoolling

    (описана система печати в System V)

    Печатать, конечно, можно и так: cat file > /dev/lp. Но в многопользовательской системе такой фокус не всегда пройдет. Поэтому печатаемый файл ставят в очередь на печать.

    Имеем принтер. У принтера есть

  • ИМЯ_ПРИНТЕРА - придумывается администратором.
  • ПОРТ_ПРИНТЕРА - специальный файл в который надо выталкивать данные для печати.
  • ИНТЕРФЕЙСНАЯ_ПРОГРАММА - программа, которая как раз и будет этим заниматься.
  • Если у нас нормально сконфигурирована система печати, то печататься можно так:

    lp -d ИМЯ_ПРИНТЕРА file
     или, если мы хотим напечатать на "default" принтере
     cat file | lp
    
     lpstat Посмотреть в каком состоянии очередь печати
    
     cancel [идентификатор_запроса ...] [принтер ...]
     Срубить запрос на печать

    lp просто складывает файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ lpsched обнаруживает вновь поступивший файл, ставит его в очередь на печать, и, когда очередь доходит, запускает наконец ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход которой берется из печатаемого файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.

    Подключить к системе новый принтер

    ---------------------------------------------------------------
     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-процедуры, перекодирующими печатаемый файл в формат соответствующего принтера.

    Примеры

    lpadmin -pstar1 -i/udd/print/inter -v/dev/xpit0 # локальный принтер
    lpadmin -pstar1 -mdumb -v/dev/lpt1

    Подключить к системе удаленный принтер (ключи варьируются для разных версий 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

    Файлы

    /usr/lib/lp/model # Образцы интерфейсных программ (модели)
    
    /etc/lp # Каталог конфигурации системы LP
    
    /var/spool/lp/* # Каталоги с очередями
    
    man lpadmin # Естественно!

    Linux

    LinuxPrinting.org Printer Database
    http://linuxprinting.org/printer_list.cgi
    Вернуться к учебному плану