Protokol UUCP byl navržen koncem sedmdesátých let panem Mikem Leskem ze společnosti AT&T Bell Laboratories. Tento protokol měl poskytovat jednoduché připojení k síti pomocí veřejných telefonních linek. Protože většina lidí, kteří chtějí mít na svém domácím počítači elektronickou poštu a usenetové news, stále používá ke komunikaci modemy, zůstává protokol UUCP i nadále velice populární. I přes vysoký počet implementací tohoto protokolu, které lze provozovat na širokém spektru hardwarových platforem a operačních systémů, jsou tyto implementace navzájem vysoce kompatibilní.
Nicméně jako u většiny softwaru, u něhož se až v průběhu let vyvinul určitý "standardic, neexistuje ani u protokolu UUCP taková implementace, která by se nazývala jednoduše UUCP.
Protokol UUCP prošel od své první verze, jež byla uvedena v roce 1976, neustálým evolučním vývojem. V současné době existují dva hlavní druhy tohoto protokolu, které se navzájem značně odlišují jak v podporovaném hardwaru, tak i ve své vlastní konfiguraci. Z těchto dvou druhů protokolu UUCP se vyvinula spousta různých implementací, které se od svých předků liší jen minimálně.
Jeden druh se nazývá "protokol UUCP verze 2ir a jeho vznik je datován do roku 1977, kdy Mike Lesk, David A. Novitz a Greg Chesson vytvořili novou implementaci protokolu UUCP.
I když je tato implementace poměrně stará, stále se hojně používá. Novější implementace verze 2 poskytuje spoustu vymožeností obsažených v novějších druzích protokolu UUCP.
Druhý typ protokolu byl vytvořen v roce 1983 a běžně se označuje názvy BNU (Basic Networking Utilities - základní sítové utility) nebo HoneyDanBer UUCP, zkráceně HDB. Tento název je odvozen ze jmen autorů, P. Honeymana, D. A. Novitze a B. E. Redmana. Protokol HDB byl vymyšlen proto, aby odstranil některé nedostatky protokolu UUCP verze 2. Byly například přidány nové transportní protokoly a dočasný odkládací adresář byl rozdělen tak, že v současnosti existuje jeden adresář pro každý systém, se kterým komunikujete na bázi protokolu UUCP.
V současnosti se společně s operačním systémem Linux dodává implementace protokolu UUCP pod názvem Taylor UUCP verze 1.04.
Z této verze vychází i tato kapitola. Protokol Taylor UUCP verze 1.04 byl dán do oběhu v únoru roku 1993 a bývá zkompilován tak, aby kromě tradičních konfiguračních souborů ovládal i konfigurační soubory nové generace - tzv. "Taylorovy" konfigurační soubory.
Nedávno byla uvolněna verze 1.05 a již brzy se tato verze stane součástí většiny distribucí Linuxu. Odlišnosti mezi těmito verzemi se většinou týkají rysů, které nikdy nebudete používat, takže na základě informací uvedených v této knize budete moci nakonfigurovat i protokol Taylor UUCP verze 1.05.
Ve většině distribucí Linuxu je obvykle protokol UUCP zkompilován tak, aby byl buď kompatibilní s utilitami BNU nebo kompatibilní s Taylorovým konfiguračním schématem, případně s oběma verzemi. Protože je Taylorovo konfigurační schéma mnohem flexibilnější a pravděpodobně i snáze pochopitelné, než často nesrozumitelné konfigurační soubory utilit BNU, budu v této kapitole popisovat Taylorovo konfigurační schéma.
Účelem této kapitoly není poskytnout vyčerpávající popis všech voleb příkazové řádky pro všechny existující příkazy protokolu UUCP a popis funkce všech těchto příkazů, nýbrž úvod do problematiky nastavení funkčního uzlu UUCP. Doufejme, že první staš vám poskytne zevrubný úvod do problematiky implementace vzdáleného spouštění a přenosu souborů pomocí protokolu UUCP. Nejste-li úplným nováčkem v oblasti práce s protokolem UUCP, můžete tuto kapitolu přeskočit a přejít na staš zabývající se konfiguračními soubory protokolu UUCP, která vysvětluje použití různých souborů pro nastavení protokolu UUCP.
Budeme ale předpokládat, že znáte programy z balíku UUCP. Konkrétně jsou to programy uucp a uux. Popis těchto příkazů naleznete na on-line manuálových stránkách.
Kromě veřejně dostupných programů uux a uucp obsahuje balík UUCP také množství příkazů, které se používají pouze k administrativním účelům. Používají se k monitorování UUCP dopravy ve vašem uzlu, k odstraňování starých souborů se záznamy nebo k sestavování statistik. Ani jeden z těchto příkazů zde nebudeme rozebírat, protože nejsou pro hlavní činnost protokolu UUCP důležité. Kromě toho je jejich dokumentace na velmi slušné úrovni a člověk jim snadno porozumí. Existuje však ještě třetí kategorie, která představuje skutečného "závodního koněih protokolu UUCP. Tyto programy se nazývají uucico (kde zkratka cico znamená copy-in copy-out - kopie dovnitř kopie ven) a uuxqt, který spouští úkoly přijaté ze vzdálených systémů.
Ti, co nenajdou vše potřebné v této kapitole, by si měli přečíst dokumentaci, která je součástí balíku UUCP. Tato dokumentace se skládá z několika textových souborů popisujících nastavení při použití Taylorova konfiguračního schématu. Textové informace mohou být pomocí příkazů tex a makeinfo převedeny do informačních souborů formátu DVI, resp. GNUšnfo.
Pokud chcete používat konfigurační soubory kompatibilní s utilitami BNU nebo dokonce (a z toho mě mrazí v zádech) konfigurační soubory verze 2, mohla by vám pomoci kvalitní kniha "Managing UUCP and Usenetin ([Oreilly89]). Považuji ji za velmi užitečnou. Dalším velmi dobrým zdrojem informací o linuxovém protokolu UUCP je informační dokument UUCP-HOWTO od Vince Skahana.
Dále existuje diskusní skupina zabývající se protokolem UUCP, která se nazývá comp.mail.uucp. Máte-li specifické dotazy ohledně Taylorova konfiguračního schématu, bude lepší, když se na ně zeptáte přímo v této diskusní skupině, než ve skupině comp.os.linux.
Pro pochopení protokolu UUCP je důležité porozumět konceptu úkolů. Každý přenos iniciovaný uživatelem pomocí příkazů uucp nebo uux se nazývá úkol. Ten se skládá z příkazu, který má být spuštěn na vzdáleném systému, a ze skupiny souborů, které mají být mezi propojenými systémy přeneseny. Jednu z těchto částí lze vynechat.
Jako příklad budeme předpokládat, že jste na svém hostiteli spustili následující příkaz, který sdělí protokolu UUCP, aby překopíroval soubor netguide.ps na hostitele pablo a aby spustil příkaz lpr, který tento soubor vytiskne.
$ uux -r pablo!lpr !netguide.ps
Protokol UUCP se většinou hned nespojí se vzdáleným systémem, aby provedl patřičný úkol (okamžitě to lze provést pomocí programu kermit). Místo toho dočasně uloží popis daného úkolu. Tento proces se nazývá dočasné odkládání. Strom s adresáři, ve kterém jsou uloženy jednotlivé úkoly, se nazývá dočasný adresář a je zpravidla umístěn v adresáři /var/spool/uucp. V našem příkladu by měly informace o úkolu obsahovat vzdálený příkaz (lpr), který se má spustit, jméno uživatele, který o toto spuštění žádá, a několik dalších položek. Kromě popisů jednotlivých úkolů musí protokol UUCP ukládat vstupní soubor, konkrétně soubor netguide.ps.
Přesné umístění a názvy dočasných odkládacích souborů se mohou lišit v závislosti na nastavení některých voleb při sestavování. Protokol UUCP kompatibilní s protokolem HDB zpravidla dočasně ukládá soubory v adresáři s názvem /var/spool/uucp/site, kde site je název vzdáleného systému. Když je protokol UUCP zkompilován s podporou Taylorova konfiguračního schématu, vytvoří protokol UUCP pro různé typy dočasně odkládaných souborů podadresáře v dočasném adresáři konkrétního systému.
Protokol UUCP se pak v pravidelných intervalech spojuje se vzdáleným systémem. Když se uskuteční spojení se vzdáleným systémem, přenese protokol UUCP soubory popisující daný úkol a všechny vstupní soubory. Příchozí úkoly nebudou spuštěny okamžitě, ale až po skončení spojení. To provede příkaz uuxqt, který se rovněž stará o doručení úkolů, které jsou určeny pro jiný systém.
Aby protokol UUCP rozlišil důležité a méně důležité úkoly, přiřazuje každému úkolu prioritu. Priorita je definována jediným znakem v rozmezí od 0 do 9, od A do Z a od a do z. Hodnota 0 odpovídá nejvyšší prioritě, hodnota z odpovídá prioritě nejnižší. Pošta je obvykle dočasně ukládána s prioritou B nebo C, zatímco news jsou ukládány s prioritou N. Úkoly s vyšší prioritou jsou přenášeny dříve. Prioritu můžete přiřadit příkazům uucp a uux pomocí parametru -g.
V určitých časových intervalech můžete také zabránit přenášení úkolů, které mají nižší prioritu, než zadáte. Tato vlastnost se také označuje jako tzv. maximální odkládací priorita povolená při komunikaci a implicitně je nastavena na hodnotu z. Všimněte si této terminologické dvojsmyslnosti: soubor je přenesen pouze v případě, že má prioritu vyšší nebo shodnou s maximální odkládací prioritou.
Abyste pochopili, proč potřebuje program uucico znát určitá data, bude vhodné uvést rychlý popis toho, jakým způsobem se tento program ve skutečnosti spojuje se vzdáleným systémem.
Když na příkazové řádce spustíte příkaz uucico -s system, musí se příkaz uucico nejprve fyzicky připojit. Provedené akce budou záviset na typu navazovaného spojení - například při použití telefonní linky musí příkaz uucico nejprve najít modem a vytočit číslo.
U spojení pomocí protokolu TCP musí nejprve zavolat funkci gethostbyname(3), aby převedl název hostitele na sítovou adresu, poté musí zjistit port, který se má otevřít, a přiřadit adresu odpovídajícímu socketu.
Po navázání spojení je třeba provést ověření totožnosti. To se zpravidla skládá z výzvy vzdálenému systému, aby zadal přihlašovací jméno a volitelně i heslo. Tento proces se obecně nazývá přihlašovací komunikace. Procedura ověření totožnosti se buď provede pomocí běžného balíku getty/login, nebo - u socketů protokolu TCP - vlastním programem uucico.
Pakliže je ověření totožnosti úspěšné, spustí se na vzdáleném konci program uucico. Místní kopie programu uucico, která byla původcem spojení, se označuje jako řídicí a vzdálená kopie se označuje jako řízená.
Dále následuje inicializační fáze: řídicí program pošle svůj název hostitele společně s několika příznaky. Řízený program ověří povolení k přihlášení pro zadaný název hostitele, pošle a přijme soubory atd. Příznaky popisují (kromě jiných vlastností) maximální prioritu dočasně ukládaných souborů, které se budou přenášet. Pokud je povolena sekvenční kontrola hovoru, uskuteční se v této fázi i ověření počtu hovorů neboli sekvenčního počtu hovorů. Tato volba způsobí, že si budou oba systémy hlídat počet úspišných spojení a ty pak porovnají. Pokud si počty úspišných spojení neodpovídají, pak inicializační fáze neuspěje. Tato vlastnost je užitečná při ochraně vašeho systému před potenciálními podvodníky.
A nakonec se oba programy uucico pokusí dohodnout na společném přenosovém protokolu. Tento protokol řídí způsob, jakým jsou přenášena data, ověřuje soudržnost dat a dojde-li k chybě, pošle data znovu. Více přenosových protokolů je zapotřebí z důvodu odlišných podporovaných typů spojení. Například telefonní linky vyžadují "bezpečnših protokol, který je z hlediska výskytu chyb značně pesimistický, zatímco přenos pomocí protokolu TCP je již ze své podstaty spolehlivý, a proto může používat efektivnější protokol, který vynechává většinu dodatečných detekcí chyb.
Po skončení inicializační fáze začne skutečná přenosová fáze. Oba konce zapnou ovladač vybraného protokolu. Ovladače mohou eventuálně provést inicializační sekvenci, která závisí na typu vybraného protokolu.
Nejprve pošle řídicí program vzdálenému systému všechny soubory, které čekají ve frontě a jejichž priorita dočasného uložení je dostatečně veliká. Když tento přenos dokončí, bude řízený program informován o ukončení přenosu a o tom, že eventuálně může zavěsit. Řízený program nyní může buď souhlasit se zavěšením, nebo může převzít řízení komunikace. Takže de facto dojde k výměně rolí: nyní se program na vzdáleném systému stane řídicím a program na místním hostiteli se stane řízeným. Nový řídicí program nyní pošle své soubory. Po skončení tohoto přenosu souborů si oba programy uucico vymění zavěýující řetězce a spojení se přeruší.
Při popisu celého procesu nebudeme zabíhat do větších detailů: chcete-li více informací, nahlédněte buď do zdrojového kódu programu, anebo do nějaké kvalitní knihy, která se zabývá problematikou protokolu UUCP. Kromě toho se někde po Internetu pohybuje poměrně starý článek od Davida A. Novitze, ve kterém najdete detailní popis protokolu UUCP. Informační bulletin FAQ k protokolu Taylor UUCP také obsahuje některé podrobnosti ohledně způsobu implementace protokolu UUCP. Pravidelně je posílán na adresu comp.mail.uucp.
Tato stať popisuje nejdůležitější volby příkazové řádky programu uucico. Kompletní seznam těchto voleb získáte na manuálových stránkách uucico(1).
Použijete-li klíčové slovo all, zapnou se všechny volby. Z důvodu kompatibility s ostatními implementacemi protokolu UUCP může být zadáno místo názvu číslo, které zapíná ladění prvních n položek z výše uvedeného seznamu.
Ladící informace budou zapsány do souboru Debug, který se nachází v podadresáři /var/spool/uucp.
Na rozdíl od jednoduchých programů pro přenos souborů byl protokol UUCP navržen tak, aby se uměl automaticky postarat o všechny přenosy. Když se vám povede tento protokol správně nastavit, nebude nutný každodenní zásah ze strany správců systému. Požadované konfigurační informace jsou uchovávány v několika konfiguračních souborech, které jsou umístěny v adresáři /usr/lib/uucp. Většina z těchto souborů je používána pouze při volání směrem z vašeho systému.
Lze říci, že konfigurace protokolu UUCP je poměrně těžká na pochopení. Jde skutečně o nepříjemnou záležitost a stručný formát konfiguračních souborů vám to rozhodně neulehčí (i když Taylorův formát je v porovnání se staršími formáty protokolů HDB nebo verze 2 poměrně čitelný).
Abyste poznali, jak spolu všechny tyto konfigurační soubory souvisí, představíme vám alespoň nejdůležitější z nich a podíváme se na vzorové položky těchto souborů. Teď se nebudeme zabývat detaily; přesnější vysvětlení najdete v následujících samostatných statích. Chcete-li, aby váš počítač podporoval protokol UUCP, bude nejlepší začít s několika vzorovými soubory, které budete postupně upravovat. Jako vzorové soubory můžete použít níže uvedené příklady nebo soubory, které jsou součástí vaší oblíbené distribuce operačního systému Linux.
Všechny soubory popisované v této stati jsou uloženy v adresáři /usr/lib/uucp nebo v některém z jeho podadresářů. Některé distribuce Linuxu obsahují binární soubory protokolu UUCP, které mají zkompilovanou podporu jak pro konfiguraci podle standardu HDB, tak i pro Taylorovu konfiguraci, a pro každý druh konfiguračních souborů používají jiné podadresáře. V adresáři /usr/lib/uucp se obvykle nachází soubor README.
Aby protokol UUCP správně fungoval, musí být vlastníkem jeho souborů uživatel uucp. Některé z těchto souborů obsahují hesla a telefonní čísla, a proto by měly mít nastavena přístupová práva 600.
Ústředním souborem protokolu UUCP je soubor /usr/lib/uucp/config, který se používá pro nastavení obecných parametrů. Nejdůležitějším z těchto parametrů (a momentálně i jediným parametrem) je název vašeho hostitele protokolu UUCP. Ve společnosti Virtual Brewery používají jako bránu protokolu UUCP hostitele vstout:
# /usr/lib/uucp/config - hlavní konfigurační soubor UUCP
hostname vstout
Dalším důležitým konfiguračním souborem je soubor sys. V něm jsou obsaženy veškeré informace týkající se systémů, s nimiž jste propojeni. Tyto informace obsahují název systému a informace o vlastním spojení, například telefonní číslo používané při modemovém spojení.
Typický záznam v souboru sys pro systém s názvem pablo připojený pomocí modemu vypadá asi takto:
# /usr/lib/uucp/sys - sousední počítače UUCP
#
system pablo
time Any
phone 123-456
port serial1
speed 38400
chat ogin: vstout ssword: lorca
Pole port označuje používaný port a pole time určuje časy, ve kterých se lze s daným systémem spojit. Pole chat popisuje přihlašovací komunikační skripty - souslednost řetězců, které si musí systémy navzájem vyměnit dříve, než se může program uucico přihlásit k hostiteli pablo. Ke komunikačním skriptům se vrátíme později. Příkaz port neoznačuje speciální soubor zařízení, jako je například /dev/cua1, ale označuje záznam v souboru port. Název portu může mít libovolný název, ale musí odkazovat na korektní záznam v souboru port. Soubor port obsahuje informace týkající se vlastního spojení. U modemových spojení tento soubor popisuje speciální soubor používaného zařízení, rozsah podporovaných rychlostí a typ volacího zařízení, které je připojeno k danému portu. Níže uvedený záznam popisuje soubor zařízení /dev/cua1 (což odpovídá sériovému portu COM 2), ke kterému je připojen modem NakWell, jenž je schopný pracovat s rychlostmi až do 38 400 bps. Název záznamu byl zvolen tak, aby odpovídal názvu portu, který je uveden v souboru sys.
# /usr/lib/uucp/port - porty UUCP
# /dev/cua1 (COM2)
port serial1
type modem
device /dev/cua1
speed 38400
dialer nakwell
Informace vztahující se k vytáčecímu zařízení jsou uchovávány v dalším speciálním souboru, jehož název jistě uhodnete - dial. Pro každý typ vytáčeného zařízení obsahuje tento soubor sekvenci příkazů, které musí být spuštěny, aby se pomocí zadaného čísla vytočil vzdálený systém. Této sekvenci příkazů se také říká komunikační skript. Například záznam pro výše uvedený modem NakWell by vypadal nějak takto:
# /usr/lib/uucp/dial - informace o vytáčecích zařízeních
# modemy NakWell
dialer nakwell
chat lhlt ATZ OK ATDT\T CONNECT
Řádek začínající polem chat definuje komunikační řetězec modemu skládající se z posloupnosti příkazů poslaných na modem a přijatých z modemu. Tyto příkazy modem inicializují a vytáčejí požadované číslo. Sekvenci znaků "\Tiů nahradí program uucico zadaným telefonním číslem.
Abychom vám mohli poskytnout hrubé schéma způsobu práce programu uucico s konfiguračními soubory, budeme předpokládat, že jste spustili na příkazovém řádku následující příkaz:
$ uucico -s pablo
Program uucico nejprve vyhledá hostitele pablo v souboru sys. Ze záznamu hostitele pablo, který je umístěn v souboru sys, program uucico zjistí, že ke spojení by měl použít port serial1. Soubor port sdělí programu uucico, že požadovaný port je modemový port a že je k tomuto portu připojen modem NakWell.
Nyní vyhledá program uucico v souboru dial záznam, který popisuje modem NakWell, a když takový záznam nalezne, otevře sériový port /dev/cua1 a spustí vytáčecí komunikační skript. To znamená, že pošle modemu příkaz "ATZiz a bude čekat na odpověď "OKiv atd. Jakmile najde řetězec "\Tie, nahradí ho skutečným telefonním číslem (123-456), které získá ze souboru sys.
Poté, co modem vrátí odpověď "CONNECT", se uskuteční vlastní spojení a komunikační skript modemu skončí. Nyní se program uucico vrátí k souboru sys a spustí přihlašovací komunikační skript. V našem příkladu bude čekat na výzvu "login:", potom pošle jméno uživatele (vstout), vyčká na výzvu "password:" a následně pošle heslo "lorca".
Po skončení ověřování totožnosti se předpokládá, že vzdálený konec spustí svůj vlastní program uucico. Potom oba tyto programy vstoupí do inicializační fáze, která byla popsána v předcházející stati.
Způsob, jakým na sobě závisí jednotlivé konfigurační soubory, je ukázán na obrázku 12.1.
Dříve, než začnete sestavovat konfigurační soubory protokolu UUCP, musíte získat některé informace, které potřebuje protokol UUCP vědět. Nejprve musíte zjistit, ke kterému sériovému zařízení je připojen váš modem. Porty COM 1 až COM 4 (v DOSu) se obvykle mapují na speciální soubory zařízení /dev/cua0 až /dev/cua3.
Většina distribucí, příkladem budiž distribuce Slackware, vytvoří soubor /dev/modem, který je symbolickým odkazem na patřičný soubor zařízení cua* . Tyto distribuce pak nakonfigurují programy kermit, seyon atd. tak, aby používaly obecný soubor modem. V tomto případě byste měli ve své konfiguraci protokolu UUCP také používat soubor /dev/modem.
Soubor modem byste měli používat z toho důvodu, že všechny programy obsluhující modem používají k signalizaci používání daného sériového portu tzv. zamykací soubory. Názvy těchto zamykacích souborů se tvoří kombinací řetězce LCK.. s názvem souboru příslušného zařízení, například LCK..cua1. Pokud by programy používaly pro stejné zařízení odlišné názvy, nebudou schopny zjistit vzájemné zamykací soubory. V důsledku toho dojde k ukončení obou relací, pokud jsou tyto relace spuštěny současně. To však není příliš pravděpodobné, plánujete-li své hovory UUCP s využitím tabulky crontab.
Podrobnosti týkající se nastavení sériových portů získáte v kapitole 4.
Nyní se podíváme, jakou rychlostí komunikuje váš modem s operačním systémem Linux. Tuto rychlost musíte nastavit na maximální očekávanou efektivní přenosovou rychlost. Efektivní přenosová rychlost může být mnohem vyšší, než skutečná fyzická rychlost podporovaná vaším modemem. Například mnoho modemů posílá a přijímá data rychlostí 2 400 bps (bitů za sekundu). Při použití kompresních protokolů, jako je V.42bis, se může skutečná přenosová rychlost vyšplhat až na 9 600 bps.
Má-li být protokol UUCP k něčemu užitečný, budete samozřejmě potřebovat telefonní číslo volaného systému. Taktéž budete potřebovat korektní přihlašovací číslo id a volitelně i heslo.
Dále musíte přesně vědět, jak se lze do daného systému přihlásit. Musíte třeba předtím, než se objeví výzva k přihlášení, stisknout klávesu BREAK? Zobrazuje výzva řetězec login: nebo user:? Tyto údaje jsou důležité pro sestavení komunikačního skriptu, který si můžeme představit jako recept, jenž sděluje programu uucico, jak se má přihlásit. Pokud tyto údaje neznáte nebo pokud selže i obvyklý komunikační skript, pokuste se dovolat na daný systém pomocí terminálového programu, jako je kermit nebo minicom, a zapište si přesně ty úkony, které musíte provést.
Stejně jako u sítí na bázi protokolu TCP/IP musí mít váš hostitel i v sítích na bázi protokolu UUCP nějaký název. Pokud hodláte používat protokol UUCP pouze na přenos souborů do nebo ze systémů, se kterými se přímo spojujete, nebo hodláte-li používat tento protokol pouze pro přenos souborů v místní síti, nemusí tento název splňovat žádné standardy.
Používáte-li však protokol UUCP pro příjem pošty nebo news, měli byste přemšilet o tom, zda by nebylo lepší nechat si zaregistrovat váš název pomocí projektu mapování názvů pro protokol UUCP (UUCP Mapping project). Projekt mapování názvů pro protokol UUCP je popsán v kapitole 13. Dokonce i když jste členem domény, měli byste zvážit použití oficiálního názvu pro protokol UUCP.
Lidé si často zvolí svůj název pro protokol UUCP tak, aby odpovídal první části plně kvalifikovaného názvu domény. Předpokládejme, že adresa domény vašeho systému je swim.twobirds.com, potom by název vašeho hostitele pro protokol UUCP měl být swim. Pamatujte na to, že systémy UUCP se navzájem nepoznávají na základě svého názvu. Samozřejmě, že můžete používat název, který nemá nic společného s plně kvalifikovaným názvem domény.
Ujistěte se však, že v poštovních adresách nepoužíváte nekvalifikovaný název systému, pokud ho nemáte zaregistrován jako oficiální název pro protokol UUCP.
Pošta poslaná na neregistrovaného hostitele protokolu UUCP by v lepším případě zmizela v nějaké černé díře. Použijete-li název, který již používá nějaký jiný systém, bude pošta směrována na tento systém a způsobí poštmistrům tohoto systému značné problémy.
Balík UUCP implicitně používá název systému nastavený pomocí příkazu hostname. Tento název je obecně nastaven ve skriptu /etc/rc.local. Pokud se váš název pro protokol UUCP liší od názvu, který jste přiřadili vašemu hostiteli, musíte použít v souboru config volbu hostname, která sdělí programu uucico název pro protokol UUCP. Tento postup bude popsán dále.
Nyní se vrátíme zpět ke konfiguračním souborům. Protokol Taylor UUCP získává potřebné informace z následujících souborů:
Taylorovy konfigurační soubory se zpravidla skládají z řádků obsahujících páry hodnot klíčových slov. Symbol (#) značí komentář, který sahá až do konce příslušného řádku. Chcete-li použít vlastní symbol (#), zadejte ho společně s nahrazujícím symbolem zpětného lomítka.
Pomocí těchto konfiguračních souborů můžete ovládat poměrně velké množství voleb. Nebudeme zde probírat všechny parametry, proto si probereme pouze nejdůležitější z nich. Tyto volby by vám měly pomoci nastavit modemové spojení pomocí protokolu UUCP. Další stati budou popisovat nutné úpravy, které je třeba učinit, budete-li chtít používat protokol UUCP v síti na bázi protokolu TCP/IP nebo společně s přímou sériovou linkou. Kompletní popis je uveden v Texinfo dokumentech, které doprovázejí zdrojový kód protokolu Taylor UUCP.
Pokud si myslíte, že máte svůj systém s protokolem UUCP kompletně nakonfigurován, můžete si svoji konfiguraci zkontrolovat pomocí nástroje uuchk (ten najdete v adresáři /usr/lib/uucp). Tento nástroj přečte vaše konfigurační soubory a vytiskne podrobnou zprávu obsahující konfigurační hodnoty, které jste použili u každého systému.
Do tohoto souboru obvykle nebudete zapisovat příliš mnoho vlastností. Většinou ho použijete jen k definici názvu hostitele pro protokol UUCP. Ten bude implicitně používat název, který nastavíte pomocí příkazu hostname, ale je užitečné explicitně nastavit vlastní název pro protokol UUCP. Následuje vzorový soubor config:
# /usr/lib/uucp/config - hlavní konfigurační soubor UUCP
hostname vstout
Samozřejmě existuje mnoho rozmanitých parametrů, které lze nastavit, příkladem může být název dočasného adresáře nebo přístupová práva k anonymní službě UUCP. Definice přístupových práv k anonymní službě UUCP bude popsána v některé z dalších statí.
Soubor sys popisuje systémy, které zná váš počítač. Záznam je uveden klíčovým slovem system; řádky mezi dvěma klíčovými slovy system definují parametry, které se vztahují k danému systému. Obecně definuje záznam systému takové parametry, jako je například telefonní číslo a přihlašovací komunikační skript.
Parametry uvedené před prvním výskytem klíčového slova system definují implicitní hodnoty, které se budou používat pro všechny systémy. V sekci implicitních hodnot budou obvykle uvedeny parametry protokolu a podobné vlastnosti.
Následuje poměrně podrobný popis nejvýznamnijších polí.
Název systému
Příkaz system definuje název vzdáleného systému. Musíte zadat
korektní název vzdáleného systému, ne pouze přezdívku, kterou jste si vymysleli,
protože program uucico porovná tento název s názvem, který pošle vzdálený systém
v okamžiku vašeho přihlášení.
Každý název systému se může objevit pouze jedenkrát. Pokud
chcete pro daný systém používat několik skupin konfigurací (například různá
telefonní čísla, která by měl program uucico postupně zkoušet vytáčet), můžete
zadat tzv. zástupce. Zástupci jsou probíráni dále.
Telefonní číslo
Má-li být vzdálený systém dosažitelný pomocí telefonní linky,
určuje pole phone číslo, které by měl modem vytočit. Toto pole může obsahovat
několik symbolů, které posléze zpracuje vytáčecí procedura programu uucico. Symbol
rovnítka říká programu uucico, aby vyčkal na sekundární vytáčecí tón a symbol
pomlčky generuje pauzu dlouhou jednu sekundu. Některé telefonní rozvody se totiž
ucpou, když neuděláte pauzu mezi číslem, které musíte vytočit, abyste se dostali z
vnitřní sítě, a mezi vlastním telefonním číslem.
Nevím, zda existuje nějaký vhodný pojem, který by toto číslo
jednoznačně definoval - ale z vlastní zkušenosti víte, že u některých soukromých
telefonních rozvodů uvnitř firmy musíte vytočit číslo 0 nebo 9, a teprve potom se
dostanete na vnější telefonní linku.
K utajení informací týkajících se daného systému, jako je
telefonní číslo jednotlivých uzlů, můžete použít libovolný řetězec. Každý
takovýto řetězec bude pomocí souboru dialcode převeden na vytáčecí kód.
Předpokládejme, že máte následující soubor dialcode:
# /usr/lib/uucp/dialcode - převod vytáčecích kódů
Bogoham 024881
Coxton 035119
Pomocí těchto definic můžete v souboru sys používat například telefonní
číslo Bogoham773, které snad vypadá přehledněji.
Port a rychlost
Volby port a speed se používají k výběru zařízení, jenž bude
používáno k vytáčení vzdáleného systému a k nastavení maximální rychlosti, na
kterou může být dané zařízení nastaveno.
Záznam system může používat buď jednu z těchto voleb, nebo
kombinaci obou voleb. Při vyhledávání vhodného zařízení v souboru port vybere
systém pouze ty porty, které odpovídají názvu portu a/nebo zvolenému rozsahu
rychlostí.
Obvykle by měla stačit pouze volbu speed. Máte-li v souboru port
definováno pouze jedno sériové zařízení, zvolí program uucico vždy právě toto
zařízení, takže pro ně musíte pouze nastavit požadovanou rychlost. Máte-li ke
svým systémům připojeno několik modemů, nebudete muset často určovat konkrétní
port, protože když program uucico zjistí, že danému požadavku vyhovuje více
zařízení, bude postupně zkoušet každé z těchto zařízení, dokud nenajde nějaké
nepoužívané zařízení.
Přihlašovací komunikační skript
Ve výše uvedeném výkladu jsme se již setkali s přihlašovacím komunikačním
skriptem, který sděluje programu uucico, jakým způsobem se má přihlásit ke
vzdálenému systému. Přihlašovací komunikační skript se skládá ze seznamu
symbolů, které definují očekávané řetězce a řetězce posílané místním
procesem uucico. Cílem je, aby program uucico počkal, dokud vzdálený počítač
nepošle výzvu k přihlášení. Místní proces pak vrátí přihlašovací jméno,
počká až vzdálený systém pošle výzvu k zadání hesla a nakonec pošle vlastní
heslo. Očekávané a posílané řetězce se vzájemně střídají. Program uucico
automaticky přidá ke všem posílaným řetězcům znak návrat vozíku (\r).
Jednoduchý komunikační skript by mohl vypadat asi takto:
ogin: vstout ssword: catch22
Všimněte si, že pole očekávaných řetězců neobsahují celé výzvy. To proto, aby
přihlášení uspělo i v případě, kdy vzdálený systém vyšle místo řetězce
login: řetězec Login:.
Program uucico umožňuje i určitý druh podmíněného spouštění, například když je potřeba program getty na vzdáleném počítači znovu inicializovat. V tomto případě můžete k očekávanému řetězci připojit komunikační podřetězce, které jsou vzájemně odděleny pomocí pomlček. Komunikační podřetězce se spustí pouze v případě, že selže hlavní očekávaný řetězec, například při překročení časového limitu. Jedním z případů využití této vlastnosti je obdržení kódu BREAK v situaci, kdy vzdálený systém nepošle výzvu k přihlášení. Následující příklad uvádí vieobecný komunikační skript, který bude fungovat i v případě, že před zobrazením výzvy k přihlášení stisknete klávesu e. Řetězec "it sděluje UUCP, aby na nic nečekal a okamžitě pokračoval v posílání řetězce.
l.l. \n\r\d\r\n\c ogin:-BREAK-ogin: vstout ssword: catch22
V komunikačním skriptu lze použít spoustu speciálních řetězců a únikových znaků. Následuje neúplný seznam korektních symbolů, které mohou být uvedeny v očekávaných řetězcích:
V posílaných řetězcích se mohou kromě výše uvedených symbolů vyskytnout následující únikové znaky a řetězce:
EOT Znak konce přenosu (^D).
BREAK Znak přerušení (Break).
Zástupci
Někdy je vhodné mít k dispozici několik záznamů daného systému, například tehdy,
je-li systém dosažitelný pomocí několika modemových linek. U protokolu Taylor UUCP
je možné pro jeden systém definovat několik záznamů pomocí tzv. zástupců.
Záznam zástupce přebírá veškerá nastavení z hlavního záznamu
systému a jsou v něm zadány pouze ty hodnoty, které by měly potlačit implicitní
hodnoty záznamu systému nebo které by měly přidat hodnoty k tomuto záznamu.
Zástupce je oddělen od hlavního záznamu systému řádkem, který obsahuje klíčové
slovo alternate.
Chcete-li u hostitele pablo používat dvě telefonní čísla, měli byste
následujícím způsobem upravit záznam v souboru sys:
system pablo
phone 123-456
... další záznamy...
alternate
phone 123-455
Když nyní budete volat hostitele pablo, pokusí se
nejprve program uucico vytočit číslo 123456 a pokud toto volání neuspěje, pokusí se
vytočit číslo zástupce. Záznam zástupce přebírá veškerá nastavení z hlavního
záznamu systému a potlačuje pouze nastavení telefonního čísla.
Omezení času volání
Protokol Taylor UUCP nabízí množství způsobů pro omezení časů, ve kterých je
možné uskutečnit hovory se vzdáleným systémem. Tato omezení můžete zavést buď
kvůli omezením, která klade vzdálený hostitel na své služby během pracovní doby,
nebo proto, abyste se vyhnuli dobám s vysokými tarifními poplatky. Poznamenejte si, že
pomocí volby -S nebo -f je možné v programu uucico vždy potlačit omezení času
volání.
Protokol Taylor UUCP implicitně zakazuje spojení v jakémkoliv čase, takže musíte v souboru sys použít volbu, která povolí nějaký časový rozsah volání. Pokud vás nezajímá omezení času volání, můžete zadat do souboru sys volbu time, které přiřadíte hodnotu Any.
Nejjednodušší způsob omezení času nabízí volba time, za níž následuje řetězec tvořený poli den a čas. Pole den může nabývat libovolné kombinace hodnot Mo, Tu, We, Th, Fr, Sa, Su (Pondělí až Neděle) nebo hodnot Any (kdykoliv), Never (nikdy) nebo Wk (pracovní dny). Pole čas se skládá ze dvou 24hodinových časových hodnot, které jsou odděleny pomlčkou. Tyto hodnoty udávají časový rozsah, ve kterém se mohou hovory uskutečňovat. Kombinace těchto polí musí být zapsána bez bílého místa. Pomocí čárek může být seskupen libovolný počet denních a časových údajů, například:
time MoWe0300-0730,Fr1805-2000
Tento příkaz povoluje volání v pondělí a ve středu v době od 03:00 do 07:30 a v pátek v době od 18:05 do 20:00. Když časové pole překračuje půlnoc, konkrétně Mo1830-0600, znamená to, že hovory budou povoleny v pondělí v době od půlnoci do 06:00 a v době od 18:30 do půlnoci.
Speciální řetězce Any a Never fungují přesně tak, jak naznačují: hovory se mohou uskutečnit kdykoliv, resp. nikdy.
Příkaz time může obsahovat volitelný druhý argument, který definuje čas v minutách, po jehož uplynutí se má uskutečnit nový pokus. Když selže pokus o spojení, nepovolí program uucico po určitou předem zadanou dobu další pokus o spojení se vzdáleným hostitelem.
Program uucico implicitně používá exponenciální zpětné schéma, při kterém se s každým opakovaným selháním zvyšuje čas do nového pokusu. Zadáte-li například čas opakování pokusu 5 minut, odmítne program uucico zavolat vzdálený systém dříve, než 5 minut po posledním neúspěšném volání.
Příkaz timegrade vám umožňuje přidělit plánu maximální priority. Předpokládejme například, že v záznamu system máte následující příkazy timegrade:
timegrade N Wk1900-0700,SaSu
timegrade C Any
Tyto příkazy umožní přenos úkolů s prioritou C nebo vyšší (pošta se obvykle uchovává s prioritou B nebo C) při každém uskutečněném spojení, zatímco news (které se obvykle uchovávají s prioritou N) budou přenášeny pouze v noci a o víkendech.
Stejně jako u příkazu time lze zadat i u příkazu timegrade volitelný třetí argument, který definuje čas (v minutách) do nového pokusu.
Zde se však může objevit následující námitka ohledně priorit: Zaprvé se volba timegrade vztahuje pouze na soubory, které posílají vaše systémy; vzdálený systém může i přesto přenášet cokoliv ho napadne. Chcete-li explicitně definovat požadavek na vzdálený systém, aby posílal pouze úkoly, které mají vyšší než zadanou prioritu, použijte k tomu volbu call-timegrade; nemáte však žádnou záruku, že se bude vzdálený systém tímto požadavkem řídit.
Podobně nebude ani pole timegrade ověřeno v případě, kdy si vzdálený systém sám zavolá.
V takovém případě mu budou poslány všechny připravené úkoly. Vzdálený systém může explicitně požádat váš program uucico, aby se omezil pouze na určitou prioritu.
Soubor port informuje program uucico o dostupných portech. Těmito porty mohou být jak modemové porty, tak i ostatní podporované typy portů, jako jsou přímé sériové linky nebo sockety protokolu TCP.
Stejně jako soubor sys, je i soubor port složen ze samostatných záznamů, které začínají klíčovým slovem port, za kterým následuje název daného portu. Tento název můžete použít v souboru sys v příkazu port. Název nemusí být jedinečný; existuje-li více portů se shodným názvem, bude program uucico zkoušet postupně všechny porty, dokud nenajde port, který se v daném okamžiku nepoužívá.
Za příkazem port by měl následovat příkaz type, který definuje typ popisovaného portu. Korektní typy jsou modem, typ direct pro přímá spojení a typ tcp pro sockety protokolu TCP. Pokud příkaz port chybí, bude implicitní typ portu nastaven na modem.
V této stati budeme probírat pouze modemové porty; porty pro protokol TCP a přímé linky budou probrány v dalších statích.
U modemových a přímých portů musíte pomocí příkazu device zadat volací zařízení. Obvykle je to název speciálního souboru zařízení, který se nachází v adresáři /dev, například /dev/cua1.
V případě modemového zařízení určuje záznam portu také typ modemu, který je k danému portu připojen. Různé typy modemů musí být nakonfigurovány odlišným způsobem. Dokonce i modemy, které tvrdí, že jsou kompatibilní se standardem Hayes, nemusí být ve skutečnosti navzájem kompatibilní.
Z tohoto důvodu musíte programu uucico sdělit, jak má inicializovat daný modem a jak má vytočit požadované telefonní číslo. Protokol Taylor UUCP uchovává popisy všech vytáčecích zařízení v souboru dial. Chcete-li použít některé z těchto zařízení, musíte pomocí příkazu dialer zadat název požadovaného vytáčecího zařízení.
Někdy budete chtít používat modem odlišným způsobem podle typu volaného systému. Například některé starší modemy nerozumí tomu, když se nějaký vysokorychlostní modem pokouší spojit rychlostí 14 400 bps; tyto modemy linku prostě zavěsí, místo aby se snažily spojit například rychlostí 9 600 bps. Víte-li, že systém drop používá právě takovýto typ hloupého modemu, musíte nastavit svůj modem odlišným způsobem. K tomu potřebujete další záznam v souboru port, který bude definovat odlišný typ vytáčecího zařízení. Nyní můžete přiřadit novému portu odlišný název, například serial1-slow, a v souboru sys použít v záznamu pro systém drop příkaz port.
Výhodnijší je ale rozdělit porty podle podporovaných rychlostí. Dva záznamy portů mohou pro výše popsanou situaci vypadat následovně:
# NakWell modem; spojení na vysoké rychlosti
port serial1 # jméno portu
type modem # modem
device /dev/cua1 # COM2
speed 38400 # podporovaná rychlost
dialer nakwell # vytáčecí zařízení
# NakWell modem; spojení na nízké rychlosti
port seriál1 # jméno portu
type modem # modem
device /dev/cua1 # COM2
speed 9600 # podporovaná rychlost
dialer nakwell-slow # nezkoušej vysokou rychlost připojení
Záznam systému pro systém drop přiřadí portu název serial1, ale bude požadovat, aby se používala pouze rychlost 9 600 bps. Potom program uucico automaticky vybere druhý záznam portu. Všechny ostatní systémy, které mají v záznamu systému uvedenu rychlost 38 400 bps, budou volány s použitím prvního záznamu portu.
Soubor dial popisuje způsob, jakým se používají různá vytáčecí zařízení. Protokol UUCP většinou raději komunikuje s vytáčecími zařízeními, než s fyzickými modemy, protože dříve bývalo obvyklé jedno (drahé) automatické vytáčecí zařízení, které obsluhovalo sadu modemů. Dnes má většina modemů zabudovanou podporu pro vytáčení čísel, takže rozdíl je poměrně nevýrazný.
Přesto však mohou odlišná vytáčecí zařízení nebo modemy vyžadovat odlišné konfigurace.
Každou z těchto konfigurací popíšete v souboru dial. Záznamy v tomto souboru začínají příkazem dialer, který přiřazuje název vytáčecímu zařízení.
Kromě této položky je nejdůležitější komunikační skript, který se zadává pomocí příkazu chat. Stejně jako tomu bylo u přihlašovacího komunikačního skriptu, skládá se i tento skript ze sekvence řetězců, které program uucico posílá na vytáčecí zařízení, a z odpovědí, které očekává z vytáčecího zařízení. Obecně se tento skript používá k inicializaci modemu do nějakého známého stavu a k vytočení požadovaného čísla. Následující příklad záznamu vytáčecího zařízení ukazuje typický komunikační skript pro modemy kompatibilní s modemovým standardem Hayes:
# NakWell modem; spojení na vysoké rychlosti
dialer nakwell # jméno vytáčecího zařízení
chat "" ATZ OK\r ATH1E0Q0 OK\r ATDT\T CONNECT
chat-fail BUSY
chat-fail ERROR
chat-fail NO\sCARRIER
dtr-toggle true
Komunikační skript modemu začíná řetězcem "it, což je prázdný očekávaný řetězec. Program uucico proto okamžitě pošle první příkaz (ATZ). Příkaz ATZ inicializuje modemy, které jsou kompatibilní se standardem Hayes. Pak bude uucico čekat, dokud modem nepošle odpověď OK a následně další příkaz, který vypne místní opakování znaků. Jakmile modem opět pošle odpověď OK, pošle program uucico příkaz pro vytáčení (ATDT). Úniková sekvence \T v řetězci bude nahrazena skutečným telefonním číslem, které systém získá z příslušného záznamu v souboru sys. Potom bude program uucico čekat, dokud modem nepošle odpověď CONNECT, která bude signalizovat, že bylo spojení se vzdáleným systémem úspěšné. Často se stává, že se modemu nepodaří spojení se vzdáleným systémem, například když už vzdálený systém komunikuje s nějakým jiným systémem a linka je obsazená. V takovém případě vrátí modem nějakou chybovou zprávu, která označuje příčinu neúspěchu. Komunikační skripty modemu nejsou schopny detekovat takovéto zprávy, takže program uucico bude čekat na očekávaný řetězec tak dlouho, dokud nedojde k překročení časového limitu. Proto se v log-souboru protokolu UUCP objeví místo pravého důvodu pouze neurčitá zpráva "timed out in chat scriptiŮ (v komunikačním skriptu došlo k překročení časového limitu).
Avšak protokol Taylor UUCP umožní sdělit tyto hlášky programu uucico. Lze to provést pomocí příkazu chat-fail, který je uveden ve výše uvedeném výpisu. Když program uucico detekuje při spuštění komunikačního skriptu modemu řetězec, který odpovídá neúspěšnému provedení komunikačního skriptu, zruší aktuální volání a zapíše do log-souboru protokolu UUCP chybovou zpráva.
Poslední příkaz v příkladu sděluje protokolu UUCP, aby přepnul linku DTR dříve, než se spustí komunikační skript modemu. Většina modemů může být nakonfigurována tak, aby zavěsili telefonní linku a přešli do příkazového režimu v případě, že zjistí změnu linky DTR.
Na první pohled se může zdát použití protokolu UUCP pro přenos dat po sítích na bázi protokolu TCP absurdní, ale v zásadě to není ipatný nápad, zvláště při přenosu velkého množství dat typu usenetových news. U spojení na bázi protokolu TCP se zpravidla vyměňují news pomocí protokolu NNTP, s jehož pomocí se o články žádá a jsou odesílány individuálně, bez komprese a bez jakékoliv další optimalizace. Ačkoliv tato technika vyhovuje rozsáhlým systémům s několika souběžnými news, není příliš vhodná pro malé systémy, které získávají news přes pomalá spojení, jako je ISDN. Takové systémy budou obvykle chtít kombinovat výhody protokolu TCP s výhodami, které přináší posílání news ve velkých skupinách, které lze zkomprimovat a pak je přenést s menší režší. Standardní způsob přenášení takových skupin spočívá v použití protokolu UUCP po sítích na bázi protokolu TCP.
V souboru sys musíte následujícím způsobem definovat systém, který má být volán pomocí protokolu TCP:
system gmu
address news.groucho.edu
time Any
port tcp-conn
chat ogin: vstout word: clouseau
Příkaz address udává IP-adresu hostitele nebo jeho plně kvalifikované doménové jméno.
Odpovídající záznam v souboru port by měl vypadat asi takto:
port tcp-conn
type tcp
service 540
Záznam uvádí, že spojení pomocí protokolu TCP by mělo být použito tehdy, pokud záznam v souboru sys obsahuje hodnotu tcp-conn, a že program uucico by se měl pokusit spojit se vzdáleným hostitelem pomocí sítě TCP na portu 540. Toto je implicitní číslo portu pro službu UUCP. Místo čísla portu můžete v příkazu service uvést symbolický název portu. Číslo portu, které odpovídá tomuto názvu portu, bude vyhledáno v souboru /etc/services.
Běžný název pro službu UUCP je uucpd.
Předpokládejme, že pro spojení vašeho systému vstout s hostitelem tiny používáte přímou linku. Stejně jako v případě použití modemu budete muset pro daný systém zapsat do souboru sys záznam. Příkaz port označuje sériový port, ke kterému je hostitel tiny připojen.
system tiny
time Any
port direct1
speed 38400
chat ogin: cathcart word: catch22
V souboru port musíte popsat sériový port, který se používá pro přímé spojení. Příkaz dialer není nutný, protože u přímé linky není třeba vytáčet žádná čísla.
port direct1
type direct
speed 38400
Úkolem protokolu UUCP je kopírovat soubory z jednoho systému do druhého a žádat spouštění určitých příkazů na vzdálených hostitelích. Samozřejmě, že jako správce systému budete chtít řídit práva, která budete přidělovat ostatním systémům - rozhodně není dobré povolit na svém systému spouštění libovolných příkazů.
Jedinými příkazy, které na vašem počítači povolí protokol Taylor UUCP spouštět ostatním systémům, jsou implicitně příkazy rmail a rnews, které se obecně používají pro spojení pomocí protokolu UUCP k výměně elektronické pošty a usenetových news. Implicitní vyhledávací cesta, kterou používá program uuxqt, se definuje v době sestavování tohoto programu, ale obvykle obsahuje adresáře /bin, /usr/bin a /usr/local/bin. Chcete-li pro konkrétní systém změnit množinu příkazů, použijte k tomu klíčové slovo commands, které přidáte do souboru sys. Podobně může být pomocí příkazu command-path změněna i vyhledávací cesta. Chcete-li například, aby mohl systém pablo spouštět společně s příkazy rmail a rnews i příkaz rsmtp, upravte soubor sys následovně:
system pablo
...
commands rmail rnews rsmtp
Protokol Taylor UUCP také dovoluje velice podrobné nastavení přenosu souborů. Na jedné straně můžete zcela zakázat přenosy souborů z konkrétního systému nebo do konkrétního systému. Stačí jen nastavit volbu request na hodnotu no a vzdálený systém nebude moci ani přijímat soubory z vašeho systému, ani žádné soubory vašemu systému posílat. Podobně můžete pomocí volby transfer, kterou nastavíte na hodnotu no, zakázat svým uživatelům přenos souborů do vašeho systému nebo z vašeho systému. Implicitně je jak místním uživatelům, tak i uživatelům ze vzdáleného systému povoleno posílat a přijímat soubory.
Kromě toho můžete nastavit adresáře, do kterých nebo ze kterých mohou být soubory kopírovány. Obvykle budete chtít omezit přístup ze vzdálených systémů pouze jen na jednu hierarchiš adresářů a zároveň budete chtít umožnit vašim uživatelům posílání souborů ze svého domovského adresáře. Uživatelé mohou obecně přijímat ze vzdáleného systému pouze soubory z veřejného adresáře protokolu UUCP, což je adresář /var/spool/uucppublic. Toto je tradiční místo, kde je možné soubory zpřístupnit veřejnosti; je to velmi podobné serverům FTP na Internetu. Na tento adresář se běžně odkazuje pomocí znaku vlnka.
Z toho důvodu poskytuje protokol Taylor UUCP čtyři odlišné příkazy, které se používají ke konfiguraci adresářů pro přijímání a posílání souborů. Jsou to konkrétně příkazy localsend, který specifikuje seznam adresářů, z nichž může uživatel stahovat soubory pomocí protokolu UUCP, dále příkaz local-receive, který uvádí seznam adresářů, do nichž může uživatel přijímat soubory pomocí protokolu UUCP, a příkazy remote-send a remote-receive, které se chovají analogicky při požadavku z cizího systému. Uvažte následující příklad:
system pablo
...
local-send /home
local-receive /home ~/receive
remote-send ~ !~/incoming !~/receive
remote-receive ~/incoming
Příkaz local-send povoluje uživatelům posílat z vašeho hostitele na hostitele pablo libovolné soubory z adresářové struktury pod adresářem home a z veřejného adresáře protokolu UUCP.
Příkaz local-receive povoluje těmto uživatelům přijímat soubory buď do volně dostupného adresáře receive, do něhož lze zapisovat a který se nachází pod adresářem uucppublic, nebo do libovolného adresáře s možností zápisu, který se nachází v adresářové struktuře pod adresářem /home. Příkaz remote-send povoluje uživatelům z hostitele pablo žádat o soubory z adresáře /var/spool/uucppublic, vyjma souborů z adresářových struktur pod adresáři incoming nebo receive. Tyto vyjmuté adresáře jsou signalizovány programu uucico tak, že před jejich názvy je uveden vykřičník. A konečně poslední řádek povoluje uživatelům z hostitele pablo přenášet libovolné soubory do adresáře incoming.
Jedním z největších problémů souvisejících s přenosem souborů prostřednictvím protokolu UUCP je skutečnost, že lze přijímat soubory pouze do adresářů, do kterých lze zapisovat a které jsou volně dostupné. To může svádět některé uživatele k tomu, aby chystali pastičky na ostatní uživatele. Tomuto ale nelze nijak zabránit, ledaže byste zablokovali veškeré přenosy souborů pomocí protokolu UUCP.
Protokol UUCP nabízí mechanismus, pomocí něhož můžete na ostatních systémem spustit přenosy souborů pod svým jménem. Například následující mechanismus umožňuje, aby pro vás hostitel seci přijal soubor z hostitele uchile a poslal ho do vašeho systému.
$ uucp -r seci!uchile!~/find-ls.gz ~/uchile.filez.gz
Tato technika, pomocí níž lze předávat úkol přes několik systémů, se nazývá doručování.
Ve výše uvedeném příkladu může být důvodem použití doručovací techniky například to, že hostitel seci má přístup pomocí protokolu UUCP k hostiteli uchile, zatímco váš hostitel nemá přístup k tomuto hostiteli. Avšak pokud provozujete systém s protokolem UUCP, budete chtít omezit doručovací službu pouze na několik důvěryhodných hostitelů, kteří vám nevyženou telefonní účet do neúnosných mezí například tím, že by chtěli po vašem hostiteli stáhnout poslední verzi zdrojového kódu balíku X11R6.
Implicitně má protokol Taylor UUCP zablokované veškeré doručování. Chcete-li povolit doručování nějakému konkrétnímu systému, použijte k tomu příkaz forward. Tento příkaz udává seznam systémů, ze kterých a na které je možné doručovat úkoly. O doručování úkolů vás může požádat nějaký další systém. Například správce protokolu UUCP na hostiteli seci bude chtít přidat do souboru sys následující řádky, které povolí hostiteli pablo požadovat soubory po hostiteli uchile:
####################
# pablo
system pablo
...
forward uchile
####################
# uchile
system uchile
...
forward-to pablo
Položka forward-to je pro hostitele uchile nutná, aby jakékoliv soubory poslané z tohoto hostitele byly předány hostiteli pablo. V opačném případě by je protokol UUCP zahodil. Tato položka je obměnou příkazu forward a hostiteli uchile povoluje posílat soubory pouze na hostitele pablo přes hostitele seci; jakákoliv jiná cesta je nepřípustná.
Chcete-li povolit doručování do libovolného systému, použijte k tomu speciální klíčové slovo ANY (vyžadují se velká písmena).
Chcete-li nastavit svůj systém pro příchozí volání, musíte u svých sériových portů povolit přihlášení a přizpůsobit některé ze systémových souborů tak, aby poskytovaly účty pro protokol UUCP. To vše bude náplní této stati.
Pokud chcete používat sériovou linku jako port pro příchozí volání, musíte na tomto portu povolit proces getty. Bohužel některé implementace programu getty nejsou pro tento účel vhodné, protože budete většinou chtít používat sériový port jak pro volání ze systému, tak pro volání směrem do systému. Proto se musíte ujistit, že používáte takový program getty, který je schopen sdílet linku s dalšími programy, jako jsou například programy uucico nebo minicom. Jeden z programů, který tyto požadavky splňuje, je program uugetty z balíku getty_ps. Většina linuxových distribucí tento program obsahuje; zkontrolujte, zda máte program uugetty ve svém adresáři /sbin. Pak je tu ještě jeden program od Gerta Doeringa s názvem mgetty, který navíc podporuje příjem faxů. Nejnovější verze těchto programů můžete získat buď v podobě binárních programů, nebo jako zdrojové kódy na adrese sunsite.unc.edu.
Vysvětlení odlišností ve způsobu, jakým se tyto programy starají o přihlášení, přesahuje rámec této malé stati; chcete-li více informací, nahlédněte prosím do dokumentu Serial HOWTO od Gregha Hankinse a také do dokumentace, která přichází společně s balíky getty_ps a mgetty.
Dále budete muset nastavit uživatelské účty, které umožní vzdáleným systémům přihlášení do vašeho systému a uskutečnění spojení pomocí protokolu UUCP. Zpravidla poskytnete každému systému, s nímž jste v kontaktu, samostatné přihlašovací jméno. Když budete nastavovat účet pro hostitele pablo, přiřadíte mu asi jméno uživatele Upablo.
Účty systémů, které k vám volají po sériovém portu, musíte obvykle přidat do systémového souboru hesel /etc/passwd. Osvědčilo se vložit všechna přihlášení pomocí protokolu UUCP do speciální skupiny, například s názvem uuguest. Domovský adresář daného účtu by měl být nastaven do veřejného dočasného adresáře /var/spool/uucppublic; jeho přihlašovací rozhraní musí tvořit program uucico.
Jestliže máte nainstalovaný balík se stínovými hesly, můžete k tomuto nastavení použít příkaz useradd:
# useradd -d /var/spool/uucppublic -G uuguest
-s /usr/lib/uucp/uucico Upablo
Jestliže nepoužíváte balík se stínovými hesly, budete pravděpodobně muset ručně upravit soubor /etc/passwd, přidat do něj níže uvedenou řádku, kde hodnoty 5 000 a 150 jsou číselná uid a gid, která jsou přidělena uživateli Upablo, resp. skupině uuguest.
Upablo:x:5000:150:UUCP Account:/var/spool/uucppublic:
/usr/lib/uucp/uucico
Po nainstalování účtu musíte tento účet zaktivovat, to lze provést nastavením hesla pomocí příkazu passwd.
Abyste mohli obsluhovat systémy UUCP, které se připojují k vašemu systému pomocí sítě na bázi protokolu TCP, musíte nastavit super-server inetd, jenž se bude starat o přicházející spojení na portu uucp. To lze provést přidáním následující řádky do souboru /etc/inetd.conf:
uucp stream tcp nowait root
/usr/sbin/tcpd /usr/lib/uucp/uucico -1
Parametr -1 sděluje programu uucico, aby prováděl při přihlášení vlastní proceduru ověření totožnosti. Program uucico vyzve, stejně jako standardní program login, k zadání přihlašovacího jména a hesla, avšak bude se spoléhat pouze na svoji vlastní soukromou databázi, a nikoliv na soubor /etc/passwd. Tento soukromý soubor s hesly se nazývá /usr/lib/uucp/passwd a obsahuje páry tvořící přihlašovací jména a hesla:
Upablo IslaNegra
Ulorca co‚rdoba
Samozřejmě tento soubor musí vlastnit uživatel uucp a musí mu být přidělena přístupová práva 600.
Jestliže vám připadá tato databáze jako velmi dobrá myšlenka, kterou byste chtěli uplatnit i u standardních sériových přihlašovacích procedur, budete asi zklamáni, když vám řeknu, že to momentálně nepřipadá v úvahu, aniž byste provedli zásadní úpravy. Zaprvé k tomu budete potřebovat protokol Taylor UUCP verze 1.05, protože ten umožňuje, aby program getty pomocí volby -u podstoupil jméno volajícího uživatele programu uucico.
Potom musíte obelstít vámi používaný program getty, aby namísto běžného vyvolání programu /bin/login vyvolal program uucico. U balíku getty_ps to lze provést přidáním volby LOGIN do konfiguračního souboru. Avšak tato volba úplně zakáže interaktivní přihlašování. Na druhou stranu má balík mgetty krásnou vlastnost, která vám umožní na základě poskytnutého jména uživatele vyvolat odlišné přihlašovací příkazy. Například můžete programu mgetty sdělit, aby používal program uucico u všech uživatelů, jejichž přihlašovací jméno začíná písmenem velké U a u všech ostatních jmen uživatelů bude program mgetty používat standardní příkaz login.
Abyste chránili své uživatele protokolu UUCP od volajících, kteří udávají faleiný název systému a kteří sledují veškerou poštu vašich uživatelů, měli byste ke každému záznamu systému v souboru sys přidat příkaz called-login. Ten je popsán v následující stati Jak se chráníme před podvodníky.
Jeden z největších problémů s protokolem UUCP spočívá v tom, že volající systém může lhát o svém názvu; on sice po přihlášení ohlásí svůj název volanému systému, ale server nemá žádnou možnost, jak by ho mohl ověřit. Takhle se může útočník přihlásit k jeho nebo k jejímu účtu protokolu UUCP a předstírat, že je někdo jiný a může si z tohoto systému vyzvednout poštu. To je zejména problematické v situaci, kdy nabízíte přihlášení pomocí anonymní služby UUCP, jejíž heslo je veřejně dostupné.
Dokud si nejste jisti, že můžete věřit všem systémům volajícím na váš systém, že jsou poctivé, musíte se jistit před tímto druhem podvodníků. Lék na tuto nemoc spočívá v tom, že budete po každém systému vyžadovat, aby používal konkrétní přihlašovací jméno, což lze provést uvedením volby called-login v souboru sys. Vzorový záznam pro daný systém by mohl vypadat asi takto:
system pablo
... obvyklé volby ...
called-login Upablo
Výsledkem je, že kdykoliv se systém přihlásí a bude předstírat, že je hostitel pablo, zkontroluje program uucico, zda se tento systém přihlásil jako uživatel Upablo. Jestliže se volající systém nepřihlásil jako tento uživatel, bude odmítnut a spojení bude zavěšeno. Měli byste si zvyknout přidat volbu called-login ke každému záznamu systému, který přidáte do souboru sys. Je důležité, abyste toto opatření provedli u všech systémů, bez ohledu na to, zda se již s vašim systémem spojily, či nikoliv. U těch systémů, jež vás ještě nikdy nevolaly, byste měli nastavit volbu called-login na nějaké úplně umělé jméno uživatele, například na jméno neverlogsin.
Další způsob, který může detekovat a odrazit podvodníky, představuje použití sekvenčních kontrol hovorů. Sekvenční kontrola hovorů vám může pomoci s ochranou před vetřelci, kteří si nějakým způsobem opatřili přihlašovací heslo vašeho systému s protokolem UUCP.
Při použití sekvenční kontroly hovorů si oba počítače uchovávají záznamy o počtu v minulosti uskutečněných hovorů. S každým spojením se tento počet zvyšuje. Po procesu přihlášení vyšle volající svůj sekvenční počet hovorů a volaný si tento počet zkontroluje se svým vlastním počtem uskutečněných hovorů. Jestliže si počty neodpovídají, bude pokus o uskutečnění spojení odmítnut. Jestliže je základní počet zvolen jako náhodné číslo, stráví útočníci dlouhou dobu, než se jim povede uhodnout správný sekvenční počet hovorů.
Avšak sekvenční kontrola hovorů toho dokáže ještě více: Dokonce i když se nějaké velmi chytré osobě povede detekovat váš sekvenční počet hovorů společně s vaším heslem, stejně na to přijdete. Když nějaký útočník zavolá na systém UUCP vašeho zásobitele a ukradne vám poštu, zvšší se u vašeho zásobitele sekvenční číslo hovoru o jedničku. Když se v budoucnu budete chtít spojit s vaším zásobitelem a pokusíte-li se přihlásit, vzdálený program uucico vás odmítne, protože čísla se v žádném případě nebudou shodovat!
Jestliže máte povolenou sekvenční kontrolu hovorů, měli byste pravidelně sledovat soubory log, zdali se v nich nevyskytují chybové hlášky, jež by mohly naznačovat možné útoky. Jestliže váš systém odmítne sekvenční počet hovorů, který poskytne volající systém, vloží program uucico hlášku do log-souboru, která říká něco ve smyslu "Out of sequence call rejectedi. (odmítnuto z důvodu chybného sekvenčního počtu hovorů). Jestliže je váš systém odmítnut svým zásobitelem, protože sekvenční čísla nejsou synchronní, vloží do souboru log hlášku "Handshake failed (RBADSEQ)i. (neuspěla inicializační fáze (RBADSEQ)).
Chcete-li povolit sekvenční kontrolu, musíte přidat do záznamu systému následující řádku:
# povolení sekvenční kontroly hovorů
sequence true
Kromě toho musíte vytvořit soubor obsahující vlastní sekvenční čísla. Protokol Taylor UUCP uchovává sekvenční čísla v souboru s názvem .Sequence, jenž se nachází v dočasném adresáři vzdáleného hostitele. Vlastníkem tohoto souboru musí být uživatel uucp a musí mu být přiřazen režim 600 (to znamená, že do něj může zapisovat a z něho může číst pouze uživatel uucp). Nejlepší je tento soubor založit s libovolnou, předem dohodnutou počáteční hodnotou.
V opačném případě se může útočníkovi povést uhodnout skutečný počet hovorů například tak, že vyzkouší všechny hodnoty menší než číslo 60.
# cd /var/spool/uucp/pablo
# echo 94316 > .Sequence
# chmod 600 .Sequence
# chown uucp.uucp .Sequence
Samozřejmě, že vzdálený systém musí zároveň povolit sekvenční kontrolu hovorů a ta musí mít nastaven sekvenční počet hovorů na přesně stejnou hodnotu, na jakou ho máte nastaven vy.
Chcete-li poskytovat anonymní přístup pomocí protokolu UUCP, musíte nejprve dříve opsaným způsobem nastavit speciální účet pro tuto službu. Běžně se tomuto účtu přiřazuje stejné přihlašovací jméno a heslo, například uucp.
Kromě toho musíte ještě pro neznámé systémy nastavit několik bezpečnostních voleb. Můžete jim například zakázat spouštění jakýchkoliv příkazů na vašem systému. Avšak tyto parametry nemůžete nastavit v záznamu v souboru sys, protože příkaz system vyžaduje název systému, který vy zatím neznáte. Protokol Taylor UUCP řeší tento problém pomocí dalšího příkazu unknown. Příkaz unknown lze použít v souboru config ke specifikaci libovolného příkazu, který by za normálních okolností byl uveden v záznamu systému:
unknown remote-receive ~/incoming
unknown remote-send ~/pub
unknown max-remote-debug none
unknown command-path /usr/lib/uucp/anon-bin
unknown commands rmail
První dva řádky povolí neznámým systémům stahování souborů pouze z adresářové struktury, která se nachází pod adresářem pub, a posílání souborů povolí pouze do adresáře incoming, který se nachází pod adresářem /var/spool/uucppublic. Další řádek sdělí programu uucico, aby ignoroval veškeré požadavky ze vzdáleného systému, které by požadovaly zapnutí místního ladění. Poslední dva řádky povolují neznámým systémům spouštět příkaz rmail; avšak cesta uvedená u tohoto příkazu sděluje programu uucico, aby hledal příkaz rmail pouze v soukromém adresáři s názvem anon-bin. To vám umožní poskytovat speciální příkaz rmail, který bude například umět doručit superuživateli veškerou poštu k prozkoumání. Tento příkaz současně umožní anonymním uživatelům zastihnout správce systému, ale zabrání jim vložit jakoukoliv poštu, která je určena pro jiné systémy.
Abyste povolili anonymní službu UUCP, musíte zadat do souboru config minimálně jeden příkaz unknown. V opačném případě by program uucico odmítl všechny anonymní systémy.
Ke sjednání řízení relace a přenosu souborů se vzdáleným hostitelem používá program uucico skupinu standardizovaných zpráv. Tato skupina zpráv se často označuje jako tzv. vysokoúrovňový protokol. Během inicializační fáze a během fáze zavěýování se tyto zprávy posílají jako řetězce. Avšak během přenosové fáze se používá doplňkový nízkoúrovňový protokol, který je většinou pro vyšší úrovně transparentní. To proto, aby se například při použití nespolehlivých linek mohla provádět detekce chyb.
Protože se protokol UUCP používá pro rozdílné typy spojení, jako jsou sériové linky nebo sítě na bázi protokolu TCP nebo dokonce X.25, jsou zapotřebí nízkoúrovňové protokoly. Kromě toho různé implementace protokolu UUCP obsahují odlišné protokoly, které v zásadě provádějí stejné služby.
Protokoly se mohou rozčlenit do dvou kategorší: na protokoly interaktivní a na protokoly používající pakety. Protokoly interaktivní přenášejí soubor jako celek, eventuálně mohou u tohoto souboru vypočítat kontrolní součet. Tento typ nemá žádnou režiš, avšak vyžaduje spolehlivé spojení, protože jakákoliv chyba způsobí, že soubor musí být celý poslán znovu. Tyto protokoly se zpravidla používají u spojení na bázi protokolu TCP, avšak jejich použití není vhodné u telefonních linek. I když moderní modemy odvádějí poměrně dobrou práci, co se týká korekce chyb, přesto nejsou perfektní a navíc ani neexistuje žádná detekce chyb mezi vaším počítačem a modemem.
Na druhou stranu protokoly používající pakety rozdělují soubor na několik stejně velikých kousků. Každý paket je posílán a přijímán odděleně, je vypočítáván kontrolní součet a zasílateli je podáváno potvrzení o přijetí. Aby se doprava ještě více zefektivnila, byly vynalezeny protokoly s proměnlivými okny, které připouštějí v libovolném okamžiku omezený počet (okno) nevyřízených potvrzení. To značně sníží množství času, které stráví program uucico během přenosu vyčkáváním. Navíc jsou tyto protokoly neefektivní u sítí na bázi protokolu TCP, protože mají poměrně velkou režiš v porovnání s interaktivními protokoly.
Rozdíl je i v šířce přenosové cesty. Někdy je po sériovém spojení nemožné poslat osmibitové znaky, například když spojení prochází přes hloupý terminálový server. V takovém případě musí být při posílání znaky z osmibitové sady uvozeny. Když posíláte osmibitové znaky po sedmibitovém spojení, musí tyto znaky projít konverzí, která zdvojnásobí množství přenášených dat, i když toto množství dat může být nakonec určitým způsobem kompenzováno interní hardwarovou kompresí. Linky, jež jsou schopny přenášet libovolné osmibitové znaky, se zpravidla nazývají přímé osmibitové linky. To je případ všech spojení na bázi protokolu TCP, stejně tak je tomu i u většiny modemových spojení.
V protokolu Taylor UUCP verze 1.04 jsou dostupné následující nízkoúrovňové protokoly:
Všechny protokoly umožňují určitou změnu velikosti paketů, změnu hodnot překročení časového limitu atp. Ve standardních podmínkách obvykle fungují implicitní hodnoty dobře, avšak ve vaší situaci nemusí být optimální. Například protokol g může používat velikosti oken v rozmezí od 1 do 7 a velikosti paketů, jako násobky čísla 2, v rozsahu od 64 do 4 096.
Jestliže je vaše telefonní linka většinou rušená tak, že se po ní ztrácí více než 5 procent všech paketů, měli byste asi snížit velikost paketu a zmenšit velikost okna. Na druhou stranu, u velmi kvalitních telefonních linek vám může připadat režie protokolu příliš nehospodárná, protože protokol bude posílat potvrzení ACK u každých 128 bajtů. V tomto případě můžete chtít zvýšit velikost paketu na hodnotu 512 bajtů nebo dokonce na 1 024 bajtů.
Protokol Taylor UUCP poskytuje mechanismus, který může vyhovět vašim potřebám. Všechny tyto parametry lze nastavit pomocí příkazu protocol-parameter, jenž se umísšuje do souboru sys. Například chcete-li pro komunikaci s hostitelem pablo nastavit u protokolu g velikost paketu na 512 bajtů, přidejte do souboru sys následující řádku:
system pablo
...
protocol-parameter g packet-size 512
Nastavitelné parametry a jejich názvy se liší protokol od protokolu. Chcete-li kompletní seznam těchto parametrů, nahlédněte prosím do dokumentace, která je součástí zdrojového kódu protokolu Taylor UUCP.
Ne každá implementace programu uucico komunikuje a rozumí každému protokolu, takže během inicializační fáze se musí oba procesy dohodnout na použití společného protokolu. Řídicí program uucico nabídne řízenému programu uucico seznam podporovaných protokolů (pošle řetězec Pprotlist), ze kterého si může řízený program vybrat nějaký protokol.
Na základě typu používaného portu (modem, protokol TCP nebo přímá linka) sestaví program uucico implicitní seznam protokolů. U modemových a přímých spojení bude tento seznam zpravidla obsahovat protokoly i, a, g, G a j. U spojení na bázi protokolu TCP bude seznam obsahovat protokoly t, e, i, a, g, G, j a f. Tento seznam můžete potlačit pomocí příkazu protocols, jenž může být uveden buď v záznamu systému, nebo v záznamu portu. Například v souboru port můžete upravit záznam vašeho modemového portu následujícím způsobem: port serial1
...
protocols igG
Tento příkaz bude vyžadovat, aby veškerá přicházející a odcházející spojení na tomto portu používala protokoly i, g nebo G. Jestliže vzdálený systém nepodporuje ani jeden z těchto protokolů, pak bude rozhovor neúspišný.
Tato stať popisuje to, co by mohlo zlobit u vašeho spojení pomocí protokolu UUCP a dává vám doporučení, kde byste měli hledat chyby. Avšak otázky byly sestaveny přímo z hlavy.
Existuje mnohem více věcí, které by mohly dělat problémy.
V každém případě povolte ladění pomocí volby -xall a podívejte se na výpis v adresáři Debug, který se nachází ve vašem dočasném adresáři. Tento výpis by vám měl rychle pomoci rozpoznat, v čem problém vězí. Taktéž se mi osvědčilo zapnout reproduktor u mého modemu v případě, že jsem se nemohl spojit se vzdáleným systémem. U modemů kompatibilních se standardem Hayes to lze provést přidáním řetězce "ATL1M1 OKiL do komunikačního skriptu modemu, jenž se nachází v souboru dial.
Nejprve byste měli vždy zkontrolovat, zda jsou správně nastavena všechna práva u souborů.
Program uucico by měl mít nastaveno uid na uucp a všechny soubory v adresářích /usr/lib/uucp, /var/spool/uucp a /var/spool/uucppublic by měly být vlastněny uživatelem uucp. V dočasném adresáři existuje také několik skrytých souborů, které musí vlastnit uživatel uucp.
Program uucico vypíše "Wrong time to callig: Tato hláška obvykle znamená, že jste buď v záznamu systému v souboru sys nezadali příkaz time, který určuje, v jakých časech se můžete spojit se vzdáleným systémem, nebo jste v něm zadali takový příkaz time, jenž v současné době zakazuje volání. Jestliže není poskytnut žádný časový plán volání, bude program uucico předpokládat, že se nedá se systémem nikdy spojit.
Program uucico si stěžuje, že daný systém je již zablokován: To znamená, že program uucico detekoval pro daný vzdálený systém zamykací soubor v adresáři /var/spool/uucp. Zamykací soubor může zůstat z dřívějšího spojení se systémem, které zhavarovalo nebo které bylo zrušeno. Ale je také pravděpodobné, že by mohl existovat ještě jeden proces uucico, který se snažil dovolat na vzdálený systém a zůstal viset někde v komunikačním skriptu apod. Jestliže se procesu uucico nepodaří úspěšně spojit se vzdáleným systémem, ukončete tento proces vysláním zavěýujícího signálu a odstraňte všechny zamykací soubory, které po tomto procesu zůstaly.
Mohu se spojit se vzdáleným systémem, ale komunikační skript nefunguje správně: Podívejte se na text, jenž obdržíte ze vzdáleného systému. Jestliže je zkomolený, může to naznačovat, že jde o problém s rychlostí. V opačném případě si ověřte, že obdržený text skutečně souhlasí s textem, který očekává váš komunikační skript. Pamatujte si, že komunikační skript vždy začíná očekávaným řetězcem. Jestliže obdržíte výzvu k přihlášení a pošlete svoje uživatelské jméno, ale už nikdy neobdržíte výzvu k zadání hesla, vložte mezi tyto řetězce nějakou prodlevu, nebo dokonce můžete vložit prodlevu mezi jednotlivé znaky. V tomto případě byste mohli být rychlejší, než je váš modem.
Můj modem nevytáčí: Jestliže váš modem neindikuje vzestup linky DTR, když se váš program uucico snaží volat směrem ze systému, pravděpodobně jste programu uucico nesdělili správné zařízení. Jestliže váš modem rozeznává linku DTR, ověřte si pomocí terminálového programu, že na toto zařízení můžete posílat znaky. Jestliže posílání znaků funguje, zapněte na začátku komunikačního skriptu modemu opakování znaků pomocí direktivy \E. Jestliže se ani po zapnutí opakování znaků nebudou během komunikačního skriptu modemu zobrazovat vaše příkazy, zkontrolujte, zda není na váš modem rychlost linky příliš vysoká nebo nízká. Jestliže vidíte opakování znaků, zkontrolujte, zda jste nevypnuli odpovědi modemu nebo zda jste je nenastavili na číselné kódy. Zkontrolujte, zda je vlastní komunikační skript správný. Pamatujte si, že pokud chcete poslat na modem zpětné lomítko, musíte za sebou napsat dvě zpětná lomítka.
Můj modem se pokouší volat, ale nemůže se dostat na vnější telefonní sít: Do telefonního čísla vložte prodlevu. To je zejména užitečné v případě, kdy se snažíte volat z vnitřní telefonní sítě společnosti. Lidé z Evropy, kteří vytáčejí čísla pomocí pulsní volby, by měli zkusit tónovou volbu. V některých zemích teprve nedávno zlepšili telekomunikační společnosti své sítě. V těchto případech by mohla pomoci tónová volba.
V log-souboru je uvedeno, že mám extrémně vysokou ztrátu paketů: To vypadá na problém s rychlostí komunikace. Že by spojení mezi počítačem a modemem bylo příliš pomalé (pamatujte si, že byste toto spojení měli nastavit na nejvyšší možnou efektivní rychlost)? Nebo, že by váš hardware byl tak pomalý a nedokázal by obsloužit včas přerušení? Říká se, že sériový port s čipovou sadou NSC 16550A pracuje docela dobře při rychlosti 38 400 bps; avšak bez vyrovnávací paměti FIFO (například u čipů 16 450) je nejvyšší možná rychlost 9 600 bps. Také byste se měli ujistit, že máte u vaší sériové linky povoleno hardwarové řízení toku dat.
Další pravděpodobnou příčinou by mohlo být to, že nemáte na portu povoleno hardwarové řízení toku dat. Protokol Taylor UUCP verze 1.04 neobsahuje žádné prostředky na nastavení řízení toku dat na RTS/CTS. Toto řízení musíte explicitně povolit v souboru rc.serial pomocí následující řádky:
$ stty crtscts < /dev/cua3
Mohu se přihlásit, avšak inicializační fáze neuspěje: Zde se může vyskytovat spousta problémů. Hodně by vám měly pomoci záznamy uvedené v souboru log. Podívejte se na seznam protokolů, které nabízí vzdálený systém (vzdálený systém pošle během inicializační fáze řetězec Pprotlist). Možná ani jeden z protokolů nemají oba systémy společný (zvolili jste vůbec nějaký protokol v souboru sys nebo port?).
Jestliže vzdálený systém pošle řetězec RLCK, v tom případě na vzdáleném systému existuje pro váš systém starý zamykací soubor. Jestliže to není z důvodu, že jste již spojeni se vzdáleným systémem na nějaké jiné lince, požádejte o jeho odstranění.
Jestliže vzdálený systém pošle řetězec RBADSEQ, v tom případě je na vzdáleném systému zapnuta sekvenční kontrola hovorů, avšak sekvenční počty hovorů si neodpovídají. Jestliže vzdálený systém pošle řetězec RLOGIN, nebylo vám povoleno přihlášení pod tímto číslem id.
Pokud byl váš balík UUCP sestaven se zapisováním do log-souborů kompatibilních s protokolem Taylor UUCP, budete mít pouze tři globální log-soubory, které budou umístěny v dočasném adresáři. Hlavní log-soubor se nazývá Log a obsahuje všechny informace o uskutečněných spojení a o přenesených souborech. Typický výpis z tohoto souboru vypadá asi následovně (po malém přeformátování, aby se vešel na šířku stránky):
uucico pablo - (1994-05-28 17:15:01.66 539)
Calling system pablo (port cua3)
uucico pablo - (1994-05-28 17:15:39.25 539) Login successful
uucico pablo - (1994-05-28 17:15:39.90 539) Handshake successfull
(protocol 'g' packet size 1024 window 7)
uucico pablo postmaster (1994-05-28 17:15:43.65 539)
Receiving D.pabloB04aj
uucico pablo postmaster (1994-05-28 17:15:46.51 539)
Receiving X.pabloX04ai
uucico pablo postmaster (1994-05-28 17:15:48.91 539)
Receiving D.pabloB04at
uucico pablo postmaster (1994-05-28 17:15:51.52 539)
Receiving X.pabloX04as
uucico pablo postmaster (1994-05-28 17:15:54.01 539)
Receiving D.pabloB04c2
uucico pablo postmaster (1994-05-28 17:15:57.17 539)
Receiving X.pabloX04c1
uucico pablo - (1994-05-28 17:15:59.05 539)
Protocol 'g' packets: sent 15,
resent 0, received 32
uucico pablo - (1994-05-28 17:15:16.02 539) Call complete
uuxq pablo postmaster (1994-05-28 17:16:11.11 546)
Executing X.pabloX04ai
(rmail okir)
uuxq pablo postmaster (1994-05-28 17:16:13.30 546)
Executing X.pabloX04as
(rmail okir)
uuxq pablo postmaster (1994-05-28 17:16:13.51 546)
Executing X.pabloX04c1
(rmail okir)
Další důležitý log-soubor se nazývá Stats a jsou v něm vypsány statistiky přenesených souborů. Část ze souboru Stats, která odpovídá výše uvedenému přenosu, vypadá asi takto:
postmaster pablo (1994-05-28 17:15:44.78)
received 1714 bytes in 1.802 seconds (851 bytes/sec)
postmaster pablo (1994-05-28 17:15:46.66)
received 57 bytes in 0.634 seconds (89 bytes/sec)
postmaster pablo (1994-05-28 17:15:49.91)
received 1898 bytes in 1.599 seconds (1186 bytes/sec)
postmaster pablo (1994-05-28 17:15:51.67)
received 65 bytes in 0.555 seconds (117 bytes/sec)
postmaster pablo (1994-05-28 17:15:55.71)
received 3217 bytes in 2.254 seconds (1427 bytes/sec)
postmaster pablo (1994-05-28 17:15:57.31)
received 65 bytes in 0.590 seconds (110 bytes/sec)
Opět byly řádky rozděleny tak, aby se vešly na šířku stránky.
Třetím souborem je soubor Debug. Do tohoto souboru se zapisují ladicí informace. Pokud používáte ladění, měli byste se ujistit, že má tento soubor nastavena přístupová práva 600.
V závislosti na vámi vybraném ladicím režimu může tento soubor obsahovat přihlašovací jméno a heslo, které používáte při spojení se vzdáleným systémem.
Některé binární soubory protokolu UUCP, které jsou součástí distribucí operačního systému Linux, byly sestaveny se zapisováním do log-souborů, které jsou kompatibilní se standardem HDB. Protokol HDB UUCP používá velké množství log-souborů, které jsou uloženy v adresářové struktuře pod adresářem /var/spool/uucp/.Log. Tento adresář obsahuje další tři podadresáře, konkrétně uucico, uuxqt a uux. V nich jsou uloženy záznamy ve formě log-souborů, které generuje každý z uvedených programů. Názvy log-souborů se pro každý systém liší. Tedy výstup z programu uucico půjde při spojení se systémem pablo do souboru .Log/uucico/pablo, zatímco výpis z následně spuštěného příkazu uuxqt půjde do souboru .Log/uuxqt/pablo. Nicméně řádky uvedené v různých log-souborech jsou totožné s řádky, které jsou uvedeny v log-souborech při použití zapisování, které je kompatibilní s protokolem Taylor UUCP.
Když u zapisování do log-souborů, které vyhovují standardu HDB, povolíte ladicí informace, pak tyto ladicí informace půjdou do adresáře .Admin, který se nachází pod adresářem /var/spool/uucp. Při hovorech směrem ze systému půjdou tyto informace do souboru .Admin/audit.local, zatímco v případě, když někdo volá váš systém, půjde výstup z programu uucico do souboru .Admin/audit.