\"Tulostetaan esim. tbl file | fditroff -me ..."
\".ig ZZ"
.nr pp 11
.th
.nr qp 11				\" ps for quotes
.nr sp 13				\" ps for section header
.nr tp 8				\" ps for header & footer
.he '''Luku 1 \*- Miksi Hakemistopalvelija ?'
.fo ''\s11-%-\s0''
.tp
.sp 5
.(l C
.b
\s19ISODE Hakemistopalvelija 
.sp
Ohjelmiston installointi ja konfigurointi\s0
.sp 5
.i
\s13Petri Jokela 
.r
.sp 2
Ohjelmistotekniikan Laitos
.sp
Tampereen Teknillinen Korkeakoulu
.sp
PL 527
.sp
33101 Tampere\s0
.)l
.(q
.ps 11
K{dess{si on nyt dokumentti, jonka avulla voit liitty{
OSI-Hakemistoon! T{ss{ keskitymme hakemistopalvelijan
installointiin ja konfigurointiin, eik{ tarkoituksenamme ole perehty{
OSI-hakemistomallin yksityiskohtiin ja sen sis{lt||n. Kuitenkin, jotta
pystyisimme liittym{{n Hakemistoon ja yll{pit{m{{n hakemistopalvelijaa, tulee
meill{ olla jossain m{{rin perustietoa OSI-hakemistosta.
Siksi k{ymme l{pi joitakin Hakemiston konsepteja. T{m{n
dokumentin p{{m{{r{n{ on antaa Hakemiston yll{pit{j{lle riitt{v{sti
tietoa, jotta h{n voi liitty{ Hakemistoon ja yll{pit{{ sit{.
.sp 9
\*(td
.)q
.+c
.ce
\fB\s171. \s15Miksi Hakemistopalvelija ?\s0\fP
.(x
1. Miksi Hakemistopalvelija ?
.)x
.sp
.pp
OSI-hakemiston kehitt{minen alkoi aluperin k{ytt{jien tarpeesta
selvitt{{, kuinka tietty henkil| on tavoitettavissa telefaxin,
elektronisen postin tai vaikkapa puhelimen v{lityksell{. Kuitenkin
t{n{ p{iv{n{ Hakemisto k{sitt{{ jo paljon muita sovelluksia. Hakemisto
ei pid{ sis{ll{{n vain tietoa henkil|ist{, vaan my|s OSI-sovelluksia
kuten FTAM (File Transfer, Access and Management), MHS-reititys
(Message Handling System) ja keltaisten sivujen palvelut
(Yellow pages service). ISODE:n \(a[Ros89\(a]
Hakemistopalvelija QUIPU on vapaasti
saatavissa oleva toteutus OSI-hakemistosta. ISODE sis{lt{{ Hakemiston
lis{ksi my|s OSI-mallin kerrokset 5 ja 6 sek{ muita OSI-sovelluksia.
ISODE muodostaa hyv{n perustan OSI:iin siirtymiselle.
.pp
Hakemisto on kokoelma systeemej{, jotka toimivat yhten{isesti ja
sis{lt{v{t tietoa
reaalimaailman olioista. Olio voi olla mik{ tahansa nimett{v{ kohde
jossain ymp{rist|ss{, mutta tavallisesti rajoitutaan
tietoliikenneyhteyksiin ja niiden k{ytt{j{kuntaan. Esimerkkej{
tyypillisist{ olioista ovat organisaatiot, henkil|t,
tietokonej{rjestelm{t tai sovellukset, kuten FTAM. Yksityiskohtaisempi
selvitys OSI-hakemistosta l|ytyy l{hteest{ \(a[JH\(a].
.pp
Hakemiston standardit on m{{ritelty \(a[ISO88,CCITT88\(a]:ss{.
QUIPU-hakemiston suunnittelua on kuvattu raportissa \fIThe Design of
QUIPU\fP \(a[SKill89a\(a] sek{ toteutusta ja k{ytt|{ \fIISODE User\(aas
Manual\fP:n
\(a[SKill89b\(a] viidenness{ osassa. T{m{ dokumentti perustuu p{{osin 
Pilottiprojektin\**
.(f
\**K{yt{mme t{st{ lyhenyst{ NYSERNet Inc.:n sponsoroimasta projektista
"NYSERNet White Pages Pilot Project".
.)f
yll{pit{j{n oppaaseen \(a[NYSERNet\(a]. Useat suomenkieliset termit
eiv{t aina istu hyvin asiayhteyteen, joten olen liitt{nyt vastaavia
englanninkielisi{ k{sitteit{ tekstiin.
.pp
Seuraavassa tutustumme Hakemistopalvelijan toimintaan ja selvit{mme
joitakin siihen liittyvi{ k{sitteit{. Sen j{lkeen voimme ryhty{
ohjelmiston asennukseen. Ne, joille Hakemistopalvelijan rakenne ja
k{sitteet ovat jo ennest{{n tuttuja, voivat siirty{ lukuun
Ohjelmiston installointi ja konfigurointi.
.he '''Luku 2 \*- Hakemistopalvelijan toiminta'
.+c
.ce
\fB\s172. \s15Hakemistopalvelijan toiminta\s0\fP
.(x
2. Hakemistopalvelijan toiminta
.)x
.sp
.pp
K{ytt{j{ (eli Directory User \*- DU) kiinnittyy Hakemistoon
k{ytt{j{agentin (Directory User Agent \*- DUA) v{lityksell{.
Pilottiprojektin ohjelmistossa k{ytt{j{ tekee liitynn{n Hakemistoon
\fIDish\fP-ohjelman (Directory Shell) avulla. K{ytt{j{ keskustelee
DUA:n kanssa suorittaakseen toiminpiteit{ (esim. hakuja,
p{ivityksi{) Hakemistoon. DUA puolestaan keskustelee systeemiagenttien
(Directory System Agent \*- DSA) kanssa, jotka suorittavat k{ytt{j{n pyyt{m{t
palvelut. Jos kyseisell{ DSA:lla ei ole informaatiota k{ytt{j{n
pyyt{mist{ palveluista, voi t{m{ DSA ottaa yhteyden toiseen
"l{hemp{n{" informaatiota olevaan DSA:han. Jos t{ll{k{{n DSA:lla ei ole
haluttua informaatiota, ketjutus (chaining) jatkuu, kunnes
informaatio l|ytyy.\"(kuva 1a, sivu 3)"
Vaihtoehtoisesti DSA voi palautaa
DUA:lle tai toiselle DSA:lle viitteen (referral) l{hemp{n{
informaatiota olevaan DSA:han.\"(kuva 1b, sivu 4)"
T{st{ her{{ kysymys, miten
DSA:t sitten v{litt{v{t tietoa toisilleen ?
.sh 2 "Hakemiston toiminnallinen malli" 2 1
.(x
.ti \n($0+2
\*($n Hakemiston toiminnallinen malli
.)x
.pp
.sp
DSA:lla on olemassa is{nt{- (MASTER) ja orjakopioita (SLAVE)
\fIEDB\fP-tiedostoista (Entry Data Block), jotka ovat Hakemiston
puumaisen tietokannan (DIT \*- Directory Information Tree)
solmuja.
Jokaisella Hakemiston eri tasolla
lukuunottamatta Hakemistopuun "lehti{" on \fIEDB\fP-tiedosto, joka sis{lt{{
\fBkaiken\fP tiedon seuraavasta alemmasta tasosta puussa.
MASTER-kopiot ovat alkuper{isi{, ja aina kun niihin tehd{{n p{ivityksi{,
ne suorittaa DSA, jolla on MASTER-kopio ko. \fIEDB\fP:st{. SLAVE-kopiot
p{ivitet{{n MASTER \fIEDB\fP:st{, kun SLAVE DSA k{ynnistet{{n
tai kun systeemin yll{pit{j{ komennon antamalla niin haluaa. My|hemmin
on tarkoitus, ett{ p{ivitys tapahtuu automaattisesti ilman, ett{
yll{pit{j{n tarvitsee siihen puuttua. Kun esimerkiksi haluaisimme perustaa
uuden DSA:n organisatiota "o=ISO Company" varten, joka tulisi
sijaitsemaan Hakemistopuussa "c=FI":n alla,
tulee meid{n v{litt{{ uudelle DSA:lle juuri- (ROOT) ja maatason (Country)
\fIEDB\fP:ist{ SLAVE-kopiot. Lis{ksi uuden DSA:n tulee l{hett{{ p{ivitys
omasta \fIEDB\fP:{{n "c=FI":n DSA:lle. Nyt uusi DSA tiet{{ paikkansa puussa,
siihen voidaan ottaa yhteytt{ ja se voi ottaa yhteytt{. Halutessaan
siirty{ puun haarasta
toiseen on k{ytt{j{n kuljettava juuren kautta, mink{ vuoksi jokaisen
DSA:n on tiedett{v{, miten ko. juureen p{{st{{n. Tehokkuussyist{
jokaisella DSA:lla on my|s syyt{ olla SLAVE-kopio kaikista itse{{n
ylemp{n{ DIT:ss{ olevista \fIEDB\fP:ist{.
.sh 2 "Hakemiston organisatorinen malli"
.(x
.ti \n($0+2
\*($n Hakemiston organisatorinen malli
.)x
.pp
.sp
DSA:t on jaettu kolmeen luokkaan: puhutaan nollatason (Level-0),
ensimm{isen tason (Level-1) ja toisen tason (Level-2) DSA:ista. T{m{
luokittelu on tehty Pilottiprojektin tarkoituksia varten, mutta se
selvent{{ my|s meille, kuinka Hakemistopuu on kartoitettu eri DSA:ien v{lill{.
Liitteess{ 4 on kuva havainnollistamassa eri tasojen DSA:ta.
.sh 2 "Level-0 DSA"
.(x
.ti \n($0+2
\*($n Level-0 DSA
.)x
.pp
T{m{n tason DSA:iden tarkoituksena on
toimia luotettavina DSA:ina, jotka pystyv{t antamaan viitteit{
organisaatiotasolta tuleviin pyynt|ihin. Suomessa on t{ll{
hetkell{ yksi t{m{n tason DSA. Se sijaitsee suoraan 
Hakemistopuun juuren alla ja on nimelt{{n \fIcn=Jaguar\fP.
Tarkastelemme seuraavassa \fIEDB\fP-tiedostojen p{ivityst{.\**
.(f
\**T{m{ saattaa my|hemmin muuttua, mutta nykyinen tilanne sopii t{h{n
yhteyteen esimerkkin{.
.)f
.pp
\fIJaguar\fP sis{lt{{ SLAVE-kopion ROOT \fIEDB\fP:st{, jonka se saa
MASTER-kopion omaavalta DSA:lta (\fIcn=Giant Tortoise\fP).
\fIJaguar\fP on MASTER DSA "c=FI":lle eli se sis{lt{{
MASTER \fIEDB\fP:n Suomessa oleville organisaatioille. \fIEDB\fP:t Ruotsista
(\fIc=SE\fP), Norjasta (\fIc=NO\fP) ja Islannista (\fIc=IS\fP)
\fIJaguar\fP kopio itselleen ja l{hett{{ niille vastaavasti \fIc=FI EDB\fP:n.
Koska \fIJaguar\fP on MASTER DSA "c=FI":lle, l{hett{{ se \fIc=FI
EDB\fP:n my|s ROOT-tason DSA:lle (\fIcn=Giant Tortoise\fP). Vastaavasti
Level-1 DSA:t saavat kopion \fIc=FI\fP:n ja ROOT:n \fIEDB\fP:ist{
\fIJaguar\fP:lta.
.pp
Level-0 DSA:t antavat viiteit{ (referral)
k{sitelless{{n pyynt|j{ toisilta DSA:ilta.
.sh 2 "Level-1 DSA"
.(x
.ti \n($0+2
\*($n Level-1 DSA
.)x
.pp
.sp
Jokaisella Hakemistoon liittyv{ll{ organisaatiolla tulisi olla oma
DSA, joka sis{lt{{
MASTER \fIEDB\fP:n ko. organisaatiolle. N{m{ DSA:t sijaitsevat suoraan
"c=FI":n alla. T{m{n tason DSA vastaanottaa kopion sek{ ROOT:n ett{ c=FI:n
\fIEDB\fP:ist{ Level-0 DSA:lta (\fIcn=Jaguar\fP) ja l{hett{{ oman
MASTER-kopionsa Level-0 DSA:lle (\fIcn=Jaguar\fP). Vastaavasti t{m{n
tason DSA:t antavat kopion omasta \fIEDB\fP:st{{n sek{ kopion ROOT:n ja c=FI:n \fIEDB\fP:ist{
kaikille t{m{n DSA alapuolisille Level-2 DSA:ille. Samoin Level-2
DSA:t antavat omat MASTER \fIEDB\fP:ns{ Level-1 DSA:lle.
.pp
Esimerkiksi
"c=FI@o=Tampere University of Technology" on organisaatio, jolla
on oma DSA (\fIcn=Rhea\fP). \fIcn=Rhea\fP sis{lt{{ MASTER \fIEDB\fP:n
Tampereen Teknilliselle Korkeakoululle. \fIcn=Rhea\fP saa kopiot ROOT
ja c=FI \fIEDB\fP:st{ \fIcn=Jaguar\fP:lta ja l{hett{{ oman \fIEDB\fP:ns{
\fIcn=Jaguar\fP:lle. Koska muita DSA:ita (Level-2) ei t{ss{
organisaatiossa ole, ei DIT:ss{ my|sk{{n ole alasp{in v{litett{v{{ tietoa.
.sh 2 "Level-2 DSA"
.(x
.ti \n($0+2
\*($n Level-2 DSA
.)x
.pp
.sp
Jokaisella organisaatiolla voi olla yksi tai useampia DSA:ita riippuen
organisaation koosta. N{m{ DSA:t sijaitsevat suoraan
"c=FI@o=joku-organisaatio":n alla. T{ll{ hetkell{ pilottiprojekti ei tue
t{t{ piirrett{. Kuitenkin on t{rke{{ luokitella organisaatio niin,
ett{ se sis{lt{{ my|s organisatorisia yksik|it{ (Organisational Units
\*- ou). Level-2 tason DSA:t voivat tulla kyseeseen, jos organisaatio on
niin suuri, ett{ yhden DSA:n k{ytt{minen kuormittaa systeemi{ liikaa.
T{ll|in voidaan Level-2
DSA:lle ohjata osa Level-1 DSA:n toiminnasta. Emme puutu t{ss{ asiaan
kuitenkaan sen enemp{{.
.he '''Luku 3 \*- Ohjelmiston installointi ja konfigurointi'
.+c
.ce
\fB\s173. \s15Ohjelmiston installointi ja konfigurointi\s0\fP
.(x
3. Ohjelmiston installointi ja konfigurointi
.)x
.sp
.pp
T{ss{ kappaleessa kuvataan kuinka ohjelmisto installoidaan,
konfiguroidaan ja testataan. Lopuksi olemme onnistuneesti liittyneet
Pilottiprojektin Hakemistoon !
.sh 2 "Ohjelmisto" 3 1
.(x
.ti \n($0+2
\*($n Ohjelmisto
.)x
.pp
.sp
Ohjelmisto on QUIPU-niminen\**
.(f
\**QUIPU on projektin nimi, joka juontaa alkujaan muinaisesta Perussa el{neest{
inka-heimosta. He s{ilyttiv{t informaatiota nauhoina. Huolellisesti he
solmivat tietyll{ tavalla v{rillisi{ lankoja nauhoihin muodostaen
merkkej{. Nauhoja solmittiin suuremmaksi kokonaisuudeksi k|ysiin,
joita nimitettiin \fIQuipu\fP:ksi. Mik{ lienee suomenkielinen
vastine...
.)f
toteutus OSI-hakemistosta, joka on osa ISODE-ymp{rist|{ (ISO Development
Environment). QUIPU:n tarkoituksena on saada er{{nlainen kokeiluymp{rist|
standardisoituja Hakemistopalveluja varten, sill{
OSI-hakemistomallista ei viel{ ole laajalti kokemusta. Ohjelmiston
nykyinen toteutus sis{lt{{ DSA:n ja proseduurimaisen liitynn{n
Hakemistopalveluihin (DIrectory SHell \*- DISH).
T{ydempi selvitys QUIPU:n suunnittelusta on l{hteess{ \(a[SKill89a\(a].
Ohjelmistoa koskevista asioista voi kysy{ l{hett{m{ll{ postia
osoitteeseen Directory-Manager@funet.fi.\**
.(f
\**T{st{ l{htien nimit{mme heit{ FI-managereiksi
.)f
.sh 3 "Tietokoneen valinta"
.(x
.ti \n($0+2
\*($n Tietokoneen valinta
.)x
.pp
.sp
Tietokoneymp{rist|n, jossa aiot Hakemiston ohjelmistoa k{ytt{{, tulisi erota
mahdollisimman v{h{n Berkleyn UNIX\(dg
.(f
\(dgUNIX on AT&T:n Bellin laboratorien tavaramerkki
.)f
-ymp{rist|st{. Kuitenkin ohjelmiston on todettu toimivan my|s muissa
UNIX-ymp{rist|iss{ \*- kuten AT&T ja HP. Pilottiprojekti ei kuitenkaan
tue n{it{ ymp{rist|j{.
.pp
Koneessasi tulisi olla DSA:lle n. \(12 Ktavua muistia \fBjokaista omassa\fP
organisaatiossasi olevaa entry{ kohden.
Varmistaudu, ett{ n{in on. Jos DSA joutuu k{ytt{m{{n paljon
sivutusta (paging), voi toiminta olla hidasta.
.sh 3 "Tiedostot"
.(x
.ti \n($0+2
\*($n Tiedostot
.)x
.pp
.sp
Tarvittavien tiedostojen m{{r{ Pilottiprojektissa on suhteellisen
pieni.
.br
Hakemistossa \fBBINDIR\fP \*- tavallisesti \fI/usr/local/bin\fP
on muutama ohjelma:
.ip \fBdish:\fP 12
DIrectory SHell
.br
T{m{ on liitynt{ Hakemistoon, jonka avulla voidaan k{ytt{{ t{ydellisesti
Hakemistopalvelijan toimintoja. Ohjelma ei ole tarkoitettu suoranaisesti
tavallisille k{ytt{jille, vaan sill{ DSA:n yll{pit{j{t voivat suorittaa
ohjelmiston hallintaan liittyvi{ toimenpiteit{.
.ip \fBbind:\fP 12
shell-liitynt{ \fIdish\fPiin \*- kiinnittyminen Hakemistoon
.br
Ohjelmaan on useita linkkej{. \fIdish\fP-liitynt{ voidaan tuoda t{ll{ UNIX
shellin ulottuville. Voit siis antaa komentoja \fIdish\fP:lle k{ynnist{m{tt{
sit{ suoraan. T{m{ tapahtuu liittym{ll{ ensin Hakemistoon
\fIbind\fP:ll{ ja antamalla \fIdish\fP:n
komentoja suoraan UNIX shellist{. Shellist{ voit k{ytt{{
seuraavia komentoja:
.(l
.i
add
compare
delete
dsacontrol
list
modify
modifyrdn
moveto
search
showentry
showname
squid
unbind
.r
.)l
Muista
poistaa liintynt{
Hakemistoon \fIunbind\fP:ll{, kun olet tehnyt toimenpiteesi.
.ip \fBfred:\fP 12
k{ytt{j{n liitynt{ Pilottiprojektiin.
.ip \fBeditentry:\fP 12
Hakemiston entryn editointi
.br
T{m{ shell-scripti her{tet{{n \fIdish\fP:st{, kun pyyd{t sit{
editoimaan Hakemiston entry{.
.sp
.pp
Hakemistossa \fBSBINDIR\fP \*- tavallisesti \fI/usr/etc/\fP tai
\fI/usr/local/etc/\fP \*- on DSA:han liittyvi{ tiedostoja:
.ip \fBros.quipu:\fP 12
QUIPU DSA
.br
T{m{ ohjelma k{ynnistet{{n vain kerran jokaiselle DSA:lle. K{ynnistys
tapahtuu \fIrc.local\fP:sta.
.ip \fBdsaconfig:\fP 12
k{ytet{{n DSA:n konfigurointiin
.sp
.pp
ISODE:n hakemistosta \fBETCDIR\fP \*- tavallisesti \fI/usr/etc/\fP tai
\fI/usr/local/etc/\fP \*- l|ytyy:
.ip "\fBoidtable.at, oidtable.gen, oidtable.oc:\fP"
N{m{ m{{rittelev{t
attribuuttityypit, objektien tunnistamistavat ja objektiluokat
systeemille. N{ihin tiedostoihin et normaalisti koske, jolleivat ne
ole vahingoittuneet jostain syyst{. N{m{ tiedostot kopioit my|hemm{ss{
vaiheessa oman DSA:si k{ytt||n, jotta my|s kansalliset
attribuuttityypit ja objektiluokat ovat k{ytett{viss{si (kappaleessa
\fIdsaconfig\fP:n ajaminen).
.ip \fBdsaptailor:\fP
Tiedosto, jolla DUA on sovitettu
Hakemistoj{rjestelm{{n. T{m{ tiedosto konfiguroidaan ennen DSA:n
k{ynnist{mist{.
.ip "\fBisoaliases, isobjects, isoentities, isomacros, isoservices:\fP"
N{m{ ovat erilaisia ISODE:n k{ytt{mi{ tietokantoja. N{ihin ei sinun
tarvitse koskea, jolleivat ne ole vahingoittuneet jostain syyst{.
.ip \fBisologs:\fP
T{m{ scripti ajetaan \fIcron(8)\fP:sta. Scripti
\(aasiivoaa\(aa ISODE:n lokitiedostoja, jotka sijaitsevat hakemistossa
\fBLOGDIR\fP \*- esimerkiksi \fI/usr/tmp/\fP.
.ip \fBisotailor:\fP
Tiedosto, jolla ISODE on sovitettu
Hakemistoj{rjestelm{{n. T{m{ tiedosto konfiguroidaan ennen DSA:n
k{ynnist{mist{.
.sp
.sh 3 "Pilottiprojektin ohjelmisto"
.(x
.ti \n($0+2
\*($n Pilottiprojektin ohjelmisto
.)x
.pp
.sp
ISODE-ohjelmiston saat seuraavasti:
.(l
.b
% cd /usr/src/local
% ftp funet.fi
Connected to funet.fi.
220 etana FTP server (SunOS 4.0) ready.
Name (funet.fi:user): anonymous
331 Guest login ok, send ident as password.
Password:guest
230 Guest login ok, access restrictions apply.
ftp> cd networking/isode
200 PORT command successful.
ftp> binary
200 Type set to I.
ftp> get isode-VERSION.tar.Z
200 PORT command successful.
ftp> quit
221 Goodbye.
% zcat isode-VERSION.tar.Z \(a| tar xf -
% rm isode-VERSION.tar.Z
.r
.)l
.sp
Seuraavaksi siirry hakemistoon \fIisode-VERSIO\fP, miss{ \fIVERSIO\fP kertoo
ISODE:n version:
.(q
.b
% cd isode-VERSIO/
.r
.)q
.pp
Tiedosto \fIREAD-ME\fP t{ss{ hakemistossa sis{lt{{ ohjeet, kuinka ISODE
konfiguroidaan, generoidaan ja installoidaan. Katso mahdollisia
lis{ohjeita sielt{. K{ymme my|s seuraavassa
l{pi kohtia t{st{ tiedostosta.
.sh 2 "ISODE:n konfigurointi"
.(x
.ti \n($0+2
\*($n ISODE:n konfigurointi
.)x
.pp
.sp
Konfigurointi on hyvin suoraviivaista. T{ss{ on esimerkki, kuinka se
tehd{{n SunOS 4:lle
.(b
.b
% cp config/sunos4.h h/config.h
% cp config/sunos4.make config/CONFIG.make
% cp config/*.local support/
.r
.)b
Ohjeita muille systeemeille l|ytyy katsomalla \fIREAD-ME\fP-tiedostoa.
Katso seuraavaksi tiedostoista
.(b
.i
h/config.h
config/CONFIG.make
.r
.)b
ovatko hakemistot \fBBINDIR, SBINDIR, ETCDIR\fP ja \fBLOGDIR\fP
oikein. Normaalisti muuttujien \fBSBINDIR\fP ja \fBETCDIR\fP tulisi
olla samat. Lis{ksi sielt{ l|ytyy muitakin hakemistom{{rittelyj{.
Katso \fIREAD-ME\fP:st{ mit{ ne tarkoittavat ja muuta niit{, jos se on
tarpeellista.
.sh 2 "ISODE:n luonti"
.(x
.ti \n($0+2
\*($n ISODE:n luonti
.)x
.pp
.sp
Kun konfigurointi on huolellisesti tehty, voidaan sek{ ISODE ett{
QUIPU luoda komennolla:
.(q
.b
% ./make everything >& make.out &
.r
.)q
T{m{ kest{{ muutamia tunteja, joten k{ynistimme sen taustalle. Huomaa
\(aa/\(aa-merkin k{ytt| komennossa ! Jos
\fImake\fP palauttaa ei-nollan, tai jos n{et rivin
.(l
.b
*** Error code 1

\fRtai\fB

Exit
.r
.)l
jotain on mennyt vikaan. Yrit{ l|yt{{, miss{ ongelma on. Jos et pysty
paikallistamaan vikaa, l{het{ FI-managerille \fImake\fP:n
tulostukset, muuttamasi
konfiguraatiotiedostot sek{ kuvaus laitteistosta ja ymp{rist|st{,
jota k{yt{t. Jos sen sijaan saat ilmoituksia kuten:
.(l
.b
warning: statement not reached
.sp
ranlib: warning: ../libisode.a(aetdbm.o): no symbol table
.sp
\fRtai\fB
.sp
*** Error code 1 (ignored)
.r
.)l
ne ovat aivan normaaleja. Virheet saattavat johtua ep{t{ydellisist{
konfiguraatiotiedostoista tai k{ytt{m{si systeemi ei ole ohjelmiston
standardin mukainen.
.br
Seuraavaksi, luo Pilottiprojektin ohjelmisto:
.(q
.b
% (cd others/quipu; ./make pilot)
.r
.)q
.sh 2 "ISODE:n installointi"
.(x
.ti \n($0+2
\*($n ISODE:n installointi
.)x
.pp
.sp
Kun olet tyytyv{inen ohjelmiston generointiin, installoi sek{ QUIPU
ett{ ISODE. Sinulla t{ytyy olla super-userin k{ytt|oikeudet, jotta
voisit tehd{ installoinnin. Varmistu ensin kuitenkin, ett{ hakemistot
\fBBINDIR, SBINDIR, ETCDIR\fP ja \fBLOGDIR\fP (m{{ritelty tiedostossa
\fIconfig/CONFIG.make\fP) ovat olemassa. Jos eiv{t, luo ne k{ytt{en
\fImkdir\fP:{. \fBLOGDIR\fP suojaus tulee olla 0777.
.pp
Jos sinulla on jo aikaisempi versio k{yt|ssa, talleta seuraavat
tiedostot:
.(b
.b
# cp $(ETCDIR)/dsaptailor $(ETCDIR)/dsaptailor.save
# cp $(ETCDIR)/fredrc $(ETCDIR)/fredrc.save
# cp $(ETCDIR)/isotailor $(ETCDIR)/isotailor.save
# cp $(ETCDIR)/dishinit $(ETCDIR)/dishinit.save
# cp $(ETCDIR)/quiputailor $(ETCDIR)/quiputailor.save
.r
.)b
Kun olet tehnyt installonnin, voit kopioida ne takaisin alkuper{isille
nimilleen.
.br
Seuraavaksi installoi ohjelmat, tietokannat ja kirjastot:
.(b
.b
# ./make inst-all inst-quipu
# (cd others/quipu; ./make inst-pilot)
.r
.)b
Huomaa j{lleen \(aa/\(aa-merkkien k{ytt| edell{. Katso, ett{
\fBETCDIR\fP:ss{ olevilla tiedostoilla on my|s maailmalla
lukuoikeudet.
My|hemmin \fIdish(1c)\fP:n k{ynnist{minen saattaa tavalliselta
k{ytt{j{lt{ ep{onnistua
juuri n{iden tiedostojen suojausten vuoksi. Muiden sovellusten \*- kuten
FTAM \*- installointia ei siis t{ss{ suoriteta, vaan sen voit tehd{ itse
my|hemmin.
.sp
.TS
center doublebox tab(/);
cp12w(65) .
T{
.sp
[l{ suorita en{{ muita
toimenpiteit{ QUIPU:lle, joita \fIREAD-ME\fP:ss{ on annettu!
Jatkotoimenpiteet esitet{{n seuraavassa.
.sp
T}
.TE
.sp
Jos haluat poistaa tarpeettomat kirjastot ja ohjelmankehitysty|kalut,
voit sanoa:
.(q
.b
# ./make zap
.r
.)q
hakemistosta \fIisode-VERSIO\fP super-userina.
.sh 2 "ISODE:n sovittaminen systeemiin"
.(x
.ti \n($0+2
\*($n ISODE:n sovittaminen systeemiin
.)x
.pp
.sp
Ennenkuin DUA ja DSA voidaan k{ynnist{{, on konfiguroitava tiedosto
\fI$(ETCDIR)/isotailor\fP tarkoitusta vastaavaksi. Jo suorittamamme
installoinnit eiv{t ole kuitenkaan tehneet ko. tiedoston alustamista,
vaan kopioimme sen:
.sp
.nf
.b
# cp $(ETCDIR)/quipu/scripts/isotailor.empty $(ETCDIR)/isotailor
.r
.fi
Katsomalla manuaalisivua (\fIisotailor(5)\fP), l|yd{t ohjeet
m{{reiden valitsemista varten. T{ss{ vaiheessa tarvitset
m{{reit{ \(aalocalname\(aa ja \(aalogpath\(aa:
.(b
.b
logpath:        $(LOGDIR)
localname:      $(NIMI)
.r
.)b
miss{ $(NIMI):n paikalle laitat "host"-nimen domain-muodossa. Esimerkiksi:
.(b
.b
logpath:        /var/log/
localname:      tut.fi
.r
.)b
.sh 2 "ISODE:n k{ynnistys"
.(x
.ti \n($0+2
\*($n ISODE:n k{ynnistys
.)x
.pp
.sp
Jatkossa k{yt{mme hakemistomerkint|j{ \fB$(SBINDIR), $(BINDIR), $(LOGDIR)\fP ja
\fB$(ETCDIR)\fP kuvaamaan valitsemiasi hakemistoja. Korvaa ne omassa
ymp{rist|ss{si absoluuttisilla polkunimill{. Jotta ohjelmisto pysyisi
koko ajan toiminnassa, on teht{v{n{ muutamia
toimenpiteit{:
.np
Varmistu, ett{ \fI/etc/rc.local\fP:st{ l|ytyy rivit:
.(b
.b
if \(a[ -f $(SBINDIR)/tsapd \(a]; then
    $(SBINDIR)/tsapd -t & (echo -n ' tsapd') > /dev/console
fi
.r
.)b
.np
Varmistu, ett{ \fI/etc/services\fP:st{ l|ytyy rivi:
.(q
.b
tsap       102/tcp
.r
.)q
.np
Varmistu, ett{ \fI/usr/lib/crontab\fP:st{ l|ytyy:
.(q
.b
0 4 * * * su daemon < $(SBINDIR)/isologs
.r
.)q
tai joku muu rivi, mik{ siivoaa lokitiedostot.
.np
K{ynnist{ \fItsap(8c)\fP daemon k{sin:
.(q
.b
# $(SBINDIR)/tsapd -t > /dev/null 2>&1 &
.r
.)q
.sh 2 "ISODE:n testaaminen"
.(x
.ti \n($0+2
\*($n ISODE:n testaaminen
.)x
.pp
.sp
Helpoin tapa testata ISODE on ajaa \fIisode-test\fP-scripti
hakemistosta \fI$(ETCDIR)/quipu/scripts\fP.
.(q
.b
% isode-test
.r
.)q
P{{tteelle kaiuttuu tietoa testin etenemisest{.
Lokitiedostoja (tiedostot \fI$(LOGDIR)/*.log\fP) katsomalla voit my|s
j{lkeenp{in tarkastaa testin etenemisen. Lopettaessaan suorituksen, scripti
ilmoittaa havaitsemiensa virheiden
m{{r{n. Jos virheit{ esiintyy, yrit{ l|yt{{ miss{ ongelma on. Jos et pysty
paikallistamaan vikaa, l{het{ FI-managerille 
\fIisode-test\fP:n tulostukset, muuttamasi
konfiguraatiotiedostot sek{ kuvaus laitteistosta ja k{ytt|ymp{rist|st{.
.sh 2 "DUA:n testaaminen"
.(x
.ti \n($0+2
\*($n DUA:n testaaminen
.)x
.pp
.sp
Kun ISODE toimii, voit yritt{{ yhteytt{ DSA:han
\fIdish\fP:ll{ seuraavasti:
.(b
.b
% dish -c "Jaguar"
Welcome to Dish (DIrectory SHell)
Dish ->
.r
.)b
T{m{ kertoo, ett{ olet onnistuneesti saanut yhteyden. \(aa?\(aa-merkill{
n{et, mit{ komentoja voit antaa. Muita DSA:ita kuin \(aaJaguar\(aa,
joihin voit ottaa yhteyden, on lueteltu \fI$(ETCDIR)/dsaptailor\fP:ssa.
Kokeile niit{, jos \(aaJaguar\(aa ei vastaa.
.sh 3 "Yhteyden ep{onnistuminen"
.(x
.ti \n($0+2
\*($n Yhteyden ep{onnistuminen
.)x
.pp
.sp
Jostain syyst{ DUA voi kuitenkin ep{onnistua yhteydenotossaan.
Varmista ensin, ett{
ISODE toimii moitteettomasti (ks. luku "ISODEN testaaminen"). Jos
n{in on, seuraavassa luetellaan
yleisimpi{ virhetilanteita ja toimintaohjeita:
.sp
\fBA. Service error \*- Unable to contact DSA\fP
.sp
Todenn{k|isesti vika on verkossa: Katso tiedostoa
\fI$(ETCDIR)/dsaptailor\fP ja sielt{ rivi{, joka alkaa:
.(l
\fBdsa_address "Jaguar"\fP
.)l
L|yd{t Internet-osoitteen ja TCP-portin numeron t{lt{ rivilt{.
.np
Kokeile \fIping(8c)\fP:ll{, saatko vastausta IP-osoitteesta.
.np
Jos et, yrit{ muita DSA:ita, joita on \fIdsaptailor\fP:ss{.
Toista t{t{, kunnes \fIdish\fP onnistuu yhteydess{{n DSA:han.
.np
Jos \fIping\fP vastaa IP-osoitteeseen, k{yt{ \fItelnet\fP:i{ ottamalla
yhteys ko. TCP-porttiin.
.np
Jos saat yhteyden, sulje se heti, sill{ jotain totaalista on vialla,
koska \fItelnet\fP saa yhteyden mutta \fIdish\fP ei! Ilmoita
FI-managerille v{litt|m{sti tapahtuneesta ja odota ohjeita.
.np
Jos \fItelnet\fP ilmoittaa:
.(q
.b
Connection refused
.r
.)q
tarkoittaa se, ett{ DSA ei kuuntele oikeaa TCP-porttia. Joko DSA on
poikkeuksellisesti pois toiminnasta tai se on siirtynyt toiseen
osoitteeseen. Odota jonkun aikaa ja kokeile uudelleen. Jos et
viel{k{{n saa vastausta, ilmoita asiasta FI-managerille. Jatka
sitten kohdasta 2. 
.lp
Jos kaikki vaihtoehdot \fIdsaptailor\fP-tiedostossa on k{yty l{pi 
ilmoita FI-managerille ja odota lis{ohjeita.
.sp
\fBB. Service error \*- missing network address separator\fP
.sp
Olet mahdollisesti kirjoittanut DSA:n nimen v{{rin. Yrit{ uudelleen.
Jos n{et muita ilmoituksia, ota j{lleen yhteytt{ FI-manageriin.
.sh 2 "Oman DSA:n konfigurointi"
.(x
.ti \n($0+2
\*($n Oman DSA:n konfigurointi
.)x
.pp
.sp
Nyt kun olemme saanet yhteyden toiseen DSA:han, voimme ryhty{ oman
DSA:n "pystytt{miseen". K{yt{mme merkint{{ \(aaORG\(aa ilmaisemaan oman
organisaatiosi nime{ ja \(aaORG_YKS\(aa ilmaisemaan organisatorisen
yksik|n nime{.
.sh 3 "DSA:n nimen valitseminen"
.(x
.ti \n($0+2
\*($n DSA:n nimen valitseminen
.)x
.pp
.sp
Jotta tiet{isit, mit{ nimi{ on k{yt|ss{, menettele seuraavasti:
.(b
.b
% dish -c "Jaguar"
Welcome to Dish (DIrectory SHell)
Dish -> search @c=FI -filter objectClass=dsa
\(bu \(bu \(bu
.r
.)b
T{ss{ etsimme "c=FI":n alta DSA-nimi{ ja tulostamme ne.
DSA:n nimen voit valita vapaasti, kunhan et k{yt{ jo olemassa olevia.
Suosittelemme, ett{ valitset DSA:si nimen liittess{ 1 olevien nimien joukosta.
Pilottiprojektissa k{ytet{{n Etel{-Amerikan villiel{inten nimi{.
K{yt{nn|ss{ ei kannata valita kovin pitk{{ nime{, jottei hakupolkujen
nimist{ tule pitki{.
.sh 3 "DSA:n konfigurointitiedoston editointi"
.(x
.ti \n($0+2
\*($n DSA:n konfigurointitiedoston editointi
.)x
.pp
.sp
DSA:n konfigurointi tapahtuu ohjelmalla \fIdsaconfig(8)\fP, jolle
annetaan argumentiksi perustettavan DSA:n nimi. Kun olet valinnut
nimen DSA:lle\**
.(f
\**K{yt{mme jatkossa nime{ \(aaoma_dsa\(aa valitsemanasi DSA-nimen{.
.)f
, voit siirty{ hakemistoon \fIquipu\fP \fBETCDIR\fP:ss{:
.(q
.b
# cd $(ETCDIR)/quipu
.r
.)q
Tiedosto \fIwildlife.dsa\fP sis{lt{{ valmiin pohjan konfigurointia
varten. Kopio t{m{ ja suojaa se:
.(b
.b
# cp wildlife.dsa oma_dsa.dsa
# chmod 0600 oma_dsa.dsa
.r
.)b
Editoi nyt t{t{ uutta tiedostoa t{ytt{m{ll{ se haluamiltasi osin.
Tiedostossa on annettu vinkkej{ t{ydent{mist{ varten.
Huomaa, ett{ n{m{ kaikki tiedot koskevat omaa organisaatiotasi ja sit{
organisatorista yksikk|{, jossa itse ty|skentelet.
Jos j{lkeenp{in haluat, voit
muuttaa tietoja editoimalla tiedostoja \fIc=FI/o=ORG/EDB\fP ja
\fIc=FI/o=ORG/ou=ORG_YKS/EDB\fP.
.sh 3 "\fIdsaconfig(8)\fB ajaminen"
.(x
.ti \n($0+2
\*($n \fIdsaconfig(8)\fP ajaminen
.)x
.pp
.sp
\fIDsaconfig\fP k{ytt{{ hyv{ksi \fIoma_dsa.dsa\fP-tiedoston lis{ksi
tiedostoa \fI$(ETCDIR)/fredrc\fP ja \fI$(ETCDIR)/dsaptailor\fP.
\fIFred\fP:n k{ytt||n perehdymme my|hemmin.
Kun olet t{ytt{nyt oman organisaatiosi tiedot, voit ajaa
konfigurointiohjelman \fIdsaconfig(8)\fP:
.(q
.b
# $(SBINDIR)/dsaconfig oma_dsa
.r
.)q
Huomaa, ett{ k{ynnistett{ess{ annat vain oman DSA:si nimen !
Ohjelma luo tietokantahakemiston ja siihen tarvittavat tiedostot sek{
asettaa tiedostojen suojaukset. \fIdsaconfig(8)\fP:n luomat tiedostot
(\fIEDB:t\fP) rakentuvat UNIX:n hakemistohierarkian mukaisesti seuraavasti:
.pp
Jokaisella tasolla, miss{ oma DSA:si s{ilytt{{ dataa, on
\fIEDB\fP-tiedosto \*- juuritaso mukaanlukien. Jos entryll{, joka on
m{{ritelty \fIEDB\fP:ss{, on informaatiota alemmalla tasolla DIT:st{,
l|ytyy t{m{ tieto alihakemistosta, jonka nimi on entryn RDN.\**
.(f
\**RDN (Relative Distinquished Name) m{{rittelee entryn
yksik{sitteisesti YHDELL[ tasolla. Esim. jos TTKK:n DN (Distinquished
Name \*- m{{rittelee entryn koko hakupolun) on "c=FI@o=Tampere
University of Technology", niin sen RDN on "o=Tampere University of
Technology".
.)f
Jos meill{ on "o=Tampere University of Technology"-niminen entry, niin
entryn \(aalapset\(aa
l|ytyv{t alihakemiston \fIo=Tampere University of Technology\fP
\fIEDB\fP-tiedostosta.
Huomaa v{lily|nnit alihakemistojen nimiss{.
.pp
Joissakin UNIX-j{rjestelmiss{ (erityisesti System V:ss{)
hakemistonimien pituus on rajoitettu. N{it{ tapauksia varten voidaan
pitk{t alihakemistojen nimet lyhent{{ esimerkiksi seuraavasti:
.pp
Oletetaan, ett{ meill{ on entry "o=Tampere University of Technology"
tiedostossa \fIc=FI/EDB\fP. Jos entryn nimi on
liian pitk{ hakemiston nimeksi, niin teemme tiedoston
\fIc=FI/EDB.map\fP joka sis{lt{{ rivin:
.(q
o=Tampere University of Technology#TTKK
.)q
T{m{ kertoo DSA:lle, ett{ entryn "lapset" l|ytyv{t tiedostosta
\fIc=FI/TTKK/EDB\fP. Jos entrylle ei l|ydy lyhennetty{ nime{
tiedostosta \fI\EDB.map\fP, k{ytet{{n alihakemiston nimen{ entryn RDN:{{.
Yleisesti \fIEDB.map\fP-tiedosto on muotoa:
.(q
<RDN>'#'<lyhennetty nimi>
.)q
Kun DSA luo alihakemiston (esimerkiksi lis{tt{ess{ haara DIT:hen), se
k{ytt{{ RDN:{{ jokaiselle alihakemistolle, jollei nimi ole pidempi kuin
suurin sallittu merkkien m{{r{ alihakemiston nimess{ (tavallisesti
15). Muulloin DSA luo lyhennetyn nimen. \fIEDB.map\fP-tiedostoja voit
m{{ritell{ kaikille DIT:n tasoille.
.lp
Level-1 DSA:n tietokantahierarkia n{ytt{{ \fIdsaconfig(8)\fP:n
ajamisen j{lkeen seuraavalta:
.(b
.i
EDB
c=FI/EDB
c=FI/o=ORG/EDB
c=FI/o=ORG/ou=ORG_YKS/EDB
.r
.)b
Jotta saisit viel{ tiedostojen
sis{ll|n tarkoituksenmukaiseksi, saat maa- ja
ROOT-tason \fIEDB\fP:t (yll{olevat \fIEDB\fP ja \fIc=FI/EDB\fP)
anonymous \fIftp\fP:ll{ \fBfunet.fi\fP:st{ (128.214.1.1)
alihakemistosta \fI/networking/isode\fP. Ennenkuin siirr{t n{m{ \fIEDB\fP:t
paikoilleen, huomaa, ett{ \fIdsaconfig\fP on jo rakentanut sinulle omasta
organisaatiostasi \fIc=FI/EDB\fP:hen tulevat entryt. Jotta voisit
lis{t{ n{m{ my|hemmin funet.fi:st{ saatavaan \fIEDB\fP:hen, siirr{mme
ne ensin toiselle nimelle:
.(l
.b
# cd $(ETCDIR)/quipu
# mv oma_dsa/c=FI/EDB oma_dsa/c=FI/EDB.oma
.r
.)l
Nyt voit hakea ROOT- ja maatason \fIEDB\fP:t \fIftp\fP:ll{. Samalla
kun haet ROOT- ja maatason \fIEDB\fP:t, siirr{ my|s tiedosto
\fIoidtable.tar\fP, joka sis{lt{{ kansallisia objektiluokka- ja
attribuuttim{{rittelyj{.\**
.(f
\**N{iden tiedostojen merkitys selvi{{ sinulle my|hemmin, kun olet
l{hemmin tutustunut Hakemiston rakenteeseen.
.)f
.(l
.b
# cd oma_dsa
# ftp funet.fi
Connected to funet.fi.
220 etana FTP server (SunOS 4.0) ready.
Name (funet.fi:user): anonymous
331 Guest login ok, send ident as password.
Password:guest
230 Guest login ok, access restrictions apply.
ftp> cd networking/isode
200 PORT command successful.
ftp> binary
200 Type set to I.
ftp> get isode.EDB.tar.Z
200 PORT command successful.
\(bu \(bu \(bu
ftp> get oidtable.tar 
200 PORT command successful.
\(bu \(bu \(bu
ftp> quit
221 Goodbye.
# zcat isode.EDB.tar.Z \(a| tar xf -
# rm isode.EDB.tar.Z
# (cd $(ETCDIR) ; tar xf quipu/oma_dsa/oidtable.tar)
# rm oidtable.tar
.r
.)l
Lis{{ t{m{n j{lkeen oman organisaatiosi tiedot (\fIc=FI/EDB.oma\fP)
\fIc=FI/EDB\fP:hen:
.(q
.b
# awk 'NR > 2 \(a{ print \(a}' < c\(a\=FI/EDB.oma >> c=FI/EDB
.r
.)q
.sh 3 "DSA:n testaus"
.(x
.ti \n($0+2
\*($n DSA:n testaus
.)x
.pp
.sp
Ensimm{iseksi kannattaa k{ynnist{{ DSA interaktiivisesti siten ett{
n{et, pystyyk| se lukemaan omat \fIEDB\fP:ns{. Ennenkuin
k{ynnist{t DSA:n, katso tiedostoa \fI$(ETCDIR)/quipu/oma_dsa/quiputailor\fP.
M{{reiden \(aanameserver\(aa ja \(aaupdate\(aa tulee olla \(aaoff\(aa.\**
Jotta tiedoston m{{reiden merkitys selvi{isi sinulle, k{ymme l{pi ne
seuraavassa\**
.(f
\**K{ymme t{ss{ l{pi \fBvain\fP ne m{{reet, joita voi esiinty{
vain \fIquiputailor\fP:ssa. Lis{ksi \fIquiputailor\fP:ssa on
my|s \fIdsaptailor\fP:n kanssa yhteisi{ m{{reit{ (ks. luku
"\fI$(ETCDIR)/dsaptailor\fP-tiedoston editointi").
.)f
.pp
Tiedosto \fIquiputailor\fP hakemistossa \fIquipu/oma_dsa/\fP sis{lt{{
DSA:n k{ynnistyksen konfiguroinnin. Se luotiin
automaattisesti installointivaiheessa ja annetaan parametriksi
DSA:ta k{ynnistett{ess{. DSA:n
k{ynnistymisen onnistuminen riippuu olennaisesti t{m{n tiedoston
sis{ll|st{ !
.sh 2 "\fIQuiputailor\fP:n m{{reet"
.(x
.ti \n($0+2
\*($n \fIQuiputailor\fP:n m{{reet
.)x
.pp
.sp
DSA:n k{ynnistyess{ se lukee oletuksena tiedostoa
\fI$(ETCDIR)/quiputailor\fP (tiedoston nimi voidaan antaa parametrilla "-t"
\fIros.quipu\fP:lle), jossa kerrotaan mm. seuraavaa:
.(b
\(bu DSA:n nimi
\(bu tietokannan sijainti
\(bu DSA:n tuottamien lokitiedostojen sijainti ja m{{r{ 
\(bu mahdollisesti muiden DSA:iden sijainti
.)b
Pelk{st{{n \fIquiputailor\fP:ssa esiintyvi{ m{{reit{ luetellaan seuraavassa.
T{rkeimpien m{{reiden selvityksen yhteydess{ olen
lis{nnyt sulkuihin esimerkin, joka tulee olla oman DSA:si
\fIquiputailor\fP:ssa DSA:ta ensimm{ist{ kertaa k{ynnistett{ess{.
.ip mydsaname: 15
DSA:n RDN. (cn=oma_dsa)
.ip treedir: 15
Hakemisto, jossa tietokanta sijaitsee. T{m{ polku osoittaa Hakemiston
juureen. (\fI$(ETCDIR)/quipu/oma_dsa\fP)
.ip nameserver: 15
Arvo "off" est{{ Hakemiston k{yt|n nimipalvelijana. Oletusarvona on "on". (off)
.ip update: 15
Arvo "on" pyyt{{ DSA:ta p{ivitt{m{{n SLAVE kopiot \fIEDB\fP-tiedostoista,
kun DSA k{ynnistet{{n. Kokeiluvaiheessa kannattaa pit{{ t{m{ tilassa
"off", kunnes DSA saadaan muilta osin kuntoon. (off)
.ip dspchaining: 15
Arvo "on" pyyt{{ DSA:ta k{ytt{m{{n ketjutusta (chaining)
DSP-pyynn|iss{ (Directory Service Protocol). Arvolla "off" estet{{n
ketjutusten k{ytt{minen. Oletusarvona k{ytet{{n ketjutusta.
.ip parent: 15
M{{re koostuu nimi/osoite-parista, ja sit{ tarvitaan vain DSA:ille,
joilla ei ole ROOT \fIEDB\fP:st{ MASTER kopiota. DSA-viitaukset
tarvitsevat SLAVE-kopiot kaikista EDB:ist{ juuresta ylimp{{n
paikallisesti s{ilytettyyn MASTER \fIEDB\fP:hen. Jos n{it{ m{{reit{
on useampia, paikallinen DSA valitsee mihin DSA:han se ottaa yhteyden.
Algoritmi on t{ll{ hetkell{ yksinkertainen: Ensiksi yritet{{n ensinmainittuun
"parent"-DSA:han \*- jos yhteys ep{onnistuu, sitten toiseksimainittuun,
jne.. (T{m{ m{{re sinun tulee asettaa osoittamaan Jaguariin. Katso
mallia TTKK:n \fIquiputailor\fP-tiedostosta sivulla 24-25.)
.ip stats: 15
Syntaksi on sama kuin "dsaplog"-m{{re \fIdsaptailor\fP:ss{ (ks.
kappale "\fIdsaptailor\fP tiedoston editointi").
.ip isode: 15
T{ll{ voidaan \fIisotailor\fP:ssa asetetuille arvoille tehd{
muutoksia. Syntaksi on sama kuin \fIisotailor\fP:ssa.
.lp
Seuraavassa on muutamia m{{reit{, jotka ovat k{yt|ss{ versiossa 5.7.
Ne eiv{t kuitenkaan
ole olennaisia ensimm{ist{ kertaa DSA:ta k{ynnistett{ess{, mutta
ne saattavat olla merkitt{vi{ my|hemm{ss{ vaiheessa. Lis{{
m{{reit{ on lueteltu l{hteess{ \(a[SKill89b\(a].
.ip lasmodified: 15
Jos arvo on \(aaoff\(aa, DSA ei lis{{ attribuuttia "lastmodifiedby",
kun entry{ on muutettu.
.ip searchlevel: 15
M{{r{{ tason, josta alasp{in k{ytt{j{t voivat tehd{ hakuja
(oletusarvona 2 eli organisaatiotaso). Jos k{ytt{j{ yritt{{ tehd{ hakua
ylemmilt{ tasoilta tulostuu ilmoitus
.q "unwilling to perform"
\&.
.ip cachetime: 15
.q K{tk|ss{
(cache) s{ilytett{v{n tiedon maksimi aika sekunteina.
.ip retrytime: 15
Odotusaika (sekunteina) ennenkuin yritet{{n uudelleen yhteytt{
DSA:han, johon ei saatu yhteytt{ aikaisemmin.
.ip conntime: 15
Kuinka kauan k{ytt{m{t|n yhteys pidet{{n avoinna (sekunteina).
.ip readonly: 15
DSA siirtyy t{ll{ m{{rell{ lukutilaan (read-only). K{ytt{jien tekemi{
p{ivityksi{ ei suoriteta. SLAVE-kopiot voidaan p{ivitt{{.
.ip admintime: 15
K{ytt{jien suorittamien hakujen maksimiaika (sekunteina).
.pp
Seuraavalla sivulla on esimerkkin{ TTKK:n
\fIquiputailor\fP. Voit katsoa sielt{, mit{ m{{reit{ TTKK:ssa on k{yt|ss{.
.he '\fIquiputailor\fP''Luku 3 \*- Ohjelmiston installointi ja konfigurointi'
.bp
.ls 1
.ps 9
.nf
###############################################################################
#
# quiputailor - ISODE QUIPU Directory Service Specific Tailoring File
#
# $Header: /usr/files/osi/quipu/RCS/quiputailor,v 6.1 89/06/08 13:56:19 mrose Exp $
#
#
# $Log:	quiputailor,v $
# Revision 6.1  89/06/08  13:56:19  mrose
# touch-up
# 
# Revision 6.0  89/06/07  21:38:45  mrose
# 5.1
# 
# Revision 6.0  89/03/18  23:41:49  mrose
# Release 5.0
# 
###############################################################################


# this line must occur first
oidtable	/usr/local/etc/oidtable

mydsaname	"c=FI@cn=Rhea"

# DSAs to contact if we need a referral to a parent

parent		"cn=Jaguar"	\'0101\'H/Internet=128.214.1.1+17003

# ROOT MASTER at University College London
parent	"cn=Giant Tortoise"	\'0101\'H/Internet=128.16.5.31+2005\(a|Janet=00000511160045\(a|Int-X25(80)=23421920030045

# US SLAVE at NYSERNet Inc.
parent	"cn=Fruit Bat"		\'0101\'H/Internet=130.117.128.3+17007

# NO MASTER AT UIO
parent	"cn=Eel"		\'0101\'H/Internet=129.240.2.51+2005\(a|Int-X25(80)=242211000163+PID+03018100

# AU MASTER AT CSIRO
parent	"cn=Anaconda"		\'0101\'H/Int-X25(80)=5052334300013+PID+03018100

# full screen logging
dsaplog		level=debug sflag=tty file=dsap.log size=100 sflag=zero
stats		level=all dflag=tty sflag=zero file=stats.log size=50

# logging directory
logdir		/var/log/

# ``higher-performance'' nameservice
nameserver	on

# default tree directory
treedir		/export/common/quipu-db/

# slave updates
update		on

# level below which users can search
searchlevel	2

# limits...
adminsize	100
admintime	60
cachetime	21600
conntime		120
nsaptime		30

# allow addition of "last modified by" attributes...
lastmodified 	on

# chain requests ?
dspchaining	on

# read-only mode ?
readonly		off

# The length of time before between attemping to update SLAVEs
slavetime		21600
.fi
.ls 2
.he '''Luku 3 \*- Ohjelmiston installointi ja konfigurointi'
.bp
.sh 2 "DSA:n k{ynnist{minen"
.(x
.ti \n($0+2
\*($n DSA:n k{ynnist{minen
.)x
.pp
.sp
DSA:n k{ynnistys tapahtuu n{in:
.(q
.b
# $(SBINDIR)/ros.quipu -t ./quiputailor
.r
.)q
M{{reell{ \(aa-t\(aa ilmaistaan tiedosto, mist{ alustettavat parametrit
otetaan. Lis{m{{reiden k{yt|st{ saat tietoa manuaalisivulta
(\fIquipu(8c)\fP). Erityist{ huomiota kannattaa kiinnitt{{
\fIquiputailor(5)\fP-tiedoston rakenteeseen. K{ynnistymisen
onnistuminen riippuu ensik{dess{ t{st{ tiedostosta.
Jos olet tehnyt onnistuneen konfiguroinnin DSA tulostaa esimerkiksi:
.(b
.b
\(bu \(bu \(bu
DSA c=FI@cn=oma_dsa has started on Internet=aaa.bbb.ccc.ddd+17003
\(bu \(bu \(bu
.r
.)b
miss{ ilmoitetaan osoite, jota DSA kuuntelee.
\(aaaaa.bbb.ccc.ddd\(aa:n tilalla on oman tietokoneesi IP-osoite. Kun olet
n{hnyt DSA:n k{ynnistyv{n oikein, keskeyt{ se control-c:ll{. Sen
j{lkeen k{ynnist{ DSA uudelleen taustalle:
.(q
.b
# $(SBINDIR)/ros.quipu -t ./quiputailor > /dev/null 2>&1 &
.r
.)q 
.sh 3 "DSA:n virhetilanteita"
.(x
.ti \n($0+2
\*($n DSA:n virhetilanteita
.)x
.pp
.sp
K{ynnistyksen ep{onnistuessa tarkasta, ett{ ISODE ja DUA (\fIdish\fP)
toimivat (ks. luvut ISODE:n testaaminen ja DUA:n testaaminen).
Virheen{ voi olla:
.(b
- attribuutteihin liittyv{ ongelma
- DIT:n rakenteeseen liittyv{ ongelma
- jotain muuta tapahtuu DSA:n kuuntelemassa osoitteessa
.)b
Koska k{ytt{m{si tiedostot on luotu automaattisesti, ei ongelmaa
kahdesta ensimm{isest{ syyst{ pit{isi olla. Kuitenkin joitain
kirjoitusvirheit{ on saattanut p{{st{ syntym{{n \fIEDB\fP-tiedostoihin. T{ss{
muutamia virhetilanteita:
.sp
\fBA. Fatal error \*- Attribute Error\fP
.sp
Jos olet kirjoittanut attribuutin nimen v{{rin:
.(b
.b
line 13: unknown attribute type ...
File .../oma_dsa/c=FI/o=ORG/EDB not loaded
FATAL ERROR: DSA Halted
.r
.)b
Jos m{{rittelet objektiluokkaan kuulumattoman attribuutin:
.(b
.b
Schema error in entry ending line 17...
*** Attribute error ***
<<DN of entry in error>>
Attribute type <<illegal-name>> - Constrain violation
File ...oma_dsa/c=FI/o=ORG/EDB not loaded
FATAL ERROR: DSA Halted
.r
.)b
Jos sinulta j{{ attribuutti pois, jonka olisi pit{nyt olla entryss{:
.(b
.b
Schema error in entry ending line 16...
*** Attribute error ***
<<DN of entry in error>>
Attribute type <<mandatory-name>> - No such attribute in the entry
File ...oma_dsa/c=FI/o=ORG/EDB not loaded
FATAL ERROR: DSA Halted
.r
.)b
.sp
\fBB. Fatal error \*- Structure Error\fP
.sp
T{llainen virhetilanne syntyy, jos objektiluokka (objectClass) ei ole
sallittu entrylle. Sallitut objektiluokat on m{{ritelty
attribuutilla \(aatreeStructure\(aa. Virheilmoitus saattaa n{ytt{{
seuraavalta:
.(b
.b
Schema error in entry ending line 16...
*** Attribute error ***
<<DN of entry in error>>
Attribute type objectClass - Constrain violation
File ...oma_dsa/c=FI/o=ORG/EDB not loaded
FATAL ERROR: DSA Halted
.r
.)b
Sinun on katsottava tiedostoa \fIoma_dsa/c=FI/o=ORG/EDB\fP ja
etsitt{v{ sielt{ attribuutti \(aatreeStructure\(aa ja verrattava sen arvoja
virheen antaneen entryn attribuutin \(aaobjectClass\(aa kanssa.
.sp
\fBC. Fatal error \*- Unable to start network monitor\fP
.sp
Jos \fIEDB\fP:si ovat kunnossa, saatat silti saada virheilmoituksen,
esimerkiksi:
.(b
.b
-- '0101'H/Internet=130.117.128.3+17003 --
TNetListen: \(a[Congestion at TSAP\(a] start_tcp_server failed:
        Address already in use

FATAL ERROR: Couldn't initialise the network monitor!!
.r
.)b
T{ll|in joku muu prosessi kuuntelee IP-osoitteen TCP-porttia. Ehk{
sinulla on toinen prosessi DSA:sta k{ynniss{ tai k{ytt{m{si TCP-portin
numero on v{{r{ (katso \fIoma_dsa/c=FI/EDB\fP). On my|s mahdollista, ett{
aikaisempi DSA:n k{ynnistys on j{tt{nyt TCP-portin FIN_WAIT_x
-tilaan. Katso \fInetstat(8C)\fP:lla.
.lp
Voit my|s saada ilmoituksen:
.(b
.b
-- '0101'H/Internet=130.117.128.3+17003 --
TNetListen: \(a[Congestion at TSAP\(a] start_tcp_server failed:
        Can't assign requested address

FATAL ERROR: Couldn't initialise the network monitor!!
.r
.)b
Olet kirjoittanut todenn{k|isesti v{{rin oman DSA:si IP-osoitteen
konfigurointitiedostossa \fI$(ETCDIR)/quipu/oma_dsa.dsa\fP.
.sh 2 "Yhteyden ottaminen omaan DSA:han"
.(x
.ti \n($0+2
\*($n Yhteyden ottaminen omaan DSA:han
.)x
.sp
.pp
Ennen kuin yrit{t ottaa yhteytt{ omaan DSA:hasi, editoi tiedostoa
\fI$(ETCDIR)/dsaptailor\fP. Etsi sielt{ seuraavat rivit:
.(b
.b
# the level-1 DSA
#dsa_address \(bu \(bu \(bu
.r
.)b
Poista toisen rivin alusta '#'-merkki. Nyt DUA osaa ottaa
yhteytt{ omaan DSA:hasi. Seuraavaksi etsi rivit:
.(b
.b
local_DIT       "c=FI"
#local_DIT      "c=FI@o=ORG"
.r
.)b
Poista ensimm{inen rivi ja toisen rivin alusta '#'-merkki. Kun DUA nyt
k{ynnistet{{n, se siirtyy v{litt|m{sti DIT:ss{ haaraan, jossa oma
organisaatiosi sijaitsee. Talleta lopuksi tekem{si muutokset.
.pp
Kun sinulla nyt on oma DSA pystyss{, voit yritt{{ yhteytt{ siihen seuraavasti:
.(b
.b
% dish -c "oma_dsa"
Welcome to Dish (DIrectory SHell)
Dish ->
.r
.)b
Jos et saa yhteytt{, palaa kohtaan, miss{ selvitettiin DUA:n
virhetilanteita.
.lp
Seuraavaksi kokeile p{{setk| \(aamanagerina\(aa kiinnittym{{n Hakemistoon:
.(b
.b
Dish -> bind -user "@c=FI@o=ORG@cn=Manager"
Enter password for "@c=FI@o=ORG@cn=Manager": salasana
Dish -> 
.r
.)b
Jos n{in tulostuu, olet kiinnittynyt Hakemistoon ko. tunnuksella (voit
varmistaa asian \(aasquid\(aa-komennolla). Kohtaan "salasana" sinun
tulee antaa oma salasanasi, jonka t{ydensit tiedostoon
\fI$(ETCDIR)/quipu/oma_dsa.dsa\fP.
Jos taas saat ilmoituksen:
.(b
.b
Dish -> bind -user "@c=FI@o=ORG@cn=Manager"
Enter password for "@c=FI@o=ORG@cn=Manager": 
Security Error - check name and password
.r
.)b
olet antanut mahdollisesti v{{r{n salasanan tai tunnuksen tai DSA ei
tunnista kyseist{ entry{. Varmista \fIEDB\fP-tiedostoista, ett{ tunnus on
todella olemassa.
Jos muunlaisia ongelmia ilmenee, ota yhteytt{ FI-manageriin
(c=FI@cn=Manager tai Directory-Manager@funet.fi).
.sh 2 "Liittyminen Pilottiprojektiin"
.(x
.ti \n($0+2
\*($n Liittyminen Pilottiprojektiin
.)x
.pp
.sp
Aikaisemmin kerroimme, kuinka saat ROOT- ja c=FI-tasojen \fIEDB\fP:t. N{m{
tarvitset, jotta DSA:si tiet{{ paikkansa DIT:ss{. Mutta lis{ksi sinun
on l{hetett{v{ oman DSA:si tiedot Hakemistossa yht{ tasoa ylemp{n{
olevalle DSA:lle (\fIJaguar\fP), jotta muut tiet{siv{t sinunkin DSA:si
olemassaolon. Seuraavalla sivulla on esimerkkin{ TTKK:n DSA:n
(\fIRhea\fP) tiedosto \fIc=FI/EDB\fP silt{ osalta, mit{ se koskee
TTKK:ta:\**
.(f
\**T{ss{ olisi normaalisti my|s muut c=FI:n alla olevat organisaatiot
ja niiden DSA:t.
.)f
.he '\fIDSA c=FI@cn=Rhea\fP''Luku 3 \*- Ohjelmiston installointi ja konfigurointi'
.bp
.ls 1
.nf
.ps 9
SLAVE
890901084500Z
cn=Rhea
quipuVersion= 5.7
eDBinfo= #cn=jaguar#
eDBinfo= c=FI#cn=jaguar#
eDBinfo= c=FI@o=Tampere University of Technology##
acl= others # read # entry
acl= group # c=FI@o=Tampere University of Technology@cn=Manager # write # entry
acl= others # read # default
acl= group # c=FI@o=Tampere University of Technology@cn=Manager # write # default
acl= self # write # attributes # userPassword$accessControlList
acl= others # compare # attributes # userPassword$accessControlList
lastModifiedBy= c=FI@cn=Manager
lastModifiedTime= 891121121247Z
manager= c=FI@o=Tampere University of Technology@cn=Manager
userPassword= \(a{CRYPT\(a}QKFB
supportedApplicationContext= X500DSP & X500DAP & quipuDSP
presentationAddress= '0101'H/TELEX+00728722+RFC-1006+03+128.214.1.2+17003\(a|X121+24432315101521
description= The Rhea DSA located at Tampere Univ of Technology, Finland holding the TUT bit of the DIT.
ou= Software Systems Laboratory
o= Tampere University of Technology
l= Hervanta, Tampere
cn= Rhea
objectClass= dSA & applicationEntity & top & quipuDSA

o=Tampere University of Technology
masterDSA= c=FI@cn=Rhea
acl= others # read # entry
acl= group # c=FI@o=Tampere Universtity of Technology@cn=Manager # write # entry
acl= others # read # default
acl= group # c=FI@o=Tampere University of Technology@cn=Manager # write # default
acl= others # compare # attributes # userPassword$accessControlList
treeStructure= applicationEntity & applicationProcess & groupOfNames & organizationalUnit &
alias & domainRelatedObject & quipuNonLeafObject & quipuDSA
associatedDomain= tut.fi
lastModifiedBy= c=fi@cn=manager
lastModifiedTime= 891027130309Z
userPassword= \(a{CRYPT\(a}WVW
telephoneNumber= +358-31-162111
postOfficeBox= P.O. Box 527
postalCode= SF-33101
postalAddress= Tieteenkatu 21
o= TUT
o= TTKK
o= Tampereen teknillinen korkeakoulu
o= Tampere University of Technology
streetAddress= Tieteenkatu 21
stateOrProvinceName= \(a{T.61\(a}  H{meen l{{ni
l= Hervanta, Tampere
objectClass= organization & top & domainRelatedObject & quipuNonLeafObject & quipuObject
.fi
.ls 2
.he '''Luku 3 \*- Ohjelmiston installointi ja konfigurointi'
.bp
.lp
K{yt{ n{it{ entryj{ malleina t{ydent{{ksesi \fIdsaconfig\fP:n omasta
organisaatiostasi luomia entryj{.
.pp
\fIEDB\fP:iden p{ivitysmekanismin m{{rittelee attribuutti "eDBinfo".
Attribuutin syntaksi on seuraava:
.(l
.b
eDBinfo= kyseess{ oleva EDB # mist{ haetaan # minne l{hetet{{n
.r
.)l
Ensimm{inen kentt{ m{{rittelee, mink{ tason \fIEDB\fP:t{ t{m{
attribuutti koskee. Jos kentt{ on tyhj{, kyseess{ on ROOT \fIEDB\fP.
Toinen kentt{ m{{rittelee sen DSA:n DN:n, mist{ ko. \fIEDB\fP haetaan. Kolmas
kentt{ puolestaan kertoo sen DSA:n DN:n, minne ko. \fIEDB\fP
l{hetet{{n. Esimerkiksi DSA:n \fIRhea\fP "eDBinfo"-attribuutit luetaan
seuraavasti (ks. edellinen sivu):
.sp
Ensimm{inen "eDBinfo"-attribuutti:
\'Hae ROOT \fIEDB\fP DSA:lta \fIJaguar\fP\'
.br
Toinen "eDBinfo"-attribuutti:
\'Hae \fIc=FI/EDB\fP DSA:lta \fIJaguar\fP\'
.br
Kolmas "eDBinfo"-attribuutti:
\'\fIc=FI/o=Tampere University of Technology/EDB\fP on DSA:lla
\fIRhea\fP\'
.sp
Edell{ luetelluista kaksi ensimm{ist{ tulee olla omassa DSA:ssasi.
Tarkista, ett{ ne todella ovat siell{. Muiden attribuuttien
rakenteeseen emme t{ss{ yhteydess{ puutu. Huomaa kuitenkin, ett{
niiden arvot riippuvat ensik{dess{ siit{, kuinka olet t{ydent{nyt tiedoston
\fI$(ETCDIR)/quipu/oma_dsa.dsa\fP ennen \fIdsaconfig\fP:n ajamista !
Attribuutin \(aasupportedApplicationContext\(aa arvo tulee aina olla:
.(l
QuipuDSP & X500DSP & X500DAP
.)l
T{t{ attribuuttia k{ytt{v{t hyv{ksi muut DSA:t ottaessaan yhteytt{
omaan DSA:hasi.
.pp
Koska DSA:si
\fIc=FI/EDB\fP-tiedosto on SLAVE kopio (MASTER on
\fIcn=Jaguar\fP:lla), tulee sinun l{hett{{ omasta
\fIc=FI/EDB\fP -tiedostostasi omaa organisaatioasi koskeva osa
(\fIc=FI/EDB.oma\fP) FI-managerille osoitteeseen
\fBDirectory-Manager@funet.fi\fP. Aina kun teet muutoksia
tiedostoon \fIc=FI/EDB\fP tulee
muutokset ilmoittaa FI-managerille, joka p{ivitt{{ MASTER-kopion.
Kokeiluvaiheessa voit tietenkin muutella itse \fIc=FI/EDB\fP:t{ ja
katsoa, saatko DSA:n toimimaan halutulla tavalla. Huomiota kannattaa
kiinnitt{{ attribuutteihin \(aaeDBinfo\(aa (\fIEDB\fP:n p{ivitysmekanismi),
\(aaacl\(aa (suojausmekanismi), \(aaobjectClass\(aa (mit{ attribuutteja voit
entryss{ k{ytt{{) ja \(aatreeStructure\(aa (heti organisaatiosi alla olevat
sallitut objektiluokat).
.sh 3 "P{ivityksen tarkistaminen"
.(x
.ti \n($0+2
\*($n P{ivityksen tarkistaminen
.)x
.pp
.sp
P{ivitysmekanismin toiminnan voit manuaalisesti tarkistaa liittym{ll{
hakemistoon Managerina. Tarkistaminen edellytt{{, ett{ FI-manager on lis{nnyt
organisaatiosi entryn c=FI:n MASTER EDB:hen.\**
.(f
\**T{m{n voit tarkistaa ottamalla yhteyden \fIdish\fP:ll{
\fIJaguar\fP:iin ja etsim{ll{ sielt{ oman organisaatiosi entry{.
.)f
Jos n{in ei ole, odota kunnes p{ivitys on tehty. Sitten pyyd{t DSA:ta
p{ivitt{m{{n SLAVE-kopionsa seuraavasti:
.(b
.b
% dish -user "@c=FI@o=ORG@cn=Manager"
Welcome to Dish (DIrectory SHell)
Enter password for "@c=FI@o=ORG@cn=Manager": salasana
Dish -> dsacontrol -slave
Done
Dish -> quit
.r
.)b
Varmista viel{, ett{ Level-1 DSA:si on todella p{ivitt{nyt ROOT- ja
c=FI-tasojen \fIEDB\fP:t katsomalla vastaavista hakemistoista tiedostoja
\fIEDB.bak\fP ja \fIc=FI/EDB.bak\fP. Jos p{ivitett{v{{ tietoa on
ollut, tehd{{n vanhoista \fIEDB\fP:ist{
\fI\&.bak\fP-tiedostot. P{ivitysmekanismi tarkistaa
\fIEDB\fP-tiedoston toisen rivin mukaan (rivi joka sis{lt{{
p{iv{m{{r{n), tehd{{nk| p{ivitys vai ei. P{ivitys tehd{{n \fBainoastaan\fP, jos
p{iv{m{{r{ on eri kuin alkuper{isess{ \fIEDB\fP:ss{. DSA:n
k{ynnistysvaiheessa p{ivityst{ yritet{{n tehd{, jos m{{re
\(aaupdate\(aa \fIquiputailor\fP:ss{ on \(aaon\(aa sek{ t{m{n j{lkeen
tietyin v{liajoin (ks. s 35). Muulloin p{ivitys
voidaan tehd{ k{sin kuten edell{.
.pp
Kun olet toimittanut oman DSA:si ja organisaatiosi entryt
FI-managerille, varmista ett{ \fIJaguar\fP tunnistaa ne (t{m{n tarkistaa
my|s FI-manager, mutta tee se silti):
.(b
.b
% dish -c "Jaguar"
Welcome to Dish (DIrectory SHell)
Dish -> moveto "@c=FI@o=ORG"
Dish -> list
   \(bu \(bu \(bu
Dish -> list "ou=ORG_YKS"
   \(bu \(bu \(bu
.r
.)b
T{m{ edellytt{{, ett{ FI-manager on lis{nnyt oman DSA:si ja
organisaatiosi entrytiedot
\fIc=FI/EDB\fP:n MASTER-kopioon.
Jos t{m{ onnistuu, tied{t, ett{ Jaguar osaa keskustella oman
DSA:si kanssa. Muut Level-1 DSA:t eiv{t v{ltt{m{tt{ tied{ viel{ sinun
DSA:si olemassaolosta, mutta kun p{ivitys Jaguarista suoritetaan
tiet{v{t muutkin Level-1 DSA:t yhden DSA:n tulleen lis{{.
.sh 3 "Systeemin hallinta"
.(x
.ti \n($0+2
\*($n Systeemin hallinta
.)x
.pp
.sp
Kun kaikki n{ytt{{ silt{, ett{ voit j{tt{{ DSA:n taustalle "py|rim{{n",
huolehdimme viel{ siit{, ett{ se my|s toimii taustalla jatkuvasti.
K{yt{ \fIdish\fP:{ lopettaaksesi DSA:
.(b
.b
% dish -user "@c=FI@o=ORG@cn=Manager"
Welcome to Dish (DIrectory SHell)
Enter password for "@c=FI@o=ORG@cn=Manager": 
Dish -> dsacontrol -abort
*** Problem with DSA ***
Dish -> quit
.r
.)b
Muuta sitten scripti{ \fIstartup.sh\fP haluamaksesi (katso samalla,
ett{ kaikki hakemistot ovat oikein) ja aja se:
.(b
.b
% $(ETCDIR)/quipu/oma_dsa/startup.sh
.r
.)b
Katso my|s, ett{ \fIros.quipu\fP:n tekemien lokien m{{r{/rakenne on
haluamallasi tasolla (\fIquiputailor\fP ja \fIdsaptailor\fP
-tiedostot). Lopuksi voit tehd{ seuraavat
toimenpiteet:
.np
Lis{{ \fI/etc/rc.local/\fP-tiedostoon:
.(b
.b
if \(a[ -d $(ETCDIR)/quipu/oma_dsa \(a]; then
   $(ETCDIR)/quipu/oma_dsa/startup.sh & \(a\
   (echo -n ' oma_dsa') > /dev/console
fi
.r
.)b
Jos \fI/etc/rc.local\fP sis{lt{{ \fItsap(8c)\fP:n k{ynnistyksen, laita
DSA:n k{ynnistys t{m{n j{lkeen. Muutamissa systeemeiss{, joissa on Sunin
\(aaYellow Pages\(aa k{yt|ss{, on huomattu YP:n est{v{n \fIros.quipu\fP:a
k{ynnistym{st{. Syyt{ t{lle ei kuitenkaan tiedet{.
.np
Muuta \fI$(ETCDIR)/quipu/oma_dsa/quiputailor\fP:n m{{re 'update' 'on'.
Nyt p{ivitys tapahtuu automaattisesti samassa tiedostossa olevan
m{{reen 'slavetime' ilmoittaman ajan v{lein.
.lp
Jos tietokannan omistajana on joku muu kuin \fIroot\fP (esim.
\fIdaemon\fP), huolehdi siit{, ett{ scriptin omistajan \(aauserid\(aa on
sama kuin ko. omistajan.
.pp
Onnittelut! Nyt olet liittynyt onnistuneesti Pilottiprojektiin.
Ongelmatilanteissa kannattaa aina itse ensin kriittisesti mietti{,
mit{ on todella tullut tehty{. Ilmoitettaessa FI-managerille
ongelmasta, tulee mukaan liitt{{ riitt{v{ kuvaus ongelmatilanteesta,
jotta asian tausta selvi{isi my|s h{nelle.
.he '''Luku 4 \*- Yll{pito'
.+c
.ce
\fB\s174. \s15Yll{pito\s0\fP
.(x
4. Yll{pito
.)x
.sp
.pp
Kun nyt olet liittynyt onnistuneesti Pilottiprojektiin, k{ymme t{ss{
kappaleessa
l{pi muutamia yll{pidollisia seikkoja. N{m{ ohjeet eiv{t pyri
mitenk{{n olemaan t{ydellisi{, vaan l{hinn{ viitteit{ antavia ja
alkuun johdattelevia. Seikkaper{isemm{n selvityksen ohjelmiston
yll{pidosta l|yd{t l{hteest{ \(a[SKill89b\(a]. Suosittelen t{h{n julkaisuun
perehtymist{ my|hemm{ss{ vaiheessa tarkemman kuvan saamiseksi DSA:n
toiminnasta.
.sh 2 "\fI$(ETCDIR)/dsaptailor\fB-tiedoston editointi" 4 1
.(x
.ti \n($0+2
\*($n \fI$(ETCDIR)/dsaptailor\fP-tiedoston editointi
.)x
.pp
.sp
\fIdsaptailor\fP-tiedosto vaikuttaa DUA:n ja DSA:n v{liseen
kommunikointiin.
Kun olet saanut DSA:n k{yntiin, voit vaikuttaa DUA:n toimintaan
\fIdsaptailor\fP-tiedoston m{{reit{ muuttamalla. T{m{ tapahtuu
joko suoraan \fIdsaptailor\fP-tiedostoa editoimalla tai k{ytt{m{ll{
\fIdish\fP:n komentoa "dsacontrol". Seuraavassa k{ymme l{pi \fIdsaptailor\fP:n
t{rkeimpien m{{reiden merkitykset:
.ip A.
\fBoidtable:\fP
Polku \fIoidtable.*\fP -tiedostoja varten. On t{rke{{, ett{ t{m{ entry
tulee \fIdsaptailor\fP:ssa ensimm{isen{, sill{ my|hemmill{ entryill{
saattaa olla attribuutteja, joita etsit{{n n{ist{ tiedostoista.
.ip B.
\fBdsa_address:\fP
M{{rittelee muiden DSA:iden osoitteet, joihin t{m{ DSA ottaa yhteytt{.
Jos osoitteita on useita, ensimm{ist{ k{ytet{{n oletusarvona.
.ip C.
\fBsizelimit:\fP
Kertoo, kuinka monta entry{ onnistunut \(aalist\(aa tai \(aasearch\(aa komento
antaa.
.ip D.
\fBoidformat:\fP
M{{rittelee, kuinka objektim{{reet tulostetaan. Oletuksena on arvo
\(aashort\(aa, jolloin tulostetaan lyhyt avain, esimerkiksi Country.
Jos taas m{{ritell{{n:
.(l
oidformat         long
.)l
tulostuu koko attribuutin m{{rittely, esimerkiksi
joint.ds.attributeType.country.
Arvo saadaan my|s numeerisena m{{reell{ \(aanumeric\(aa jolloin tulostuu
esimerkiksi 2.5.4.6 .
.ip E.
\fBlocal_dit:\fP
Argumenttina DN, joka kertoo mihin kohtaan DIT:ss{ k{ytt{j{ joutuu
liitynn{n tehdess{{n.
.ip F.
\fBdsaplog:\fP
Lokitiedostojen ohjaaminen. Koostuu yhdest{ tai useammasta avain/arvo
-yhdistelm{st{:
.(l
avain=arvo
.)l
Avaimia ovat:
.nf
- file: lokitiedoston nimi
- size: lokitiedoston maksimikoko kilotavuissa
- level: m{{rittelee tason, jolla lokeja tehd{{n
	Arvoja m{{reelle:
	\(bu fatal \*- fataalit virheet
	\(bu exceptions \*- vakavat virheet (toivottavasti v{liaikaiset)
	\(bu notice \*- yleiset lokitiedot
	\(bu trace \*- k{ytet{{n ohjelmien j{ljitykseen (trace)
	\(bu pdus \*- pdu:iden j{ljitykseen
	\(bu debug \*- t{ydellinen j{ljitys
	\(bu all \*- kaikki edelliset tapahtumat
- dlevel: vastakohta edelliselle (ei tehd{ lokeja annetuista m{{reist{)
- dflag/sflag: lippujen asettaminen (dflag = pois p{{lt{, sflag = p{{ll{)
	Arvoja m{{reelle:
	\(bu close \*- sulje loki joka entryn j{lkeen
	\(bu create \*- luo loki, jos sit{ ei ole
	\(bu zero \*- katkaise loki, kun se tulee liian suureksi
	\(bu tty \*- kopioi loki k{ytt{j{n p{{tteelle
.fi
.pp
Seuraavassa on esimerkkin{ Tampereen Teknillisen Korkeakoulun DSA:n
\fIdsaptailor\fP-tiedosto. T{t{ apuna k{ytt{en
voit editoida omaa tiedostoasi. Ohjeita m{{reiden k{ytt||n on
annettu my|s manuaalisivulla \fIquiputailor(8)\fP.
.he '\fIdsaptailor\fP''Luku 4 \*- Yll{pito'
.bp
.ls 1
.nf
.ps 9
###############################################################################
#
# dsaptailor - ISODE DSAP Specific Tailoring File
#
# $Header: /f/osi/dsap/RCS/dsaptailor,v 7.2 90/01/11 18:35:24 mrose Exp $
#
#
# $Log:	dsaptailor,v $
# Revision 7.2  90/01/11  18:35:24  mrose
# real-sync
# 
# Revision 7.1  89/12/19  16:19:48  mrose
# sync
# 
# Revision 7.0  89/11/23  21:39:29  mrose
# Release 6.0
# 
###############################################################################


# this line must occur first
oidtable	oidtable

# which dsa to call initially
dsa_address	"rhea"		'0101'H/Internet=128.214.1.2+17003

# some other DSAs of interest

# ROOT/GB MASTER at University College London
dsa_address "Giant"		Internet=128.16.5.31+2005\(a|Janet=00000511160045\(a|Int-X25(80)=23421920030045

dsa_address "Giant Tortoise"	Internet=128.16.5.31+2005\(a|Janet=00000511160045\(a|Int-X25(80)=23421920030045

# AU MASTER at CSIRO 
dsa_address "Anaconda"		'0101'H/Int-X25(80)=5052334300013+PID+03018100\(a|Internet=128.250.1.81+2005

# AU SLAVE at CSIRO 
dsa_address "Bush Dog"		'0101'H/Int-X25(80)=50527372000054+PID+03018100\(a|Internet=130.102.128.12+17003

# CA MASTER at UToronto
dsa_address "Wayne Gretzky"	'0101'H/Internet=129.132.101.8+17003

# CH MASTER at ETH Zurich
dsa_address "Chinchilla"		'0101'H/Internet=129.132.101.8+17003

# DE MASTER at FOKUS
dsa_address "Puma"		'0101'H/Int-X25(80)=26245300048203+PID+03018100

# ES MASTER at
dsa_address "Iguana"		'0101'H/Internet=130.206.1.2+17003\(a|Int-X25(80)=2145215020113+PID+03018100

# ES SLAVE at Universidad Politecnica de Madrid
dsa_address "Cayman"		'0101'H/Internet=130.206.7.40+17003\(a|Int-X25(80)=21452130210201+PID+03018100

# GB SLAVE at UNott
dsa_address "Vampire Bat"		'025c'H/Internet=128.243.20.12+17003\(a|Janet=000021000018+PID+03018100\(a|
Int-X25(80)=23426020017299+PID+03018100

# FI MASTER at Tampere
dsa_address "Jaguar"		'0101'H/Internet=128.214.1.1+17003\(a|Int-X25(80)=24432315101520

# IS MASTER at 
dsa_address "Elephant Seal"		'0101'H/Internet=130.208.165.63+17003

# NO MASTER at UIO
dsa_address "Electric Eel"		'0101'H/Internet=129.240.2.40+2005\(a|Int-X25(80)=2422110001006+PID+03018100

# NO SLAVE at Oslo
dsa_address "Boa Constrictor"	'0101'H/Internet=128.240.2.51+2005\(a|Int-X25(80)=242211000163+PID+03018100

# SE MASTER at UME
dsa_address "Hummingbird"		'0101'H/Internet=130.239.1.15+2005\(a|Int-X25(80)=240200100306

# US MASTER at NYSERNet Inc.
dsa_address "Alpaca"		'0101'H/Internet=192.33.4.20+17007\(a|Int-X25(80)=31106070013600+PID+03018100

# US SLAVE on East coast
dsa_address "Fruit Bat"		'0101'H/Internet=136.161.128.3+17007

# US SLAVE on West coast
dsa_address "Giant Anteater" 	'0101'H/Internet=192.52.180.1+17007

# logging
dsaplog		level=debug file=dsap.log sflag=zero size=50

# local DIT position (where a DUA starts in the DIT)
local_DIT	"@"

# oid format
oidformat		short

# photograph process routines
photo		dumb	ttyphoto

# automatic quipurc creation
quipurc		off

# DUA search/list sizelimit
sizelimit		20
.fi
.ls 2
.he '''Luku 4 \*- Yll{pito'
.bp
.sh 2 "Lokitiedostot"
.(x
.ti \n($0+2
\*($n Lokitiedostot
.)x
.pp
.sp
Ohjelmisto tekee oletusarvoillaan melko paljon lokeja. Yll{pit{j{n
kannalta kiinnostavia ovat \fIdsap.log\fP, joka sis{lt{{ yleist{
tietoa DSA:n kuormituksesta, ja \fIstats.log\fP, joka sis{lt{{
tilastollisia tietoja DSA:n toiminnasta. Jos tuntuu, ett{ DSA:lla on
"kiirett{" palvelujensa suorittamisessa, kannattaa v{hent{{ lokien
m{{r{{. T{m{ on koko systeemin toiminnan kannalta olennainen
seikka.
.pp
\fIdsaptailor\fP:ssa m{{ritell{{n, kuinka mit{kin
lokitiedostoa p{ivitet{{n. Lokien m{{r{{/laatua voit muuttaa joko
editoimalla \fIdsaptailor\fP:a tai suoraan \fIdish\fP:st{. Esimerkiksi
seuraavassa kirjoitetaan kaikki tapahtumat \fIdsap.log\fP:iin:
.(l
.b
Dish -> dsacontrol -tailor "dsaplog level=all"
.r
.)l
Lokien muoto on m{{ritelty seuraavasti:
.(b
<Tietue> ::= <kuukausi>"/"<p{iv{> <aika> <prosessi> <pid> "(" <userid> ")" <tapahtuma>
.)b
miss{
.(l
\(bu <aika> esitet{{n muodossa hh:mm:ss.
\(bu <prosessi> kertoo ohjelman nimen \fItapahtuma\fPlle.
\(bu <pid> on prosessin numero.
\(bu <userid> on k{ytt{j{n tunnus (id), joka k{ynnisti ko. prosessin.
\(bu <tapahtuma> on varsinainen lokitapahtuma. Tarkemmat tiedot l|ytyv{t l{hteest{ \(a[SKill89b\(a].
.)l
.sh 2 "Entryjen lis{{minen tietokantaan"
.(x
.ti \n($0+2
\*($n Entryjen lis{{minen tietokantaan
.)x
.pp
.sp
Yleisesti pienet
muutokset tietokantaan kannattaa tehd{ \fIdish\fP:ll{, kun taas suurempien
datam{{rien k{sittely on syyt{ tehd{ k{sin editoimalla
\fIEDB\fP-tiedostoja (toistaiseksi mit{{n ty|kalua suurten datam{{rien
k{sittelyyn ei ole). Huomaa, ett{ editoidessasi \fIEDB\fP-tiedostoja,
sinun \fBt{ytyy\fP pyyt{{ DSA:ta lukemaan tekem{si muutokset:
T{m{ tapahtuu poistamalla ja k{ynnist{m{ll{ DSA antamalla "refresh" optio
\fIdish\fP:n komennolle "dsacontrol". Editoinnin helpottamiseksi
esimerkkientryj{ l|ytyy hakemistosta \fI$(ETCDIR)/quipu/templates\fP:
.ip \fBalias\fP 8
"alias"-objekti
.ip \fBperson\fP 8
"pilotPerson"-objekti
.ip \fBrole\fP 8
"organizationalRole"-objekti
.ip \fBunit\fP 8
"organizationalUnit"-objekti
.lp
Jokainen edell{mainittu tiedosto sis{lt{{ editointiohjeita entryn rakentamista
varten.
.sh 3 "Entryjen lis{{minen \fIdish\fP:n avulla"
.(x
.ti \n($0+2
\*($n Entryjen lis{{minen \fIdish\fP:n avulla
.)x
.pp
Liity ensin Hakemistoon managerina ja siirry DIT:ss{ haaraan, johon
haluat tehd{ muutoksia:
.(b
.b
% dish -c "oma_dsa" -user "c=FI@o=ORG@cn=Manager"
Enter password for "c=FI@o=ORG@cn=Manager": secret
Dish -> moveto \(bu \(bu \(bu
.r
.)b
Nyt voit k{ytt{{ "add"- ja "modify"-komentoja haluamallasi
tavalla. Entryjen lis{{misess{ on alkuvaiheessa suotavaa, ett{ k{yt{t valmista
pohjaa esimerkiksi seuraavasti:
.(l
.b
Dish -> add ou=ORG_YKS -template $(ETCDIR)/quipu/templates/unit
.r
.)l
T{m{ luo uuden organisatorisen yksik|n senhetkisen solmun alle.
Vastaavalla tavalla voit lis{t{ muitakin objekteja. Kun
lis{{t uusia objekteja jonkin solmun alaisuuteen, huolehdi ett{ t{m{n
solmun sis{lt{m{ MASTER-kopio (esim. \fIc=FI/o=ORG/EDB\fP) sallii
objektin lis{{misen ! Tarkista
siis aina, ett{ solmun attribuutilla
\(aatreeStructure\(aa on arvona objektiluokka, jota haluat seuraavalla
alemmalla tasolla k{ytt{{. 
.sh 3 "Tietokannan yll{pito"
.(x
.ti \n($0+2
\*($n Tietokannan yll{pito
.)x
.pp
.sp
Se, ett{ olet saanut kaikki haluamasi entryt sy|tetty{ tietokantaan
\*- joko \fIdish\fP:n avulla tai suoraan \fIEDB\fP-tiedostoja
editoimalla \*- ei viel{ pidemp{{ aikaj{nnettt{ ajatellen ole
riitt{v{{. Onhan tietokantaa pidett{v{ ajan tasalla. T{h{n
tarkoitukseen ei ohjelmiston t{m{ versio tarjoa mink{{nlaista
ratkaisua, vaan sinun on itse harkittava, kuinka aiot p{ivityksen
suorittaa. Mahdollisesti my|hemmiss{ ohjelmiston versioissa tulee
mukana joitakin scriptej{ auttamaan yll{pidossa.
.pp
TTKK:ssa hoidamme p{ivityst{ niin, ett{ TTKK:n sis{isest{
puhelinluettelosta, joka on \(aaonline\(aa-tietokantana, haetaan
s{{nn|llisin v{liajoin halutut
entryt (mm. telephoneNumber, homePhone) ja p{ivitet{{n ne
tietokantaan. K{ytt{j{lle j{{ mahdollisuus muuttaa
muita attribuutteja (esim. rfc822mailbox), sill{ ainoastaan tietyt
attribuutit p{ivitet{{n "viran puolesta".
On huomattava, ett{ vaikka joku tietty attribuutti
p{ivitet{{nkin automaattisesti puhelinluettelosta, voi k{ytt{j{ m{{ritell{
useita arvoja ko. attribuutille. N{in k{ytt{j{lle tarjoutuu tilaisuus
t{ydent{{ automaattisesti p{ivitett{vi{ tietoja.
.pp
TTKK:n p{vitysmekanismin rakenne perustuu suurelta osin
shell-scriptien varaan. P{ivityksess{ jokaisesta organisatorisesta
yksik|st{ k{yd{{n l{pi kaikki entryt \fIEDB\fP-tiedostoista ja
p{ivitet{{n/lis{t{{n halutut attribuutit tarkasteltavana olevan
henkil|n entryyn. Koska henkil|entryj{ on noin 1000 kappaletta,
p{ivitysmekanismi t{ll{ keinolla on hidasta, mutta se on toistaiseksi
tarkoituksenmukaisin vaihtoehto. My|hemin on tarkoitus kehitt{{
mekanismia niin, ett{ my|s muitakin kuin henkil|entryj{ voidaan
p{ivitt{{.
.sh 2 "Yleisi{ turvallisuusn{k|kohtia"
.(x
.ti \n($0+2
\*($n Yleisi{ turvallisuusn{k|kohtia
.)x
.pp
.sp
Tarkastelemme t{ss{ ohjelmistoon ja sen k{ytt||n liittyvi{ yleisi{
turvallisuusn{k|kohtia. N{m{ seikat ovat sangen t{rkeit{ ottaen
huomioon Hakemiston sis{lt{m{n tietom{{r{n ja sen sis{ll|n: Ilman
riitt{vi{ suojauksia kuka tahansa voisi p{{st{ k{siksi tietohin ! Sen
vuoksi Hakemistossa jokaisella Hakemistoon kuuluvalla k{ytt{j{ll{ on
tunnus ja salasana. My|s Hakemistoon kuulumattomat voivat k{ytt{{
Hakemiston palveluja, mutta sit{ ennen on huolehdittava, ett{
Hakemisto on suojattu
tarpeellisilta osin (mm. k{ytt{jien salasanat).
.pp
Ensimm{iseksi tarkastelemme ohjelmistoon liittyvi{ n{k|kohtia ja sen j{lkeen
tutustumme Hakemiston suojausmenettelyyn attribuutilla \(aaacl\(aa.
.sh 3 "Ohjelmiston suojausn{k|kohdat"
.(x
.ti \n($0+2
\*($n Ohjelmiston suojausn{k|kohdat
.)x
.pp
.sp
DSA:ta ei tulisi k{ytt{{ \(aaroot\(aa-k{ytt{j{n oikeuksilla. Syy t{h{n
on yksinkertainen: mit{{n ohjelmaa ei tulisi k{ytt{{
\(aasuper-user\(aa:n oikeuksilla, jollei se ole v{ltt{m{t|nt{.
Ohjelmissa saattaa olla joitain puutteita/vikoja, mink{ vuoksi ne
\(aaroot\(aa-k{ytt{j{n oikeuksilla suoritettaessa saattavat aiheuttaa
yll{tt{vi{ vahinkoja (t{rkeit{ tiedostoja saattaa tuhoutua yms.). Parhainta
olisi, jos DSA:ta voitaisiin yll{pit{{ omana k{ytt{j{tunnuksena
(user-id). Jos t{m{ ei ole mahdollista, tulisi DSA:ta ajaa DSA
Managerin k{ytt{j{tunnuksen alla.\**
.(f
\**Viittaamme t{h{n tunnukseen my|hemmin nimell{
.q quipu
.)f
.sh 3 "Tiedostojen suojauksesta"
.(x
.ti \n($0+2
\*($n Tiedostojen suojauksesta
.)x
.pp
.sp
\fIEDB\fP-tiedostot sis{lt{v{t Hakemiston tietokannan, joten niiden
pit{isi olla moodissa \fB0600\fP ja omistajana tulisi olla
.q quipu
\&.
.pp
Lokitiedostot \fI($LOGDIR)/stats.log\fP ja \fI$(LOGDIR)/dsap.log\fP
tulisi my|s suojata samoin kuin \fIEDB\fP-tiedostot. T{ss{ saattaa
kuitenkin ilmet{ ongelmia, sill{ ISODE:n luomat lokit sallivat
kirjoitusoikeuden kaikille. Jotta ongelmilta v{ltytt{isiin, tee
hakemisto (esim. \fI/var/log/quipu-logs\fP) QUIPU:n lokitiedostoille.
Muuta t{m{n hakemiston suojauksia niin, ett{ vain k{ytt{j{ll{
.q quipu
on oikeus lukea lokeja. Muuta lis{ksi parametrin "logdir" arvoa
\fIquiputailor\fP:ss{ vastaamaan luomaasi hakemistoa.
.sh 3 "Acl-attribuutin k{ytt|"
.(x
.ti \n($0+2
\*($n Acl-attribuutin k{ytt|
.)x
.pp
.sp
Acl-attrbuutin avulla k{ytt{j{t voivat rajoittaa muiden k{ytt{jien
saantioikeuksia entryihin ja attribuutteihin.
Syntaksi on seuraava:
.(l
<aclarvo> ::= <kuka> "#" <mit{> "#" <tyyppi> \(a["#"\(a]

<kuka> ::= "self" \(a| "others" \(a| "group #" <nimilista> \(a| "prefix #" <nimilista>
<mit{> ::= "none" \(a| "detect" \(a| "compare" \(a| "read" \(a| "add" \(a| "write"
<tyyppi> ::= "child" \(a| "entry" \(a| "default" \(a| "attributes #" <oidlista>
<oidlista> ::= <oid> \(a| <oidlista> "$" <oid>
.)l
Kuten huomaamme attribuutti jakautuu kolmeen kentt{{n: kenen
oikeuksista on kyse, mit{ oikeuksia annetaan/poistetaan ja mit{
entryj{/attribuutteja oikeus koskee. K{ymme kent{t l{pi seuraavassa:
.np
Kentt{ <kuka> m{{rittelee kenen oikeuksista on kyse. Ensimm{isess{
sarakkeessa on kent{n arvo ja toisessa keneen oikeuksien muutos kohdistuu:
.(l
\(bu "self" = entryn omistaja
\(bu "others" = kaikki
\(bu "group" = <nimilista>:aan kuuluvat DN:t.
\(bu "prefix" = kaikki <nimilista>:aan kuuluvat ja kaikki sen alapuolella DIT:ss{ olevat.
.)l
.np
Kentt{ <mit{> m{{rittelee, mit{ oikeuksia annetaan/poistetaan:
.(l
\(bu "none" = ei oikeutta ko. objektiin
\(bu "detect" = DUA pystyy huomaamaan, ett{ objekti on suojattu
\(bu "compare" = Objektin vertaaminen toiseen on sallittu
\(bu "read" = Objektin sis{lt| voidaan lukea
\(bu "add" = Ojektiin voidaan lis{t{ attribuutteja muttei tuhota
\(bu "write" = Objektin sis{lt|{ voidaan muokata kaikin tavoin
.)l
.np
Kentt{ <tyyppi> m{{rittelee mit{ attribuutteja tai entryj{ oikeuksien
muutokset koskevat:
.(b
\(bu "child" = kaikki entryt t{m{n entryn alapuolella DIT:ss{
\(bu "entry" = entry itse
\(bu "attributes" =  <oidlista>:ssa luetellut attribuutit
\(bu "default" = kaikki entryn attribuutit
.)b
.pp
Jotta attribuutin k{ytt| selvi{isi paremmin esitet{{n
muutamia esimerkkej{:
.br
Seuraavat esimerkit koskevat DIT:n "lehti{":
.ip \(bu
Vain k{ytt{j{ ja Manager voivat muuttaa entry{:
.(b
acl= other # read # entry
acl= self # write # entry
acl= group # <Managerin nimi> # write # entry
.)b
.ip \(bu
Kaikki voivat lukea k{ytt{j{n attribuutteja, mutta vain k{ytt{j{ voi
muuttaa niit{:
.(b
acl= other # read # default
acl= self # write # default
.)b
.ip \(bu
Attribuuttia \(aaacl\(aa voivat kaikki verrata, mutta ainoastaan Manager
voi muuttaa sit{. Lis{ksi attributtia \(aauserPassword\(aa voivat
kaikki k{ytt{{ vertaamiseen, mutta ainoastaan k{ytt{j{ voi muuttaa sit{:
.(b
acl= other # compare # attributes # acl $ userPassword
acl= group # <Managerin nimi> # write # attributes # acl
acl= self # write # attributes # userPassword
.)b
.lp
Seuraavat esimerkit koskevat organisaatioita tai organisatorisia yksik|it{:
.ip \(bu
Kaikki voivat tehd{ hakuja organisaatioihin, mutta ainoastaan
Manager voi lis{t{ tai poistaa j{seni{: 
.(b
acl= other # read # child
acl= group # <Managerin nimi> # write # child
.)b
.ip \(bu
Kaikki voivat lukea entry{, mutta Manager voi ainoastaan muuttaa sit{:
.(b
acl= other # read # entry
acl= group # <Managerin nimi> # write # entry
.)b
.ip \(bu
Kaikki voivat lukea entryn attribuutteja, mutta Manager voi ainoastaan
muuttaa niit{:
.(b
acl= other # read # default
acl= group # <Managerin nimi> # write # default
.)b
.pp
Huomaa, ett{ jokaisella entryll{ DIT:ss{ on oltava
\(aaacl\(aa-attribuutti. Oletusarvo \(aaacl\(aa:lle ilmoitetaan
yleens{:
.(l
acl=
.)l
mik{ tarkoittaa seuraavaa:
.(l
acl= self # write # entry
acl= self # write # child
acl= self # write # default
acl= others # read # entry
acl= others # read # child
acl= others # read # default
.)l
.sh 3 "Attribuutit, joiden tulee olla yleisesti luettavissa"
.(x
.ti \n($0+2
\*($n Attribuutit, joiden tulee olla yleisesti luettavissa
.)x
.pp
.sp
Muutamien attribuuttien tulee olla yleisesti kaikkien luettavissa
(my|s muiden DSA:iden luettavissa), sill{ Hakemisto k{ytt{{ niit{
luodessaan yhteyksi{. Jos DUA antaa ilmoituksen "Unavailable",
suojaukset saattavat olla v{{rin asetettuja. Muista, ett{ muitakin
syit{ DUA:n ilmoitukseen on olemassa, esim. verkkossa esiintyy ongelmia
tai tietokone on ajettu "alas".
.pp
Seuraavien attribuuttien tulee olla yleisesti luettavia:
.(b
\(bu masterDSA
\(bu slaveDSA
\(bu presentationAddress
\(bu userCertificate
\(bu treeStructure
.)b
Attribuutti \(aauserPassword\(aa tulisi olla kaikkien verrattavissa,
muttei luettavissa.
.he '''Luku 5 \*- "White Pages"-palvelut'
.+c
.ce
\fB\s175. \s15"White Pages"-palvelut\s0\fP
.(x
5. "White Pages"-palvelut
.)x
.sp
.pp
Viimeisen{ vaiheena t{ss{ ohjeessa konfiguroimme k{ytt{j{n palvelut
OSI-hakemiston p{{lle. T{ss{ vaiheessa kannattaa harkita miten
palvelut asetetaan k{ytt{j{n ulottuville. Jos k{ytt{j{kunnallasi ei
esimerkiksi ole helppoa p{{sy{ koneeseen, jossa Pilottiprojektin
ohjelmisto py|rii, voit mahdollisesti tarjota palveluita verkon kautta.
.sh 2 "\fIFred\fP:n k{ytt|" 5 1
.(x
.ti \n($0+2
\*($n \fIFred\fP:n k{ytt|
.)x
.pp
.sp
Koska \fIdish\fP:n k{ytt{minen on tavalliselle k{ytt{j{lle
hankalaa, suosittelemme \fIfred\fP:n k{ytt|{ k{ytt{j{n
ensisijaisena vaihtoehtona Hakemistoon liittymiselle.
Jotta k{ytt{j{ voisi t{ysipainoisesti k{ytt{{ \fIfred\fP:{, tulee h{nen
tiet{{:
.np
Oma DN Hakemistossa
.np
Salasana edellist{ varten
.np
\fIFred\fP:n sijainti
.lp
\fIFred\fP:{ voidaan k{ytt{{ my|s ilman, ett{ k{ytt{j{ll{ on
entry Hakemistossa. \fIFred\fP
sijaitsee hakemistossa \fB$(BINDIR)\fP, joten k{ytt{j{n on syyt{
sis{llytt{{ ko. hakemisto shellin muuttujaan \fBPATH\fP.
K{ynnist{minen
tapahtuu yksinkertaisesti:
.(b
.b
% fred
fred >
.r
.)b
Nyt \fIfred\fP on valmis vastaanottamaan komentoja. K{ynnistyess{{n
\fIfred\fP lukee alustustietonsa \fI$(ETCDIR)/fredrc\fP:st{ ja sen
j{lkeen k{ytt{j{n kotihakemistosta \fI~/.fredrc\fP. Tiedostolla
\fI$(ETCDIR)/fredrc\fP m{{ritell{{n oletusalueet (area), mist{ hakuja
tehd{{n. K{ytt{j{ voi muuttaa n{it{ m{{rittelyj{ tiedostossa
\fI~/.fredrc\fP:ss{.
.sh 3 "Komentojen antaminen \fIfred\fP:lle"
.(x
.ti \n($0+2
\*($n Komentojen antaminen \fIfred\fP:lle
.)x
.pp
.sp
Tarpeellisin komento k{ytt{j{lle on \(aawhois\(aa,
jolla tehd{{n hakuja Hakemistoon. Komennon syntaksi n{ytt{{
seuraavalta:
.(l
whois sy|tekentt{ \(a[tietuetyyppi\(a] \(a[alue-m{{re\(a] \(a[tulostusohjaus\(a]
.)l
Seuraavassa k{ymme l{pi eri m{{reet ja esit{mme niist{ muutamia esimerkkej{:
.in +5
.ip A.
\fBSy|tekentt{ \*- ket{ tai mit{ Hakemistosta etsit{{n\fP
.br
Kent{ss{ voi olla pelk{st{{n "nimi", jolloin etsitt{v{ objekti voi olla
organisaatio, organisatorinen yksikk|, maantieteellinen nimi (locality),
sukunimi tai e-mail osoite. "Villien merkkien" (\(aa\(**\(aa) k{ytt| on
mahdollista sy|tekent{ss{.
.(l
Esimerkki: whois Jokela
.)l
T{m{ etsii hakemistosta objekteja "o=*Jokela*", "ou=*Jokela*",
"l=*Jokela*", "surname=Jokela" ja "mail=Jokela@*".
.br
Toisena vaihtoehtona kentt{ss{ voi olla DN tai sen "alias"\**.
.(f
\**Hakujen onnistuessa \fIfred\fP palauttaa koodin (handle), jonka avulla
l|ytyneeseen tietoon voidaan viitata my|hemmin.
.)f
.br
Esimerkkej{:
.(b
.b
whois @c=FI
whois !1
.r
.)b
J{lkimm{isess{ annettiin aliasta 1 vastaava DN. Aliaksien ja DN:ien
vastaavuuden n{et \(aaalias\(aa-komennolla.
.br
Kolmantena vaihtoehtona sy|tekent{ss{ voi olla e-mail osoite.
Esimerkiksi:
.(l
.b
whois mailbox pjj@funet.fi
.r
.)l
.ip B.
\fBTietuekentt{ \*- haettavan objektin tyyppi\fP
.r
.br
Tietuekent{ss{ voi olla joku seuraavista avainsanoista:
.(l
\(bu person \*- Etsit{{n vain henkil|objekteja
\(bu organization \*- Etsit{{n vain organisaatio-objekteja
\(bu unit \*- Etsit{{n vain organisatorisia yksikk|j{
\(bu role \*- Etsit{{n vain organisatorisen roolin (OrganizationalRole) omaavia objekteja
\(bu locality \*- Etsit{{n vain maantieteellisi{ nimi{ (locality)
\(bu dsa \*- Etsit{{n vain DSA:iden nimi{
.)l
Avainsanoja tulee k{ytt{{ aina silloin, kun tiedet{{n mink{tyyppist{
entry{ haetaan. T{m{ tekee hausta tehokkaamman. Jos avainsanaa ei ole,
\fIfred\fP ei rajoita hakuansa mihink{{n tiettyyn objektityyppiin.
.br
Esimerkiksi:
.(b
.b
whois Jokela person
whois Rhea dsa
whois TTKK organization
.r
.)b
.ip C.
\fBAlue-m{{re \*- tietuetyypin hakualue\fP
.br
\(aaArea\(aa-komenolla n{hd{{n, mitk{ ovat kunkin tietuetyypin
hakualueet. Oletusaluetta (default area) k{ytet{{n aina, jos
tietuetyyppi puuttuu hakukomennosta.
Kun suoritetaan esimerkiksi haku:
.(l
.b
whois Jokela
.r
.)l
ja oletusalueena on "@c=FI@o=Tampere University of Technology",
etsit{{n Jokela-nimist{ objektia \fBt{m{n\fP DN:n alapuolelta
Hakemistopuussa. Vastaavasti jokaiselle tietuetyypille on
m{{ritelty hakualue, josta objekteja etsit{{n. Hakualueita voidaan
vaihtaa \(aaarea\(aa-komennolla.
.br
Seuraavat alue-m{{reet ovat k{yt|ss{ \(aawhois\(aa-komennossa:
.(b
\(bu -org \*- organisaatio
\(bu -unit \*- organisatorinen yksikk|
\(bu -locality \*- maantieteellinen nimi
\(bu -geo \*- maan nimi
.)b
Alue-m{{re rajoittaa etsimisen johonkin tiettyyn organisaatioon, sen
yksikk||n, maantieteelliseen alueeseen tai maan nimeen. Tarkastelemme
asiaa esimerkin avulla. Olkoon meill{ seuraavat hakualueet
tietuetyypeille:
.(b
.b
default area @c=FI
area for record-type organization @c=FI
area for record-type unit            @c=FI@o=Tampere University of Technology
area for record-type locality       @c=FI@l=Tampere
area for record-type person        @c=FI@o=Tampere University of Technology
area for record-type dsa             @c=FI
area for record-type role            @c=FI@o=Tampere University of Technology
.r
.)b
Annamme sitten \fIfred\fP:lle komennon:
.(l
.b
whois Jokela -org TTKK
.r
.)l
Komento etsii ensin "@c=FI":n alta (meill{ on nyt hakualueena
organisaatiolle "@c=FI") sellaista organisaatiota, jonka
attribuutin \fBjonain\fP arvona on \(aao=TTKK\(aa.
Sen l|ydetty{{n komento etsii \fBkaikista\fP l|yt{mist{{n organisaatioista
objektia "Jokela". Jos annamme komennon
.(l
.b
whois Jokela person -unit Soft\(**
.r
.)l
\fIfred\fP etsii "@c=FI@o=Tampere University of Technology":n alta
(huomaa j{lleen hakualue !) kaikkia niit{ organisatorisia yksik|it{,
jotka alkavat \(aaSoft\(aa:lla. Lopuksi kaikista l|yt{mist{{n
organisatorisista yksik|ist{ komento etsii henkil|{ "Jokela".
.br
Hakuja voidaan tehd{ tietyst{ maasta k{ytt{m{ll{ \(aa-geo\(aa-m{{rett{:
.(b
.b
whois Svensson person -org SUNET -geo @c=SE
whois mailbox geirp -org uio -geo @c=NO
.r
.)b
Ensimm{isess{ etsittiin Svensson-nimisi{ henkil|it{ Ruotsista
SUNET-nimisist{ organisaatioista. Toisessa esimerkiss{ etsittiin
Norjasta UNINETT-nimisist{ organisaatioista henkil|it{, joiden e-mail
tunnus alkaa \(aageirp\(aa:lla. Huomaa, ett{ \(aa-geo\(aa-optiota
k{yett{ess{ on my|s k{ytett{v{ jotain m{{reist{ \(aa-org\(aa,
\(aa-unit\(aa tai \(aa-locality\(aa. M{{reen \(aa-geo\(aa arvoksi
voidaan antaa vain maan kaksikirjaiminen lyhenne. Lyhenne voidaan
katsoa DIT:st{ juuritasolta.
.ip D.
\fBTulostusohjaus \*- hakujen tulostuksen ohjaus.\fP
.br
Kent{n arvona voi olla joku seuraavista:
.(b
.nf
\(bu expand = yksityiskohtainen tulostus, tulosta l|ytyneiden entryjen lapset
\(bu full = t{ydellinen tulostus
\(bu summary = tulosta rivin mittainen kooste
\(bu subdisplay = tulosta rivin mittainen kooste ja l|ytyneiden entryjen lapset
.fi
.)b
.in -5
.sh 3 "Oman entryn editointi"
.(x
.ti \n($0+2
\*($n Oman entryn editointi
.)x
.pp
.sp
K{ytt{j{ voi muuttaa omaa entry{{n Hakemistossa komennolla
\(aaedit\(aa. Ennen komennon antamista k{ytt{j{n on kiinnitytt{v{
Hakemistoon komennolla \(aathisis\(aa:
.(l
.b
fred> thisis "@c=FI@o=ORG@ou=ORG_YKS@cn=k{ytt{j{"
.r
.)l
T{m{n j{lkeen kysyt{{n kaytt{j{lt{ salasana. Jotta kiinnittyminen
Hakemistoon tapahtuisi aina kun \fIfred\fP:{ k{ytet{{n, kannattaa
kiinnittyminen tehd{ tiedostossa \fI\&.fredrc\fP k{ytt{j{n
kotihakemistossa. Koska tiedosto t{ll|in sis{lt{{ salasanan, on se
suojattava (suojaus 0600 \fIchmod(1V)\fP:ll{).
.pp
Entryn editointi tapahtuu komennolla \(aaedit\(aa. Komento k{ynnist{{
editorin (shellin muuttuja \fB$EDITOR\fP) ja lukee olemassaolevat
tiedot DIT:st{. K{ytt{j{n muutettua halumiensa attribuuttien arvot,
h{n tallettaa tiedot \fI~/\&.dishdraft\fP:iin ja poistuu editorista.
Jos virheit{ esiintyy
attribuuttien arvoissa, niist{ ilmoitetaan k{ytt{j{lle. Onnistuneen
p{ivityksen j{lkeen uusi entry tulostetaan p{{tteelle.
.sh 2 "Palvelut elektronisen postin kautta"
.(x
.ti \n($0+2
\*($n Palvelut elektronisen postin kautta
.)x
.pp
.sp
J{lleen tehd{{n muutamia muutoksia systeemitiedostoihin.
Lis{{ \fI/usr/lib/aliases\fP-tiedostoon rivi:
.(l
.b
whitepages: "\(a|/usr/local/bin/fred -m"
.r
.)l
Kun postia l{hetet{{n tunnukselle "whitepages" \(aaSubject\(aa-rivi
tai sanoman sis{lt| k{sitell{{n WHOIS-tyyppisen{ komentona ja
generoidaan vastaava vastaus. Kun olet editoinnut \fIaliases\fP-tiedostoa,
p{ivit{ se:
.(l
.b
# newaliases
.r
.)l
Kerro uudesta palvelusta my|s paikalliselle Postimestarille.
.he '''L{hdeluettelo'
.++ A
.+c
.ce
\fB\s15L[HDELUETTELO\s0\fP
.(x
L[HDELUETTELO
.)x
.ls 1
.ip "\(a[OSI-Services\(a]"
Christopfer W. Moore, \fIOSI Directory Services\fP. The Wollongong Group, Inc, December 13, 1988.
.ip "\(a[ISO88\(a]" 
\fIInformation Processing Systems \*- Open Systems
Interconnection \*- The Directory \*- Overview of Concepts, Models,
and Service\fP. International Organization for Standardization and International
Electrotechnical Committee, December, 1988.
International Standard 9594-1.
.ip "\(a[CCITT88\(a]"
\fIThe Directory \*- Overview of Concepts, Models, and Service\fP.
International Telegraph and Telephone Consultative Committee,
December, oldstyle 1988.
Recommendation X.500.
.ip "\(a[Skill89a\(a]"
StephenE. Kille,
\fIThe Design of QUIPU.\fP
Research NoteRN/89/19, Department of Computer Science, University
College London, March, 1989.
.ip "\(a[Skill89b\(a]"
Stephen E. Kille, Colin J. Robbins, and Alan Turland,
\fIThe ISO Development Environment: User's Manual, Volume 5:
QUIPU.\fP
November 17, 1989.
.ip "\(a[NYSERNet\(a]"
Marshall T. Rose, NYSERNet, Inc.. \fINYSERNet White
Pages Pilot Project: Administrator's Guide\fP. September 1, 1989.
ip "\(a[JH\(a]"
.br
Juha Hein{nen, \fIIntroduction to the OSI Directory\fP.
Software Systems Laboratory, Tampere
University of Technology.
.ip "\(a[Ros89\(a]"
Rose, M.T., \fIUser\(aas Manual\fP (version 5.0). The ISO Development
Environment, March 1989.
.he '''Sis{llysluettelo'
.pn 1
.++ P
.+c
.af % i
.ce
\s15\fBSis{llysluettelo\fP\s0
.sp 2
.xp
.sp 3
.uh
\s13\fBLIITTEET\fP\s0
.sp 2
.ip 1 8
Pilottiprojektissa k{ytett{v{t DSA:iden nimet
.he 'Villiel{inten nimi{''LIITE 1'
.fo ''''
.bp
.TS
center doublebox tab (/) ;
c s s 
l l l .
.sp
\s13Etel{-Amerikan villiel{inten nimi{\s0
.sp
_
.sp
\s10
Agouti/Alpaca/Anaconda/
Giant Anteater/Armadillo/Brazilian Three-banded Armadillo/
Giant Armadillo/Axolotl/Fruit Bat/
Vampire Bat/Spectacled Bear/Boa Constrictor/
Capybara/Andean Cat/Little Spotted Cat/
Cayman/Long-tailed Chinchilla/Short-tailed Chinchilla/
Greater Pichi Ciego/Lesser Pichi Ciego/Condor/
Andean Condor/Argentinian Pampas Deer/Marsh Deer/
Bush Dog/Small-eared Dog/Electric Eel/
Guanaco/North Andean Huemul/South Andean Huemul/
Hornero/Hummingbird/Iguana/
Jaguar/Jaguarundi/Llama/
Macaw/Amazonian Manatee/Caribbean Manatee/
Margay/Buffy-headed Marmoset/Buffy-tufted-ear Marmoset/
Goeldi's Marmoset/Tassel-eared Marmoset/White Marmoset/
Brown Howler Monkey/Black Spider Monkey/Brown-headed Spider Monkey/
Geoffroy's Spider Monkey/Long-haired Spider Monkey/Woolly Spider Monkey/
Woolly Monkey/Yellow-tailed Woolly Monkey/Ocelot/
Giant Brazilian Otter/La Plata Otter/Marine Otter/
Southern River Otter/Pangolin/Chacoan Peccary/
Brown Pelican/Galapagos Penguin/Rockhopper Penguin/
Piranah/Thin-spined Porcupine/Nothern Pudu/
Puma/Rhea/Southern Bearded Saki/
White-nosed Saki/Elephant Seal/Galapagos Fur Seal/
Juan Fernandez Fur Seal/Brazilian three-toed Sloth/Maned Sloth/
Bare-face Tamarin/Cotton-top Tamarin/Emperor Tamarin/
Golden Lion Tamarin/Golden-headed Lion Tamarin/Golden-rumped Lion Tamarin/
White-footed Tamarin/Central American Tapir/Mountain Tapir/
Masked Titi/Giant Tortoise/Toucan/
Black-headed Uakari/Red Uakari/Red and White Uakari/
Vicuna/Maned Wolf/
.sp
.TE
