diff --git a/nl_NL.ISO8859-1/books/handbook/introduction/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/introduction/chapter.sgml index 584cb25688..541c801180 100644 --- a/nl_NL.ISO8859-1/books/handbook/introduction/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/introduction/chapter.sgml @@ -1,1073 +1,1100 @@ Jim Mock Gereorganiseerd en delen herschreven door + Arjan van Leeuwen Vertaald door Introductie - Samenvatting + Overzicht - Welkom bij &os;! Dit hoofdstuk maakt je bekend met de - verschillende aspecten van het &os; Project, zoals zijn - geschiedenis, doelen, ontwikkelmodel en meer. + Welkom bij &os;! Dit hoofdstuk beschrijft de verschillende + aspecten van het &os; Project: geschiedenis, doelen, + ontwikkelmodel en meer. - Na het lezen van dit hoofdstuk weet je de volgende - dingen: + Na het lezen van dit hoofdstuk weet de lezer: Hoe &os; gerelateerd is aan andere - besturingssystemen. + besturingssystemen; - De geschiedenis van het &os; Project. + De geschiedenis van het &os; Project; - De doelen van het &os; Project. + De doelen van het &os; Project; De fundering van het &os; open-source - ontwikkelmodel. + ontwikkelmodel; En natuurlijk: waar de naam &os; vandaan komt. - Welkom bij &os;! + 4.4BSD-Lite &os; is een op 4.4BSD-Lite gebaseerd besturingssysteem voor Intel (x86 en &itanium;), AMD64, Alpha en Sun &ultrasparc; computers. - Ook zijn er verscheidene ports naar andere architecturen in - voorbereiding. Als je wilt, kun je meer informatie vinden - over de geschiedenis van &os;. - Of over de huidige release. - Als je erin geïnteresseerd bent om iets bij te dragen aan - het Project (code, hardware, geld), bekijk dan het - Bijdragen - aan &os; artikel. + Er zijn ook ports naar andere architecturen in voorbereiding. + Er is nog meer informatie over de geschiedenis van &os; of over de huidige release. Als de lezer wil + bijdragen aan het project (code, hardware, geld) wordt aangeraden + het artikel Bijdragen aan + &os; te lezen. Wat kan &os;? &os; heeft veel mogelijkheden die het bespreken waard zijn. - Hier zijn er enkelen op een rij gezet: + Hier zijn er enkele op een rij gezet: preemptive multitasking + Preemptive multitasking zorgt ervoor dat meerdere programma's en gebruikers op dezelfde computer kunnen werken, zonder dat de systeemrespons of - stabiliteit beïnvloed worden. + stabiliteit beïnvloed wordt. Meerdere gebruikers + Ondersteuning voor meerdere gebruikers maakt het mogelijk dat verschillende mensen een &os; systeem tegelijkertijd kunnen gebruiken voor een groot aantal taken. Dit betekent bijvoorbeeld dat randapparaten als printers en tapedrives gedeeld kunnen worden door alle gebruikers van - het systeem, en dat individuele beperkingen ingesteld + het systeem en dat individuele beperkingen ingesteld kunnen worden voor gebruikers of voor groepen gebruikers, zodat kritieke systeembronnen beschermd kunnen worden tegen onrechtmatig of overmatig gebruik. TCP/IP netwerken + Krachtige mogelijkheden voor TCP/IP netwerken met ondersteuning voor industriestandaarden als SLIP, PPP, NFS, DHCP en NIS. Dit - betekent dat je &os;-systeem makkelijk kan samenwerken - met andere systemen, en dat het kan functioneren als + betekent dat een &os;-systeem makkelijk kan samenwerken + met andere systemen en dat het kan functioneren als bedrijfsserver, waarbij het belangrijke functies als NFS (bestandsdeling over het netwerk), email, web services, FTP, routing en firewall-diensten kan aanbieden. Geheugenbeveiliging + Geheugenbeveiliging garandeert dat applicaties (of gebruikers) elkaar niet kunnen storen. Een crashende applicatie heeft totaal geen effect op andere applicaties. &os; is een 32-bits besturingssysteem (64-bits op de Alpha, &itanium;, AMD64, en &ultrasparc;) en is van de grond af aan zo ontworpen. - X Window System + X Window Systeem + XFree86 - Het X Window System + Het X Window Systeem (X11R6), een industriële standaard, biedt een - grafische userinterface (GUI) met als enige + grafische gebruikersinterface (GUI) met als enige benodigdheden een VGA-kaart en een beeldscherm. binaire compatibiliteit + Linux + binaire compatibiliteit + SCO + binaire compatibiliteit + SVR4 + binaire compatibiliteit + BSD/OS + binaire compatibiliteit + NetBSD + - binaire compatibiliteit met veel - programma's gemaakt voor Linux, SCO, SVR4, BSDI en NetBSD - maakt het mogelijk om deze programma's zonder - snelheidsverlies te draaien op &os;. + Door binaire compatibiliteit met + veel programma's voor &linux;, SCO, SVR4, BSDI en NetBSD + is het mogelijk om deze programma's zonder snelheidsverlies + op &os; te draaien. - Duizenden applicaties zijn beschikbaar in de &os; + Er zijn duizenden applicaties beschikbaar in de &os; ports en packages collectie. Waarom zoeken op het internet als het allemaal - al voor je klaarstaat? + al klaarstaat? - Duizenden andere en - makkelijk over te zetten applicaties - zijn beschikbaar op het Internet. &os; is - broncode-compatibel met de meeste populaire - commerciële &unix; systemen, wat betekent dat veel - applicaties nagenoeg geen wijzigingen vereisen om te - compileren op &os;. + Duizenden andere en makkelijk over te + zetten applicaties zijn beschikbaar op het + internet. &os; is broncode-compatibel met de meeste + populaire commerciële &unix; systemen, wat betekent + dat veel applicaties nagenoeg geen wijzigingen vereisen om + te compileren op &os;. Virtueel geheugen + - Het demand-paged virtueel - geheugen en de gecombineerde VM/buffer - cache van &os; zorgen ervoor dat applicaties met - grote geheugenbehoeften niets te kort komen, terwijl de - systeemrespons niet achteruit gaat. + Het demand-paged virtueel geheugen + en de gecombineerde VM/buffer cache van &os; + zorgen ervoor dat applicaties met grote geheugenbehoeften + niets te kort komen, terwijl de systeemrespons niet + achteruit gaat. Symmetric Multi-Processing (SMP) + SMP-ondersteuning voor computers met meerdere processoren. compilers + C compilers + C++ compilers + FORTRAN Een volledige C, C++, Fortran en - Perl ontwikkelomgeving. - Vele andere programmeertalen, te gebruiken voor onderzoek - of geavanceerde ontwikkeling, zijn ook beschikbaar in de - ports en packages collectie. + Perl ontwikkelomgeving. Vele andere + programmeertalen, te gebruiken voor onderzoek of + geavanceerde ontwikkeling, zijn ook beschikbaar in de + ports- en packagescollectie. broncode + De broncode van het hele - systeem is beschikbaar, zodat je de volledige controle - over het systeem in handen hebt. Waarom zou je genoegen - nemen met alleen het erewoord van de softwarefabrikant - als een compleet open systeem ook tot de + systeem is beschikbaar, zodat gebruikers de volledige + controle over het systeem in handen hebben. Waarom + genoegen nemen met alleen het erewoord van de + softwarefabrikant, als een compleet open systeem ook tot de mogelijkheden behoort? Uitgebreide online - documentatie. + documentatie. En nog veel meer! - - 4.4BSD-Lite - + 4.4BSD-Lite + Computer Systems Research Group (CSRG) - - U.C. Berkeley - + + U.C. Berkeley + &os; is gebaseerd op de 4.4BSD-Lite release van de Computer Systems Research Group (CSRG) aan de University - of California in Berkeley, en borduurt voort op een lange + of California in Berkeley en borduurt voort op een lange traditie van ontwikkeling van BSD-systemen. Het &os; Project - heeft duizenden uren gestoken in het fine-tunen van het - systeem voor maximale prestaties en betrouwbaarheid in - realistische en veel voorkomende situaties. Terwijl veel - commerciële bedrijven blijven worstelen met het - uitbrengen van besturingssystemen met dergelijke - mogelijkheden, prestaties en betrouwbaarheid, kan - &os; deze nu bieden! - - De toepassingen voor &os; worden alleen beperkt door uw - eigen fantasie. Van software-ontwikkeling tot + heeft duizenden uren gestoken in het afstellen van het systeem + voor maximale prestaties en betrouwbaarheid in realistische en + veel voorkomende situaties. Terwijl veel commerciële + bedrijven blijven worstelen met het uitbrengen van + besturingssystemen met dergelijke mogelijkheden, prestaties en + betrouwbaarheid, kan &os; deze nu + bieden! + + De toepassingen voor &os; worden alleen beperkt door eigen + fantasie. Van software-ontwikkeling tot fabrieksautomatisering, van voorraadbeheersing tot de - azimuth-correctie van een satellietantenne; als het kan met - een commercieel &unix;-product, dan kan het ook met - &os;! &os; vaart ook wel bij de letterlijk duizenden - open-source programma's, vaak van bijzonder hoge kwaliteit, - die ontwikkeld zijn in onderzoekscentra, universiteiten over - de hele wereld en open-source gemeenschappen, en die - beschikbaar zijn voor weinig of geen geld. Ook steeds meer - commerciële applicaties vinden hun weg naar &os;. - - Omdat ook de broncode van &os; zelf vrij beschikbaar - is, kan het systeem zoveel als je zelf wilt aangepast worden - voor speciale toepassingen of projecten, op manieren die - meestal niet mogelijk zijn met besturingssystemen van - vooraanstaande commerciële softwarehuizen. Hier zijn een - aantal voorbeelden van toepassingen waar &os; voor gebruikt - wordt: + azimuth-correctie van een satellietantenne: als het kan met + een commercieel &unix;product, dan kan het ook met &os;! &os; + vaart ook wel bij de letterlijk duizenden open-source + programma's, vaak van bijzonder hoge kwaliteit, die ontwikkeld + zijn in onderzoekscentra, universiteiten over de hele wereld en + open-source gemeenschappen, en die beschikbaar zijn voor weinig + of geen geld. Ook steeds meer commerciële applicaties + vinden hun weg naar &os;. + + Omdat ook de broncode van &os; zelf vrij beschikbaar is, + kan het systeem aangepast worden voor speciale toepassingen of + projecten, op manieren die meestal niet mogelijk zijn met + besturingssystemen van vooraanstaande commerciële + softwarehuizen. Hier zijn een aantal voorbeelden van + toepassingen waar &os; voor gebruikt wordt: - Internetdiensten: De robuuste - TCP/IP netwerkarchitectuur die ingebouwd zit in - &os; maakt het een ideaal platform voor verscheidene - internetdiensten, zoals: + Internetdiensten: de robuuste + TCP/IP netwerkarchitectuur die in &os; zit, maakt het een + ideaal platform voor uiteenlopende internetdiensten + als: - - FTP servers - + FTP servers + - FTP servers + FTP servers; - - web servers - + web servers + World Wide Web servers (standaard of beveiligd - [SSL]) + [SSL]); - - firewall - - - IP-maskering - + firewall + + IP-maskering + Firewalls en NAT (IP-maskering) - gateways + gateways; - e-mail + elektronische mail + + e-mail + + e-mail + - E-mail servers + E-mail servers; - - USENET - + USENET + USENET nieuws of Bulletin Board (BBS) - systemen + systemen; En meer... - Met &os; kun je gemakkelijk beginnen op een goedkope - standaard-PC, om later verder te gaan op een professioneel - Xeon-systeem met 4 processoren (of meer!) en - RAID opslagsystemen als uw bedrijf groeit. + &os; kan eenvoudig geleerd worden op een goedkope + standaard-PC, om later verder te groeien naar een + professioneel Xeon-systeem met 4 processoren (of meer!) en + RAID opslagsystemen als een bedrijf groeit. - Onderwijs: Ben je - informatica-student, of zit je in een ander vakgebied dat + Onderwijs: is de lezer + informatica-student of werkzaam in een ander vakgebied dat hier mee te maken heeft? Er is geen betere manier om besturingssystemen, computerarchitecturen en netwerken te bestuderen dan de hands-on open-source ervaring die &os; kan bieden. Gratis beschikbare programma's voor CAD, wiskundige toepassingen en grafisch ontwerp maken &os; ook heel handig voor mensen wiens primaire interesse voor de computer ligt bij het voltooien van ander werk! - Onderzoek: Omdat de broncode van + Onderzoek: omdat de broncode van het volledige systeem beschikbaar is, vormt &os; een - uitstekende basis voor het onderzoeken van - besturingssystemen of andere takken in de informatica. - De open natuur van &os; maakt het ook mogelijk voor - groepen mensen over de hele wereld om met elkaar samen - te werken, zonder men zich zorgen hoeft te maken over - speciale licentieovereenkomsten of beperkingen - op wat er besproken kan worden in open fora. + uitstekende basis voor het onderzoeken van besturingssystemen + of andere takken in de informatica. De open natuur van &os; + maakt het ook mogelijk voor groepen mensen over de hele + wereld om met elkaar samen te werken, zonder dat men zich + zorgen hoeft te maken over speciale licentieovereenkomsten of + beperkingen op wat er besproken kan worden in open + fora. - - router - - - DNS Server - + router + + DNS Server + - Networking: Nieuwe router - nodig? Of een name server (DNS)? Een firewall om uw - interne netwerk te beschermen? &os; kan die ongebruikte - 486 of Pentium PC die nog ergens in een hoekje ligt - gemakkelijk omtoveren tot een geavanceerde router met - uitgebreide packet-filtering mogelijkheden. + Netwerken: nieuwe router nodig? + Of een nameserver (DNS)? Een firewall om een intern netwerk + te beschermen? &os; kan die ongebruikte 486 of Pentium PC + die nog ergens in een hoekje ligt gemakkelijk omtoveren tot + een geavanceerde router met uitgebreide pakketfilter + mogelijkheden. - X Window System + X Window Systeem + XFree86 + - X Window System + X Window Systeem + Accelerated-X + - X Window workstation: &os; is een + X Window werkstation: &os; is een prima keuze als goedkope X terminal oplossing, door - gebruik te maken van de gratis beschikbare &xfree86; - server of een van de commerciële servers aangeboden - door Xi Graphics. - In tegenstelling tot een pure X terminal kun je met &os; - ook applicaties lokaal draaien, wat een verlichting van - de centrale server tot gevolg kan hebben. &os; heeft - zelfs de mogelijkheid om schijfloos op te - starten, zodat individuele workstations nog goedkoper en - makkelijker te beheren zijn. + gebruik te maken van de gratis beschikbare X11 server of + een van de commerciële servers aangeboden door Xi Graphics. In + tegenstelling tot een pure X terminal kan &os; ook + applicaties lokaal draaien, wat een verlichting van de + centrale server tot gevolg kan hebben. &os; heeft zelfs de + mogelijkheid om schijfloos op te starten, + zodat individuele workstations nog goedkoper en makkelijker + te beheren zijn. - Desktop: De beschikbaarheid van + Bureaublad: de beschikbaarheid van geavanceerde bureabladomgevingen als KDE en GNOME en kantoortoepassingen als tekstverwerkers en - spreadsheet-programma's in de ports en packages collectie - maken van &os; een uitgebreid desktop-platform. Of je nu - thuis of op het werk de PC nodig hebt, &os; zorgt ervoor - dat je snel, efficiënt en veilig kunt werken! + spreadsheet-programma's in de ports- en packagescollectie + maken van &os; een uitgebreid desktop-platform. Thuis en + op het werk zorgt &os; ervoor dat er snel, efficiënt + en veilig gewerkt kan worden! GNU Compiler Collection + - Software Ontwikkeling: - Bij het standaard &os;-systeem zit al een volledige - verzameling van ontwikkelgereedschappen, inclusief de - bekende GNU C/C++ compiler en debugger. + Software Ontwikkeling: bij het + standaard &os;-systeem zit al een volledige verzameling van + ontwikkelgereedschappen, inclusief de bekende + GNU C/C++ compiler en debugger. &os; is beschikbaar in zowel broncode als binaire vorm op - CDROM, DVD en via FTP. Zie voor meer + CDROM, DVD en via FTP. In staat meer informatie over het verkrijgen van &os;. - Wie gebruikt &os;? + Wie Gebruiken &os;? - Gebruikers - Grote sites die &os; draaien + gebruikers + + grote sites die &os; draaien &os; is de drijvende kracht achter enkele van de grootste sites die het internet kent, zoals: - - Yahoo! - + Yahoo! + - Yahoo! - + Yahoo! - - Apache - + Apache + - Apache - + Apache - - Blue Mountain Arts - + Blue Mountain Arts + Blue - Mountain Arts + Mountain Arts - - Pair Networks - + Pair Networks + Pair - Networks + Networks - - Sony Japan - + Sony Japan + Sony - Japan + Japan - - Netcraft - + Netcraft + - Netcraft - + Netcraft - - Weathernews - + Weathernews + - Weathernews - + Weathernews Supervalu + Supervalu + url="http://www.supervalu.com/">Supervalu - - TELEHOUSE America - + TELEHOUSE America + TELEHOUSE - America + America - - Sophos Anti-Virus - + Sophos Anti-Virus + Sophos - Anti-Virus + Anti-Virus - - JMA Wired - + JMA Wired + JMA Wired + url="http://www.jmawired.com/">JMA Wired - en nog veel meer. + en nog veel meer sites. - Over het &os; Project - Deze paragraaf geeft je wat meer achtergrondinformatie over + Deze paragraaf geeft wat meer achtergrondinformatie over het project, inclusief een korte geschiedenis, projectdoelen, en het ontwikkelmodel van het project. Jordan Hubbard Bijgedragen door Een Korte Geschiedenis van &os; 386BSD Patchkit + Hubbard, Jordan + Williams, Nate + Grimes, Rod + &os; Project + geschiedenis + Het &os; Project zag het licht in het begin van 1993, gedeeltelijk als een voortzetting van de Unofficial 386BSD Patchkit door de 3 laatste coördinatoren van de patchkit: Nate Williams, Rod Grimes en ikzelf. 386BSD - Ons oorspronkelijke doel was om een zogenaamde - 'snapshot'-release te maken van 386BSD, om een aantal - problemen hiermee op te lossen die niet op te lossen waren - met het patchkit-mechanisme dat wij eerder gebruikt hadden. - Sommigen kunnen zich misschien nog herinneren dat de - werktitel van het project in het begin nog - 386BSD 0.5 of 386BSD Interim - was, refererend aan het oorspronkelijke doel. + + Het oorspronkelijke doel was om een zogenaamde + 'snapshot'-release te maken van 386BSD, om zo een aantal + problemen op te lossen die niet op te lossen waren + met het patchkit-mechanisme dat eerder gebruikt was. Sommigen + kunnen zich misschien nog herinneren dat de werktitel van het + project in het begin nog 386BSD 0.5 of + 386BSD Interim was, refererend aan het + oorspronkelijke doel. Jolitz, Bill - 386BSD was het besturingssysteem van Bill Jolitz, en had + + 386BSD was het besturingssysteem van Bill Jolitz en had tot op dat moment geleden onder het feit dat er al bijna een jaar niet naar omgekeken was. Terwijl de patchkit steeds - groter en onhandiger werd, waren wij het er unaniem over eens - dat er iets moest gebeuren, en beslisten om Bill te + groter en onhandiger werd, was een groep mensen het er over + eens dat er iets moest gebeuren en beslisten om Bill te assisteren bij het maken van een tussentijdse cleanup snapshot. Deze plannen kwamen echter tot een plotseling einde toen Bill Jolitz besliste om zijn toestemming voor het project in te trekken, zonder dat er een alternatief werd geboden. Greenman, David + Walnut Creek CDROM - We deden er niet lang over om te beslissen dat het doel - nog steeds belangrijk was, zelfs zonder de ondersteuning van - Bill, dus werd de naam &os; aangenomen, naar - een idee van David Greenman. Onze oorpronkelijke doelen - werden opgesteld na het raadplegen van de gebruikers van het - systeem. Toen het erop begon te lijken dat dit project - misschien wel snel realiteit kon worden, contacteerde ik - Walnut Creek CDROM vanuit het oogpunt om de - distributiekanalen van &os; te verbeteren voor diegenen - die geen toegang hadden tot het Internet. Walnut Creek CDROM - ondersteunde niet alleen het idee om &os; op CD te - distribueren, maar bood het project ook een systeem en een - snelle internetverbinding om mee te werken. Zonder - Walnut Creek CDROM's bijna onbeperkte vertrouwen in wat op - dat moment nog een compleet onbekend project was, is het - onwaarschijnlijk dat &os; zo ver gekomen zou zijn, en zo - snel, als het vandaag de dag is. + + Het duurde niet lang om te beslissen dat het doel nog + steeds belangrijk was, zelfs zonder de ondersteuning van Bill, + dus werd de naam &os; aangenomen, naar een idee + van David Greenman. De oorpronkelijke doelen werden opgesteld + na het raadplegen van de gebruikers van het systeem. Toen het + erop begon te lijken dat dit project misschien wel snel + realiteit kon worden, werd contact opgenomen met Walnut Creek + CDROM vanuit het oogpunt om de distributiekanalen van &os; te + verbeteren voor diegenen die geen toegang hadden tot internet. + Walnut Creek CDROM ondersteunde niet alleen het idee om &os; op + CD te distribueren, maar bood het project ook een systeem en + een snelle internetverbinding om mee te werken. Zonder Walnut + Creek CDROM's bijna onbeperkte vertrouwen in wat op dat moment + nog een compleet onbekend project was, is het onwaarschijnlijk + dat &os; zo ver gekomen zou zijn, en zo snel, als het vandaag + de dag is. 4.3BSD-Lite + Net/2 + U.C. Berkeley + 386BSD - Free Software Foundation - De eerste CDROM (en algemene op het Net beschikbare) + + Free Software + Foundation + + De eerste CDROM (en algemene op het net beschikbare) distributie was &os; 1.0, uitgebracht in december 1993. Deze versie was gebaseerd op de 4.3BSD-Lite (Net/2) tape van U.C. Berkeley, met veel toevoegingen van 386BSD en de Free Software Foundation. Het werd een redelijk succes voor een eerste aanbod, en werd opgevolgd door de zeer succesvolle &os; 1.1 release in mei 1994. Novell + U.C. Berkeley + Net/2 + AT&T + Rond deze tijd vormde zich nogal onverwacht een - stormachtige lucht aan de horizon, toen Novell en - U.C. Berkeley hun langlopende rechtszaak over de legale - status van de Berkeley Net/2 tape oplosten met een schikking. - Een voorwaarde van deze schikking was dat U.C. Berkeley - toegaf dat grote delen van Net/2 beladen code - was en het eigendom van Novell, die deze code op haar beurt - overgenomen had van AT&T enige tijd hiervoor. Wat - Berkeley hiervoor terugkreeg was Novell's - zegen over de 4.4BSD-Lite release; wanneer - deze uitkwam zou Novell verklaren dat geen van de code hierin - eigendom van Novell was, en bestaande Net/2 gebruikers zou - sterk aanbevolen worden om over te stappen naar deze nieuwe - versie. Dit gold ook voor &os;, en het project werd de tijd - gegeven tot juli 1994 om te stoppen met het distribueren van - het eigen Net/2-gebaseerde product. De schikking liet wel toe - dat nog een laatste release werd uitgebracht voor de deadline, - en dat was &os; 1.1.5.1. - - &os; nam toen de enorme taak op zich om zichzelf - letterlijk opnieuw uit te vinden, met als basis een - volledig nieuwe en nogal incomplete verzameling van delen van - 4.4BSD-Lite. De Lite releases werden zo genoemd - omdat Berkeley's CSRG grote delen code die nodig waren om een - werkend systeem te construeren had weggelaten (om allerlei - legale redenen) en omdat de Intel port van 4.4 grotendeels - incompleet was. Het kostte het project tot november 1994 om - deze overstap te maken. Op dat moment werd &os; 2.0 op - het Net en op CDROM (aan het einde van december) uitgebracht. - Ondanks het feit dat deze release nog wat ruige kantjes had, - werd het een groot succes, en werd het gevolgd door de - robuustere en makkelijker te installeren &os; 2.0.5 in - juni 1995. - - We brachten &os; 2.1.5 uit in augustus 1996, en deze - bleek populair genoeg bij internet service providers (ISPs) - en andere commerciële gebruikers van &os; om nog een - release van de 2.1-STABLE tak te rechtvaardigen. Dit was + stormachtige lucht aan de horizon toen Novell en U.C. Berkeley + hun langlopende rechtszaak over de legale status van de + Berkeley Net/2 tape oplosten met een schikking. Een voorwaarde + van deze schikking was dat U.C. Berkeley toegaf dat grote delen + van Net/2 beladen code was en het eigendom van + Novell, die deze code op haar beurt overgenomen had van + AT&T enige tijd hiervoor. Wat Berkeley hiervoor terugkreeg + was Novell's zegen over de 4.4BSD-Lite release; + wanneer deze uitkwam zou Novell verklaren dat geen van de code + hierin eigendom van Novell was, en bestaande Net/2 gebruikers + zou sterk aanbevolen worden om over te stappen naar deze + nieuwe versie. Dit gold ook voor &os; en het project werd de + tijd gegeven tot juli 1994 om te stoppen met het distribueren + van het eigen op Net/2-gebaseerde product. De schikking liet + wel toe dat nog een laatste release werd uitgebracht voor de + deadline en dat was &os; 1.1.5.1. + + &os; nam toen de enorme taak op zich om zichzelf letterlijk + opnieuw uit te vinden, met als basis een volledig nieuwe en + nogal incomplete verzameling van delen van 4.4BSD-Lite. De + Lite releases werden zo genoemd omdat Berkeley's + CSRG grote delen code die nodig waren om een werkend systeem te + construeren had weggelaten (om allerlei legale redenen) en + omdat de Intel port van 4.4 grotendeels incompleet was. Het + kostte het project tot november 1994 om deze overstap te maken. + Op dat moment werd &os; 2.0 op het net en op CDROM (aan + het einde van december) uitgebracht. Ondanks het feit dat deze + release nog wat ruige kantjes had, werd het een groot succes en + werd het gevolgd door de robustere en makkelijker te + installeren &os; 2.0.5 in juni 1995. + + In augustus 1996 is &os; 2.1.5 uitgebracht en deze + bleek populair genoeg bij internet service providers (ISP's) en + andere commerciële gebruikers van &os; om nog een release + van de 2.1-STABLE tak te rechtvaardigen. Dit was &os; 2.1.7.1, uitgebracht in februari 1997. Deze release markeerde het einde van de hoofdstroomontwikkeling op 2.1-STABLE; alleen beveilingsupdates en andere kritieke bug fixes werden nog op deze tak uitgevoerd (RELENG_2_1_0). &os; 2.2 werd afgesplitst van de ontwikkelingstak - (-CURRENT) in november 1996 als RELENG_2_2, en + (-CURRENT) in november 1996 als RELENG_2_2 en de eerste volledige release (2.2.1) werd uitgebracht in april 1997. Andere releases van de 2.2 tak werden uitgebracht in de zomer en herfst van '97. De laatste (2.2.8) verscheen in november 1998. De eerste officiële 3.0 release verscheen - in oktober 1998, en was het begin van het einde voor de + in oktober 1998 en was het begin van het einde voor de 2.2 tak. Er was opnieuw een afsplitsing op 20 januari 1999, wat leidde tot de 4.0-CURRENT en 3.x-STABLE takken. Vanuit 3.X-STABLE werd versie 3.1 uitgebracht op 15 februari 1999, 3.2 op 15 mei 1999, 3.3 op 16 september 1999, 3.4 op 20 december 1999 en 3.5 op 24 juni 2000. De laatste werd enkele dagen later gevolgd door een point release update naar 3.5.1, om enkele net-ontdekte beveiligingsfouten in Kerberos te corrigeren. Dit was de laatste release van de 3.X tak. Een nieuwe tak werd gemaakt op 13 maart 2000, de - 4.X-STABLE tak. Deze is ook op dit moment nog de - huidige -stable tak. Er zijn verschillende - releases van deze branch gemaakt: 4.0-RELEASE werd - geïntroduceerd in maart 2000, en de meest recente - &rel2.current;-RELEASE verscheen in &rel2.current.date;. - Ook in 2004 zullen er nog releases voortkomen uit de RELENG_4 - tak. + 4.X-STABLE tak. Er zijn verschillende releases van deze tak + gemaakt: 4.0-RELEASE werd geïntroduceerd in maart 2000, en + de meest recente &rel2.current;-RELEASE verscheen in + &rel2.current.date;. In de toekomst verschijnen er nog + releases uit de RELENG_4 tak. De langverwachte 5.0-RELEASE werd aangekondigd op 19 - januari 2003. Deze optelling van bijna drie jaar werk, zette + januari 2003. Dit resultaat van bijna drie jaar werk zette &os; stevig neer op de weg naar geavanceerde multiprocessor- en threading-ondersteuning en introduceerde nieuwe &os; ports voor de &ultrasparc; en ia64 architecturen. - Deze release werd gevolgd door 5.1 in juni 2003. In januari - 2004 verscheen de 5.2-RELEASE, nog geen maand later gevolgd - door de point release 5.2.1-RELEASE, die enkele kleine fouten - in de originele release corrigeerde. Behalve een hoop nieuwe - mogelijkheden bevatten de 5.X releases ook grote wijzigingen - in de onderliggende systeemarchitectuur. Deze vooruitgang - zorgt ook voor een systeem dat een enorme hoeveelheid - nieuwe en nog niet breed geteste code bevat. Dit is de reden - dat de 5.X releases door het project worden aangeduid als - New Technology releases, terwijl de 4.X serie - functioneert als Productie-release. Naarmate - de tijd verstrijkt zal 5.X aangeduid worden als -STABLE, en - zal begonnen worden met de ontwikkeling van een nieuwe tak, - 6.0-CURRENT. - - Op dit moment vinden grote en lange-termijn - ontwikkelprojecten plaats in de 5.X-CURRENT tak, en snapshot - releases van 5.X op CDROM (en, natuurlijk, op het Net) worden - continu beschikbaar gemaakt op - - de snapshot server. - + Deze release werd gevolgd door 5.1 in juni 2003. De laatste + 5.X release uit de –CURRENT-tak was 5.2.1–RELEASE + uit februari 2004. + + De RELENG_5 tak is gemaakt in augustus 2004 en werd gevolgd + door 5.3-RELEASE, die het begin van de 5-STABLE tak + markeert. + + Op dit moment vinden lange-termijn ontwikkelprojecten + plaats in de 6.X-CURRENT tak, en snapshot releases van 6.X op + CDROM (en natuurlijk op het Net) worden continu beschikbaar + gemaakt op de + snapshot server. Jordan Hubbard - Bijgedragen door + Bijgedragen door &os; Projectdoelen &os; Project + doelen + Het doel van het &os; Project is om software aan te bieden die gebruikt kan worden voor iedere mogelijke toepassing, - zonder beperkingen. Velen van ons hebben een belangrijke - investering zitten in de code (en het project) en vinden het + zonder beperkingen. Vele ontwikkelaars hebben een belangrijke + investering in de code (en het project) zitten en vinden het niet erg om af en toe een financiële compensatie te - ontvangen, maar we stellen het zeker niet als voorwaarde. Wij - geloven dat onze eerste en belangrijkste missie - het aanbieden van code is, aan iedereen die het wil hebben, - voor wat voor doel dan ook, zodat de code zo breed mogelijk - gebruikt kan worden tot voordeel van zoveel mogelijk mensen. - Dit is, geloof ik, een van de meest fundamentele doelen van - Vrije Software, en een die wij enthousiast ondersteunen. + ontvangen, maar dat is zeker geen voorwaarde. De ontwikkelaars + van &os; geloven dat de eerste en belangrijkste + missie het aanbieden van code is, aan iedereen + die het wil hebben, voor wat voor doel dan ook, zodat de code + zo breed mogelijk gebruikt kan worden tot voordeel van zoveel + mogelijk mensen. Dit is een van de meest fundamentele doelen + van Vrije Software dat &os; enthousiast ondersteunt. GNU General Public License (GPL) + GNU Lesser General Public License (LGPL) + BSD Copyright + Sommige code in &os; valt onder de GNU General Public License (GPL) of Library General Public License (LGPL). Deze code heeft iets meer beperkingen, maar in ieder geval aan de kant waarbij vrije toegang tot de code geforceerd wordt, in plaats van het gebruikelijke tegenovergestelde hiervan. Door de toegevoegde moeilijkheden die kunnen voortkomen uit het - commerciële gebruik van GPL software geven wij echter de - voorkeur aan het meer vrije BSD copyright, wanneer er een - redelijk alternatief voor handen is. + commerciële gebruik van GPL software geeft het &os; + Project echter de voorkeur aan het meer vrije BSD copyright, + wanneer er een redelijk alternatief voor handen is. Satoshi Asami - Bijgedragen door + Bijgedragen door Het &os; Ontwikkelmodel &os; Project + ontwikkelmodel + De ontwikkeling van &os; is een erg open en flexibel - proces, en wordt gevormd door de bijdragen van letterlijk - honderden mensen over de hele wereld, zoals je kunt zien in - onze - lijst van medewerkers. De infrastructuur die wordt - gebruikt voor de ontwikkeling van &os; zorgt ervoor dat deze - honderden ontwikkelaars kunnen samenwerken over het Internet. - We zijn continu op zoek naar nieuwe ontwikkelaars en - ideeën. Als je wat meer betrokken wilt worden bij de - ontwikkeling van &os;, kun je simpelweg contact met ons - opnemen op de &a.hackers;. De &a.announce; is beschikbaar om - mededelingen te doen aan andere &os;-gebruikers over grote - veranderingen. + proces en wordt gevormd door de bijdragen van letterlijk + honderden mensen over de hele wereld, zoals te zien is in de + lijst van + medewerkers. De infrastructuur die wordt gebruikt + voor de ontwikkeling van &os; zorgt ervoor dat deze honderden + ontwikkelaars kunnen samenwerken over het internet. Het &os; + Project is continu op zoek naar nieuwe ontwikkelaars en + ideeën. Om bij te dragen aan de ontwikkeling van &os; + is een mail naar &a.hackers; voldoende. De &a.announce; is + beschikbaar om mededelingen te doen aan andere &os;-gebruikers + over grote veranderingen. Een aantal dingen over &os; en haar ontwikkelingsproces - zijn handig om te weten, of je nu onafhankelijk of in - samenwerking met anderen uit het Project werkt: + zijn handig om te weten, of een bijdrage nu onafhankelijk of in + samenwerking met anderen uit het Project komt: Het CVS-archief - + id="development-cvs-repository"> CVS + archief + Concurrent Versions System + CVS + - Alle broncode voor &os; wordt bijgehouden met - CVS - (Concurrent Versions System), een vrij verkrijgbaar - pakket voor het onderhouden van broncode dat bij &os; - inbegrepen zit. Het primaire - - CVS-archief staat op een systeem in Santa Clara, + Alle broncode voor &os; wordt bijgehouden met CVS (Concurrent + Versions System), een vrij verkrijgbaar pakket voor het + onderhouden van broncode die bij &os; zit. Het primaire + CVS + archief staat op een systeem in Santa Clara, Californië, in de VS, waar het wordt - gesynchroniseerd met verschillende - mirrors over de hele wereld. De - boomstructuur van CVS, waarin de broncode voor - -CURRENT en - -STABLE is te vinden, - kan ook makkelijk met die op uw eigen systeem - gesynchroniseerd worden. Zie de sectie - Synchroniseren van - broncode voor meer informatie over dit - onderwerp. + gesynchroniseerd met verschillende mirrors + over de hele wereld. De boomstructuur van CVS, waarin de + broncode voor -CURRENT en + -STABLE is te vinden, kan + ook makkelijk met die op een eigen systeem + gesynchroniseerd worden. Synchroniseren van broncode + bevat meer informatie over dit onderwerp. Committers committers + De zogenaamde committers zijn - alle mensen die schrijf-permissies - hebben in het CVS-archief van &os;. Deze mensen mogen - veranderingen doen aan de &os; broncode (de term - committer is afkomstig uit het - &man.cvs.1; commit commando, wat - gebruikt wordt om veranderingen door te voeren in het - CVS-archief). De beste manier om eigen bijdragen te - laten keuren door een van de committers is door gebruik - te maken van &man.send-pr.1;. Als het erop lijkt dat - een bijdrage ergens in het systeem blijft hangen, dan is - het ook mogelijk om mail te sturen naar de - &a.committers;. + alle mensen die schrijf-rechten + hebben in het CVS archief van &os;. Deze mensen mogen + veranderingen maken aan de &os; broncode (de term + committer is afkomstig uit het &man.cvs.1; + commit commando, wat gebruikt wordt om + veranderingen door te voeren in het CVS-archief). De + beste manier om eigen bijdragen te laten keuren door een + van de committers is door gebruik te maken van + &man.send-pr.1;. Als het erop lijkt dat een bijdrage + ergens in het systeem blijft hangen, dan is het ook + mogelijk om mail te sturen naar de &a.committers;. - Het &os; core team + Het &os; Core Team core team + - Het &os; core team - zou het equivalent zijn van een raad van bestuur als - &os; een bedrijf zou zijn. De primaire taak van het - core team is ervoor zorg te dragen dat het project, - in zijn geheel, in goede vorm verkeerd en de goede - richting opgaat. Toegewijde en verantwoordelijke - ontwikkelaars uitnodigen om deel te worden van de - committers is een van de taken van het core team, net - als het recruteren van nieuwe leden van het core team. - Het huidige core team is gekozen door de committers uit - een groep van kandidaten (ook allen committers) in juli - 2004. Elke twee jaar worden verkiezingen gehouden. + Het &os; core team zou het + equivalent zijn van een raad van bestuur als &os; een + bedrijf zou zijn. De primaire taak van het core team is + ervoor zorg te dragen dat het project, in zijn geheel, in + goede vorm verkeert en de goede richting opgaat. + Toegewijde en verantwoordelijke ontwikkelaars uitnodigen + om deel te worden van de committers is één + van de taken van het core team, net als het recruteren + van nieuwe leden van het core team. Het huidige core + team is gekozen door de committers uit een groep van + kandidaten (ook allen committers) in juli 2004. Elke + twee jaar worden verkiezingen gehouden. Sommige leden van het core team hebben een bijzondere verantwoordelijkheid, wat wil zeggen dat zij er speciaal op toezien dat een bepaald deel van het - systeem werkt zoals het hoort. Zie de lijst van - medewerkers voor een complete lijst van + systeem werkt zoals het hoort. In de lijst + van medewerkers staat een complete lijst van ontwikkelaars en hun verantwoordelijkheden. De meeste leden van het core team zijn vrijwilligers. Toewijding betekent dus niet gegarandeerde ondersteuning. De raad van bestuur-analogie hierboven - klopt niet helemaal, en het is misschien beter om te + klopt niet helemaal en het is misschien beter om te zeggen dat dit de mensen zijn die hun leven opgaven voor &os;, tegen beter weten in! - Externe bijdragen + Externe Bijdragen externe bijdragen + De grootste groep ontwikkelaars zijn de gebruikers - zelf, die ons continu voorzien van constructief + zelf, die &os; continu voorzien van constructief commentaar en oplossingen voor fouten. De handigste - manier om contact te houden met het - niet-gecentraliseerde deel van de ontwikkeling van &os; - is een abonnement nemen op de &a.hackers;, waar allerlei - bijdragen, patches en nieuwe ideeën worden - bediscussieerd. Zie voor - meer informatie over de verschillende &os; - mailing-lijsten. + manier om contact te houden met het niet-gecentraliseerde + deel van de ontwikkeling van &os; is een abonnement nemen + op de &a.hackers;, waar allerlei bijdragen, patches en + nieuwe ideeën worden bediscussieerd. In is meer informatie te vinden over + de verschillende &os; mailinglijsten. De lijst - van medewerkers is lang, en groeit - iedere dag, dus wat let je om zelf een bijdrage te doen - aan &os;? - - Programmeren is niet de enige manier om een - bijdrage te leveren aan het project; voor een meer - volledige lijst van dingen die gedaan moeten worden, - zie de - &os; web site. + url="&url.articles.contributors;/article.html">De lijst + van medewerkers is lang en groeit + iedere dag, dus wat let de lezer om zelf een bijdrage te + doen aan &os;? + + Programmeren is niet de enige manier om een bijdrage + te leveren aan het project. Een meer volledige lijst van + dingen die gedaan moeten worden staat op de &os; web + site. - Samengevat is ons ontwikkelmodel georganiseerd als een + Samengevat is het &os; ontwikkelmodel georganiseerd als een niet-samenhangende verzameling van concentrische cirkels. Het gecentraliseerde model is ontworpen voor het gemak van de gebruikers van &os;, die op deze manier - makkelijk de wijzigingen in het project kunnen volgen - —niet om potentiële medewerkers buiten de deur te - houden! Het is onze wens om een stabiel besturingssysteem te - maken, met een grote verzameling samenhangende - applicaties; dit model heeft zijn + makkelijk de wijzigingen in het project kunnen volgen. Niet om + potentiële medewerkers buiten de deur te houden! Het is + wenselijk om een stabiel besturingssysteem te maken, met een + grote verzameling samenhangende applicaties. Dit model heeft zijn waarde op dat gebied bewezen. - Als je samen met ons &os; verder wilt ontwikkelen, is het - enige wat wij van je vragen om dat te doen met dezelfde - toewijding als de huidige ontwikkelaars —succes + Om bij te dragen en samen &os; verder te ontwikkelen, is + het enige wat het &os; Project vraagt dat te doen met dezelfde + toewijding als de huidige ontwikkelaars: succes gegarandeerd! De Huidige &os; Release + NetBSD + OpenBSD + 386BSD + Free Software Foundation + U.C. Berkeley + Computer Systems Research Group (CSRG) + &os; is een open source, op 4.4BSD-Lite gebaseerd besturingssysteem voor Intel (x86 en &itanium;), AMD64, Alpha en Sun &ultrasparc; computers. - Het is grotendeels gebaseerd op software van de - Computer Systems Research Group (CSRG) van de University of - California in Berkeley (U.C. Berkeley), met verbeteringen - overgenomen van NetBSD, OpenBSD, 386BSD en de Free Software - Foundation. + Het is grotendeels gebaseerd op software van de Computer + Systems Research Group (CSRG) van de University of California + in Berkeley (U.C. Berkeley), met verbeteringen overgenomen van + NetBSD, OpenBSD, 386BSD en de Free Software Foundation. Sinds het uitbrengen van &os; 2.0 tegen het einde van 1994, zijn de prestaties, mogelijkheden en stabiliteit van &os; dramatisch verbeterd. &os; heeft namelijk de beschikking over een compleet nieuw subsysteem voor virtueel geheugen, dat niet alleen de prestaties ten goede komt, maar er ook voor zorgt dat het systeem minder geheugen gebruikt dan ooit tevoren. Andere belangrijke verbeteringen zijn de ondersteuning van veel nieuwe hardware, een compleet nieuw systeem voor de ondersteuning van machines met meerdere processoren (SMP) en een nieuwe bibliotheek voor de ondersteuning van multithreading in applicaties. Behalve de basisdistributie van het besturingssysteem, biedt &os; ook een enorme softwarecollectie met duizenden - veel-gebruikte programma's, de zogenaamde ports. Op het + veelgebruikte programma's, de zogenaamde ports. Op het moment van schrijven zijn er al meer dan &os.numports; ports! In de ports zitten alle mogelijke klassen van software die te bedenken zijn, van http-servers tot spellen, van kantoorapplicaties tot multimedia en alles wat er tussenin - zit. De complete ports-collectie beslaat zo'n &ports.size; aan - schijfruimte. Meer informatie over de ports en over de packages - kunt u vinden in . + zit. De complete portscollectie beslaat zo'n &ports.size; aan + schijfruimte. Meer informatie over de ports en over de + packages is te vinden in . - Een aantal andere documenten die je behulpzaam kunnen - zijn bij het installeren en gebruiken van &os; vindt je in de - /usr/share/doc directory op ieder recente + Een aantal andere documenten die kunnen helpen bij het + installeren en gebruiken van &os; staan in de map + /usr/share/doc op ieder recente &os;-installatie. De lokaal geïnstalleerde documentatie - kun je in een browser bekijken door de volgende URLs te + kan in een browser bekeken worden door de volgende URLs te gebruiken: Het &os; handboek - - /usr/share/doc/handbook/index.html - + /usr/share/doc/handbook/index.html De &os; FAQ - - - /usr/share/doc/faq/index.html - + /usr/share/doc/faq/index.html De nieuwste versies van deze documenten zijn altijd te - vinden op - http://www.FreeBSD.org/. - + vinden op . - diff --git a/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.sgml index eaa260649c..d53d6e881f 100644 --- a/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/kernelconfig/chapter.sgml @@ -1,1917 +1,1919 @@ Jim Mock Bijgewerkt en opnieuw gestructureerd door Jake Hamby Oorspronkelijk bijgedragen door René Ladan Vertaald door Het Instellen van de &os;-kernel Samenvatting kernel een eigen kernel bouwen De kernel is de kern van het &os;-besturingssysteem en is verantwoordelijk voor het geheugenbeheer, het opleggen van beveiligingsregels, het aansturen van het netwerk, de toegang tot schijven en nog veel meer. Hoewel steeds meer in &os; dynamisch instelbaar wordt, is het af en toe nodig om de kernel opnieuw in te stellen en te compileren. Na het lezen van dit hoofdstuk weet de lezer: Waarom het nodig is om een eigen kernel te bouwen; Hoe een nieuw kernelinstellingenbestand te schrijven of een bestaand kernelinstellingenbestand aan te passen; Hoe het kernelinstellingenbestand te gebruiken om een nieuwe kernel aan te maken en te bouwen; Hoe een nieuwe kernel te installeren; Hoe de ingangen in /dev die nodig kunnen zijn aan te maken; Hoe problemen op te lossen als er iets verkeerd gaat. Alle opdrachten die in dit hoofdstuk als voorbeeld zijn gegeven moeten als root uitgevoerd worden om te slagen. Redenen om een Eigen Kernel te Bouwen Traditioneel heeft &os; zoals dat heet een monolitische kernel gehad. Dit betekent dat de kernel één groot programma was, een vaste lijst van apparaten ondersteunde en als het gewenst was om het gedrag van de kernel te veranderen, moest er een nieuwe kernel gecompileerd worden en moest daarna de computer opnieuw gestart worden met de nieuwe kernel. Vandaag de dag beweegt &os; zich snel naar een model waar veel van de functionaliteit van de kernel in modules zit die dynamisch in en uit de kernel kunnen worden geladen, naargelang dat noodzakelijk is. Dit stelt de kernel in staat om zich aan nieuwe hardware aan te passen die plotseling beschikbaar komt (zoals PCMCIA-kaarten in een laptop) of om nieuwe functionaliteit in zich op te nemen die niet noodzakelijk was toen de kernel oorspronkelijk werd gecompileerd. Dit staat bekend als een modulaire kernel. Desondanks is het nog steeds nodig om enkele dingen van de kernel statisch in te stellen. In sommige gevallen komt dit doordat de functionaliteit zo diep geworteld zit in de kernel dat het niet dynamisch laadbaar gemaakt kan worden. In andere gevallen kan het simpelweg komen doordat nog niemand de tijd heeft genomen om een dynamisch laadbare kernelmodule voor die functionaliteit te schrijven. Het bouwen van een eigen kernel is een van de meest belangrijke beproevingen die bijna elke BSD-gebruiker moet doorstaan. Hoewel dit proces veel tijd in beslag neemt, levert het veel voordelen op voor een &os; systeem. In tegenstelling tot de GENERIC-kernel, die vele typen hardware moet ondersteunen, ondersteunt een eigen kernel alleen de hardware van de computer waar hij voor gemaakt is. Dit biedt een aantal voordelen, zoals: Een snellere opstarttijd. Aangezien de kernel alleen de hardware zoekt die zich in het systeem bevindt, kan de tijd die het systeem nodig heeft om op te starten aanzienlijk korter worden; Minder geheugengebruik. Een eigen kernel gebruikt vaak minder geheugen dan de GENERIC-kernel, wat van belang is aangezien de kernel zich altijd in het echte geheugen moet bevinden. Om deze reden is een eigen kernel geknipt voor een systeem met een kleine hoeveelheid RAM; Aanvullende hardware-ondersteuning. Een eigen kernel kan ingebouwde ondersteuning bieden voor apparaten die zich niet in de GENERIC-kernel bevinden, zoals geluidskaarten. Bouwen en Installeren van een Eigen Kernel kernel bouwen / installeren Eerst wordt er een overzicht gegeven van de mappen waarin de kernel gebouwd wordt. Alle genoemde mappen staan onder de map /usr/src/sys, die ook toegankelijk is via de padnaam /sys. Er zijn hier een aantal mappen aanwezig die de verschillende delen van de kernel representeren, maar de meest belangrijke hiervan zijn arch/conf, waarin de eigen kernelinstellingen bewerkt worden en compile, waarin de eigen kernel gebouwd wordt. arch representeert hier één van i386, alpha, amd64, ia64, powerpc, sparc64 of pc98 (een alternatieve ontwikkelingstak van PC-hardware die populair is in Japan). Alles binnen de map van een bepaalde architectuur is er alleen voor die architectuur. De rest van de code is machine-onafhankelijk en hetzelfde op alle platformen waarnaar &os; eventueel geport kan worden. De indeling van de mapstructuur is logisch: alle ondersteunde apparaten, bestandssystemen en opties staan in een eigen submap. Versies van &os; beneden 5.X ondersteunen alleen de i386-, alpha- en pc98-architecturen. Dit hoofdstuk veronderstelt dat de i386-architectuur in de voorbeelden gebruikt wordt. Als dit voor de lezer anders is, moeten de juiste aanpassingen aan de padnamen worden gemaakt voor de architectuur van zijn systeem. Als de map /usr/src/sys niet aanwezig is op een systeem, dan is de kernelbroncode niet geïnstalleerd. De eenvoudigste manier om dit te doen is door sysinstall ( /stand/sysinstall voor versies van &os; ouder dan 5.2) te draaien als root en Configure, Distributions, src, sys te kiezen. Als sysinstall ongewenst is en er toegang is tot een officiële &os;-CDROM, is de broncode ook vanaf de opdrachtregel te installeren: &prompt.root; mount /cdrom &prompt.root; mkdir -p /usr/src/sys &prompt.root; ln -s /usr/src/sys /sys &prompt.root; cat /cdrom/src/sys.[a-d]* | tar -xzvf - Daarna kan vanuit de map arch/conf het instellingenbestand GENERIC naar de naam voor de eigen kernel gekopieerd worden: &prompt.root; cd /usr/src/sys/i386/conf &prompt.root; cp GENERIC MIJNKERNEL Traditioneel bestaat deze naam geheel uit hoofdletters en als er meerdere &os;-machines worden beheerd met verschillende hardware is het een goed idee om het te vernoemen naar de hostnaam van de machine. Omwille van dit voorbeeld wordt het MIJNKERNEL genoemd. Het kernelinstellingenbestand direct onder /usr/src opslaan kan een slecht idee zijn. In geval van problemen kan het verleidelijk zijn om /usr/src te verwijderen en opnieuw te beginnen. Nadat dit gedaan is kost het vaak maar enkele seconden om te realiseren dat het instellingenbestand voor de eigen kernel verwijderd is. Ook moet GENERIC niet gewijzigd worden, omdat het tijdens de volgende keer dat de broncodestructuur bijgewerkt wordt, overschreven kan worden waarbij de wijzigingen in de kernelinstellingen verloren gaan. Het kan gewenst zijn om het kernelinstellingenbestand ergens anders op te slaan en een symbolische link naar het bestand in de map i386 aan te maken: &prompt.root; cd /usr/src/sys/i386/conf &prompt.root; mkdir /root/kernels &prompt.root; cp GENERIC /root/kernels/MIJNKERNEL &prompt.root; ln -s /root/kernels/MIJNKERNEL Nu moet MIJNKERNEL met de favoriete tekstverwerker bewerkt worden. Voor beginners is waarschijnlijk alleen de tekstverwerker vi beschikbaar, die te ingewikkeld is om hier te beschrijven, maar goed is beschreven in vele boeken in de bibliografie. &os; biedt ook de eenvoudigere tekstverwerker ee, die voor een beginner de keuze bij uitstek is. De commentaarregels in het begin kunnen gewijzigd worden om de persoonlijke instellingen of de veranderingen die gemaakt zijn ten opzichte van GENERIC weer te geven. &sunos; Voor degenen die een kernel op &sunos; of een andere BSD hebben gebouwd zal veel van dit bestand bekend voorkomen. Echter, voor degenen die van een ander besturingssysteem zoals DOS komen, kan het instellingenbestand GENERIC overdonderend overkomen, dus moeten de beschrijvingen in de sectie Het Instellingenbestand zorgvuldig opgevolgd worden. Als de broncodestructuur gesynchroniseerd is met de nieuwste broncode van het &os;-project, moet altijd /usr/src/UPDATING gelezen worden voordat enige updatestappen worden genomen. Dit bestand beschrijft alle belangrijke zaken en gebieden binnen de broncodestructuur die speciale aandacht nodig hebben. /usr/src/UPDATING komt altijd overeen met de lokale versie van de &os;-broncode en is daarom meer bijgewerkt met nieuwe informatie dan dit handboek. Nu moet de broncode voor de kernel gecompileerd worden. Hiervoor zijn twee procedures beschikbaar en degene die gebruikt wordt hangt af van de reden waarom de kernel opnieuw gebouwd wordt en de gebruikte versie van &os;. Als alleen de kernelbroncode is geïnstalleerd, moet procedure 1 gevolgd worden. Als een versie van &os; lager dan 4.0 wordt gedraaid, en er niet wordt geupdate naar &os; 4.0 of hoger door middel van de make buildworld–procedure, moet procedure 1 gebruikt worden. Als er een nieuwe kernel gebouwd wordt zonder dat de broncode geupdate wordt (misschien om een nieuwe optie, zoals IPFIREWALL, toe te voegen), kunnen beide procedures gebruikt worden. Als de kernel opnieuw wordt gebouwd als onderdeel van een make buildworld-proces, moet procedure 2 gebruikt worden. cvsup anonieme CVS CTM CVS anoniem Als de broncodestructuur niet op enige wijze bijgewerkt is sinds de laatste keer dat er met succes een buildworld-installworld cyclus werd uitgevoerd, CVSup noch CTM werden gedraaid en anoncvs werd niet gebruikt, dan is het veilig om config, make depend, make, make install te gebruiken. Procedure 1. Een Kernel op <quote>Traditionele Wijze</quote> Bouwen Draai &man.config.8; om de kernelbroncode aan te maken: &prompt.root; /usr/sbin/config MIJNKERNEL Ga naar de bouwmap. &man.config.8; geeft de naam van deze map nadat het gedraaid is zoals boven is aangegeven: &prompt.root; cd ../compile/MIJNKERNEL Voor &os; versies lager dan 5.0 moet het volgende gebruikt worden: &prompt.root; cd ../../compile/MIJNKERNEL Compileer de kernel: &prompt.root; make depend &prompt.root; make Installeer de nieuwe kernel: &prompt.root; make install Procedure 2. Een Kernel op de <quote>Nieuwe Wijze</quote> bouwen Ga naar de map /usr/src: &prompt.root; cd /usr/src Compileer de kernel: &prompt.root; make buildkernel KERNCONF=MIJNKERNEL Installeer de nieuwe kernel: &prompt.user; make installkernel KERNCONF=MIJNKERNEL In &os; 4.2 en eerder moet KERNCONF= door KERNEL= vervangen worden. Een 4.2-STABLE die voor 2 februari 2001 is opgehaald herkent KERNCONF= niet. /boot/kernel.old De nieuwe kernel wordt naar de map /boot/kernel gekopieerd als /boot/kernel/kernel en de oude kernel wordt verplaatst naar /boot/kernel.old/kernel. Nu moet het systeem afgesloten worden en opnieuw worden opgestart om gebruik te maken van de nieuwe kernel. Er zijn wat instructies voor problemen oplossen aan het einde van dit hoofdstuk, die erg nuttig kunnen zijn als er iets misgaat. Vergeet niet om het gedeelte te lezen waarin staat uitgelegd hoe te herstellen als de nieuwe kernel niet opstart. In &os; 4.X en eerder worden kernels in /kernel en modules in /modules geïnstalleerd en worden oude kernels gebackupt in /kernel.old. Andere bestanden die te maken hebben met het opstartproces, zoals de boot &man.loader.8; en instellingen worden opgeslagen in /boot. Modules van derde partijen of eigen modules kunnen in /modules opgeslagen worden, alhoewel gebruikers erop bedacht moeten zijn dat het erg belangrijk is dat de modules synchroon worden gehouden met de gecompileerde kernel. Modules die niet bedoeld zijn om met de gecompileerde kernel te draaien kunnen voor instabiliteit of onjuistheden zorgen. Als er nieuwe apparaten (zoals geluidskaarten) zijn toegevoegd en &os; 4.X of eerder wordt gedraaid, kan het zijn dat er enkele apparaatnodes aan de map /dev moeten worden toegevoegd, voordat ze gebruikt kunnen worden. Er staat meer informatie in het Apparaatnodes maken later in dit hoofdstuk. Joel Dahl Bijgewerkt voor &os; 5.X door Het Instellingenbestand kernel NOTES kernel LINT NOTES LINT kernel instellingenbestand Het algemene formaat van een instellingenbestand is vrij eenvoudig. Elke regel bevat een sleutelwoord en één of meer argumenten. Omwille van de eenvoud bevatten de meeste regels maar één argument. Alles wat na een # komt, wordt als commentaar beschouwd en genegeerd. De volgende gedeelten beschrijven elk sleutelwoord, in het algemeen in dezelfde volgorde als GENERIC, alhoewel sommige samenhangende sleutelwoorden gegroepeerd zijn in een enkel gedeelte (zoals Netwerken) zelfs al staan ze verspreid in het bestand GENERIC. Een uitputtende lijst van architectuurafhankelijke opties en apparaten staat in het bestand NOTES, dat in dezelfde map staat als GENERIC. Architectuuronafhankelijke opties staan in /usr/src/sys/conf/NOTES. NOTES bestaat niet in &os; 4.X. In plaats daarvan bevat het bestand LINT een uitgebreide uitleg over opties en apparaten in GENERIC. LINT had twee doelen in 4.X: een naslagwerk leveren om kernelopties te kiezen voor het bouwen van een eigen kernel en een kernelinstelling leveren met zoveel mogelijk instelbare opties ingesteld op niet-standaardwaarden. De redenering hierachter was dat zo'n instelling veel hielp (en nog steeds helpt) met het testen van nieuwe code en veranderingen aan bestaande code die conflicten met andere delen van de kernel kunnen veroorzaken. Er zijn in 5.X echter een hoop veranderingen gemaakt aan het raamwerk van kernelinstellingen. Een voorbeeld hiervan is dat de instelopties van de stuurprogramma's zijn verplaatst naar een bestand hints zodat ze tijdens het opstarten dynamisch veranderd en geladen kunnen worden, en LINT kon deze aanwijzingen niet meer bevatten. Om deze en andere redenen is LINT hernoemd tot NOTES en heeft het hoofdzakelijk z'n eerste bestaansreden gehouden: de beschikbare opties documenteren voor gebruikersgemak. In &os; 5.X en latere versies is het nog steeds mogelijk om een bouwbaar bestand LINT aan te maken door middel van: &prompt.root; cd /usr/src/sys/i386/conf && make LINT kernel - instellingenbestandvoorbeeld + instellingenbestand Het volgende is een voorbeeld van het kernelinstellingenbestand GENERIC met aanvullend commentaar omwille van de helderheid. Dit voorbeeld is redelijk gelijk aan de versie in /usr/src/sys/i386/conf/GENERIC. # # GENERIC -- Standaard kernelinstellingenbestand voor &os;/i386 # # Meer informatie over dit bestand staat in het onderdeel Het Instellen # van de FreeBSD-kernel in het handboek: # # http://www.FreeBSD.org/doc/nl_NL.ISO8859-1/books/handbook/kernelconfig-config.html # # Het handboek is ook lokaal beschikbaar in /usr/share/doc/handbook # als de doc distributie is geïnstalleerd. Op de &os; World Wide Web # server (http://www.FreeBSD.org/) staat altijd de meest recente # informatie. # # Een uitputtende lijst met opties en meer gedetailleerde beschrijving # van de apparaatregels staat ook in de bestanden ../../conf/NOTES en # NOTES. # Bij twijfel over het doel en de noodzaak van een regel dient eerst in # NOTES gekeken te worden. # # $FreeBSD: /repoman/r/ncvs/src/sys/i386/conf/GENERIC,v 1.413 2004/08/11 01:34:18 rwatson Exp $ De volgende sleutelwoorden zijn noodzakelijk in elke kernel die gebouwd wordt: kernelopties machine machine i386 Dit is de architectuur van de machine. Het moet één van alpha, amd64, i386, ia64, pc98, powerpc of sparc64 zijn. kernelopties cpu cpu I486_CPU cpu I586_CPU cpu I686_CPU Bovenstaande optie geeft het type CPU aan dat in een systeem zit. De CPU-regel kan meerdere keren voorkomen (als bijvoorbeeld onbekend is of I586_CPU of I686_CPU gebruikt moet worden), maar voor een eigen kernel is het beter om alleen de aanwezige CPU aan te geven. Als er twijfel bestaat over het type CPU, kan het bestand /var/run/dmesg.boot worden bekeken voor de opstartberichten. kernelopties cputype De broncode van &os; bevat nog steeds ondersteuning voor I386_CPU, maar staat standaard uit in zowel -STABLE als -CURRENT. Dit betekent dat er nu de volgende mogelijkheden zijn om &os; op een CPU van de 386-klasse te installeren: Installeer een oudere versie van &os; en herbouw vanuit de broncode zoals beschreven staat in . Bouw userland en de kernel op een nieuwere machine en verricht de installatie op de 386 door gebruik te maken van de voorgecompileerde bestanden in /usr/obj (in staan details). Maak een eigen versie van &os; die ondersteuning voor I386_CPU bevat in de kernels van de installatie-CDROM. De eerste van deze opties is waarschijnlijk de gemakkelijkste, maar deze heeft veel schijfruimte nodig wat een probleem kan zijn voor 386-klasse machines. kernelopties ident ident GENERIC Dit is de identificatie van de kernel. Dit moet veranderd worden in de naam van de kernel, dus MIJNKERNEL als de instructies van de voorgaande voorbeelden gevolgd zijn. De waarde in de string ident wordt afgebeeld wanneer de kernel opstart, dus is het handig om de nieuwe kernel een andere naam te geven als deze apart moet worden gehouden van de gebruikelijke kernel (als er bijvoorbeeld een experimentele kernel gebouwd wordt). kernelopties maxusers maxusers n De optie maxusers stelt de grootte van een aantal belangrijke systeemtabellen in. Dit aantal moet ruwweg gelijk zijn aan het aantal gebruikers dat verwacht wordt gelijktijdig van de machine gebruik te maken. Met ingang van &os; 4.5 stelt het systeem deze waarde zelf in als deze uitdrukkelijk op 0 is gezet. Het auto-tuning-algoritme stelt maxusers in afhankelijk van de hoeveelheid geheugen in het systeem, met een minimum van 32 en een maximum van 384. In &os; 5.X en hoger heeft maxusers een standaardwaarde van 0 als deze niet gespecificeerd is. Als er een versie van &os; lager dan 4.5 wordt gebruikt of het gewenst is om de waarde zelf te beheren, wordt aangeraden om maxusers minstens op 4 te zetten, met name als het X Window Systeem in gebruik is of als er software gecompileerd wordt. De reden hiervoor is dat de belangrijkste tabel die door maxusers ingesteld wordt, het maximum aantal processen is, dat ingesteld wordt op 20 + 16 * maxusers, dus als maxusers op 1 ingesteld wordt, zijn er maar 36 gelijktijdige processen mogelijk, inclusief de ongeveer achttien processen die door het systeem tijdens het opstarten start en de ongeveer vijftien processen die waarschijnlijk aangemaakt worden door het opstarten van het X Window Systeem. Zelfs een eenvoudige taak als het afbeelden van een hulppagina start negen processen op om de pagina te filteren, te decomprimeren en af te beelden. Als maxusers op 64 ingesteld wordt, zijn er 1044 gelijktijdige processen mogelijk, wat genoeg moet zijn voor bijna alle soorten gebruik. Als echter de gevreesde fout proc table full verschijnt als er geprobeerd wordt om een programma op te starten of als er een server gedraaid wordt met een groot aantal gelijktijdige gebruikers, zoals ftp.FreeBSD.org, kan het getal altijd verhoogd worden en kan de kernel opnieuw gebouwd worden. maxusers stelt geen grens aan het aantal gebruikers dat op de machine kan aanmelden. Het stelt gewoon verschillende tabelgroottes in op redelijke waardes, uitgaande van het maximum aantal gebruikers dat waarschijnlijk de machine gebruikt en van het aantal processen dat elk van deze gebruikers zal draaien. Een sleutelwoord dat wel het aantal gelijktijdige aanmeldingen op afstand en X-terminalvensters begrenst is pseudo-device pty 16. In &os; 5.X kan dit getal genegeerd worden omdat daar het stuurprogramma &man.pty.4; auto-cloning is. Er kan eenvoudig gebruik worden gemaakt van de regel device pty in het instellingenbestand. # Floating point ondersteuning - niet uitschakelen. device npx npx is de interface naar de wiskundige floating point-eenheid in &os;, die ofwel de hardware coprocessor is ofwel de softwarematige wiskundige emulator. Dit is niet optioneel. # Pseudo devices device loop # Netwerk loopback Dit is het generieke loopbackapparaat voor TCP/IP. Als telnet of FTP op localhost (ook bekend als 127.0.0.1) gebruikt wordt, loopt dat via dit apparaat. Dit is verplicht. Op &os; 4.X moet de volgende regel gebruikt worden: # Gebruiken in &os; 4.X pseudo-device loop Alles wat nu volgt is min of meer optioneel. Meer informatie over elke optie staat in de notities eronder of ernaast. #Om statisch te compileren in device wiring in plaats van /boot/device.hints. #hints "GENERIC.hints" # Standaardlocatie voor devices. In &os; 5.X en nieuwer wordt &man.device.hints.5; gebruikt om opties van de programma's die de apparaten aansturen in te stellen. De standaardplaats die &man.loader.8; controleert tijdens het opstarten is /boot/device.hints. Met de optie hints is het mogelijk om deze aanwijzingen statisch in de kernel te compileren, waardoor er geen noodzaak is om een bestand device.hints in /boot aan te maken. #makeoptions DEBUG=-g # Bouw kernel met gdb(1) debug symbolen. Om ruimte te sparen in de installatieplaats voegt het normale bouwproces van &os; geen debug-informatie toe tijdens het bouwen van de kernel en stript de meeste symbolen nadat de resulterende kernel is gelinkt. Voor het testen van kernels van de tak -CURRENT of van zelfgemaakte veranderingen in de &os;-kernel kan het gewenst zijn om deze regel uit te commentariëren. Dit zet het gebruik van de optie aan die debug-informatie aanzet als de broncode wordt doorgegeven aan &man.gcc.1;. Hetzelfde kan bereikt worden met de optie van &man.config.8; als de traditionele manier wordt gebruikt om een kernel te bouwen. Meer informatie staat in . options SCHED_4BSD # 4BSD taakplanner De traditionele taakplanner voor &os;. Afhankelijk van de systeembelasting kan de prestatie worden verhoogd door de nieuwe scheduler ULE voor &os; te gebruiken, die speciaal voor SMP ontworpen is, maar ook goed werkt op UP-systemen. Vervang desgewenst, om deze uit te proberen, SCHED_4BSD door SCHED_ULE in het instellingenbestand. options INET # internetwerken Netwerkondersteuning. Laat dit aanstaan, zelfs als een verbinding met een netwerk niet gepland is. De meeste programma's hebben tenminste een loopbacknetwerk nodig (dat wil zeggen het maken van netwerkverbindingen binnen de PC), dus dit is eigenlijk verplicht. options INET6 # IPv6 communicatieprotocollen Dit zet de IPv6-communicatieprotocollen aan. options FFS # Berkeley Fast Bestandssysteem Dit is het basisbestandssysteem voor de harde schijf. Laat dit erin staan als er vanaf de harde schijf wordt opgestart. options UFS_ACL # Ondersteuning voor toeganscontrolelijsten Met deze optie, die alleen in &os; 5.X aanwezig is, wordt de ondersteuning voor toegangscontrolelijsten aangezet. Hiervoor zijn uitgebreide attributen en UFS2 nodig. Een en ander wordt in detail beschreven in . ACL's staan standaard aan en moeten niet uitgezet worden in de kernel als ze al eerder op een bestandssysteem zijn gebruikt, omdat dit de toegangscontrolelijsten verwijdert en hierdoor de manier waarop bestanden beschermd worden op onvoorspelbare wijze verandert. options UFS_DIRHASH # Verbeter prestaties in grote mappen Deze optie bevat functionaliteit om schijfoperaties op grote mappen te versnellen, ten koste van extra geheugen. Deze staat normaalgesproken, zoals voor een grote server of interactief werkstation, aan en wordt uitgezet als &os; op een kleiner systeem wordt gebruikt waar geheugen het belangrijkste en schijfsnelheid minder belangrijk is, zoals voor een firewall. options SOFTUPDATES # Schakel FFS Softupdates ondersteuning in Deze optie zet softupdates in de kernel aan en helpt om de schijftoegang voor schrijven te verhogen. Zelfs als deze functionaliteit door de kernel geleverd wordt, moet die voor specifieke schijven worden aangezet. Bekijk de uitvoer van &man.mount.8; om te zien of softupdates aanstaat voor de systeemschijven. Als de optie soft-updates niet zichtbaar is, dient deze geactiveerd te worden met behulp van &man.tunefs.8; voor bestaande bestandssystemen of &man.newfs.8; voor nieuwe bestandssystemen. options MD_ROOT # MD is een potentieel rootapparaat Deze optie zet ondersteuning aan voor een virtuële schijf die in het geheugen wordt geïmplementeerd en als rootapparaat wordt gebruikt. kernelopties NFS kernelopties NFS_ROOT options NFSCLIENT # Netwerk Bestandssysteem Client options NFSSERVER # Netwerk Bestandssysteem Server options NFS_ROOT # NFS bruikbaar als /, NFSCLIENT nodig Het netwerkbestandssysteem. Dit kan weggelaten worden tenzij er gepland is om partities te mounten van een &unix; bestandsserver over TCP/IP. kernelopties MSDOSFS options MSDOSFS # MSDOS Bestandssysteem Het &ms-dos; bestandssysteem. Dit kan veilig weggelaten worden, tenzij er gepland is om een DOS-geformatteerde partitie van de harde schijf tijdens het opstarten te mounten. Het wordt automatisch geladen als er voor de eerste keer een DOS-partitie wordt gemount, zoals boven beschreven. Bovendien geeft de uitstekende software emulators/mtools toegang tot DOS-floppies zonder dat ze gemount en gedismount moeten worden en heeft het MSDOSFS helemaal niet nodig. options CD9660 # ISO 9660 Bestandssysteem Het ISO 9960-bestandssysteem voor CDROM's. Commentarieer dit uit als er geen CDROM-drive aanwezig is of als er slechts af en toe data-CD's gemount worden (aangezien het dynamisch geladen wordt als er voor de eerste keer een data-CD gemount wordt). Audio-CD's hebben dit bestandssysteem niet nodig. options PROCFS # Procesbestandssysteem Het procesbestandssysteem. Dit is een als-of bestandssysteem, gemount in /proc, dat programma's als &man.ps.1; in staat stelt om meer informatie over de draaiende processen te geven. In &os; 5.X en hoger is het onder de meeste omstandigheden niet nodig om PROCFS te gebruiken, omdat de meeste debug- en monitorgereedschappen zijn aangepast om zonder PROCFS te draaien. In tegenstelling tot &os; 4.X mounten nieuwe installaties op &os; 5.X standaard het procesbestandssysteem niet. Bovendien moeten 6.X-CURRENT kernels die gebruik maken van PROCFS, nu ook ondersteuning bevatten voor PSEUDOFS: options PSEUDOFS # Pseudo-bestandssysteem framework PSEUDOFS is niet beschikbaar in &os; 4.X. options GEOM_GPT # GUID Partitietabellen. Met deze optie kan een groot aantal partities op een enkele schijf aanwezig zijn. options COMPAT_43 # Compatibel met BSD 4.3 [ERIN HOUDEN!] Compatibiliteit met 4.3BSD. Laat dit aanstaan. Sommige programma's gedragen zich vreemd als dit uitgecommentarieerd wordt. options COMPAT_FREEBSD4 # Compatibel met &os;4 Deze optie is nodig op &os; 5.X &i386; en Alpha systemen om ondersteuning te bieden aan applicaties die gecompileerd zijn op oudere versies van &os; en gebruik maken van oudere systeemaanroep-interfaces. Het is aanbevolen dat deze optie gebruikt wordt op alle &i386; en Alpha systemen die mogelijk oudere applicaties draaien. Voor platformen die pas in 5.X ondersteuning verwierven, zoals ia64 en &sparc64;, is deze optie niet nodig. options SCSI_DELAY=15000 # Vertraging (in ms) voordat SCSI wordt afgezocht. Dit zorgt ervoor dat de kernel vijftien seconden wacht voordat die elk SCSI-apparaat in het systeem afzoekt. Als er alleen IDE harddisks zijn, kan deze optie genegeerd worden, anders is het misschien wenselijk om deze waarde te verlagen tot vijf seconden, om het opstarten te versnellen. Uiteraard moet deze waarde weer verhoogd worden als &os; problemen heeft om de SCSI-apparaten te herkennen. options KTRACE # ktrace(1) ondersteuning Dit schakelt kernelondersteuning voor het volgen processen in, wat handig is tijdens debuggen. options SYSVSHM # SYSV-stijl gedeeld geheugen Deze optie biedt System V gedeeld geheugen. Meestal wordt dit wegens de XSHM-uitbreiding in X gebruikt, waar door vele grafische programma's automatisch gebruik van wordt gemaakt voor extra snelheid. Als X gebruik wordt, is het raadzaam om dit op te nemen. options SYSVSEM # SYSV-stijl semaforen Dit biedt ondersteuning voor System V semaforen. Het wordt minder vaak gebruikt, maar voegt slechts een paar honderd bytes aan de kernel toe. options SYSVMSG # SYSV-stijl berichtenwachtrijen Dit biedt ondersteuning voor System V berichten. Ook deze optie voegt slechts een paar honderd bytes aan de kernel toe. De optie van het commando &man.ipcs.1; geeft een lijst van alle processen die een van deze System V faciliteiten gebruikt. options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensies Dit biedt real-time-uitbreidingen die in de 1993 &posix; zijn toegevoegd. Bepaalde applicaties in de portscollectie gebruiken deze (zoals &staroffice;). options KBD_INSTALL_CDEV # installeer een CDEV-ingang in /dev Deze optie is gerelateerd aan het toetsenbord. Het installeert een CDEV-ingang in /dev. options AHC_REG_PRETTY_PRINT # Toon register bitveld in debuguitvoer. # Voegt ~128k toe aan driver. options AHD_REG_PRETTY_PRINT # Toon register bitveld in debuguitvoer. # Voegt ~215k toe aan driver. Dit helpt bij het debuggen door makkelijker te lezen registerdefinities af te beelden. options ADAPTIVE_GIANT # Giant mutex is adaptief. Giant is de naam van een wederzijds uitsluitingsmechanisme (een sleep mutex) dat een grote verzameling kernelbronnen beschermt. Vandaag de dag is dit een onaccaptabele prestatie-bottleneck die actief door sloten wordt vervangen die individuele bronnen beschermen. De optie ADAPTIVE_GIANT zorgt ervoor dat Giant in de verzamelingen van mutexen wordt opgenomen waar actief wordt opgespind. Dit betekent dat wanneer een thread de Giant-mutex wil nemen, maar die reeds door een thread op een andere CPU genomen is, de eerste thread blijft draaien en wacht tot er een slot vrijkomt. Normaalgesproken zou de thread weer gaan slapen en wachten op de volgende kans om te draaien. Laat dit er in geval van twijfel instaan. kernelopties SMP device apic # I/O APIC Het apic-apparaat zet de ondersteuning voor I/O-APIC voor het afleveren van interrupts aan. Het apic-apparaat kan zowel in UP- als in SMP-kernels gebruikt worden, maar is noodzakelijk voor SMP-kernels. Voeg options SMP toe om ondersteuning voor meerdere processoren op te nemen. device isa Alle computers die door &os; ondersteund worden hebben één van deze apparaten. Verwijder dit niet, zelfs niet als er geen ISA-sloten aanwezig zijn. &os; biedt momenteel slechts gedeeltelijke ondersteuning aan IBM PS/2 (Micro Channel Architecture)-systemen. Meer informatie over de ondersteuning voor MCA staat in /usr/src/sys/i386/conf/notes. device eisa Neem dit op voor een EISA-moederbord. Dit zet ondersteuning voor zelfdetectie en -instelling aan voor alle apparaten op de EISA-bus. device pci Neem dit op voor een PCI-moederbord. Dit zet ondersteuning voor zelfdetectie van PCI-kaarten en gatewaying van PCI-naar-ISA-bus aan. device agp Neem dit op als er een AGP-kaart in het systeem aanwezig is. Dit zet ondersteuning voor AGP aan, en ondersteuning voor AGP GART voor borden die deze mogelijkheden hebben. # Floppy drives device fdc Dit is de controller voor de floppydrive. # ATA- en ATAPI-apparaten device ata Dit stuurprogramma biedt ondersteuning aan alle ATA- en ATAPI-apparaten. Er is slechts één device ata-regel nodig om de kernel alle PCI ATA/ATAPI-apparaten te laten ontdekken op moderne machines. device atadisk # ATA schijven Dit is samen met device ata nodig voor ATA schijven. device ataraid # ATA RAID schijven Dit is samen met device ata nodig voor ATA RAID-schijven. device atapicd # ATAPI CDROM-drives Dit is samen met device ata nodig voor ATAPI CDROM-drives. device atapifd # ATAPI floppy drives Dit is samen met device ata nodig voor ATAPI floppydrives. device atapist # ATAPI tape drives Dit is samen met device ata nodig voor ATAPI tapedrives. options ATA_STATIC_ID # Statische apparaatnummering Dit zorgt ervoor dat de controller statisch nummert. Zonder deze optie worden nummers dynamisch toegewezen. # SCSI Controllers device ahb # EISA AHA1742 familie device ahc # AHA2940 en onboard AIC7xxx apparaten device ahd # AHA39320/29320 en onboard AIC79xx apparaten device amd # AMD 53C974 (Teckram DC-390(T)) device isp # Qlogic familie device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (nieuwere chipsets) device trm # Tekram DC395U/UW/F DC315U adapters device adv # Advansys SCSI adapters device adw # Advansys wide SCSI adapters device aha # Adaptec 154x SCSI adapters device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI adapters device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50 SCSI controllers. Commentarieer de regels uit voor apparaten die niet in het systeem aanwezig zijn. Als het een systeem met alleen IDE apparaten betreft, kunnen ze allemaal weggelaten worden. # SCSI randapparaten device scbus # SCSI bus (nodig voor SCSI) device ch # SCSI media changers device da # Direct Access (schijven) device sa # Sequential Access (tape, enzovoort) device cd # CD device pass # Passthrough apparaat (directe SCSI-toegang) device ses # SCSI Omgevingsdiensten (en SAF-TE) SCSI-aanhangels. Ook hier geldt dat apparaten die niet aanwezig zijn uitgecommentarieerd kunnen worden, of als alleen IDE-hardware aanwezig aanwezig is, ze allemaal weggelaten kunnen worden. Het USB-stuurprogramma &man.umass.4; en enkele andere stuurprogramma's gebruiken het SCSI-subsysteem, alhoewel ze geen echte SCSI-apparaten zijn. Daarom mag SCSI-ondersteuning niet verwijderd worden als dit soort stuurprogramma's in de kernelinstellingen worden opgenomen. # RAID controllers met interfaces naar het SCSI subsysteem device amr # AMI MegaRAID device asr # DPT SmartRAID V, VI en Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - Zie NOTES voor opties device hptmv # Highpoint RocketRAID 182x device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough voor aac (CAM nodig) device ida # Compaq Smart RAID device mlx # Mylex DAC960 famile device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID Ondersteunde RAID-controllers. Als een van deze niet aanwezig is, kan deze uitgecommentarieerd of verwijderd worden. # atkbdc0 bestuurt het toetsenbord en de PS/2 muis device atkbdc # AT toetsenbordcontroller De toetsenbordcontroller (atkbdc) biedt I/O-diensten aan voor het AT-toetsenbord en het PS/2-type van aanwijsapparaten. Deze controller is noodzakelijk voor het toetsenbordstuurprogramma (atkbd) en het PS/2-aanwijsapparaatstuurprogramma (psm). device atkbd # AT toetsenbord Het stuurprogramma atkbd biedt samen met de controller atkbdc toegang tot het AT84-toetsenbord of het uitgebreide AT-toetsenbord dat verbonden is met de controller voor het AT-toetsenbord. device psm # PS/2 muis Dit apparaat kan gebruikt worden als de muis in de PS/2-muispoort wordt geplugd. device vga # VGA videokaart stuurprogramma Het stuurprogramma voor de videokaart. # splash screen/screensaver device splash # Splash screen en screensaver ondersteuning Een splash-scherm tijdens het opstarten! Screensavers hebben deze optie ook nodig (voor &os; 4.X dient pseudo-device splash gebruikt te worden. # syscons is het standaard consolestuurprogramma, lijkt op een SCO console device sc sc is het standaard consolestuurprogramma en lijkt op een SCO-console. Aangezien de meeste programma's die met een volledig scherm werken de console via een terminaldatabase zoals termcap benaderen, moet het niet uitmaken of dit of vt, het VT220-compatibele consolestuurprogramma, gebruikt wordt. Wanneer er aangemeld wordt, dient de variabele TERM op scoansi gezet worden indien programma's die met een volledig scherm werken problemen hebben om met dit console te draaien. # Schakel dit in voor het pcvt (VT220 compatibele) consolestuurprogramma #device vt #options XSERVER # ondersteuning voor X server op een vt console #options FAT_CURSOR # begin met een blokcursor Dit is een VT220-compatibel consolestuurprogramma, achterwaarts compatibel met de VT100/102. Het werkt goed op enkele laptops die hardware-incompatibiliteiten hebben met sc. Ook dient de variabele TERM op vt100 of vt220 gezet te worden bij het aanmelden. Dit stuurprogramma kan ook nuttig zijn wanneer er verbinding wordt gemaakt met een groot aantal verschillende machines in een netwerk, waarbij de ingangen termcap of terminfo voor het apparaat sc vaak niet beschikbaar zijn. vt100 is op bijna elk platform beschikbaar. + APM + # Ondersteuning voor energiebeheer (zie NOTES voor meer opties) #device apm Ondersteuning voor geavanceerd energiebeheer (Advanced Power Management). Dit is nuttig voor laptops, alhoewel dit in &os; 5.X en hoger standaard uitgeschakeld is in GENERIC. # Schakel suspend/resume ondersteuning voor de i8254 in. device pmtimer Het stuurprogramma voor het timerapparaat voor energiebeheergebeurtenissen, zoals APM en ACPI. # PCCARD (PCMCIA) ondersteuning. # PCMCIA en cardbus bridge ondersteuning. device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus Ondersteuning voor PCMCIA. Dit is wenselijk voor laptopgebruikers. # Serial (COM) poorten device sio # 8250, 16[45]50-gebaseerde seriële poorten Dit zijn de seriële poorten waarnaar in de wereld van &ms-dos;/&windows; verwezen wordt als COM-poorten. Als er een intern modem op COM4 en een seriële poort op COM2 aanwezig is, moet het IRQ van het modem in 2 worden veranderd (om duistere technische redenen geldt dat IRQ2 = IRQ9) om er vanuit &os; toegang toe te krijgen. Als er een multipoort seriële kaart aanwezig is, staat in &man.sio.4; meer informatie over de juiste waarden die aan /boot/device.hints toegevoegd moeten worden. Sommige videokaarten (vaak gebaseerd op S3 chips) gebruiken IO-adressen van de vorm 0x*2e8, en omdat vele goedkope serieële kaarten de 16-bits IO-adresruimte niet volledig decoderen, botsen ze met deze kaarten waardoor de COM4-poort praktisch onbruikbaar is. Elke serieële poort moet een uniek IRQ hebben (tenzij er gebruik wordt gemaakt van een van de multipoortkaarten waarbij gedeelde interrupts ondersteund worden), dus kunnen de standaard IRQ's voor COM3 en COM4 niet gebruikt worden. # Parallelle poort device ppc Dit is de interface voor de parallelle poort op de ISA-bus. device ppbus # Parallelle poortbus (verplicht) Biedt ondersteuning voor de parallelle poortbus. device lpt # Printer Ondersteuning voor parallelle poort-printers. Alle van de bovenstaande drie zijn noodzakelijk om ondersteuning voor parallelle printers aan te zetten. device plip # TCP/IP over parallel Dit is het stuurprogramma voor de parallelle netwerkinterface. device ppi # Parallelle poort interface apparaat De algemene I/O (geek-poort) + IEEE1284 I/O. #device vpo # scbus en da verplicht zipdrive Dit is voor een Iomega Zipdrive. Hiervoor is ondersteuning voor scbus en da nodig. De beste prestaties worden gehaald met poorten in EPP 1.9-modus. #device puc Dit dient uitgecommentarieerd te worden indien er een domme seriële of parallelle PCI-kaart aanwezig is die ondersteund wordt door het &man.puc.4; verbindingsstuurprogramma. # PCI Ethernet NIC's. device de # DEC/Intel DC21x4x (Tulip) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (Typhoon) device vx # 3Com 3c590, 3c595 (Vortex) Verscheidene PCI-netwerkkaartstuurprogramma's. Degenen die niet in het systeem aanwezig zijn kunnen uitgecommentarieerd of verwijderd worden. # PCI Ethernet NIC's die de MII bus controller code gebruiken. # NB: 'device miibus' moet behouden blijven om deze NIC's te kunnen gebruiken! device miibus # MII bus ondersteuning Ondersteuning voor MII-bus is noodzakelijk voor sommige PCI 10/100 Ethernet-NICs, namelijk voor diegenen die MII-geldige transceivers gebruiken of interfaces voor transceiverbesturing implementeren die als een MII werken. Door device miibus aan de kernelinstellingen toe te voegen wordt de ondersteuning voor de generieke miibus-API en voor alle PHY-stuurprogramma's opgenomen, waaronder een generieke voor PHYs die niet specifiek door een individueel stuurprogramma worden behandeld. device dc # DEC/Intel 21143 en verschillende gelijkwerkenden device miibus # MII bus ondersteuning device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 en verschillende gelijkwerkenden device fxp # Intel EtherExpress PRO/100B (82557, 82558) device pcn # AMD Am79C97x PCI 10/100 (voorrang boven 'lnc') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (Starfire) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 EPIC) device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang, Cyclone) Stuurprogramma's die gebruik maken van de MII bus-controllercode. # ISA Ethernet NIC's. Inclusief pccard NIC's. device cs # Crystal Semiconductor CS89x0 NIC # 'device ed' heeft 'device miibus' nodig device ed # NE[12]000, SMC Ultra, 3c503, DS8390 kaarten device ex # Intel EtherExpress Pro/10 en Pro/10+ device ep # Etherlink III-gebaseerde kaarten device fe # Fujitsu MB8696x-gebaseerde kaarten device ie # EtherExpress 8/16, 3C507, StarLAN 10, etc. device lnc # NE2100, NE32-VL Lance Ethernet kaarten device sn # SMC's 9000 serie Ethernet chips device xe # Xircom pccard Ethernet # ISA apparaten die de oude ISA shims gebruiken #device le ISA Ethernetstuurprogramma's. In /usr/src/sys/i386/conf/NOTES staan details over welke kaarten door welk stuurprogramma ondersteund worden. # Draadloze NIC kaarten device wlan # 802.11 ondersteuning device an # Aironet 4500/4800 802.11 draadloze NIC's. device awi # BayStack 660 en anderen device wi # WaveLAN/Intersil/Symbol 802.11 draadloze NIC's. #device wl # Oudere niet-802.11 Wavelan draadloze NIC. Ondersteuning voor verscheidene draadloze kaarten. device mem # Geheugen- en kernelgeheugenapparaten De geheugenapparaten van het systeem. device io # I/O apparaat Deze optie stelt een proces in staat om I/O-privileges te verkrijgen. Dit is nuttig als er gebruikerprogramma's worden geschreven die direct met hardware werken. Dit is nodig om het X Window Systeem te draaien. device random # Entropy apparaat Cryptografisch veilige willekeurige getallengenerator. device ether # Ethernet ondersteuning ether is allen noodzakelijk als er een Ethernetkaart aanwezig is. Het bevat code voor het generieke Ethernet protocol. Op &os; 4.X dient pseudo-device ether gebruikt te worden. device sl # Kernel SLIP sl dient voor SLIP-ondersteuning. Dit is bijna geheel overgenomen door PPP, wat eenvoudiger is op te zetten, beter geschikt is voor modem-naar-modem-verbindingen en krachtiger is. Met &os; 4.X dient pseudo-device sl gebruikt te worden. device ppp # Kernel PPP Dit dient voor PPP-ondersteuning van inbelverbindingen door de kernel. Er is ook een versie van PPP als gebruikersapplicatie geïmplementeerd die tun gebruikt en meer flexibiliteit en mogelijkheden biedt zoals demand-bellen. Met &os; 4.X dient pseudo-device ppp gebruikt te worden. device tun # Packet tunnel. Dit wordt gebruikt door de gebruikers-PPP-software. In PPP staat meer informatie. Met &os; 4.X dient pseudo-device tun gebruikt te worden. device pty # Pseudo-ttys (telnet, etc.) Dit is een pseudo-terminal of gesimuleerde aanmeldpoort. Die wordt gebruikt door binnenkomende sessies van telnet en rlogin, door xterm en voor sommige andere applicaties zoals Emacs. Met &os; 4.X dient pseudo-device ptynummer gebruikt te worden. Het nummer na pty geeft het aantal pty's aan dat aangemaakt dient te worden. Als er meer dan het standaard aantal van zestien gelijktijdige xterm schermen en/of remote aanmeldingen nodig zijn, dient dit nummer overeenkomstig verhoogd te worden, tot maximaal 256. device md # Geheugenschijven Pseudo-apparaten die een schijf in het geheugen implementeren. Met &os; 4.X dient pseudo-device md gebruikt te worden. device gif # IPv6 en IPv4 tunnelen Dit implementeert IPv6-over-IPv4-tunneling, IPv4-over-IPv6-tunneling, IPv4-over-IPv4-tunneling en IPv6-over-IPv6-tunneling. Met ingang van &os; 4.4 is het apparaat gif zelfklonend en dient de regel pseudo-device gif gebruikt te worden. Eerdere versies van &os; 4.X vereisen een getal, bijvoorbeeld pseudo-device gif 4. device faith # IPv6-naar-IPv4-relay (vertaling) Dit pseudo-apparaat onderschept pakketten die ernaar verzonden worden en leidt ze om naar het IPv4/IPv6-vertaaldaemon. Met &os; 4.X dient pseudo-device faith 1 gebruikt te worden. # Het `bpf' apparaat schakelt de Berkeley Pakketfilter in. # Wees bewust van de administratieve consequenties die dit heeft! device bpf # Berkeley pakketfilter Dit is het Berkeley Pakketfilter. Dit pseudo-apparaat staat netwerkinterfaces toe om in luistermodus gezet te worden, zodat elk pakket op een uitzendnetwerk (bijvoorbeeld een Ethernet) onderschept wordt. Deze pakketten kunnen naar schijf onderschept en/of onderzocht worden met het programma &man.tcpdump.1;. Met &os; 4.X dient pseudo-device bpf gebruikt te worden. Het apparaat &man.bpf.4; wordt ook gebruikt door &man.dhclient.8; om het IP-adres van de standaardrouter (gateway) te verkrijgen, enzovoorts. Als DHCP gebruikt wordt, dient dit ingeschakeld te blijven. # USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device usb # USB Bus (verplicht) #device udbp # USB Double Bulk Pipe apparaten device ugen # Generic device uhid # Human Interface Devices device ukbd # Toetsenbord device ulpt # Printer device umass # Schijnven/Massaopslag - scbus en da nodig device ums # Muis device urio # Diamond Rio 500 MP3 speler device uscanner # Scanners # USB Ethernet, requires mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet Ondersteuning voor verscheidene USB-apparaten. # FireWire ondersteuning device firewire # FireWire bus code device sbp # SCSI over FireWire (scbus en da nodig) device fwe # Ethernet over FireWire (niet-standaard!) Ondersteuning voor verscheidene Firewire-apparaten. Meer informatie en aanvullende apparaten die door &os; ondersteund worden staan in /usr/src/sys/i386/conf/NOTES. Instellingen bij Veel Geheugen (<acronym>PAE</acronym>) Physical Address Extensions(PAE) instellingen veel geheugen Sommige machines (PAE) hebben meer geheugen nodig dan limiet van 4 gigabyte op User+Kernel Virtual Adress (KVA) ruimte. Vanwege deze limiet voegde Intel ondersteuning toe voor toegang tot 36-bits fysieke adresruimte in de &pentium; Pro en nieuwere lijn van CPU's. De Physical Address Extension (PAE) mogelijkheden van de &intel; &pentium; Pro en nieuwere CPU's staan geheugenhoeveelheden toe tot 64 gigabyte. &os; biedt ondersteuning voor deze mogelijkheid via de kernelinsteloptie , die beschikbaar is in de 4.X-serie van &os; met ingang van 4.9-RELEASE en in de 5.X-serie van &os; met ingang van 5.1-RELEASE. Vanwege de beperkingen van de geheugenarchitectuur van Intel wordt er geen onderscheid gemaakt tussen geheugen boven of beneden 4 gigabytes. Geheugen dat boven de 4 gigabytes is toegewezen wordt gewoon bij het beschikbare gevoegd. Om ondersteuning voor PAE in de kernel aan te zetten, dient de volgende regel aan het kernelinstellingenbestand te worden toegevoegd: options PAE De ondersteuning voor PAE in &os; is alleen beschikbaar voor &intel; IA-32-processoren. Ook dient opgemerkt te worden dat ondersteuning voor PAE nog niet wijdverbreid getest is en als betakwaliteit beschouwd dient te worden vergeleken met andere stabiele kenmerken van &os;. Ondersteuning voor PAE in &os; heeft enige beperkingen: Een proces kan niet meer dan 4 gigabyte VM-ruimte krijgen; KLD-modules kunnen niet in een kernel worden geladen die PAE aan heeft staan, vanwege de verschillen in het bouwraamwerk van een module en de kernel; Apparaatstuurprogramma's die geen gebruik maken van de &man.bus.dma.9;-interface zullen gegevenscorruptie veroorzaken in een kernel die PAE aan heeft staan en hun gebruik wordt afgeraden. Om deze reden wordt er een kernelinstellingenbestand voor PAE geleverd met &os; 5.X, die alle stuurprogramma's uitsluit waarvan bekend is dat ze niet werken in een kernel die PAE aan heeft staan; Sommige systeeminstellingen bepalen het geheugenbronverbruik aan de hand van de hoeveelheid beschikbaar fysiek geheugen. Zulke instellingen kunnen onnodig veel toewijzen vanwege de grote hoeveelheid geheugen in een PAE systeem. Een voorbeeld hiervan is de sysctl , die het maximum aantal vnodes dat in de kernel aanwezig mag zijn beheert. Het is aan te raden om deze en andere van dit soort instellingen aan te passen aan een redelijke waarde; Het kan nodig zijn om de virtuele kerneladresruimte (KVA) te vergroten of om het aantal kernelbronnen dat veel gebruikt wordt (zie boven) te verminderen om zo uitputting van KVA te voorkomen. De kerneloptie kan gebruikt worden om de KVA-ruimte te vergroten. Om prestatie- en stabiliteitsredenen is het aan te raden om &man.tuning.7; te raadplegen. &man.pae.4; bevat bijgewerkte informatie over de ondersteuning voor PAE in &os;. Apparaatnodes Maken apparaatnodes MAKEDEV Als &os; 5.0 of hoger gedraaid wordt, kan deze sectie veilig worden overgeslagen. Deze versies gebruiken &man.devfs.5; om transparant apparaatnodes voor de gebruiker toe te wijzen. Bijna elk apparaat in de kernel heeft een overeenkomstige node-ingang in de map /dev. Deze nodes zien eruit als reguliere bestanden, maar zijn eigenlijk speciale ingangen in de kernel die door programma's gebruikt worden om toegang tot het apparaat te verkrijgen. Het shellscript /dev/MAKEDEV, dat wordt uitgevoerd als het besturingssysteem voor het eerst wordt geïnstalleerd, maakt bijna alle ondersteunde apparaatnodes aan. Het maakt echter niet alle nodes aan, dus als ondersteuning voor een apparaat wordt toegevoegd, loont het om te controleren of de geschikte ingangen in de map aanwezig zijn en deze toe te voegen als ze ontbreken. Hier volgt een eenvoudig voorbeeld: Stel dat ondersteuning voor de IDE CD-ROM aan de kernel wordt toegevoegd: device ad0 Dit betekent dat de map /dev moet worden onderzocht op ingangen die met acd0 beginnen, mogelijk gevolgd door een letter zoals c of voorafgegaan door de letter r, wat duidt op een raw apparaat. Die bestanden zijn daar niet, dus moet in de map /dev het volgende ingegeven worden: MAKEDEV &prompt.root; sh MAKEDEV acd0 Als dit script geëindigd is, zijn de ingangen acd0c en racd0c in de map /dev aanwezig, wat duidt op een juiste uitvoer. Voor geluidskaarten maakt het volgende commando de juiste ingangen aan: &prompt.root; sh MAKEDEV snd0 Als apparaatnodes voor apparaten als geluidskaarten worden aangemaakt en andere mensen toegang tot de machine hebben, kan het wenselijk zijn om de apparaten tegen toegang van buitenaf te beschermen door deze aan /etc/fbtab toe te voegen. In &man.fbtab.5; staat meer informatie. Deze eenvoudige procedure dient gevolgd te worden voor elk ander apparaat dat niet in GENERIC staat en geen ingangen heeft in /dev. Alle SCSI-controllers gebruiken dezelfde verzameling ingangen in /dev, dus is het niet nodig om deze aan te maken. Ook hebben netwerkkaarten en SLIP/PPP pseudo-apparaten geen ingang in /dev, dus is het niet nodig om hierover bezorgd te zijn. Problemen Oplossen Er zijn vijf categoriën problemen die op kunnen treden tijdens het bouwen van een eigen kernel: config faalt Als het commando &man.config.8; faalt bij het verwerken van de kernelbeschrijving, is er waarschijnlijk ergens een eenvoudige fout gemaakt. Gelukkig geeft &man.config.8; het nummer van de regel weer waarmee het problemen had, dus kan snel de regel gevonden worden waarin de fout zit. In het onderstaande voorbeeld dient gecontroleerd te worden of het sleutelwoord juist is ingevoerd door het met de kernel GENERIC of een andere referentie te vergelijken: config: line 17: syntax error make faalt Als make faalt, duidt dit meestal op een fout in de kernelbeschrijving die niet erg genoeg is om door &man.config.8; opgemerkt te worden. De instellingen dienen nogmaals nagekeken te worden. Als het probleem nog steeds niet is op te lossen, stuur dan een mail naar de &a.questions; met de kernelinstellingen. Dat leidt meestal snel tot een diagnose. Het installeren van de nieuwe kernel mislukt Als het compileren van de kernel goed ging, maar het installeren mislukte (make install of make installkernel faalde), dient als eerste gecontroleerd te worden of het systeem op beveiligingsniveau (securelevel) 1 of hoger draait (zie &man.init.8;). De kernelinstallatie probeert namelijk om de vlag immutable van de oude kernel te verwijderen en de vlag immutable op de nieuwe kernel te zetten. Aangezien beveiligingsniveau 1 of hoger verhindert om de vlag immutable te verwijderen van enig bestand op het systeem, dient de kernelinstallatie op beveiligingsniveau 0 of lager uitgevoerd te worden. Bovenstaande geldt alleen voor &os; 4.X en eerdere versies. &os; 5.X en hogere versies zetten de vlag immutable niet op de kernel en een mislukte poging om de kernel de kernel te installeren duidt meestal op een fundamenteler probleem. De kernel start niet op Als de nieuwe kernel niet opstart of de apparaten niet herkent is kalmte geboden. &os; heeft een uitstekend mechanisme om van niet-compatibele kernels te herstellen. De gewenste kernel om mee op te starten kan vanuit de &os; boot loader gekozen worden. Als het systeem terugtelt vanaf 10, kan deze vanuit het opstartmenu gekozen worden. Sla een willekeurige toets, behalve de Enter toets, aan, voer unload in en daarna boot /boot/kernel.old/kernel of de bestandsnaam van enige andere kernel die correct opstart. Als de kernelinstellingen gewijzigd worden, is het altijd aan te raden om een kernel bij de hand te houden waarvan bekend is dat die juist werkt. Nadat er met een goede kernel is opgestart, kan het instellingenbestand gecontroleerd worden en geprobeerd worden om de kernel nogmaals te bouwen. Een behulpzame bron is het bestand /var/log/messages, dat onder andere alle kernelberichten van alle keren dat er succesvol is opgestart vastlegt. Ook geeft &man.dmesg.8; alle kernelberichten weer van de huidige opstartprocedure. Als er problemen zijn met het bouwen van een kernel, dient een GENERIC, of een andere kernel waarvan bekend is dat die werkt, bewaard te worden onder een andere naam die niet verwijderd wordt als de volgende kernel gebouwd wordt. Er kan niet op kernel.old vertrouwd worden omdat bij de installatie van een nieuwe kernel kernel.old overschreven wordt met de laatst geïnstaleerde kernel, die niet hoeft te werken. Ook dient de werkende kernel zo snel mogelijk naar de juiste plaats /boot/kernel verplaatst te worden, omdat anders commando's als &man.ps.1; eventueel onjuist werken. Hiervoor dient simpelweg de map met de goede kernel hernoemd te worden: &prompt.root; mv /boot/kernel /boot/kernel.slecht &prompt.root; mv /boot/kernel.goed /boot/kernel Voor versies van &os; eerder dan 5.X luidt het juiste commando om het kernelbestand dat make installeert te ontgrendelen (om een andere kernel definitief terug te zetten): &prompt.root; chflags noschg /kernel Als dit niet mogelijk is, wordt er waarschijnlijk op een beveiligingsniveau groter dan nul gedraaid. Wijzig kern_securelevel in /etc/rc.conf naar –1 en start het systeem opnieuw. Deze instelling kan op het vorige niveau worden teruggezet als de nieuwe kernel naar behoren werkt. Als het wenselijk is om de nieuwe kernel vast te zetten op zijn plaats, of enig ander bestand, zodat het niet verplaatst of verknoeid kan worden: &prompt.root; chflags schg /kernel De kernel werkt, maar &man.ps.1; werkt niet meer Als er een andere versie van de kernel is geïnstalleerd dan degene waarmee de systeemgereedschappen gebouwd zijn, bijvoorbeeld een kernel voor 5.X op een 4.X-systeem, werken vele systeemstatuscommando's als &man.ps.1; en &man.vmstat.8; niet langer. De wereld moet opnieuw gecompileerd en geïnstalleerd worden en met dezelfde broncodestructuur als de kernel zijn gebouwd. Dit is een van de redenen waarom het normaliter geen goed idee is om een afwijkende versie van de kernel ten opzichte van de rest van de wereld te gebruiken. diff --git a/nl_NL.ISO8859-1/books/handbook/l10n/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/l10n/chapter.sgml index 5f99a800e1..af36a29c26 100644 --- a/nl_NL.ISO8859-1/books/handbook/l10n/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/l10n/chapter.sgml @@ -1,1097 +1,1105 @@ Andrey A. Chernov Bijgedragen door Michael C. Wu Herschreven door René Ladan Vertaald door Lokalisatie - I18N/L10N Gebruiken en Instellen - Samenvatting + Overzicht &os; is een zeer gedistribueerd project met gebruikers over de gehele wereld. Dit hoofdstuk behandelt de internationalisatie- en lokalisatie-eigenschappen van &os; die niet-Engelssprekende gebruikers echt werk laten verzetten. Er zitten veel aspecten van de i18n-implementatie in zowel de systeem- als applicatieniveaus, dus waar mogelijk wordt de lezer verwezen naar meer specifieke bronnen. Na dit hoofdstuk weet de lezer: Hoe verschillende talen en locales gecodeerd zijn op moderne besturingssystemen. Hoe de locale in te stellen voor een login-shell. Hoe de console voor niet-Engelse talen te configureren. Hoe het X-Window Systeem effectief met meerdere talen te gebruiken. Waar meer informatie te vinden over het schrijven van i18n-respecterende applicaties. Veronderstelde voorkennis: Weten hoe aanvullende applicaties van derde partijen geïnstalleerd worden (). Beginselen Wat is I18N/L10N? - internationalisatie + + internationalisatie + + lokalisatie + lokalisatie Ontwikkelaars hebben internationalisatie (internationalization afgekort tot de term I18N, de eerste en de laatste letter en het aantal tussenliggende letters. L10N gebruikt hetzelfde schema voor naamgeving en komt van localization. Samen staan I18N/L10N methoden, protocollen en applicaties gebruikers toe de taal van hun keuze te gebruiken. I18N-applicaties zijn geprogrammeerd door gebruik te maken van I18N-gereedschappen van bibliotheken. Daarmee kunnen ontwikkelaars een eenvoudig bestand schrijven en menu's en teksten weergeven in elke taal. Programmeurs worden door het &os; Project sterk aangemoedigd deze conventie te volgen. Waarom I18N/L10N Gebruiken? I18N/L10N wordt gebruikt als een gebruiker gegevens wil bekijken, invoeren of verwerken in niet-Engelse talen. Welke Talen Worden Ondersteund Door I18N? I18N en L10N zijn niet &os; specifiek. Momenteel kan er gekozen worden uit de meeste grote wereldtalen, inclusief maar niet beperkt tot: Chinees, Duits, Japans, Koreaans, Frans, Russisch en Vietnamees. Lokalisatie Gebruiken In al zijn pracht is I18N niet &os; specifiek maar een conventie. Het &os; Project moedigt iedereen aan &os; te helpen deze conventie te gebruiken. locale Lokalisatie-instellingen zijn gebaseerd op drie hoofdtermen: Taalcode, Landcode en Codering. Localenamen zijn als volgt opgebouwd: Taalcode_Landcode.Codering Taal- en Landcodes taalcodes landcodes Om een &os; systeem (of een ander I18N-ondersteunend &unix; achtig systeem) te lokaliseren naar een bepaalde taal, moet de gebruiker de codes voor het specifieke land en taal achterhalen. Landcodes geven applicaties aan welke variatie van de gegeven taal gebruikt moet worden. Ook webbrowsers, SMTP/POP-servers, webservers, enz. maken beslissingen gebaseerd op die codes. Hieronder staan voorbeelden van taal- en landcodes: Taal- en landcode Omschrijving en_US Engels - Verenigde Staten ru_RU Russisch voor Rusland zh_TW Traditioneel Chinees voor Taiwan Coderingen coderingen ASCII Sommige talen gebruiken andere ASCII-coderingen dan 8-bit, wijde of multibyte karakters, zie &man.multibyte.3;. Oudere programma's herkennen die niet en interpreteren ze foutief als controlekarakters aan. Afhankelijk van de implementatie moeten gebruikers eventueel een applicatie met wijde of multibyte karakterondersteuning compileren, of hem correct instellen. Om wijde of multibyte karakters in te kunnen voeren en te kunnen verwerken levert de &os; Portscollectie voor elke taal programma's. Hiervoor staat I18N-documentatie in de respectievelijke &os; Port. Voor het bouwen van een gewenste applicatie met lokalisatie is het verstandig de applicatiedocumentatie te bekijken om te bepalen hoe de juiste waarden doorgegeven kunnen worden naar configure, Makefile of de compiler. Houd rekening met: Taalspecifieke enkele C-karakters karakterverzamelingen (zie &man.multibyte.3;), bijvoorbeeld ISO-8859-1, ISO-8859-15, KOI8-R of CP437. Wijde of multibyte coderingen, bijvoorbeeld EUC of Big5. Een lijst met actieve karakterverzamelingen staat bij de IANA Registry. &os; versies 4.5 en hoger gebruiken in plaats hiervan X11-compatible locale-coderingen. I18N Applicaties In het &os; Ports en Package systeem hebben I18N-applicaties I18N in hun naam zodat ze eenvoudig herkend kunnen worden. Toch ondersteunen ze niet altijd iedere mogelijk gewenste taal. Locale instellen Meestal is het voldoende om de waarde van de localenaam te exporteren als LANG in de login-shell. Dit kan door die waarde in ~/.login_conf van de gebruiker of in ~/.profile, ~/.bashrc of ~/.cshrc) van de gebruiker te zetten. Het is niet nodig om localedeelverzamelingen als LC_CTYPE of LC_CTIME in te stellen. Bij de taalspecifieke &os; documentatie staat vaak nog informatie. De twee volgende omgevingsvariabelen moeten in de configuratiebestanden ingesteld worden: POSIX LANG voor de &posix; &man.setlocale.3; functies. MIME MM_CHARSET voor de MIME karakters voor applicaties. Dit is inclusief de gebruikers-shell-configuratie, de configuratie van de specifieke applicatie en de X11 configuratie. Methoden om Locale in te Stellen locale loginklasse Er zijn twee methoden om de locale in te stellen en beiden worden hieronder beschreven. De eerste (aanbevolen) methode is door middel van het toekennen van omgevingsvariabelen in de loginklasse en de tweede is mogelijk door middel van het toevoegen van de omgevingsvariabelen aan het opstartbestand van de systeem-shell. Methode Loginklasse Deze methode biedt de mogelijkheid om omgevingsvariabelen die nodig zijn voor de localenaam en MIME karakterverzamelingen éénmalig voor elke mogelijke shell toe te kennen in plaats van door toekenning via het opstartbestand van elke shell. Gebruikersinstellingen kunnen door de gebruiker zelf worden gemaakt en voor Beheerdersinstellingen zijn superuser-rechten nodig. Gebruikersinstellingen Hieronder staat een minimaal voorbeeld van een .login_conf bestand in de thuismap van een gebruiker die beide variabelen heeft ingesteld op Latin-1 codering: me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1: traditioneel Chinees BIG-5 codering Hieronder staat is een voorbeeld van een .login_conf die variabelen instelt voor traditioneel Chinees in BIG-5 codering. Er zijn veel andere variabelen ingesteld zijn omdat sommige software localevariabelen niet correct respecteert voor Chinees, Japans, en Koreaans. # Gebruikers die geen valuta eenheden of tijdformaten voor Taiwan # willen gebruiken kunnen handmatig elke variabele wijzigen. me:\ :lang=zh_TW.Big5:\ :lc_all=zh_TW.Big:\ :lc_collate=zh_TW.Big5:\ :lc_ctype=zh_TW.Big5:\ :lc_messages=zh_TW.Big5:\ :lc_monetary=zh_TW.Big5:\ :lc_numeric=zh_TW.Big5:\ :lc_time=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=xcin": # Instellen van XIM invoerserver Zie Beheerdersinstellingen en &man.login.conf.5; voor meer details. Beheerdersinstellingen Er dient gecontroleerd te worden of loginklasse voor gebruikers, /etc/login.conf, de juiste taal instelt door de volgende instellingen in /etc/login.conf: taalnaam: accountstitel:\ :charset=MIME_karakterverzameling: :lang=localenaam:\ :tc=default: Voor het bovenstaande voorbeeld dat gebruik maakt van Latin-1 ziet dat er als hieronder uit: german:Duitse gebruikersaccounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default: Loginklasse wijzigen met &man.vipw.8; vipw Met vipw kunnen nieuwe gebruikers toegevoegd worden en de instellingen dienen ongeveer als volgt uit te zien: gebruiker:wachtwoord:1111:11:taal:0:0:Gebruikersnaam:/home/gebruiker:/bin/sh Loginklasse wijzigen met &man.adduser.8; adduser loginklasse Met adduser kunnen nieuwe gebruikers toegevoegd worden. Hierna dient één van de volgende stappen uitgevoerd te worden: defaultclass = taal instellen in /etc/adduser.conf. In dit geval dient er voor alle gebruikers van andere talen een default klasse ingevoerd te worden. Er kan ook gekozen worden voor een antwoord op de vraag over taal vanuit &man.adduser.8;: Enter login class: default []: Ook kan het volgende gebruikt worden voor elke gebruiker die een andere taal gebruikt: &prompt.root; adduser -class taal Loginklasse wijzigen met &man.pw.8; pw Als &man.pw.8; wordt gebruikt om nieuwe gebruikers toe te voegen: &prompt.root; pw useradd gebruikersnaam -L taal Methode Opstartbestand Shell Deze methode wordt niet aanbevolen omdat er instellingenen nodig zijn voor elke mogelijke shell. Het advies is de Methode Loginklasse te gebruiken. MIME locale Om de localenaam en MIME karakterverzameling toe te voegen kunnen gewoon twee omgevingsvariabelen ingesteld worden, zoals hieronder te zien is, in /etc/profile en/of /etc/csh.login opstartbestanden voor shells. Hier wordt de Duitse taal als voorbeeld gebruikt: In /etc/profile: LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET Of in /etc/csh.login: setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1 Het is ook mogelijk de bovenstaande instructies toe te toevoegen /usr/share/skel/dot.profile (ongeveer gelijk aan wat hierboven in /etc/profile is gebruikt) of aan /usr/share/skel/dot.login (ongeveer gelijk aan wat hierboven in /etc/csh.login is gebruikt). Voor X11: In $HOME/.xinitrc: LANG=de_DE.ISO8859-1; export LANG Of: setenv LANG de_DE.ISO8859-1 Afhankelijk van de shell (zie boven). Console Instellen Voor alle enkele C-karakters karakterverzamelingen worden de juiste lettertypen voor het console ingesteld in /etc/rc.conf voor de taal in kwestie met: font8x16=lettertypenaam font8x14=fontnaam font8x8=fontnaam De lettertypenaam komt uit de map /usr/share/syscons/fonts zonder het achtervoegsel .fnt. sysinstall toetsenmapping schermmapping De gebruiker dient ervoor te zorgen de juiste enkele - C-karakters karakterverzameling wordt ingestelt met - /stand/sysinstall. In - sysinstall kan + C-karakters karakterverzameling wordt ingesteld met + /stand/sysinstall + ((/stand/sysinstall in &os; versies ouder + dan 5.2). In sysinstall kan Configure en Console gekozen worden. Het is ook mogelijk het volgende aan /etc/rc.conf toe te voegen: scrnmap=schermmappingnaam keymap=toetsenmappingnaam keychange="fkey_nummer sequentie" schermmappingnaam komt uit de map /usr/share/syscons/scrnmaps zonder het achtervoegsel .scm. Meestal is een schermmapping met een overeenkomstig gemapt lettertype nodig als workaround om bit 8 naar bit 9 uit te breiden op een lettertype–karaktermatrix van een VGA-adapter in pseudografische gebieden, dat wil zeggen om letters uit dat gebied te halen als het schermlettertype een bit 8 kolom gebruikt. Als de moused daemon is ingeschakeld met de onderstaande regel in /etc/rc.conf, dan wordt aangeraden de muiscursorinformatie in de volgende paragraaf te bekijken. moused_enable="YES" moused Standaard neemt de muiscursor van het &man.syscons.4; stuurprogramma het bereik 0xd0-0xd3 van de tekenverzameling in beslag. Als een ingestelde taal dit bereik gebruikt, moet het cursorbereik hierbuiten gehaald worden. Om de workaround voor &os; versies vóór 5.0 aan te zetten kan de volgende regel aan dekernelconfiguratie toegevoegd worden: options SC_MOUSE_CHAR=0x03 Voor &os; versies 4.4 en hoger kan de volgende regel aan /etc/rc.conf toegevoegd worden: mousechar_start=3 De toetsenmappingnaam komt uit de map /usr/share/syscons/keymaps zonder het achtervoegsel .kbd. Als niet precies duidelijk is welke toetsenmapping te gebruiken, kan de toetsenmapping getest worden met &man.kbdmap.1; zonder opnieuw op te starten. keychange is nodig om functietoetsen zo te programmeren dat ze overeenkomen met het geselecteerde terminaltype omdat functietoetssequenties niet in de toetsenmapping gedefinieerd kunnen worden. Er dient ook een controle te zijn op een juiste instelling van het juiste terminaltype voor het console in /etc/ttys voor alle ttyv* regels. De huidige instellingen zijn: Karakterverzameling Terminaltype ISO-8859-1 of ISO-8859-15 cons25l1 ISO-8859-2 cons25l2 ISO-8859-7 cons25l7 KOI8-R cons25r KOI8-U cons25u CP437 (VGA standaardinstelling) cons25 US-ASCII cons25w Voor wijde of multibyte karaktertalen kan je juiste &os; port in de map /usr/ports/taal gebruikt worden. Sommige ports verschijnen als console terwijl het systeem ze als serieële vtty ziet. Er dienen dus voldoende vtty's gereserveerd te zijn voor zowel X11 als de pseudo-serieële console. Hier is een gedeeltelijke lijst van applicaties voor het gebruik van andere talen in console: Taal Locatie traditioneel Chinees (BIG-5) chinese/big5con Japans japanese/kon2-16dot of japanese/mule-freewnn Koreaans korean/han X11 Instellen Hoewel X11 geen deel is van het &os; Project wordt het hier wel besproken voor &os; gebruikers. Meer details zijn te - vinden op de &xfree86; + vinden op de &xorg; website of op de website van een andere X11 server die gebruikt wordt. In ~/.Xresources kunnen applicatiespecifieke I18N instellingen gemaakt worden als lettertypen, menu's, enzovoort. Lettertypen Weergeven X11 &truetype; lettertypeserver Eerst moet &xorg; server (x11-servers/xorg-server) of &xfree86; server (x11-servers/XFree86-4-Server) geïnstalleerd worden en daarna de &truetype; lettertypen van de taal. Door de gewenste locale in te stellen worden de menu's en dergelijke in de gekozen taal weergegeven. Niet-Engelse Karakters Invoeren X11 Input Method (XIM) Het X11 Input Method (XIM) protocol is een nieuwe standaard voor alle X11-cliënts. Alle X11-applicaties horen geschreven te worden als XIM-cliënts die invoer aannemen van de XIM-invoerservers. Er zijn meerdere XIM-servers beschikbaar voor verschillende talen. Printerinstellingen Sommige enkele C-karakters karakterverzamelingen zijn standaard hardware-gecodeerd in printers. Voor wijde of multibyte karakterverzamelingen is een speciale installatie nodig en het gebruik van apsfilter wordt dan aangeraden. Een document kan ook naar &postscript; of PDF formaat omgezet worden door gebruik te maken van taalspecifieke conversieprogramma's. Kernel en bestandssystemen Het &os; Snelle Bestandssysteem (FFS) is 8-bit schoon, dus het kan gebruikt worden met elke enkele C-karakters karakterverzameling (zie &man.multibyte.3;), maar er is geen karakterverzamelingnaam opgeslagen in het bestandssysteem. Het is dus rauw 8-bit en het weet niets van coderingsbevelen. Officieel ondersteunt FFS nog geen enkele vorm van wijde of multibyte karakterverzamelingen. Toch hebben sommige wijde of multibyte karakterverzamelingen onafhankelijke patches voor FFS die ondersteuning inschakelen. Dit zijn tijdelijke oplossingen of hacks die niet overdraagbaar zijn en daarom is besloten ze niet in de source tree op te nemen. Op de websites van de talen staan de patchbestanden en meer informatie. &ms-dos; Unicode Voor het &os; &ms-dos; bestandssysteem kan geschakeld worden tussen &ms-dos;, Unicode karakterverzamelingen en gekozen &os; bestandssysteem-karakterverzamelingen. &man.mount.msdos.8; beschijft de details. I18N-programma's Compileren Veel &os; Ports zijn geschikt gemaakt voor &os; met I18N-ondersteuning. Een aantal daarvan zijn gemarkeerd met -I18N in de portnaam. Deze en nog veel andere programma's hebben ingebouwde ondersteuning voor I18N en behoeven geen speciale aandacht. MySQL Toch is het voor sommige applicaties zoals MySQL nodig dat de Makefile geconfigureerd is met de specifieke karakterverzameling. Dit wordt normaliter gedaan in de Makefile of door middel van het doorgeven van een waarde aan configure in de broncode. &os; Lokaliseren naar Talen Andrey A. Chernov Oorspronkelijk bijgedragen door Russisch (KOI8-R codering) lokalisatie Russisch Voor meer informatie over KOI8-R codering, zie de KOI8-R References (Russian Net Character Set). Locale instellen Voeg de volgende regels toe aan ~/.login_conf bestand: me:Mijn account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R: Zie eerder in dit hoofdstuk voor voorbeelden over het opzetten van de locale. Console instellen Voeg voor de &os; versies voorafgaand aan 5.0 de volgende regel toe aan het kernelconfiguratiebestand: options SC_MOUSE_CHAR=0x03 Voeg voor &os; versie 4.4 en hoger de volgende regel toe aan /etc/rc.conf: mousechar_start=3 Gebruik de volgende instellingen in /etc/rc.conf: keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" Voor elke ttyv* regel in /etc/ttys, gebruik cons25r als het terminaltype. Zie eerder in dit hoofdstuk voor voorbeelden over het opzetten van de console. Printer instellen printers Aangezien de meeste printers met Russische karakters met hardware-codepagina CP866 komen, is een speciaal uitvoerfilter nodig om KOI8-R om te zetten in CP866. Zo'n filter is standaard geïnstalleerd als /usr/libexec/lpr/ru/koi2alt. Een /etc/printcap regel voor een Russische printer moet er uit zien als: lp|Russische lokale lijnprinter:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: Zie &man.printcap.5; voor een gedetailleerde beschrijving. &ms-dos; bestandssysteem en Russische bestandsnamen De volgende voorbeeld &man.fstab.5; regel zet ondersteuning aan voor Russische bestandsnamen gekoppeld op &ms-dos; bestandssystemen: /dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KIO8-R 0 0 De optie selecteert de te gebruiken localenaam, en stelt de karakteromzettabel in. Om de te gebruiken moet /usr gemount zijn voor de &ms-dos; partitie omdat de omzettabellen zich bevinden in /usr/libdata/msdosfs. &man.mount.msdos.8; geeft verdere uitleg. X11 Instellen Voer eerst de niet-X lokale instellingen uit zoals beschreven. De Russische KOI8-R locale werkt niet altijd met oude &xfree86; uitvoeringen - (lager dan 3.3). &xfree86; - 4.X is nu de standaardversie van het X - Window Systeem op &os;. Dit is meestal geen probleem, - tenzij een oude versie van &os; wordt gebruikt. + (lager dan 3.3). &xorg; is + nu de standaardversie van het X Window Systeem op &os;. + Dit is meestal geen probleem, tenzij een oude versie + van &os; wordt gebruikt. Voer in de map russian/X.language het volgende uit: &prompt.root; make install Bovenstaande port installeert de nieuwste versie van de KOI8-R lettertypen. - &xfree86; 3.3 heeft al - enkele KOI8-R lettertypen, maar deze zijn beter + &xorg; (en ook + &xfree86; vanaf versie 3.3) + heeft al enkele KOI8-R lettertypen, maar deze zijn beter geschaald. Controleer de "Files" sectie in /etc/XF86Config bestand. De volgende regels moeten vóór andere FontPath regels staan: FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi" Er er een hoge resolutie videomodus wordt gebruikt dan kunnen de 75dpi en 100dpi regels gewisseld worden. Om een Russisch toetsenbord te activeren dient het volgende in het "Keyboard" gedeelte van XF86Config te staan: Voor &xfree86; 3.X: XkbLayout "ru" XkbOptions "grp:caps_toggle" - Voor &xfree86; 4.X: + Voor &xorg;: Option "XkbLayout" "ru" Option "XkbOptions" "grp:caps_toggle" Ook moet daar XkbDisable uitgeschakeld (uitgecomment) zijn. De RUS/LAT-schakelaar is CapsLock. De oude CapsLock functie is nog steeds beschikbaar via Shift CapsLock (alleen in LAT-modus). Als er &windows; toetsen op een toetsenbord zitten en het blijkt dat sommige niet-alfabetische toetsen verkeerd gemapt zijn in RUS-modus, dan kan de volgende regel aan XF86Config toegevoegd worden: - Voor &xfree86; 3.X: + Voor &xorg; (of + >&xfree86; 4.X): XkbVariant "winkeys" - Voor &xfree86; 4.X: + Voor &xorg; (of + &xfree86 4.X): Option "XkbVariant" "winkeys" Het Russische XKB toetsenbord hoeft niet te werken met oude versies van &xfree86;, zie bovenstaande noot voor meer informatie. Het Russische XKB toetsenbord hoeft ook niet te werken met niet-gelokaliseerde applicaties. Minimaal gelokaliseerde applicaties moeten vroeg in het programma een aanroep naar de XtSetLanguageProc (NULL, NULL,); functie doen. In KOI8-R for X Window staan meer instructies over het lokaliseren van X11-applicaties. Traditioneel Chinees voor Taiwan lokalisatie traditioneel Chinees Het &os;-Taiwan Project heeft een Chinese HOWTO voor &os; op die gebruik maakt van veel Chinese ports. De huidige redacteur voor de &os; Chinese HOWTO is Shen Chuan-Hsing statue@freebsd.sinica.edu.tw. Chuan-Hsing Shen heeft de Chinese &os; Collection (CFC) gemaakt met gebruik van &os;-Taiwan's zh-L10N-tut. De packages en scriptbestanden zijn beschikbaar op . Duits (Alle ISO 8859-1 Talen) lokalisatie Duits Slaven Rezic eserte@cs.tu-berlin.de heeft een tutorial geschreven over hoe umlauten in &os; gebruikt kunnen worden. De tutorial is in het Duits geschreven en staat op . Japans en Koreaans lokalisatie Japans lokalisatie Koreaans Japanse lokalisatie staat beschreven op en de Koreaanse lokalisatie staat op . Niet-Engelstalige &os; documentatie Sommige delen van &os; zijn naar andere talen vertaald. Hiernaar staan links op de hoofdsite of in /usr/share/doc. diff --git a/nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml index 8db84701ac..609493bed7 100644 --- a/nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/linuxemu/chapter.sgml @@ -1,4032 +1,4029 @@ Jim Mock Geherstructureerd en delen bijgewerkt door Brian N. Handy Origineel bijgedragen door Rich Murphey René Ladan Vertaald door &linux; Binaire Compatibiliteit - Samenvatting + Overzicht &os; levert binaire compatibiliteit met verscheidene andere &unix; achtige besturingssystemen, waaronder &linux;. Op dit moment kan de vraag gesteld worden waarom &os; nu precies &linux; binaries moet kunnen draaien. Het antwoord is dat veel bedrijven en ontwikkelaars alleen ontwikkelen voor &linux;, omdat dat het nieuwste hebbeding is in de wereld van computers. Dat laat &os; gebruikers al zeurend achter bij diezelfde bedrijven en ontwikkelaars om originele &os; versies van hun applicaties. Het probleem is dat veel van deze bedrijven zich niet goed realiseren hoeveel mensen hun product zouden gebruiken als er ook &os; versies van waren en de meesten blijven alleen voor &linux; ontwikkelen. Dus wat moet een &os; gebruiker doen? Hier komt de &linux; binaire compatibiliteit van &os; om de hoek kijken. In een notendop stelt de compatibiliteit &os; in staat om rond de 90% van alle &linux; applicaties zonder wijzigingen te draaien. Dit omvat applicaties zoals &staroffice;, de &linux; versie van &netscape;, &adobe; &acrobat;, RealPlayer, VMWare, &oracle;, WordPerfect, Doom, Quake en meer. Er wordt zelfs gemeld dat in sommige gevallen &linux; binaries beter presteren op &os; dan op &linux;. - - &linux; - - /proc bestandssysteem - - - Er zijn echter enkele &linux; specifieke + Er zijn echter enkele &linux;-specifieke besturingssysteemeigenschappen die niet door &os; ondersteund worden. &linux; binaries werken niet op &os; als ze overvloedig - gebruik maken van het &linux; bestandssysteem - /proc (dat anders is dan - /proc van &os;), of van &i386; specifieke - aanroepen, zoals het aanzetten van de virtuele 8086 modus. + gebruik maken van &i386; specifieke aanroepen, zoals het + aanzetten van de virtuele 8086 modus. Na het lezen van dit hoofdstuk weet de lezer: Hoe &linux; binaire compatibiliteit op een systeem aan te zetten; Hoe aanvullende &linux; gedeelde bibliotheken te installeren; Hoe &linux; applicaties op een &os; systeem te installeren; De implementatiedetails van &linux; compatibiliteit in &os;. Aangeraden voorkennis: Hoe extra software van derden te installeren (). Installatie KLD (kernel loadable object) &linux; binaire compatibiliteit staat standaard niet aan. De gemakkelijkste manier om deze functionaliteit aan te zetten is door het linux KLD object (Kernel LoaDable object) te laden. Deze module kan geladen worden door simpelweg linux op de opdrachtregel in te geven. Als &linux; compatibiliteit altijd aan moet staan, dan moet de volgende regel aan /etc/rc.conf toegevoegd worden: linux_enable="YES" Met &man.kldstat.8; kan gecontroleerd worden of de KLD geladen is: &prompt.user; kldstat Id Refs Address Size Name 1 2 0xc0100000 16bd8 kernel 7 1 0xc24db000 d000 linux.ko kernelopties LINUX Als het om enige reden ongewenst of onmogelijk is de KLD te laden, dan kan de &linux; binaire compatibiliteit statisch in de kernel gecompileerd worden door options COMPAT_LINUX aan het kernelinstellingenbestand toe te voegen. Daarna kan de nieuwe kernel zoals beschreven in geïnstalleerd worden. &linux; Runtime Bibliotheken Installeren &linux; &linux; bibliotheken installeren Dit kan op twee manieren gedaan worden: door de linux_base port te gebruiken of door ze handmatig te installeren. Installeren uit de linux_base Port portscollectie Dit is verreweg de gemakkelijkste weg om te bewandelen om de runtime bibliotheken te installeren. Het is net als het installeren van andere ports uit de portscollectie. Dit kan met het volgende commando: &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make install distclean Nu is er werkende &linux; binaire compatibiliteit. Sommige programma's kunnen klagen over onjuiste kleine versies van de systeembibliotheken. Over het algemeen schijnt dit echter geen probleem te zijn. Er kunnen verschillende versies van de emulators/linux_base port beschikbaar zijn, overeenkomend met verschillende versies van verscheidene &linux; distributies. Het is verstandig de port te installeren die het meest voldoet aan de eisen van de &linux; applicaties die geïnstalleerd gaan worden. Bibliotheken Handmatig Installeren Als de portscollectie niet is geïnstalleerd, kunnen de bibliotheken met de hand geïnstalleerd worden. Om alles te laten werken moeten de &linux; gedeelde bibliotheken waarvan het programma afhankelijk is en de runtime linker geïnstalleerd worden. Ook moet een shadow root map aangemaakt worden, /compat/linux, voor &linux; bibliotheken op een &os; systeem. Elke gedeelde bibliotheek die wordt geopend door &linux; programma's die op &os; draaien, kijken eerst in deze boomstructuur. Dus als een &linux; programma bijvoorbeeld /lib/libc.so laadt, probeert &os; eerst /compat/linux/lib/libc.so te openen, en als die niet bestaat, probeert het /lib/libc.so proberen. Gedeelde bibliotheken moeten in de schaduwmapstructuur geïnstalleerd worden in plaats van in de paden die het &linux; ld.so rapporteert. In het algemeen geldt dat alleen de eerste paar keer dat een &linux; binary wordt geïnstalleerd op een &os; systeem naar de gedeelde bibliotheken gezocht wordt waar &linux; binaries van afhankelijk zijn. Na een tijd is de verzameling van &linux; gedeelde bibliotheken op een systeem voldoende groot om nieuw geïmporteerde &linux; binaries te kunnen draaien zonder enig extra werk. Extra Gedeelde Bibliotheken Installeren gedeelde bibliotheken Wat als de linux_base port is geïnstalleerd en een applicatie nog steeds klaagt over ontbrekende gedeelde bibliotheken? Op zich zijn er twee mogelijkheden (voor het opvolgen van deze instructies zijn root rechten op een &os; systeem vereist). Als er toegang is tot een &linux; systeem kan gekeken worden welke gedeelde bibliotheken de applicatie nodig heeft en kunnen ze gekopieerd worden naar het &os systeem. Dit wordt toegelicht in het volgende voorbeeld: Stel dat FTP gebruikt is om de &linux; binary van Doom op te halen en die op een &linux; systeem staat waar toegang tot is. Dan kan met ldd linuxdoom gecontroleerd worden welke gedeelde bibliotheken er nodig zijn: &prompt.user; ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 symbolische links Alle bestanden uit de laatste kolom zijn nodig en moeten onder /compat/linux komen te staat en de namen uit de eerste kolom moeten er als symbolische links naar verwijzen. Dit betekent dat uiteindelijk deze bestanden op een &os; systeem staan: /compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Als er al een &linux; gedeelde bibliotheek met een groot revisienummer overeenstemmend met de eerste kolom van de ldd uitvoer is, dan hoeft het bestand uit de laatste kolom niet naar een systeem gekopieerd te worden. Het bestand dat er al staat moet werken. Het is aan te raden om de gedeelde bibliotheek sowieso te kopiëren als het een nieuwere versie is. De oude kan verwijderd worden, zolang de symbolische link maar naar de nieuwe wijst. Dus als deze bibliotheken op een systeem staan: /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 en een nieuwe binary zegt een latere versie nodig te hebben volgens de uitvoer van ldd: libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 Als slechts één of twee versies verouderd zijn in het laatste cijfer, dan hoeft /lib/libc.so.4.6.29 niet gekopieerd te worden, omdat het programma goed moet werken met de ietwat oudere versie. Als er echter behoefte aan is, kan besloten worden om libc.so sowieso te verplaatsen, en dat resulteert in: /compat/linux/lib/libc.so.4.6.29 /compat/linux/libc.so.4 -> lbic.so.4.6.29
Het symbolische link mechanisme is alleen nodig voor &linux; binaries. De &os; runtime linker zorgt zelf voor het kijken naar passende grote revisienummers en daar hoeft geen zorg over te bestaan.
&linux; ELF Binaries Installeren &linux; ELF binaries ELF binaries hebben soms een extra stap van branding nodig. Als er ongemerkt ELF binaries worden gedraaid, onstaat er een foutmelding zoals de volgende: &prompt.user; ./mijn-linux-elf-binary ELF binary type not known Abort Om de &os; kernel te helpen &os; ELF binaries en &linux; binaries uit elkaar te houden, kan &man.brandelf.1; gebruikt worden. &prompt.user; brandelf -t Linux mijn-linux-elf-binary GNU gereedschapskist De GNU gereedschapskist plaatst nu automatisch de juiste merkinformatie in ELF binaries, dus deze stap zou steeds overbodiger moeten worden in de toekomst. De Hostnaamresolver Instellen resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword Als DNS niet werkt of de bovenstaande melding ontstaat, dan moet /compat/linux/etc/host.conf ingesteld worden met daarin: order hosts, bind multi on De volgorde geeft aan dat /etc/hosts als eerste doorzocht wordt en DNS als tweede. Als /compat/linux/etc/host.conf niet geïnstalleerd is, vinden &linux; applicaties /etc/host.conf van &os; en klagen ze over de incompatibele &os; syntaxis. bind moet verwijderd worden als er geen naamserver is ingesteld die gebruik maakt van /etc/resolv.conf.
Murray Stokely Bijgewerkt voor &mathematica; 4.X door Bojan Bistrovic Samengevoegd met werk van &mathematica; Installeren applicaties &mathematica; Dit document beschrijft het installatieproces van de &linux; versie van &mathematica; 4.X op een &os; systeem. De &linux; versie van &mathematica; draait perfect op &os;, maar de binaries die door Wolfram geleverd worden moeten gemerkt worden zodat &os; weet dat het de Linux ABI moet gebruiken om ze uit te voeren. De &linux; versie van &mathematica; of &mathematica; for Students kan direct bij Wolfram besteld worden op . De &linux; Binaries Merken De &linux; binaries zijn geplaatst in de map Unix van de &mathematica; CDROM geleverd door Wolfram. Deze mappenstructuur moet naar de lokale harde schijf gekopieerd worden, zodat de &linux; binaries gemerkt kunnen wordt met &man.brandelf.1; voordat de installer draait: &prompt.root; mount /cdrom &prompt.root; cp -rp /cdrom/Unix/ /localdir/ &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm &prompt.root; cd /localdir/Installers/Linux/ &prompt.root; ./MathInstaller Als alternatief kan simpelweg het standaard ELF merk op Linux gezet worden voor alle ongemerkte binaries met het commando: &prompt.root; sysctl kern.fallback_elf_brand=3 Dit laat &os; aannemen dat alle ongemerkte ELF binaries de Linux ABI gebruiken en dus zou de installer rechtstreeks van de CDROM moeten kunnen draaien. &mathematica; Wachtwoord Opvragen Voordat &mathematica; kan draaien, moet er een wachtwoord komen van Wolfram dat overeenkomt met het machine ID. Ethernet MAC adres Als de &linux; compatibiliteits-runtime bibliotheken zijn geïnstalleerd en &mathematica; is uitgepaktm, dan kan het machine ID verkregen worden door mathinfo te draaien in de installatiemap. Dit machine-ID is alleen op het MAC adres van de eerste Ethernetkaart gebaseerd. &prompt.root; cd /localdir/Files/SystemFiles/Installation/Binaries/Linux &prompt.root; mathinfo disco.example.com 7115-70839-20412 Bij een registratie bij Wolfram, per email, telefoon of fax, wordt het machine ID opgegeven en zij reageren met een overeenkomstig wachtwoord dat uit groepen getallen bestaat. Deze informatie kan ingevoerd worden bij het voor de eerste keer draaien van &mathematica;, net als voor elk ander &mathematica; platform. Het &mathematica; Frontend over een Netwerk Draaien &mathematica; gebruikt enkele speciale lettertypen om tekens af te beelden die niet aanwezig zijn in een standaard lettertypeverzameling (integralen, sommen, Griekse letters, enzovoort). Het X-protocol vereist dat deze lettertypen lokaal worden geïnstalleerd. Dit betekent dat deze lettertypen gekopieerd moeten worden vanaf de CDROM of vanaf een host met &mathematica; erop naar de lokale machine. Deze lettertypen worden meestal opgeslagen in /cdrom/Unix/Files/SystemFiles/Fonts op de CDROM of in /usr/local/mathematica/SystemFiles/Fonts op de harde schijf. De eigenlijke lettertypen staan in de submap Type1 en X. Er zijn verschillende manieren om ze te installeren, zoals hieronder staat beschreven. De eerste manier is om ze te kopiëren in één van de bestaande lettertypenmappen in /usr/X11R6/lib/X11/fonts. Hiertoe dient fonts.dir bewerkt te worden door de namen van de lettertypen eraan toe te voegen het aantal lettertypen op de eerste regel te veranderen. Als alternatief kan ook eenvoudig &man.mkfontdir.1; in de map gedraaid worden waar de lettertypen heen zijn gekopieerd. De tweede manier om dit te doen is door de mappen naar /usr/X11R6/lib/X11/fonts te kopiëren: &prompt.root; cd /usr/X11R6/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; cd /usr/X11R6/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 &prompt.root; mkfontdir Voeg nu de nieuwe lettertypenmappen toe aan het lettertypenpad: &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash - Als de &xfree86; server gebruikt + Als de &xorg; server gebruikt wordt, kunnen deze lettertypenmappen automatisch geladen worden - door ze aan XF86Config toe te + door ze aan xorg.conf toe te voegen. + + Voor &xfree86; servers is het + instellingenbestand XF86Config. + + lettertypen Als er nog geen map /usr/X11R6/lib/X11/fonts/Type1 bestaat, kan de naam van de map MathType1 in het bovenstaande voorbeeld veranderd worden naar Type1. Aaron Kaplan Bijgedragen door Robert Getschmann Met dank aan &maple; Installeren applicaties Maple &maple; is een commercieel wiskundeprogramma vergelijkbaar met &mathematica;. De software is te koop op en kan daar ook geregistreerd worden voor een licentiebestand. Om deze software op &os; te installeren kunnen de volgende eenvoudige stappen gevolgd worden: Voer het INSTALL> shellscript uit van de productdistributie. Kies de RedHat optie als daarom wordt gevraagd door het installatieprogramma. Een typische installatiemap zou /usr/local/maple zijn. Bestel, als dat nog niet gedaan is, een licentie voor &maple; van Maple Waterloo Software () en kopieer deze naar /usr/local/maple/license/license.dat. Installeer de FLEXlm licentiebeheerder met het installatieshellscript INSTALL_LIC, dat geleverd wordt bij &maple;. Stel de primaire hostnaam voor de machine in voor de licentieserver. Patch het bestand /usr/local/maple/bin/maple.system.type met het volgende: ----- knip ------------------ *** maple.system.type.orig Sun Jul 8 16:35:33 2001 --- maple.system.type Sun Jul 8 16:35:51 2001 *************** *** 72,77 **** --- 72,78 ---- # the IBM RS/6000 AIX case MAPLE_BIN="bin.IBM_RISC_UNIX" ;; + "FreeBSD"|\ "Linux") # the Linux/x86 case # We have two Linux implementations, one for Red Hat and ----- knip einde van patch ----- Achter "FreeBSD"| mogen geen verdere witvelden staan. Deze patch instrueert &maple; om &os; als een &linux; systeem te herkennen. Het shellscript bin/maple roept het shellscript bin/maple.system.type aan, dat op zijn beurt uname -a aanroept om achter de naam van het besturingssysteem te komen. Afhankelijk van de naam van het besturingssysteem zoekt het uit welke binaries het moet gebruiken. Start de licentieserver. Het volgende script, geïnstalleerd als /usr/local/etc/rc.d/lmgrd.sh, is een gemakkelijke manier om lmgrd op te starten: ----- knip ------------ #! /bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX export PATH LICENSE_FILE=/usr/local/maple/license/license.dat LOG=/var/log/lmgrd.log case "$1" in start) lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2 echo -n " lmgrd" ;; stop) lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2 ;; *) echo "Usage: `basename $0` {start|stop}" 1>&2 exit 64 ;; esac exit 0 ----- knip ------------ &maple; testen: &prompt.user; cd /usr/local/maple/bin &prompt.user; ./xmaple Nu hoort het programma te draaien. Het is belangrijk om Maplesoft te schrijven om ze te laten weten dat een echte &os; versie gewenst is! Gemeenschappelijke Verborgen Gevaren De FLEXlm licentiebeheerder kan een lastig programma zijn om mee te werken. Aanvullende documentatie staat op . lmgrd staat er bekend om erg kieskeurig over het licentiebestand te zijn en core te dumpen als er een probleem is. Een correct licentiebestand ziet er zo uit: # ======================================================= # License File for UNIX Installations ("Pointer File") # ======================================================= SERVER chillig ANY #USE_SERVER VENDOR maplelmg FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \ PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \ ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \ SN=XXXXXXXXX Het serienummer en de sleutel zijn vervangen door X'en. chillig is de hostnaam. Het bewerken van het licentiebestand lukt zolang de regel FEATURE niet verandert (die beschermd is door de licentiesleutel). Dan Pelleg Bijgedragen door &matlab; Installeren applicaties &matlab; Dit document beschrijft het installatieproces van de &linux; versie van &matlab; 6.5 op een &os; systeem. Het werkt best goed, met uitzondering van de &java.virtual.machine; (zie ). De &linux; versie van &matlab; kan besteld worden bij The MathWorks op . Er dient ook een licentiebestand of instructies hoe dat te maken te zijn. Het is belangrijk om Maplesoft te schrijven om ze te laten weten dat een echte &os; versie gewenst is! &matlab; Installeren Om &matlab; te installeren: Laad de installatie-CD en mount die. Start het installatiescript als root: &prompt.root; /compat/linux/bin/sh /cdrom/install Het is een grafisch installatieprogramma. Als er foutmeldingen verschijnen dat het programma geen scherm kan openen, kan setenv HOME ~GEBRUIKER uitgevoerd worden, waar GEBRUIKER de gebruiker is waarmee &man.su.1; is gedaan. Als om de &matlab; rootmap wordt gevraagd, dient /compat/linux/usr/local/matlab opgegeven te worden. Voer op de commandoregel het volgende uit om de rest van het installatieproces gemakkelijk te houden: set MATLAB=/compat/linux/usr/local/matlab. Wijzig het licentiebestand zoals aangegeven tijdens het verkrijgen van de licentie voor &matlab;. Dit bestand kan van tevoren gemaakt worden met een tekstverwerker en door het te kopiëren naar $MATLAB/license.dat voordat het installatieprogramma vraagt om het te bewerken. Maak het installatieproces af. Nu is de installatie van &matlab; compleet. De volgende stappen lijmen het aan het &os; systeem. Licentiebeheerder Starten Maak symbolische links voor de scriptbestanden van de licentiebeheerder: &prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW &prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW Maak een opstartbestand in /usr/local/etc/rc.d/flexlm.sh. Onderstaand voorbeeld is een gewijzigde versie van het meegeleverde $MATLAB/etc/rc.lm.glnx86. De wijzigingen omvatten bestandslocaties en het starten van de licentiebeheerder onder &linux;-emulatie. #!/bin/sh case "$1" in start) if [ -f /usr/local/etc/lmboot_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u gebruikersnaam && echo 'MATLAB_lmgrd' fi ;; stop) if [ -f /usr/local/etc/lmdown_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1 fi ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0 Het bestand moet uitvoerbaar zijn: &prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.sh Ook moet bovenstaande gebruikersnaam vervangen worden door een geldige gebruikersnaam op het systeem (maar niet door root). Start de licentiebeheerder op met het commando: &prompt.root; /usr/local/etc/rc.d/flexlm.sh start De &java; Runtime-omgeving Linken Verander de &java; Runtime Environment Link naar een die werkt op &os;: &prompt.root; cd $MATLAB/sys/java/jre/glnx86 &prompt.root; unlink jre; ln -s ./jre1.1.8 ./jre &matlab; Opstartscript Maken Plaats het volgende startscript in /usr/local/bin/matlab: #!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@" Geef vervolgens het commando chmod +x /usr/local/bin/matlab. Afhankelijk van de versie van emulators/linux_base, kunnen er fouten optreden als dit script draait. Om dat te voorkomen, dient in /compat/linux/usr/local/matlab/bin/matlab de regel: if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then (in versie 13.0.1 staat dit op regel 410) veranderd te worden in: if test -L $newbase; then &matlab; Afsluitscript Maken Het volgende is nodig om een probleem op te lossen dat samenhangt met het onjuist afsluiten van &matlab;. Maak het bestand $MATLAB/toolbox/local/finish.m dat alleen de volgende regel bevat: ! $MATLAB/bin/finish.sh $MATLAB$ is hier letterlijk bedoeld. In dezelfde map staan de bestanden finishsav.m en finishdlg.m, die de mogelijkheid geven om de werkomgeving te bewaren vóór het afsluiten. Als één van deze scripts gebruikt wordt, dient de bovenstaande regel direct na het commando save ingevoegd te worden. Maak het bestand $MATLAB/bin/finish.sh, dat het volgende bevat: #!/usr/compat/linux/bin/sh (sleep 5; killall -1 matlab_helper) & exit 0 Maak het bestand uitvoerbaar: &prompt.root; chmod +x $MATLAB/bin/finish.sh &matlab; Gebruiken Nu kan met matlab het programma gestart worden. Marcel Moolenaar Bijgedragen door &oracle; Installeren applicaties Oracle Voorwoord Hieronder wordt het installatieproces van &oracle; 8.0.5 en &oracle; 8.0.5.1 Enterprise Edition voor &linux; op een &os;-machine beschreven. De &linux;-omgeving Installeren Uit de portscollectie dienen emulators/linux_base en devel/linux_devtools geïnstalleerd te zijn. Als er problemen zijn met deze ports, kan het zijn dat de packages of oudere versies uit de portscollectie gebruikt moeten worden. Om de intelligente agent te draaien, moet ook het Red Hat Tcl package geïnstalleerd worden: tcl-8.0.3-20.i386.rpm. Het algemene commando om packages te installeren met de officiële RPM port (archivers/rpm) is: &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package De installatie van het package hoort foutloos te verlopen. De &oracle;-omgeving Creëren Voordat &oracle; geïnstalleerd kan worden, moet een juiste omgeving opgezet worden. Dit document beschrijft alleen welke speciale dingen gedaan moeten worden om &oracle; voor &linux; op &os; te draaien, en niet wat beschreven staat in de &oracle; installatiehandleiding. Kerneloptimalisatie kerneloptimalisatie Zoals beschreven staat in de &oracle; installatiehandleiding moet de maximale grootte van het gedeelde geheugen ingesteld worden. Op &os; moet SHMMAX niet gebruikt worden. SHMMAX wordt slechts uit SHMMAXPGS en PGSIZE berekend. Daarom dient SHMMAXPGS gedefinieerd te worden. Alle andere opties kunnen gebruikt worden zoals in de handleiding staat beschreven. Bijvoorbeeld: options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61 Deze opties kunnen naargelang het gebruik van &oracle; ingesteld worden. Ook de volgende opties dienen in het kernelinstellingenbestand te staan: options SYSVSHM #SysV gedeeld geheugen options SYSVSEM #SysV semaforen options SYSVMSG #SysV interprocescommunicatie &oracle; Account Creeër een oracle account op dezelfde manier als elk ander account. Het oracle account is alleen bijzonder in het opzicht dat het een &linux; shell moet hebben. Dat kan door /compat/linux/bin/bash toe te voegen aan /etc/shells en de shell voor het oracle account in te stellen op /compat/linux/bin/bash. Omgeving Naast de normale &oracle; variabelen als ORACLE_HOME en ORACLE_SID moeten de volgende omgevingsvariabelen ingesteld worden: Variabele Waarde LD_LIBRARY_PATH $ORACLE_HOME/lib CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip PATH /compat/linux/bin; /compat/linux/sbin; /compat/linux/usr/bin; /compat/linux/usr/sbin; /bin; /sbin; /usr/bin; /usr/sbin; /usr/local/bin; $ORACLE_HOME/bin Het is aan te raden om alle omgevingsvariabelen in .profile in te stellen. Een volledig voorbeeld is: ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH &oracle; Installeren Wegens een kleine inconsistentie in de &linux; emulator moet de map .oracle aangemaakt worden in /var/tmp voordat het installatieprogramma wordt gestart. In deze map moet òf door iedereen geschreven kunnen worden òf de oracle gebruiker moet de eigenaar zijn. Nu hoort &oracle; zonder problemen te installeren. Bij problemen dienen eerst de &oracle; distributie en/of de instellingen gecontroleerd te worden! Nadat &oracle; is geïnstalleerd, moeten de patches uit de volgende twee secties geïnstalleerd worden. Een veelvoorkomend probleem is dat de adapter voor het TCP-protocol niet goed is geïnstalleerd. De consequentie daarvan is dat er geen TCP-listeners gestart kunnen worden. De volgende acties helpen om dit probleem op te lossen: &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk ntcontab.o &prompt.root; cd $ORACLE_HOME/lib &prompt.root; ar r libnetwork.a ntcontab.o &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk install Hierna dient root.sh nogmaals te draaien! <filename>root.sh</filename> Patchen Als &oracle; geïnstalleerd wordt, worden sommige acties die als root moeten worden uitgevoerd geregistreerd in een shellscript met de naam root.sh. Dit script komt in de map orainst te staan. De volgende patch dient uitgevoerd te worden op root.sh om het de juiste locatie van chown te laten gebruiken of als alternatief kan het script onder een originele &linux; shell gedraaid worden *** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 --- orainst/root.sh Mon Dec 28 15:58:53 1998 *************** *** 31,37 **** # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/bin/chown # # Define variables to be used in this script --- 31,37 ---- # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/usr/sbin/chown # # Define variables to be used in this script Als &oracle; niet vanaf een CD wordt geïnstalleerd, kan de broncode van root.sh aangepast worden. Die heet rthd.sh en staat in de map orainst in de broncodestructuur. genclntsh Patchen Het script genclntsh wordt gebruikt om é´n enkele gedeelde bibliotheek voor de client aan te maken. Het wordt gebruikt tijdens het maken van de demonstraties. Met de volgende patch wordt de definitie van PATH uitgecommentarieerd: *** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998 *************** *** 32,38 **** # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst --- 32,38 ---- # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst &oracle; Draaien Als de instructies worden gevolgd, draait &oracle; als op &linux; zelf. Holger Kipp Bijgedragen door Valentino Vaschetto Originele versie omgezet naar SGML door &sap.r3; Installeren applicaties &sap.r3; Installaties van &sap; Systemen die &os; gebruiken worden niet ondersteund door het &sap; ondersteuningsteam. Zij bieden alleen ondersteuning voor gecertificeerde platformen. Voorwoord Dit document beschrijft een mogelijke manier om een &sap.r3; System met &oracle; Database voor &linux; op een &os; machine, inclusief de installatie van &os; en &oracle;. Er worden twee configuraties beschreven: &sap.r3; 4.6B (IDES) met &oracle; 8.0.5 op &os; 4.3–STABLE; &sap.r3; 4.6C met &oracle; 8.1.7 op &os; 4.5–STABLE. Hoewel dit document alle belangrijke stappen in meer detail probeert te beschrijven, is het niet bedoeld als een vervanging voor de &oracle; en &sap.r3; installatiehandleidingen. Voor specifieke vragen wordt verwezen naar de documentatie die geleverd wordt bij de &sap.r3; &linux; editie voor &sap; en &oracle; en de bronnen van &oracle; en &sap; OSS. Software Voor de &sap; installaties zijn de volgende CDROMs gebruikt: &sap.r3; 4.6B, &oracle; 8.0.5 Naam Nummer Beschrijving KERNEL 51009113 SAP Kernel Oracle / Installation / AIX, Linux, Solaris RDBMS 51007558 Oracle / RDBMS 8.0.5.X / Linux EXPORT1 51010208 IDES / DB-Export / Disc 1 of 6 EXPORT2 51010209 IDES / DB-Export / Disc 2 of 6 EXPORT3 51010210 IDES / DB-Export / Disc 3 of 6 EXPORT4 51010211 IDES / DB-Export / Disc 4 of 6 EXPORT5 51010212 IDES / DB-Export / Disc 5 of 6 EXPORT6 51010213 IDES / DB-Export / Disc 6 of 6 Ook zijn de &oracle; 8 Server (Pre-productie versie 8.0.5 voor &linux; kernelversie 2.0.33) CD gebruikt, die niet echt noodzakelijk is en &os; 4.3-STABLE (een paar dagen na de 4.3-RELEASE). &sap.r3; 4.6C SR2, &oracle; 8.1.7 Naam Nummer Beschrijving KERNEL 51014004 SAP Kernel Oracle / SAP Kernel Version 4.6D / DEC, Linux RDBMS 51012930 Oracle 8.1.7/ RDBMS / Linux EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 1 of 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 2 of 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 3 of 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 4 of 4 LANG1 51013954 Release 4.6C SR2 / Language / DE, EN, FR / Disc 1 van 3 Afhankelijk van de talen die geïnstalleerd moeten worden kunnen aanvullende taal-CDs nodig zijn. Hier worden DE en EN gebruikt, dus is alleen de eerste taal-CD nodig. Een kleine kanttekening is dat de nummers van alle vier de EXPORT CDs identiek zijn. Ook hebben alle drie de taal-CDs hetzelfde nummer (dit verschilt met de 4.6B IDES release CD-nummering). Ten tijde van schrijven draait deze installatie op &os; 4.5-STABLE (20.03.2002). Opmerkingen over &sap; Het wordt aangeraden de volgende notities vóór de installatie van &sap.r3; gelezen te hebben. Ze waren bruikbaar tijdens de installatie: &sap.r3; 4.6B, &oracle; 8.0.5 Nummer Titel 0171356 SAP Software on Linux: Essential Comments 0201147 INST: 4.6C R/3 Inst. on UNIX - Oracle 0373203 Update / Migration Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX 0072984 Release of Digital UNIX 4.0B for Oracle 0130581 R3SETUP step DIPGNTAB terminates 0144978 Your system has not been installed correctly 0162266 Questions and tips for R3SETUP on Windows NT / W2K &sap.r3; 4.6C, &oracle; 8.1.7 Nummer Titel 0015023 Initializing table TCPDB (RSXP0004) (EBCDIC) 0045619 R/3 with several languages or typefaces 0171356 SAP Software on Linux: Essential Comments 0195603 RedHat 6.1 Enterprise version: Known problems 0212876 The new archiving tool SAPCAR 0300900 Linux: Released DELL Hardware 0377187 RedHat 6.2: important remarks 0387074 INST: R/3 4.6C SR2 Installation on UNIX 0387077 INST: R/3 4.6C SR2 Inst. on UNIX - Oracle 0387078 SAP Software on UNIX: OS Dependencies 4.6C SR2 Benodigde Hardware De volgende uitrusting is voldoende voor de installatie van een &sap.r3; Systeem. Voor productiegebruik geldt natuurlijk dat exactere gegevens nodig zijn: Component 4.6B 4.6C Processor 2 x 800MHz &pentium; III 2 x 800MHz &pentium; III Geheugen 1GB ECC 2GB ECC Hardeschijfruimte 50-60GB (IDES) 50-60GB (IDES) Voor productiegebruik zijn &xeon; processoren met een grote cache, schijftoegang op hoge snelheid (SCSI, RAID-hardwarecontroller) USV en ECC-RAM aanbevolen. De grote hoeveelheid benodigde schijfruimte is te wijten aan het vooringestelde IDES-systeem, dat 27 GB aan databasebestanden aanmaakt tijdens de installatie. Deze ruimte is ook voldoende voor beginnende productiesystemen en applicatiegegevens. &sap.r3; 4.6B, &oracle; 8.0.5 De volgende kant-en-klare hardware werd gebruikt: een dual processorbord met 2 800 MHz &pentium;nbsp;III processoren, &adaptec; 21960 Ultra160 SCSI adapter (om een 40/80 GB DLT tapedrive en CDROM aan te spreken), &mylex; &acceleraid; (2 kanalen, firmware 6.00-1-00 met 32 MB RAM). Aan de &mylex; RAID-controller zijn twee 17 GB harde schijven (gespiegeld) en vier 36 GB harde schijven (RAID-niveau 5) bevestigd. &sap.r3; 4.6C, &oracle; 8.1.7 Voor deze installatie werd een &dell; &poweredge; 2500 gebruikt: een dual processorbord met twee 1000 MHz &pentium; III processoren (256 kB cache), 2 GB PC133 ECC SDRAM, PERC/3 DC PCI RAID-controller met 128 MB en een EIDE DVD-ROM-drive. Aan de RAID-controller zijn twee 18 GB harde schijven (gespiegeld) en vier 36 GB harde schijven (RAID-niveau 5) bevestigd. Installatie van &os; Eerst moet &os; geïnstalleerd worden. Er zijn verschillende manieren om dit te doen (&os; 4.3 was geïnstalleerd via FTP, &os; 4.5 direct vanaf de RELEASE CD). Er staat meer informatie in . Schijfindeling Om het eenvoudig te houden, werd voor zowel de &sap.r3; 46B installatie als de &sap.r3; 46C SR2 installatie dezelfde schijfindeling gebruikt. Alleen de apparaatnamen veranderden, omdat de installaties op verschillende hardware werden gedaan (/dev/da respectievelijk /dev/amr, dus als een AMI &megaraid; wordt gebruikt, is /dev/amr0s1a te zien in plaats van /dev/da0s1a): Bestandssysteem Grootte (1k-blokken) Grootte (GB) Gemount aan /dev/da0s1a 1.016.303 1 / /dev/da0s1b 6 swap /dev/da0s1e 2.032.623 2 /var /dev/da0s1f 8.205.339 8 /usr /dev/da1s1e 45.734.361 45 /compat/linux/oracle /dev/da1s1f 2.032.623 2 /compat/linux/sapmnt /dev/da1s1g 2.032.623 2 /compat/linux/usr/sap De twee logische drives dienen tevoren met de &mylex;- of PERC/3 RAID-software ingesteld en geïnitialiseerd te worden. De software kan tijdens de opstartfase van het BIOS gestart worden. De schijfindelingen wijken licht af van de aanbevelingen van &sap;, omdat &sap; aanbeveelt om de &oracle; submappen (en enkele andere) gescheiden te mounten. Hier is besloten om ze omwille van de eenvoud gewoon als echte submappen aan te maken. <command>make world</command> en een Nieuwe Kernel Nu dient de nieuwste -STABLE-broncode gedownload te worden. Nadat het kernelinstellingenbestand is aangepast, kunnen de wereld en de kernel opnieuw gebouwd worden. Hier moeten ook de kernelparameters in staan die nodig zijn voor &sap.r3; en &oracle;. De &linux;-omgeving Installeren Het &linux; Basissysteem Installeren Eerst moet de linux_base port geïnstalleerd worden (als root): &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make install distclean De &linux; Ontwikkelomgeving Installeren De &linux;-ontwikkelomgeving is volgens noodzakelijk om &oracle; op &os; te installeren: &prompt.root; cd /usr/ports/devel/linux_devtools &prompt.root; make install distclean De &linux;-ontwikkelomgeving is alleen voor de &sap.r3; 46B IDES installatie geïnstalleerd. Het is niet nodig als de &oracle; DB niet opnieuw wordt gelinkt op het &os;-systeem. Dit is het geval als de &oracle; tarball van een &linux;-systeem wordt gebruikt. De Benodigde RPM's Installeren RPM's Om het R3SETUP programma te starten is PAM-ondersteuning nodig. Tijdens de eerste installatie van &sap; op &os; 4.3-STABLE is geprobeerd om PAM met alle benodigde packages te installeren en uiteindelijk is de installatie van het PAM-package afgedwongen, wat werkte. Voor &sap.r3; 4.6C SR 2 is we meteen de installatie van het PAM RPM afgedwongen, wat ook werkte, dus lijkt het erop dat de afhankelijke packages niet nodig zijn: &prompt.root; rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \ pam-0.68-7.rpm Om &oracle; 8.0.5 de intelligente agent te laten draaien, moest ook het Tcl-package van RedHat tcl-8.0.5-30.i386.prm geïnstalleerd worden (anders mislukt het herlinken tijdens de installatie van &oracle;). Er zijn nog wat andere gevallen met betrekking tot het herlinken van &oracle;, maar dat is een &oracle; &linux;-geval en niet &os;-specifiek. Aanvullende Hints Het kan ook een goed idee zijn om linprocfs aan /etc/fstab toe te voegen. Meer informatie is te vinden in &man.linprocfs.5;. Een andere parameter om in te stellen is kern.fallback_elf_brand=3 in /etc/sysctl.conf. De &sap.r3;-omgeving Maken De Benodigde Bestandssystemen en Mountpunten Creëren Voor een eenvoudige installatie is het voldoende om de volgende bestandssystemen aan te maken: mountpunt grootte in GB /compat/linux/oracle 45 GB /compat/linux/sapmnt 2 GB /compat/linux/usr/sap 2 GB Het is ook noodzakelijk om enige mounts te maken, anders klaagt de &sap; Installer als die de gemaakte mounts controleert: &prompt.root; ln -s /compat/linux/oracle /oracle &prompt.root; ln -s /compat/linux/sapmnt /sapmnt &prompt.root; ln -s /compat/linux/usr/sap /usr/sap Mogelijke foutmeldingen tijdens de installatie zijn (hier met System PRD en de &sap.r3; 4.6C SR2-installatie): INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200 Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to /sapmnt/PRD/exe. Creating if it does not exist... WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400 Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The program cannot go on as long as this link exists at this location. Move the link to another location. ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0 can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content '/sapmnt/PRD/exe' Gebruikers en Mappen Aanmaken &sap.r3; heeft twee gebruikers en drie groepen nodig. De gebruikersnamen zijn afhankelijk van de &sap; system ID (SID) die uit drie letters bestaat. Enkele van deze SIDs zijn gereserveerd door &sap; (bijvoorbeeld SAP en NIX. In de &sap;-documentatie staat een complete lijst). Voor de IDES-installatie is IDS gebruikt, voor de 4.6C SR2-installatie PRD, omdat dat systeem bedoeld is voor productiegebruik. Daarvoor zijn de volgende groepen gebruikt (groep-IDs kunnen afwijken, dat zijn gewoon de waardes die voor deze specifieke installatie gebruikt zijn): groep-ID groepsnaam beschrijving 100 dba DataBase-Administrator 101 sapsys &sap; System 102 oper DataBase-Operator Voor een standaard &oracle;- installatie wordt slechts é´n groep, dba, gebruikt. De groep oper gebruikt ook de groep dba (er staat meer informatie in de &oracle;- en &sap;-documentatie). Tevens zijn de volgende gebruikers nodig: gebruikers-ID gebruikersnaam generieke naam groep aanvullende groepen beschrijving 1000 idsadm/prdadm sidadm sapsys oper &sap;-beheerder 1002 oraids/oraprd orasid dba oper &oracle;-beheerder De volgende regels voor &man.adduser.8; zijn nodig om de &sap;-beheerder-gebruiker toe te voegen: Name: sidadm Password: ****** Fullname: SAP-beheerderSID Uid: 1000 Gid: 101 (sapsys) Class: Groups: sapsys dba HOME: /home/sidadm Shell: bash (/compat/linux/bin/bash) en deze voor de &oracle;-beheerder-gebruiker: Name: orasid Password: ****** Fullname: Oracle-beheerderSID Uid: 1002 Gid: 100 (dba) Class: Groups: dba HOME: /oracle/sid Shell: bash (/compat/linux/bin/bash) De &oracle;-beheerder moet ook in de groep oper zitten als de groepen dba en oper beiden gebruikt worden. Mappen Aanmaken De volgende mappen worden normaalgesproken als aparte bestandssystemen aangemaakt. Dit is geheel afhankelijk van de behoefte. Hier is ervoor gekozen om ze als simpele mappen aan te maken, omdat ze toch allemaal op dezelfde RAID-5 zitten: Eerst worden de eigenaren en rechten van sommige mappen ingesteld (als root): &prompt.root; chmod 775 /oracle &prompt.root; chmod 777 /sapmnt &prompt.root; chown root:dba /oracle &prompt.root; chown sidadm:sapsys /compat/linux/usr/sap &prompt.root; chmod 775 /compat/linux/usr/sap Als tweede worden de mappen als gebruiker orasid aangemaakt. Dat zijn allemaal submappen van /oracleSID: &prompt.root; su - orasid &prompt.root; cd /oracle/SID &prompt.root; mkdir mirrlogA mirrlogB origlogA origlogB &prompt.root; mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6 &prompt.root; mkdir saparch sapreorg &prompt.root; exit Voor de &oracle; 8.1.7-installatie zijn enkele aanvullende mappen nodig: &prompt.root; su - orasid &prompt.root; cd /oracle &prompt.root; mkdir 805_32 &prompt.root; mkdir client stage &prompt.root; mkdir client/80x_32 &prompt.root; mkdir stage/817_32 &prompt.root; cd /oracle/SID &prompt.root; mkdir 817_32 De map client/80x_32 wordt met precies deze naam gebruikt. De x mag niet door een getal of iets dergelijs vervangen worden. In de derde stap worden de mappen als gebruiker sidadm aangemaakt: &prompt.root; su - sidadm &prompt.root; cd /usr/sap &prompt.root; mkdir SID &prompt.root; mkdir trans &prompt.root; exit Regels in <filename>/etc/services</filename> Voor &sap.r3; zijn enkele regels in het bestand /etc/services nodig, die niet correct worden ingesteld tijdens de installatie op &os;. De volgende regels moeten toegevoegd worden (op zijn minst die regels die met een instantienummer overeenkomen, in dit geval 00. Het kan geen kwaad om alle regels van 00 tot en met 99 toe te voegen voor dp, gw, sp en ms). Als er een SAProuter gebruikt gaat worden of toegang tot &sap; OSS nodig is, dan is 99 ook nodig, aangezien poort 3299 gewoonlijk wordt gebruikt voor het SAProuter-proces op het doelsysteem: sapdp00 3200/tcp # SAP-dispatcher. 3200 + instantienummer sapgw00 3300/tcp # SAP-gateway. 3300 + instantienummer sapsp00 3400/tcp # 3400 + instantienummer sapms00 3500/tcp # 3500 + instantienummer sapmsSID 3600/tcp # SAP-berichtenserver. 3600 + instantienummer sapgw00s 4800/tcp # veilige SAP-gateway 4800 + instantienummer Benodigde Lokalisaties locale &sap; heeft tenminste twee lokalisaties nodig die geen deel uitmaken van de standaard RedHat-installatie. &sap; biedt de benodigde RPMs als downloadbare bestanden op hun FTP-server aan (die alleen toegankelijk is voor klanten met OSS-toegang). In notitie 0171356 staat een lijst van de benodigde RPMs. Het is ook mogelijk om gewoon de juiste links aan te maken (bijvoorbeeld vanuit de_DE en en_US), maar dat is niet aan te raden voor productiesystemen (alhoewel het probleemloos op het IDES-systeem werkte). De volgende lokalisaties zijn nodig: de_DE.ISO-8859-1 en_US.ISO-8859-1 Nu moeten de volgende links gemaakt worden: &prompt.root; cd /compat/linux/usr/share/locale &prompt.root; ln -s de_DE de_DE.ISO-8859-1 &prompt.root; ln -s en_US en_US.ISO-8859-1 Als ze niet aanwezig zijn, onstaan er problemen tijdens de installatie. Als ze dan consequent genegeerd worden (door de STATUS van de probleemstap op OK te zetten in het bestand CENTRDB.R3S), is het niet mogelijk om op het &sap;- systeem aan te melden zonder wat extra moeite. Kerneloptimalisatie kerneloptimalisatie &sap.r3;-systemen hebben veel bronnen nodig. Daarom zijn de volgende parameters toegevoegd aan het kernelinstellingenbestand: #Stel deze in voor geheugengierigheid (SAP en Oracle) options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" #System-V-opties nodig. options SYSVSHM # SysV-stijl gedeeld geheugen options SHMMAXPGS=262144 #maximum aantal gedeelde geheugenpagina's #options SHMMAXPGS=393216 #gebruik dit voor de 46C installatieparameters options SHMMNI=256 #maximun aantal identifier-interfaces voor gedeeld geheugen options SHMSEG=100 #maximum aantal gedeeld-geheugensegmenten per proces options SYSVMSG #SysV-stijl berichtenwachtrijen options MSGSEG=32767 #maximum aantal berichtsegmenten in systeem options MSGSSZ=32 #grootte van berichtensegment. MOET macht van 2 zijn options MSGMNB=65535 #maximum aantal tekens per berichtenwachtrij options MSGTQL=2046 #maximum aantal berichten in systeem options SYSVSEM #SysV-stijl semaforen options SEMMNU=256 #aantal semafoor-UNDO-structuren options SEMMNS=1024 #aantal semaforen in systeem options SEMMNI=520 #aantal semafoor-identifiers options SEMUME=100 #aantal UNDO-sleutels De minimumwaarden zijn aangegeven in de documentatie van &sap;. Omdat er geen beschrijving voor &linux; is, wordt verwezen naar de HP-UX-sectie (32 bit) voor meer informatie. Omdat het systeem voor de 4.6C SR2-installatie meer hoofdgeheugen heeft, kunnen de gedeelde segmenten voor &sap; en &oracle; groter zijn.. Daarom kan voor een groter aantal pagina's voor het gedeelde geheugen gekozen worden. Op een standaardinstallatie van &os; 4.5 op &i386; moeten MAXDSIZ en DFLDSIZ op maximaal 1 GB blijven staan. Anders kunnen er vreemde fouten als ORA-27102: out of memory en Linux Error 12: Cannot allocate memory optreden. &sap.r3; Installeren De &sap;-CDROMs Voorbereiden Tijdens de installatie moeten veel CDROMs gemount en gedismount worden. Als er voldoende CDROM-drives zijn, kunnen ze allemaal tegelijk gemount worden. Hier is besloten om de inhoud van de CDROMs naar de overeenkomende mappen te kopiëren: /oracle/SID/sapreorg/cd-naam Hierboven is cd-naam één van KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 en EXPORT6 voor de 4.6B/IDES-installatie en één van KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 en LANG voor de 4.6C SR2-installatie. Alle bestandsnamen op de gemounte CD's moeten in hoofdletters staan of anders kan er gebruik gemaakt worden van de optie bij het mounten: &prompt.root; mount_cd9660 -g /dev/cd0a /mnt &prompt.root; cp -R /mnt/* /oracle/SID/sapreorg/cd-naam &prompt.root; umount /mnt Het Installatiescript Uitvoeren Eerst moet er een map install worden aangemaakt: &prompt.root; /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH De IDES-installatie (4.6B) komt met een volledig aangepast &sap.r3; -demonstratiesysteem, dus zijn er zes in plaats van slechts drie EXPORT-CD's. Op dit moment dient het installatiesjabloon CENTRDB.R3S voor het installeren van een standaard centrale instantie (&r3; met database), niet de IDES centrale instantie, dus moet de overeenkomende CENTRDB.R3S vanuit de map EXPORT1 gekopieerd worden, anders vraagt R5SETUP slechts om drie EXPORT-CD's. De nieuwere uitgave &sap; 4.6 SR2 komt met vier EXPORT-CD's. Het parameterbestand dat de installatiestappen beheert is CENTRAL.R3S. In tegenstelling tot eerdere uitgaven zijn er geen aparte installatiesjablonen voor een centrale instantie met of zonder database. &sap; gebruikt een apart sjabloon voor de installatie van de database. Om de installatie op een later tijdstip te opnieuw te starten is het echter oldoende om met het originele bestand opnieuw te starten. Tijdens en na de installatie eist &sap; dat hostname alleen de naam van de computer en niet de volledig gekwalificeerde domeinnaam teruggeeft. Dus dient òf de computernaam op deze manier ingesteld te worden, òf een alias ingesteld te worden met alias hostname='hostname -s' voor zowel orasid als sidadm (en voor root tijdens minimaal de installatiestappen die als root worden uitgevoerd). Het is ook mogelijk om de geïnstalleerde bestanden .profile en .login van beide gebruikers die tijdens de installatie worden geïnstalleerd aan te passen. Start <command>R3SETUP</command> 4.6B Ben er zeker van dat LD_LIBRARY_PATH juist is ingesteld: &prompt.root; export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib Start R3SETUP als root vanuit de installatiemap: &prompt.root; cd /oracle/IDS/sapreorg/install &prompt.root; ./R3SETUP -f CENTRDB.R3S Het script stelt vervolgens wat vragen (standaardantwoorden in haken, gevolgd door de eigenlijke invoer): Vraag Standaard Invoer Enter SAP System ID [C11] IDSEnter Enter SAP Instance Number [00] Enter Enter SAPMOUNT Directory [/sapmnt] Enter Enter name of SAP central host [troubadix.domain.de] Enter Enter name of SAP db host [troubadix] Enter Select character set [1] (WE8DEC) Enter Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 1Enter Extract Oracle Client archive [1] (Yes, extract) Enter Enter path to KERNEL CD [/sapcd] /oracle/IDS/sapreorg/KERNEL Enter path to RDBMS CD [/sapcd] /oracle/IDS/sapreorg/RDBMS Enter path to EXPORT1 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT1 Directory to copy EXPORT1 CD [/oracle/IDS/sapreorg/CD4_DIR] Enter Enter path to EXPORT2 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT2 Directory to copy EXPORT2 CD [/oracle/IDS/sapreorg/CD5_DIR] Enter Enter path to EXPORT3 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT3 Directory to copy EXPORT3 CD [/oracle/IDS/sapreorg/CD6_DIR] Enter Enter path to EXPORT4 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT4 Directory to copy EXPORT4 CD [/oracle/IDS/sapreorg/CD7_DIR] Enter Enter path to EXPORT5 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT5 Directory to copy EXPORT5 CD [/oracle/IDS/sapreorg/CD8_DIR] Enter Enter path to EXPORT6 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT6 Directory to copy EXPORT6 CD [/oracle/IDS/sapreorg/CD9_DIR] Enter Enter amount of RAM for SAP + DB 850Enter (in Megabytes) Service Entry Message Server [3600] Enter Enter Group-ID of sapsys [101] Enter Enter Group-ID of oper [102] Enter Enter Group-ID of dba [100] Enter Enter User-ID of sidadm [1000] Enter Enter User-ID of orasid [1002] Enter Number of parallel procs [2] Enter Als de CD's niet naar de verschillende plaatsen gekopieerd waren, kan het &sap;-installatieprogramma de benodigde CD niet vinden (geïdentificeerd door het bestand LABEL.ASC op de CD) en vraagt het om de CD te mounten en het mountpad te bevestigen of in te voeren. Het bestand CENTRDB.R3S kan fouten bevatten. In dit geval vroeg het nogmaals om de EXPORT4 CD maar gaf het wel de juiste sleutel (6_LOCATION, daarna 7_LOCATION enzovoorts) aan, dus kon gewoon doorgegaan worden met het invoeren van de juiste waarden. Afgezien van enkele problemen die hieronder genoemd worden, hoort alles vanzelf te gaan tot het punt waar de software voor de &oracle;-database geïnstalleerd moet worden. <command>R3SETUP</command> 4.6C SR2 Starten LD_LIBRARY_PATH moet juist ingesteld zijn. Dit is een andere waarde dan die van de 4.6B installatie met &oracle; 8.0.5: &prompt.root; export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib Start R3SETUP als gebruiker root vanuit de installatiemap: &prompt.root; cd /oracle/PRD/sapreorg/install &prompt.root; ./R3SETUP -f CENTRAL.R3S Het script stelt vervolgens enkele vragen (standaardantwoorden tussen haken, gevolgd door de eigenlijke invoer): Vraag Standaard Invoer Enter SAP System ID [C11] PRDEnter Enter SAP Instance Number [00] Enter Enter SAPMOUNT Directory [/sapmnt] Enter Enter name of SAP central host [majestix] Enter Enter Database System ID [PRD] PRDEnter Enter name of SAP db host [majestix] Enter Select character set [1] (WE8DEC) Enter Enter Oracle server version (2) Oracle 8.1.7 2Enter Extract Oracle Client archive [1] (Yes, extract) Enter Enter path to KERNEL CD [/sapcd] /oracle/PRD/sapreorg/KERNEL Enter amount of RAM for SAP + DB 2044 1800Enter (in Megabytes) Service Entry Message Server [3600] Enter Enter Group-ID of sapsys [100] Enter Enter Group-ID of oper [101] Enter Enter Group-ID of dba [102] Enter Enter User-ID of oraprd [1002] Enter Enter User-ID of prdadm [1000] Enter LDAP support 3Enter (no support) Installation step completed [1] (continue) Enter Choose installation service [1] (DB inst,file) Enter Tot dusver geeft het aanmaken van gebruikers een fout in de fases OSUSERDBSID_IND_ORA (voor het aanmaken van de gebruiker orasid) en OSUSERIDADM_IND_ORA (voor het aanmaken van de gebruiker sidadm). &oracle; 8.0.5 Installeren Mogelijke problemen staan beschreven in de &sap; Notes en &oracle; Readme bestanden met betrekking tot &linux; en &oracle; DB. De meeste, zoniet alle, problemen komen door incompatibele bibliotheken. Meer informatie over het installeren van &oracle; staat in &oracle; Installeren. &oracle; 8.0.5 Installeren met <command>orainst</command> Als &oracle; 8.0.5 gebruikt moet worden, zijn enkele bibliotheken nodig voor het met succes herlinken, omdat &oracle; 8.0.5 met een oude versie van glibc gelinkt was (RedHat 6.0) en RedHat 6.1 reeds een nieuwere glibc gebruikt. De volgende aanvullende packages moeten geïnstalleerd worden om er zeker van te zijn dat het linken lukt: compat-libs-5.2-2.i386.rpm compat-glibc-5.2-2.0.7.2.i386.rpm compat-egcs-5.2-1.0.3a.1.i386.rpm compat-egcs-c++-5.2.1.0.3a.1.i386.rpm compat-binutils-5.2-2.9.1.0.23.1.i386.rpm In de &sap; Notes of &oracle; Readme staat meer informatie. Als er geen keuze is (op het moment van installeren was er niet genoeg tijd om dit te controleren) kunnen de originele binaries gebruikt worden of kunnen de herlinkte binaries van een origineel RedHat systeem gebruikt worden. Om de intelligente agent te compileren moet het RedHat Tcl package geïnstalleerd zijn. Als tcl-8.0.3-20.i386.rpm niet te krijgen is, doet een nieuwere versie zoals tcl-8.0.5-30.i386.rpm voor RedHat 6.1 het ook. Afgezien van het herlinken is de installatie rechttoe rechtaan: &prompt.root; su - oraids &prompt.root; export TERM=xterm &prompt.root; export ORACLE_TERM=xterm &prompt.root; export ORACLE_HOME=/oracle/IDS &prompt.root; cd $ORACLE_HOME/orainst_sap &prompt.root; ./orainst Alle schermen dienen met Enter bevestigd te worden totdat de software geïnstalleerd is, behalve dat de &oracle; On-Line Text Viewer gedeselecteerd moet worden omdat deze momenteel niet voor &linux; beschikbaar is. Vervolgens wil &oracle; met i386-glibc20-linux-gcc herlinken, in plaats van met de beschikbare gcc, egcs of i386-redhat-linux-gcc. Wegens tijdbeperkingen is besloten om de binaries van een &oracle; 8.0.5 PreProduction-uitgave te gebruiken, nadat de eerste poging om de versie van de RDBMS-CD werkend te krijgen mislukte en het vinden en gebruiken van de juiste RPMs was op dat moment een nachtmerrie was. &oracle; 8.0.5 Pre-productie Versie voor &linux; (Kernel 2.0.33) Installeren De installatie hiervan is vrij eenvoudig: mount de CD en start het installatieprogramma. Het vraagt dan om de plaats van de &oracle; thuismap en zet daar alle binaries neer. Op dat moment waren echter niet de restanten van vorige pogingen om RDBMS te installeren verwijderd. Daarna kon &oracle; Database zonder problemen gestart worden. De &oracle; 8.1.7 &linux; Tarball Installeren De tarball oracle81732.tgz die gemaakt is uit de installatiemap een &linux;-systeem kan uitgepakt worden in /oracle/SID/817_32/. Ga door met de &sap.r3; Installatie Als eerste dienen de omgevingsinstellingen van de gebruikers idsamd (sidadm) en oraids (orasid) gecontroleerd te worden. Ze moeten nu beiden beschikken over de bestanden .profile, .login en .cshrc die allemaal hostname gebruiken. In het geval dat de hostnaam van het systeem de volledig gekwalificeerde naam is, moet hostname in hostname –s veranderd worden in alle drie de bestanden. De Database Laden Hierna kan R3SETUP òfwel opnieuw gestart of voortgezet worden (afhankelijk van de keuze voor exit of niet). R3SETUP maakt vervolgens de tabelruimten aan en laadt de gegevens (voor 46B IDES van EXPORT1 tot en met EXPORT6, voor 46C van DISK1 tot en met DISK4) met R3load in de database. Wanneer het laden van de database is voltooid (dit kan enkele uren duren) wordt om enkele wachtwoorden gevraagd. Voor testinstallaties kunnen de welbekende standaardwachtwoorden worden gebruikt. Als veiligheid een punt is moeten er andere wachtwoorden gebruikt worden! Vraag Invoer Enter Password for sapr3 sapEnter Confirum Password for sapr3 sapEnter Enter Password for sys verander_tijdens_installerenEnter Confirm Password for sys verander_tijdens_installatieEnter Enter Password for system beheerderEnter Confirm Password for system beheerderEnter Hier waren er wat problemen met dipgntab tijdens de installatie van 4.6B. Listener Hieronder staat hoe de &oracle; Listener als gebruiker orasid op kan starten: &prompt.user; umask 0; lsnrctl start Anders kan de fout ORA-12546 optreden, omdat de sockets dan niet de juiste rechten hebben. Zie &sap; Note 072984. Bijwerken van MNLS Tabellen Als het de bedoeling is niet-Latin-1-talen in te voeren in het &sap;-systeem, dan moeten de Multi National Language Support-tabellen bijgewerkt worden. Dit staat beschreven in de &sap; OSS Notes 15023 en 45619. In alle andere gevallen kan deze vraag overgeslagen worden tijdens de &sap; installatie. Als er geen MNLS nodig is, is het nog steeds noodzakelijk om de TCPDB-tabel te controleren en deze te initialiseren als dit nog niet is gedaan. Zie &sap;-notities 0015023 en 0045619 voor meer informatie. Stappen na de Installatie De &sap.r3; Licentiesleutel Opvragen Er moet een &sap.r3; licentiesleutel opgevraagd worden. Dit is nodig omdat de tijdelijke licentie die tijdens de installatie geïnstalleerd is, maar voor vier weken geldig is. Eerst moet de hardwaresleutel bekend zijn. Deze wordt bekend door als gebruiker idsadm aan te melden en saplicense uit te voeren: &prompt.root; /sapmnt/IDS/exe/saplicense -get Het uitvoeren van saplicense zonder parameters geeft een lijst met opties. Nadat de licentiesleutel verkregen is, kan deze geïnstalleerd worden door middel van: &prompt.root; /sapmnt/IDS/exe/saplicense -install Hierbij moeten de volgende waarden ingevoerd worden: SAP SYSTEM ID = SID, 3 tekens CUSTOMER KEY = hardwaresleutel, 11 tekens INSTALLATION NO = installatie, 10 cijfers EXPIRATION DATE = jjjjmmdd, meestal "99991231" LICENSE KEY = licentiesleutel, 24 tekens Gebruikers Aanmaken Nu kan een gebruiker binnen client 000 aangemaakt worden (voor sommige taken is het nodig deze binnen client 000 aan te maken, als maar een andere gebruiker dan gebruikers sap* en ddic wordt gebruikt). Zoals gewoonlijk wordt als nieuwe gebruikersnaam wartung (of dienst in het Nederlands) gekozen. Voor extra veiligheid moeten de wachtwoorden van alle standaardgebruikers binnenin alle clients worden veranderd (dit geldt ook voor gebruikers sap* en ddic). Transportsysteem, Profiel, Werkmodi en Dergelijke Instellen Vanuit client 000 dient, als een andere gebruiker dan ddic of sap*, tenminste het volgende ingesteld worden: Taak Transactie Stel het transportsysteem in, bijvoorbeeld als Stand-Alone Transport Domain Entity STMS Maak een profiel voor het systeem aan of wijzig dit RZ10 Beheer werkmodi en instanties RZ04 Deze en alle andere stappen die na de installatie uitgevoerd moeten worden, staan uitvoerig beschreven in de &sap; installatiehandleidingen. <filename>init<replaceable>sid</replaceable>.sap</filename> (<filename>initIDS.sap</filename>) Bewerken Het bestand /oracle/IDS/dbs/initIDS.asp bevat het &sap; back-upprofiel. Hier moeten de grootte van de te gebruiken tape, het compressietype, enzovoorts gedefinieerd worden. Om dit aan de gang te krijgen met sapdba / brbackup zijn de volgende waarden veranderd: compress = hardware archive_function = copy_delete_save cpio_flags = "-ov --format=newc --block-size=128 --quiet" cpio_in_flags = "-iuv --block-size=128 --quiet" tape_size = 38000M tape_address = /dev/nsa0 tape_address_rew = /dev/sa0 Uitleg: compress: de tape die gebruikt wordt is een HP DLT1 die hardware-compressie ondersteunt. archive_function: dit definieert het standaardgedrag om &oracle;-archieflogs op te slaan: nieuwe logboekbestanden worden op tape opgeslagen, reeds opgeslagen logboekbestanden worden nogmaals opgeslagen en worden daarna verwijderd. Dit bespaart een hoop problemen als de database hersteld moet worden en één van de archieftapes versleten is. cpio_flags: de standaard is om te gebruiken die de blokgrootte op 5120 bytes instelt. Voor DLT tapes raadt HP een blokgrootte van minimaal 32 kB aan, dus is gebruikt voor blokken van 64 kB. is nodig omdat er inodegetallen groter dan 65535 zijn. De laatste optie is nodig omdat brbackup anders klaagt zodra cpio het aantal opgeslagen blokken meldt. cpio_in_flags: vlaggen die nodig zijn om de gegevens van de tape terug te laden. Het formaat wordt automatisch herkend. tape_size: dit geeft gewoonlijk de ruwe opslagcapaciteit van de tape. Omwille van de veiligheid (er wordt hardware-compressie gebruikt) is de waarde iets lager dan de eigenlijke waarde. tape_address: de naam van het niet-opwindbare apparaat dat met cpio gebruikt wordt. tape_address_rew: de naam van het opwindbare apparaat dat met cpio gebruikt wordt. Instellingen na de Installatie De volgende parameters van &sap; moeten na de installatie geoptimaliseerd worden (voorbeelden voor IDES 46B, 1 GB geheugen): Naam Waarde ztta/roll_extension 250000000 abap/heap_area_dia 300000000 abap/heap_area_nondia 400000000 em/initial_size_MB 256 em/blocksize_kB 1024 ipc/shm_psize_40 70000000 &sap; notitie 0013026: Naam Waarde ztta/dynpro_area 2500000 &sap; notitie 0157246: Naam Waarde rdisp/ROLL_MAXFS 16000 rdisp/PG_MAXFS 30000 Met bovenstaande parameters kan op een op een systeem met 1 GB aan geheugen het geheugengebruik soortgelijk zijn aan het volgende: Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free Problemen Tijdens de Installatie <command>R3SETUP</command> Herstarten na het Oplossen van een Probleem R3SETUP stopt als het een probleem tegenkomt. Nadat de bijhorende logbestanden zijn bekeken en de fout is hersteld, moet R3SETUP opnieuw gestart worden en gewoonlijk dient REPEAT geselecteerd te worden bij de laatste stap waar R3SETUP over klaagde. R3SETUP kan gewoon met het bijhorende bestand R3S worden opgestart: &prompt.root; ./R3SETUP -f CENTRDB.R3S voor 4.6B, of met &prompt.root; ./R3SETUP -f CENTRAL.R3S voor 4.6C, onafhankelijk van het feit of de fout optrad met CENTRAL.R3S of met DATABASE.R3S. Tijdens sommige fasen verwacht R3SETUP dat zowel de database als &sap; draaien (omdat die stappen al voltooid waren). Mochten er fouten optreden en kan bijvoorbeeld de database niet gestart worden, dan moeten de database en &sap; handmatig worden gestart nádat de fouten zijn hersteld en voordat R3SETUP opnieuw wordt gestart. Ook de &oracle; listener moet opnieuw gestarten worden (als orasid met umask 0; lsnrctl start) als die ook was gestopt (bijvoorbeeld omdat het systeem opnieuw opgestart moest worden). OSUSERSIDADM_IND_ORA Tijdens <command>R3SETUP</command> Als R3SETUP tijdens deze fase klaagt, moet het sjabloonbestand dat R3SETUP destijds gebruikte (CENTRDB.R3S (4.6B) of één van CENTRAL.R3S of DATABASE.R3S (4.6C)) worden gewijzigd. Zoek [OSUSERSIDADM_IND_ORA] of zoek de enige regel met STATUS=ERROR en wijzig de volgende waarden: HOME/home/sidadm (was leeg) STATUS=OK (had status ERROR) Daarna kan R3SETUP opnieuw gestart worden. OSUSERDBSID_IND_ORA Tijdens <command>R3SETUP</command> R3SETUP klaagt mogelijk ook tijdens deze fase. De fout is vergelijkbaar met die in de fase OSUSERSIDADM_IND_ORA. Hier kan gewoon het sjabloonbestand dat R3SETUP destijds gebruikte (CENTRDB.R3S (4.6B) of één van CENTRAL.R3S of DATABASE.R3S (4.6C)) gewijzigd worden. In [OSUSERDBSID_IND_ORA] of de enige regel STATUS=ERROR en kan de volgende waarde in die sectie gewijzigd worden: STATUS=OK Nu kan R3SETUP opnieuw gestart worden. <errorname>oraview.vrf FILE NOT FOUND</errorname> Tijdens de Installatie van &oracle; De &oracle; On-Line Text Viewer is niet gedeselecteerd voordat de installatie begon. Dit onderdeel is gemarkeerd om geïnstalleerd te worden, zelfs al is dit onderdeel momenteel niet beschikbaar op &linux;. Dit onderdeel dient gedeselecteerd te worden in het &oracle; installatiemenu en de installatie dient opnieuw gestart te worden. <errorname>TEXTENV_INVALID</errorname> Tijdens <command>R3SETUP</command>, RFC of SAPgui Start Deze foutmelding geeft aan dat de juiste locale niet geïnstalleerd is. &sap; notitie 0171356 geeft de benodigde RPMs die geïnstalleerd moeten worden (bijvoorbeeld spalocales-1.0-3 en saposcheck-1.0-1 voor RedHat 6.1). Indien alle gerelateerde foutmeldingen genegeerd zijn en de bijhorende STATUS van ERROR in OK veranderd zijn (in CENTRDB.R3S) telkens als R3SETUP klaagde en R3SETUP gewoon opnieuw gestart is, dan is het &sap;-systeem onjuist geconfigureerd en is het onmogelijk om met SAPgui een verbinding met het systeem te maken, zelfs al kan het systeem gestart worden. Een poging om met de oude &linux; SAPgui een verbinding te maken gaf de volgende meldingen: Sat May 5 14:23:14 2001 *** ERROR => no valid userarea given [trgmsgo. 0401] Sat May 5 14:23:22 2001 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410] *** ERROR => Error when generating text environment. [trgmsgi. 0435] *** ERROR => function failed [trgmsgi. 0447] *** ERROR => no socket operation allowed [trxio.c 3363] Speicherzugriffsfehler Dit komt doordat &sap.r3; geen juiste locale kan toekennen en ook doordat het zelf onjuist is ingesteld (ontbrekende regels in sommige databasetabellen). Om een verbinding met &sap.r3; te kunnen maken, moeten de volgende regels aan het DEFAULT.PFL worden toegevoegd (zie notitie 0043288): abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B Nu kan het &sap;-systeem opnieuw gestart worden en kan een verbinding met het systeem gemaakt worden, hoewel landspecifieke taalinstellingen anders kunnen werken dan verwacht. Nadat de landinstellingen zijn gecorrigeerd (en de juiste locales zijn gegeven), kunnen bovenstaande regels uit DEFAULT.PFL verwijderd worden en kan het &sap;-systeem opnieuw gestart worden. <errorcode>ORA-00001</errorcode> Deze fout trad alleen op met &oracle; 8.1.7 op &os; 4.5. De reden was dat de &oracle;-database zichzelf niet goed kon initialiseren en crashte, waarbij het semaforen en gedeeld geheugen op het systeem achterliet. De volgende poging om de database te starten geeft dan ORA-00001. Met ipcs -a moeten de semaforen opgezocht worden en verwijderd worden met ipcrm. <errorcode>ORA-00445</errorcode> (achtergrondproces PMON Is Niet Gestart) Deze fout trad op met &oracle; 8.1.7. Deze fout wordt gemeld als de database met het gebruikelijke script startsap wordt gestart (bijvoorbeeld startsap_majestix_00) als gebruiker prdadm. Een mogelijke manier om dit te omzeilen is om de database in plaats daarvan als gebruiker oraprd te starten met svrmgrl: &prompt.user; svrmgrl SVRMGR> connect internal; SVRMGR> startup; SVRMGR> exit <errorcode>ORA-12546</errorcode> (Start Listener met de Juiste Rechten) De &oracle; listener moet als gebruiker oraids worden gestart: &prompt.root; umask 0; lsnrctl start Anders kan ORA-12456 optreden omdat de sockets dan niet de juiste rechten hebben. Zie &sap; notitie 0072984. <errorcode>ORA-27102</errorcode> (Geen Geheugen Beschikbaar) Deze fout trad op toen geprobeerd werd en om waarden groter dan 1 GB (1024x1024x1024) te gebruiken voor MAXDSIZ en DFLDSIZ. Ook kwam er de foutmelding Linux Error 12: Cannot allocate memory. [DIPGNTAB_IND_IND] Tijdens <command>R3SETUP</command> Dit wordt behandeld in &sap; notitie 0130581 (R3SETUP termineert). Om een of andere reden gebruikte het installatieproces tijdens de IDES-specifieke installatie niet de juiste &sap; systeemnaam IDS, maar in plaats daarvan de lege string "". Dit leidt tot wat kleine problemen met de toegang tot mappen omdat de paden dynamisch gegenereerd worden door middel van SID (in dit geval IDS). Dus werden niet de paden: /usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00 maar de volgende paden gebruikt: /usr/sap//SYS/... /usr/sap/D00 Om de installatie voort te zetten, zijn een link en een aanvullende map aangemaakt: &prompt.root; pwd /compat/linux/usr/sap &prompt.root; ls -l total 4 drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00 drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans Dit gedrag staat ook beschreven in &sap; notities 0029227 en 0008401. Deze problemen traden niet op tijdens de installatie van &sap; 4.6C. [RFCRSWBOINI_IND_IND] Tijdens <command>R3SETUP</command> Tijdens de installatie van &sap; 4.6C trad deze fout gewoon op als het gevolg van een andere fout eerder in de installatie. In dit geval moeten de bijhorende logboekbestanden doorzocht worden om het echte probleem te kunnen herstellen. Als na het doorzoeken van de logboekbestanden blijkt dat deze fout inderdaad de juiste is (zie de &sap; notities), dan kan de STATUS van de stap die het probleem geeft van ERROR in OK veranderd worden (in CENTRDB.R3S) en kan R3SETUP opnieuw gestart worden. Na de installatie moet rapport RSWBOINS van transactie SE38 uitgevoerd worden. In &sap; notitie 0162266 staat aanvullende informatie over de fasen RFCRSWBOINI en RFCRADDBDIF. [RFCRADDBDIF_IND_IND] Tijdens <command>R3SETUP</command> Hier gelden dezelfde beperkingen: er dient door het doorzoeken van de logboekbestanden gecontroleerd te worden dat deze fout niet veroorzaakt wordt door eerdere problemen. Als bevestigd kan worden dat &sap; notitie 0162266 van toepassing is, kan gewoon STATUS van de stap die het probleem geeft van ERROR in OK veranderd worden (in CENTRDB.R3S) en R3SETUP opnieuw gestart worden. Na de installatie moet het rapport RADDBDIF van transactie SE38 uitgevoerd worden. <errorcode>sigaction sig31: File size limit exceeded</errorcode> Deze fout trad op tijdens het starten van de &sap;-processen disp+work. Als &sap; met het script startsap gestart wordt, worden er subprocessen gestart die ontkoppelen en het vuile werk om alle andere &sap;-processen te starten opknappen. Een gevolg hiervan is dat het script zelf een verkeerde situatie niet opmerkt. Om te controleren of de &sap; processen juist zijn gestart, kan de processtatus bekeken worden met ps ax | grep SID, wat een lijst geeft met alle processen van &oracle; en &sap;. Als het ernaar uitziet dat sommige processen ontbreken of als er geen verbinding met het &sap;-systeem gemaakt kan worden, is het verstandig de bijhorende logboekbestanden uit /usr/sap/SID/DVEBMGSnr/work/ te bekijken. De te controleren bestanden zijn dev_ms en dev_disp. Signaal 31 treedt hier op als de hoeveelheid gedeeld geheugen die door &oracle; en &sap; wordt gebruikt, groter is dan wat in het kernelinstellingenbestand is ingesteld en dit kan worden verholpen door een hogere waarde te gebruiken: # grotere waarden voor 46C productiesystemen: options SHMMAXPGS=393216 # kleinere waarde voldoende voor 46B: #options SHMMAXPGS=262144 <command>saposcol</command> Starten Mislukt Er zijn wat problemen met het programma saposcol (versie 4.6D). Het &sap;-systeem gebruikt saposcol om informatie over de systeemprestaties in te winnen. Dit programma is niet noodzakelijk om het &sap;-systeem te gebruiken, dus kan dit probleem als onbelangrijk worden beschouwd. De oudere versie (4.6B) werkt wel, maar verzamelt niet alle gegevens (veel aanroepen geven gewoon 0 terug, bijvoorbeeld het processorgebruik). Gevorderde Onderwerpen Hier wordt beschreven hoe de &linux; binaire compatibiliteit werkt. Het meeste van wat nu volgt is sterk gebaseerd op een e-mailbericht van Terry Lambert tlambert@primenet.com aan &a.chat; (Message ID: <199906020108.SAA07001@usr09.primenet.com>). Hoe Werkt Het? uitvoerklasselader &os; heeft een abstractie met de naam execution class loader. Dit is een wig in de systeemaanroep &man.execve.2;. Wat er gebeurt is dat &os; een lijst van loaders heeft, in plaats van een enkele loader die terugvalt op de #! loader voor het draaien van elke shellinterpreter of shellscript. - Vroeger onderzocht de enige loader op het &unix;-platform + Vroeger onderzocht de enige loader op het &unix; platform het magische getal (in het algemeen de eerste 4 of 8 bytes van het bestand) om te zien of het een binary was die het systeem kende en als dat het geval was laadde het de binaire loader. Als het niet het binaire type voor het systeem was, faalde de aanroep naar &man.execve.2; en probeerde de shell het als shellopdrachten uit te voeren. Deze aanname was een standaard voor wat de huidige shell ook is. Later werd er een hack gemaakt voor &man.sh.1; om de eerste twee tekens te onderzoeken en als die bestonden uit :\n voerde het in plaats hiervan de &man.csh.1; shell uit (het idee is dat SCO de hack als eerste maakte). Wat &os; nu doet is door een lijst van loaders gaan met een generieke #! loader die kennis heeft van interpreters in de zin van de karakters die volgen op de volgende witruimte tot de laatste, met uiteindelijk een terugval op /bin/sh. ELF Voor &linux; ABI-ondersteuning ziet &os; het magische getal als een ELF-binary (het maakt op dit punt geen onderscheid tussen &os;, &solaris;, &linux; of elk ander besturingssysteem dat een ELF-beeldtype heeft). &solaris; De ELF loader zoekt naar een gespecialiseerd merk, dat een commentaargedeelte in het ELF-beeld is en dat niet aanwezig is in SVR4/&solaris; ELF-binairen. Om &linux;-binaries werkend te krijgen, moeten ze gemerkt worden als het type Linux met &man.brandelf.1;: &prompt.root; brandelf -t Linux bestand Als dit gedaan is, ziet de ELF loader het Linux-merk in het bestand. ELF merken Als de ELF loader het Linux-merk tegenkomt, verplaatst de loader een pointer in de proc-structuur. Alle systeemaanroepen worden met deze pointer geïndexeerd (in een traditioneel - &unix;-systeem is dit de + &unix; systeem is dit de sysent[]-structuurarray, die de systeemaanroepen bevat). Ook wordt het proces gemerkt voor speciale behandeling door de valstrikvector van de signaal-trampolinecode samen met nog meer (kleine) aanpassingen die door de &linux; kernelmodule worden afgehandeld. De &linux; kernelmodule bevat naast andere dingen een lijst van sysent[]-ingangen waarvan de adressen in de kernelmodule staan. Als een systeemaanroep door de &linux;-binary wordt aangeroepen, verwijdert de valstrikcode de referentie aan de functiepointer van de systeemaanroep en geeft die de ingangspunten van de systeemaanroep van &linux; en niet van &os;. Verder reroot de &linux;-modus dynamisch lookups. Dit is wat de optie (niet het unionfs bestandssysteemtype!) voor het mounten van bestandssystemen effectief doet. Eerst wordt een poging gedaan om het bestand in de map /compat/linux/origineel-pad op te zoeken en vervolgens alleen als dat mislukt, wordt het bestand in /origineel-pad opgezocht. Dit zorgt ervoor dat binaries die andere binaries nodig hebben kunnen draaien (zo kan bijvoorbeeld de &linux;-gereedschapskist geheel onder &linux; ABI-ondersteuning draaien). Dit betekent ook dat &linux;-binaries &os;-binaries kunnen laden en draaien als er geen overeenkomende &linux;-binaries zijn en dat er een &man.uname.1;-opdracht in de mappenstructuur /compat/linux gezet kan worden om er zeker van te zijn dat &linux;-binaries niet kunnen weten dat ze niet op &linux; draaien. Effectief bevindt er zich een &linux;-kernel in de &os;-kernel. De verschillende onderliggende functies die alle functies implementeren die de kernel aanbiedt, zijn dezelfde tabelingangen voor de systeemaanroepen van &os; als van &linux;: bestandssysteembewerkingen, bewerkingen op het virtuële geheugen, signaalaflevering, System V IPC, enzovoort. Het enige verschil is dat &os;-binaries de lijm functies voor &os; krijgen en dat de &linux;-binaries de lijm-functies voor &linux; krijgen (de meeste oudere besturingssystemen hadden alleen hun eigen lijm-functies: adressen van functies die in een statische globale sysent[] structuurarray werden opgeslagen, in plaats van adressen van functies waarvan dynamisch een geïnitialiseerde pointer wordt verwijderd in de proc-structuur van het proces dat de aanroep doet). Welke is de eigenlijke &os; ABI? Dat maakt niet uit. Eigenlijk is het enige verschil dat (op dit moment; dit kan eenvoudig veranderen in een toekomstige uitgave, en dat gebeurt waarschijnlijk na deze uitgave) de lijm-functies van &os; statisch gelinkt zijn in de kernel en dat de lijm-functies van &linux; zowel statisch gelinkt kunnen worden als dat ze door een kernelmodule worden benaderd. Maar is dit nu echt emulatie? Nee. Het is een ABI-implementatie, geen emulatie. Er is geen emulator (of simulator, om de volgende vraag voor te zijn) bij betrokken. Dus waarom wordt het dan soms &linux;-emulatie genoemd? Om het moeilijk te maken om &os; te verkopen! Serieus, het is zo omdat de historische implementatie in een tijd werd gedaan toen er echt geen ander woord was om te beschrijven wat er aan de hand was, om te zeggen dat &os; &linux;-binaries draaide was niet waar als de code niet in de kernel gecompileerd werd of als een module geladen werd en er moest een woord zijn voor hetgeen geladen werd. Vandaar de &linux;-emulator.
diff --git a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml index 4c12a2d5a8..e7d4cfd641 100644 --- a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml @@ -1,2046 +1,2047 @@ Ross Lippert Aangepast door Siebrand Mazeland Vertaald door Multimedia Overzicht &os; ondersteunt een breed bereik aan geluidskaarten, waardoor het mogelijk is van geluid van hoge kwaliteit op een computer te genieten. Hieronder vallen mogelijkheden om geluid op te nemen en af te spelen in de MPEG Audio Layer 3 (MP3), WAV en Ogg Vorbis formaten en vele andere formaten. De &os; portscollectie bevat ook programma's waarmee opgenomen audio bewerkt kan worden, waarmee geluidseffecten toegevoegd kunnen worden en aangesloten MIDI apparaten bestuurd kunnen worden. Met wat wil om te experimenteren kunnen met &os; videobestanden en DVD's afgespeeld worden. Er zijn minder programma's om video te encoderen, te converteren en af te spelen dan er zijn voor audio. Op het moment van schrijven is er bijvoorbeeld geen programma in de &os; portscollectie beschikbaar waarmee video goed gehercodeerd kan worden. Deze functie zou gebruikt kunnen worden om tussen formaten te converteren, zoals mogelijk is met audio/sox. De software in dit landschap is echter sterk aan verandering onderhevig. In dit hoofdstuk worden de stappen beschreven die uitgevoerd moeten worden om een geluidskaart in te stellen. Bij de installatie en instelling van X11 () is al beschreven hoe videokaarten ingesteld kunnen worden, hoewel er nog wel een aantal mogelijkheden zijn om het afspelen te verbeteren. Na het lezen van dit hoofdstuk weet de lezer: Hoe een systeem zo in te stellen dat een geluidskaart wordt herkend; Hoe getest kan worden of een kaart werkt door gebruik te maken van voorbeeldapplicaties; Hoe problemen op te lossen met betrekking tot geluidsinstellingen; Hoe MP3's en andere audio af te spelen en te maken; Hoe video wordt ondersteund door de X server; Welke video speler/encoderports goede resultaten geven; Hoe DVD's, .mpg en .avi bestanden af te spelen; Hoe CD en DVD informatie naar bestanden geript kan worden; Hoe een TV-kaart in te stellen; Hoe een scanner in te stellen. Er wordt aangenomen dat de lezer van dit hoofdstuk: Weet hoe een nieuwe kernel in te stellen en te installeren (). Het proberen te mounten van audio CD's met &man.mount.8; resulteert in ieder geval in een foutmelding en op zijn ergst in een kernel panic. Dat type media heeft een formaat dat afwijkt van het gebruikelijke ISO-bestandssysteem. Moses Moore Geschreven door Marc Fonvieille Aangepast voor &os; 5.X door Geluidskaart Installeren Systeem Instellen PCI ISA geluidskaarten Alvorens te beginnen is het van belang te weten welk model een geluidskaart is, welke chip erop wordt gebruikt en of het een PCI of ISA kaart is. &os; ondersteunt vele PCI en ISA kaarten. De ondersteunde audioapparaten staan in een lijst in de Hardware Notes. In dit document staat ook beschreven welk stuurprogramma welke kaart(en) ondersteunt. kernel instellen Om een geluidsapparaat te gebruiken dient het juiste apparaatstuurprogramma geladen te worden. Dit kan op twee manieren. De meest eenvoudige manier is simpelweg een kernelmodule te laden voor de gewenste geluidskaart met &man.kldload.8;. Dit kan vanaf de commandoregel: &prompt.root; kldload snd_emu10k1 Of door als volgt de juiste regel toe te voegen aan /boot/loader.conf: snd_emu10k1_load="YES" De bovenstaande voorbeelden zijn voor een Creative &soundblaster; Live! geluidskaart. De overige beschikbare laadbare geluidsmodules staan beschreven in /boot/defaults/loader.conf. Als niet compleet duidelijk is welk stuurprogramma gebruikt dient te worden, dan kan het met de module snd_driver geprobeerd worden: &prompt.root; kldload snd_driver Dit is een metastuurprogramma, dat in één keer de meest voorkomende apparaatstuurprogramma's laadt. Hiermee kan het zoeken naar het juiste stuurprogramma versneld worden. Het is ook mogelijk om alle geluidsstuurprogramma's te laden via de optie /boot/loader.conf. Om onder &os; 4.X alle geluidsstuurprogramma's te laden, dient de module snd geladen te worden in plaats van snd_driver. Een tweede mogelijkheid is ondersteuning voor een geluidskaart statisch in de kernel te compileren. In de onderstaande paragrafen staat meer informatie over hoe op die manier ondersteuning voor hardware toegevoegd kan worden. Meer informatie over het hercompileren van een kernel staat in . Aangepaste Kernel Maken met Geluidsondersteuning Eerst moet het generieke audiostuurprogramma &man.sound.4; aan de kernel toegevoegd worden. Daarvoor dient het volgende te worden opgenomen in het bestand met kernelinstellingen: device sound Voor &os; 4.X kan het volgende gebruikt worden: device pcm Daarna kan ondersteuning voor de specifieke geluidskaart toegevoegd worden. Daarvoor moet bekend zijn welk stuurprogramma de kaart ondersteunt. Dit kan opgezocht worden in de lijst met ondersteunde audioapparaten in de Hardware Notes, waar de correcte stuurprogramma's voor geluidskaarten beschreven staan. Zo wordt een Creative &soundblaster; Live! geluidskaart bijvoorbeeld ondersteund door het stuurprogramma &man.snd.emu10k1.4;. Ondersteuning voor deze kaart kan als volgt worden toegevoegd: device "snd_emu10k1" In de hulppagina voor een stuurprogramma staat welke syntaxis gebruikt kan worden. Informatie over de syntaxis van geluidsstuurprogramma's in de kernelinstellingen staat ook in /usr/src/sys/conf/NOTES (/usr/src/sys/i386/conf/LINT voor &os; 4.X). Voor niet-PnP ISA-kaarten kan het nodig zijn dat de kernel informatie gegeven moet worden over de instellingen van een geluidskaart (IRQ, I/O poort, enzovoort). Dit kan via het bestand /boot/device.hints. Bij het starten van een systeem leest de &man.loader.8; dat bestand uit en geeft de instellingen door aan de kernel. Zo gebruikt een oude Creative &soundblaster; 16 ISA niet-PnP-kaart het stuurprogramma &man.snd.sbc.4; en dient de volgende regel toegevoegd te worden aan het bestand met kernelinstellingen: device snd_sbc Daarnaast moet het volgende worden toegevoegd aan /boot/device.hints: hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15" In dit geval gebruikt de kaart I/O poort 0x220 en IRQ 5. De gebruikte syntaxis voor /boot/device.hints staat beschreven in de hulppagina voor het geluidsstuurprogramma. In &os; 4.X worden deze instellingen direct in het bestand met kernelinstellingen gezet. In het geval van de bovenstaande ISA-kaart gaat dat al volgt: device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15 De bovenstaande instellingen zijn de standaard instellingen. In sommige gevallen moeten IRQ of andere instellingen gewijzigd worden om een apparaat juist te laten werken. In &man.snd.sbc.4; staat meer informatie. Onder &os; 4.X hebben sommige systemen met audioapparaten op het moederbord de volgende optie in het bestand met kernelinstellingen nodig: options PNPBIOS Geluidskaart Testen Na het herstarten met de aangepaste kernel of na het laden van de benodigde module, hoort de geluidskaart ongeveer als volgt te verschijnen in de systeemberichtbuffer (&man.dmesg.8;): pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0 pcm0: [GIANT-LOCKED] pcm0: <Cirrus Logic CS4205 AC97 Codec> De status van de geluidskaart kan gecontroleerd worden via het bestand /dev/sndstat: &prompt.root; cat /dev/sndstat FreeBSD Audio Driver (newpcm) Installed devices: pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384 kld snd_ich (1p/2r/0v channels duplex default) De uitvoer kan per systeem wat verschillen. Als er geen apparaten pcm verschijnen, dienen eerdere stappen bekeken te worden. Bekijk nogmaals de instellingen van de kernel en bevestig dat het juiste apparaat is gekozen. Veel voorkomende problemen staan beschreven in . Als het goed is werkt de geluidskaart nu. Als de CD-ROM of DVD-ROM drive juist is aangesloten op de geluidskaart, dan kan er een CD in de drive gestoken worden en kan deze met &man.cdcontrol.1; afgespeeld worden: &prompt.user; cdcontrol -f /dev/acd0 play 1 Applicaties als audio/workman kunnen een vriendelijker interface bieden. Wellicht is het handig om een applicatie als audio/mpg123 te installeren om naar MP3 audiobestanden te luisteren. Een snelle manier om de kaart te testen is het als volgt sturen van data naar /dev/dsp: &prompt.user; cat filename > /dev/dsp filename kan ieder bestand zijn. Deze commandoregel hoort wat ruis tot gevolg te hebben, waardoor wordt bevestigd dat de geluidskaart echt werkt. &os; 4.X gebruikers moeten de geluidskaart apparaatnodes maken voordat hij gebruikt kan worden. Als de kaart voorkomt in de berichtbuffer als pcm0, dan dient het volgende als root uitgevoerd te worden: &prompt.root; cd /dev &prompt.root; sh MAKEDEV snd0 Als de kaart herkend is als pcm1, kunnen dezelfde stappen als hierboven gevolgd worden, waarbij snd0 wordt vervangen door snd1. MAKEDEV maakt een groep apparaatnodes aan die gebruikt worden voor de applicaties die met geluid te maken hebben. Niveau's voor de geluidskaartmixer kunnen aangepast worden met het commando &man.mixer.8;. Er staan meer details in &man.mixer.8;. Bekende Problemen apparaatnodes I/O poort IRQ DSP Fout Oplossing unsupported subdevice XX Eén of meer van de apparaatnodes zijn niet correct gemaakt. De bovenstaande stappen dienen opnieuw uitgevoerd te worden. sb_dspwr(XX) timed out De I/O poort is niet correct ingesteld. bad irq XX Het IRQ is niet correct ingesteld. Zorg dat het ingestelde IRQ en het IRQ voor het geluid hetzelfde zijn. xxx: gus pcm not attached, out of memory Er is niet genoeg geheugen beschikbaar om het apparaat te gebruiken. xxx: can't open /dev/dsp! Controleer fstat | grep dsp of een ander programma het apparaat geopend heeft. Bekende probleemgevallen zijn esound en KDE's geluidsondersteuning. Munish Chopra Geschreven door Meerdere Geluidsbronnen Gebruiken Het is vaak wenselijk om meerdere geluidsbronnen tegelijkertijd af te kunnen spelen, zoals wanneer esound of artsd het delen van een geluidsapparaat met een andere applicatie niet ondersteunen. Met &os; kan dit met Virtuele Geluidskanalen, die ingesteld kunnen worden met de &man.sysctl.8; faciliteit. Met virtuele kanalen kunnen de afspeelkanalen van een geluidskaart gemultiplext worden door het geluid in de kernel te mixen. Het aantal virtuele kanalen kan met twee sysctl knoppen als root als volgt ingesteld worden: &prompt.root; sysctl hw.snd.pcm0.vchans=4 &prompt.root; sysctl hw.snd.maxautovchans=4 In het bovenstaande voorbeeld worden vier virtuele kanelen gealloceerd, wat in het dagelijks gebruik voldoende is. In hw.snd.pcm0.vchans staat het aantal vitruele kanalen dat pcm0 heeft en is instelbaar als een apparaat is aangesloten. In hw.snd.maxautovchans staat het aantal virtuele kanalen dat aan een nieuw audio-apparaat wordt gegeven als het wordt aangesloten met &man.kldload.8;. Omdat de module pcm onafhankelijk van de hardware stuurprogramma's geladen kan worden, kan in hw.snd.maxautovchans opgeslagen worden hoeveel virtuele kanalen apparaten die later worden aangesloten krijgen. Als er geen gebruik wordt gemaakt van &man.devfs.5;, dan moeten applicaties wijzen naar /dev/dsp0.x, waar x tussen 0 en 3 ligt als hw.snd.pcm.0.vchans is ingesteld op 4, zoals in het bovenstaande voorbeeld. Op een systeem waar &man.devfs.5; wordt gebruikt, wordt het voorgaande voor een gebruiker automatisch transparant gealloceerd. Josef El-Rayes Geschreven door Standaardwaarden voor Mixerkanalen Instellen De standaard waarden voor de mixerkanelen zijn ingesteld in de broncode van het stuurprogramma &man.pcm.4;. Er zijn vele applicaties en daemons waarmee waarden voor de mixer ingesteld en onthouden kunnen worden en iedere keer bij het starten weer kunnen worden ingesteld. Maar dit is geen nette oplossing, omdat het netter is de standaardwaarden in te stellen op het niveau van het stuurprogramma. Die kunnen ingesteld worden door de gewenste waarden in te stellen in /boot/device.hints. Bijvoorbeeld: hint.pcm.0.vol="100" Met de bovenstaande instelling wordt het volume van een kanaal standaard op 100 ingesteld bij het laden van de module &man.pcm.4;. Dit wordt alleen ondersteund in &os; 5.3 en hoger. Chern Lee Geschreven door MP3 Audio Met MP3 (MPEG Layer 3 Audio) kan geluid bijna in CD-kwaliteit weergegeven worden en dus is er een goede reden om dit vooral niet na te laten op een &os; werkstation. MP3 Spelers Verreweg de meest populaire X11 MP3 speler is XMMS (X Multimedia Systeem). In XMMS kunnen Winamp skins gebruikt worden, omdat de GUI vrijwel gelijk is aan die van Nullsoft's Winamp. XMMS heeft ook een eigen plug-in ondersteuning. XMMS kan geïnstalleerd worden via de multimedia/xmms port of package. De interface van XMMS is intuïtief met een playlist, grafische equalizer en meer. Gebruikers die bekend zijn met Winamp vinden XMMS vast eenvoudig te gebruiken. De port audio/mpg123 is een alternatieve MP3 speler die gebruik maakt van de commandoregel. mpg123 werkt door het geluidsapparaat en het MP3 bestand aan te geven op de commandoregel, zoals hieronder wordt aangegeven: &prompt.root; mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3. Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp. Uses code from various people. See 'README' for more! THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK! Playing MPEG stream from Foobar-GreatestHits.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo /dev/dsp1.0 dient gewijzigd te worden in het dsp apparaat van het systeem waarop de MP3 afgespeeld moet worden. CD Audio Tracks Rippen Voordat een CD of een CD track naar MP3 ge-encodeerd kan worden moet de audiodata naar de harde schijf geript worden. Dit gaat door de ruwe CDDA (CD Digital Audio) data naar WAV-bestanden de kopiëren. Het hulpprogramma cdda2wav, dat onderdeel is van de suite sysutils/cdrtools, kan gebruikt worden om audio-informatie en de daarbij behorende informatie van CD's te rippen. Als de audio CD in de drive zit, kan het volgende commando als root uitgevoerd worden om een hele CD naar individuele (per track) WAV-bestanden te rippen: &prompt.root; cdda2wav -D 0,1,0 -B cdda2wav ondersteunt ATAPI (IDE) CDROM drives. Om van een IDE drive te rippen, dient de apparaatnaam aangegeven te worden in plaats van de SCSI eenheidsnummers. Om bijvoorbeeld track 7 van een IDE drive te rippen: &prompt.root; cdda2wav -D /dev/acd0a -t 7 De optie geeft het SCSI apparaat 0,1,0 aan, dat overeenkomt met de uitvoer van cdrecord -scanbus. Om individuele tracks te rippen kan gebruik gemaakt worden van de optie : &prompt.root; cdda2wav -D 0,1,0 -t 7 In het bovenstaande voorbeeld wordt track 7 van de audio CDROM geript. Om een reeks tracks te rippen, bijvoorbeeld van 1 tot 7, kan een reeks opgegeven worden: &prompt.root; cdda2wav -D 0,1,0 -t 1+7 Ook het hulpprogramma &man.dd.1; kan gebruikt worden om audio tracks van ATAPI drives af te halen. Deze mogelijkheid wordt beschreven in . MP3's Encoderen Tegenwoodig is de MP3 encoder lame. Lame staat in audio/lame in de portsstructuur. Met de geripte WAV-bestanden converteert het volgende commando audio01.wav naar audio01.mp3: &prompt.root; lame -h -b 192 \ --tt "Foo Titel" \ --ta "FooBar Artiest" \ --tl "FooBar Album" \ --ty "2005" \ --tc "Geript en encoded door Foo" \ --tg "Genre" \ audio01.wav audio01.mp3 192 kbits lijkt de standaard bitrate voor MP3 te zijn. Het is ook mogelijk 128 of 160 of andere bitrates te gebruiken. Hoe hoger de bitrate, hoe meer schijfruimte de uiteindelijke MP3-bestanden gebruiken, maar ook de kwaliteit wordt dan hoger. Met de optie wordt de modus hogere kwaliteit, maar iets langzamer ingeschakeld. Met de opties vanaf worden de ID3 tags ingegeven, die meestal informatie over een nummer bevatten en onderdeel uitmaken van het MP3-bestand. In de hulppagina voor lame staan nog meer opties die gebruikt kunnen worden bij het encoderen beschreven. MP3's Decoderen Om een CD te kunnen branden van MP3's, moeten ze omgezet worden naar een niet gecomprimeerd WAV-formaat. Zowel XMMS als mpg123 ondersteunen de uitvoer van MP3 naar een niet gecomprimeerd bestandsformaat. Naar schijf schrijven met XMMS: Start XMMS; Klik rechts op het venster om het XMMS menu te zien; Selecteer Preference onder Options; Wijzig de Output Plugin naar Disk Writer Plugin; Klik Configure; Voer een map in (of kies browse) waar de ongecomprimeerde bestanden heengeschreven moeten worden; Laad de MP3-bestanden zoals gewoonlijk in XMMS, met het volume op 100% en de EQ instellingen uitgeschakeld; Klik Play. XMMS lijkt nu de MP3 af te spelen, maar er is geen muziek te horen. Nu wordt feitelijk de MP3 afgespeeld naar een bestand; Zorg ervoor dat de standaard Output Plugin wordt teruggezet naar hoe de instellingen waren om weer naar MP3's te kunnen luisteren. Schrijven naar stdout vanuit mpg123: Voer mpg123 -s audio01.mp3 > audio01.pcm uit. XMMS schijft een bestand in het WAV-formaat, terwijl mpg123 de MP3 converteert naar ruwe PCM audio data. Beide formaten kunnen gebruikt worden met cdrecord om audio CD's te maken. Met &man.burncd.8; moeten ruwe PCM-bestanden gebruikt worden. Als er WAV-bestanden worden gebruikt, is er een tik-geluid te horen bij het begin van iedere track. Dit is het geluid van de kop van ieder WAV-bestand. Met het hulpprogramma SoX kan de kop van WAV-bestanden verwijderd worden. Dit programma kan geïnstalleerd worden met de port of package audio/sox &prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.raw In staat meer informatie over het gebruiken van een CD-brander in &os;. Ross Lippert Geschreven door Video Afspelen Video afspelen is een relatief nieuwe en zich snel ontwikkelende richting voor applicaties. In tegenstelling tot voor audio werkt alles hier niet zo soepel. Voor er wordt begonnen is het van belang te weten welk model videokaart zich in een systeem bevindt en welke chip die gebruikt. Hoewel &xorg; en &xfree86; vele videokaarten ondersteunen, zijn er veel minder geschikt om goed video mee af te spelen. Er kan een lijst met ondersteunde extensies getoond worden voor X server met de gebruikte videokaart door het commando &man.xdpyinfo.1; uit te voeren terwijl X11 draait. Het is verstandig een kort MPEG-bestand beschikbaar te hebben dat gebruikt kan worden als testbestand voor het evalueren van de spelers en hun opties. Omdat sommige DVD-spelers standaard zoeken naar DVD media in /dev/dvd of deze apparaatnaam standaard in de broncode hebben staan, is het wellicht verstandig om een symbolische link te maken naar de juist apparaten: &prompt.root; ln -sf /dev/acd0c /dev/dvd &prompt.root; ln -sf /dev/racd0c /dev/rdvd In &os; 5.X, dat &man.devfs.5; gebruikt, worden net iets andere links aangeraden: &prompt.root; ln -sf /dev/acd0 /dev/dvd &prompt.root; ln -sf /dev/acd0 /dev/rdvd Vanwege de werking van &man.devfs.5;, blijven handmatig aangemaakte links niet bestaan als een systeem wordt herstart. Om automatisch symbolische links aan te laten maken als een systeem start, kunnen de volgende regels toegevoegd worden aan /etc/devfs.conf: link acd0 dvd link acd0 rdvd Daarnaast zijn voor het decoderen van DVD, waarvoor bijzondere DVD-ROM functies aangeroepen worden, schrijfrechten op de DVD-apparaten nodig. kernelopties - options CPU_ENABLE_SSE + CPU_ENABLE_SSE kernelopties - options USER_LDT + USER_LDT Een aantal van de hier besproken ports hebben specifieke kernelopties nodig om correct gebouwd te worden. Voordat ze gebouwd worden, dienen deze opties aan het bestand met kernelinstellingen toegevoegd te worden, dient de kernel opnieuw gebouwd te worden en het systeem opnieuw gestart te worden: option CPU_ENABLE_SSE option USER_LDT option USER_LDT bestaat niet in &os; 5.X. Om de gedeeld geheugen interface van X11 te verbeteren, wordt aangeraden dat een aantal variablelen van &man.sysctl.8; worden verhoogd: kern.ipc.shmmax=67108864 kern.ipc.shmall=32768 Videomogelijkheden Vaststellen XVideo SDL DGA Er zijn een aantal methoden om video weer te geven onder X11. Welke echt werkt, is voornamelijk afhankelijk van de gebruikte hardware. Iedere hieronder beschreven methode geeft andere resultaten op andere hardware. De laatste tijd krijgt het renderen van video in X11 veel aandacht en bij iedere versie van &xorg; of &xfree86; kan er een aanzienlijke verbetering zijn. Een lijst van veel gebruikte video-interfaces: X11: normale X11 uitvoer met gebruikmaking van gedeeld geheugen; XVideo: een uitbreiding op de X11 interface die video in een door X11 getekend object ondersteunt; SDL: de Simple Directmedia Layer; DGA: de Direct Graphics Access; SVGAlib: low level console grafische laag. XVideo &xorg; en &xfree86; 4.X kennen een uitbreiding XVideo, ook bekend als Xvideo, Xv of xv, waarmee video direct weergegeven kan worden in getekende objecten door een speciale versneller. Deze uitbreiding geeft een goede afspeelkwaliteit, zelfs op machines met mindere specificaties. Of de uitbreiding actief is, kan gecontroleerd worden met het commando xvinfo: &prompt.user; xvinfo XVideo wordt ondersteund als de uitvoer er ongeveer als volgt uitziet: X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 "XV_COLORKEY" (range 0 to 16777215) client settable attribute client gettable attribute (current value is 2110) "XV_BRIGHTNESS" (range -128 to 127) client settable attribute client gettable attribute (current value is 0) "XV_CONTRAST" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_SATURATION" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_HUE" (range -180 to 180) client settable attribute client gettable attribute (current value is 0) maximum XvImage size: 1024 x 1024 Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x30323449 (I420) guid: 49343230-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x36315652 (RV16) guid: 52563135-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x3e0, 0x7c00 id: 0x35315652 (RV15) guid: 52563136-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x7e0, 0xf800 id: 0x31313259 (Y211) guid: 59323131-0000-0010-8000-00aa00389b71 bits per pixel: 6 number of planes: 3 type: YUV (packed) id: 0x0 guid: 00000000-0000-0000-0000-000000000000 bits per pixel: 0 number of planes: 0 type: RGB (packed) depth: 1 red, green, blue masks: 0x0, 0x0, 0x0 Sommige van de weergegeven formaten (YUV2, YUV12, enzovoort) zijn niet in iedere implementaties van XVideo beschikbaar en hun afwezigheid kan sommige spelers hinderen. Als het resultaat er als hieronder uitziet, is er geen ondersteuning voor XVideo aanwezig op de videokaart in een systeem: X-Video Extension version 2.2 screen #0 no adaptors present Als XVideo voor een kaart niet wordt ondersteund, dan betekent dat alleen dat het lastiger wordt om op een beeldscherm aan de vereisten voor het renderen van video te voldoen. Afhankelijk van de videokaart en de processor kan het toch nog mogelijk zijn om acceptabele prestaties neer te zetten. In staan verwijzingen naar leesvoer over mogelijkheden voor het verbeteren van prestaties. Eenvoudige Directmedia Laag De Eenvoudige Directmedia Laag (Simple Directmedia Layer), SDL, was bedoeld als een porting-laag tussen µsoft.windows;, BeOS en &unix;, waardoor cross-platform toepassingen konden worden ontwikkeld die efficiënt gebruik maken van geluid en beelden. De SDL laag biedt een abstractie op laag niveau naar de hardware die soms efficiënter kan zijn dan de X11 interface. De SDL staat in devel/sdl12. Directe Grafische Toegang Directe Grafische Toegang (Direct Graphics Access) is een X11 uitbreiding die een programma in staat stelt voorbij te gaan aan de X server en de framebuffer direct kan wijzigen. Omdat hij afhankelijk is van geheugenmapping op een laag niveau om dit delen uit te voeren, moeten programma's die er gebruik van maken als root draaien. De DGA uitbreiding kan getest en gebenchmarkt worden met &man.dga.1;. Als dga draait, verandert het de kleuren op een scherm als er een toets wordt ingedrukt. Om te stoppen kan de toets q gebruikt worden. Ports en Packages met Video videopoorten videopackages In dit onderdeel wordt de software die vanuit de &os; portscollectie beschikbaar is voor het afspelen van video beschreven. Het afspelen van video is een tak van softwareontwikkeling die erg in beweging is en de mogelijkheden van de verschillende applicaties verschillen zeer waarschijnlijk van wat hier is beschreven. Als eerste is het belangrijk om te weten dat veel applicaties die met video te maken hebben en op &os; draaien ontwikkeld zijn als &linux; applicaties. Veel van die applicaties zijn op het moment van schrijven van beta-kwaliteit. Problemen die te verwachten zijn bij het gebruik van de beschreven videopakketten op &os; zijn: Een applicatie kan geen bestanden afspelen die zijn gemaakt met een andere applicatie; Een applicatie kan geen bestanden afspelen die met de applicatie zelf zijn gemaakt; Dezelfde applicatie, op twee verschillende machines gebouwd, speelt hetzelfde bestand op twee machines anders af; Een ogenschijlijk triviale filter, zoals het herschalen van beeldgrootte, kan resulteren in vreselijk vervelende artefacten door fouten in de routine voor het herschalen; Een applicatie dumpt zijn core regelmatig; Documentatie wordt niet geïnstalleerd bij de port en staat op het web of in de map work van de port. Veel van deze applicaties kunnen ook Linux-ismes vertonen. Zo kunnen er bijvoorbeeld problemen ontstaan door de wijze waarop standaard bibliotheken zijn geïmplementeerd in de &linux; distributies of een aantal van de mogelijkheden van de &linux;-kernel, waarvan door de makers van de applicatie wordt aangenomen dat ze aanwezig zijn. Dit soort problemen zijn niet altijd zichtbaar en er wordt ook omheen gewerkt door de beheerders van ports, wat tot de volgende mogelijke problemen kan leiden: Het gebruik van /proc/cpuinfo om processorkarakteristieken uit te lezen; Het verkeerd gebruiken van threads, waardoor een programma hangt als het klaar is, in plaats van dat het echt eindigt; Software die nog niet in de &os; portscollectie zit en vaak gebruikt wordt samen met een applicatie die daar wel onderdeel van uitmaakt. Tot nu toe is gebleken dat de ontwikkelaars van applicaties wel coöperatief waren met de beheerders van ports om zo het aantal work-arounds dat nodig was voor het porten tot een minimum te beperken. MPlayer MPlayer is een zich snel ontwikkelende videospeler. De doelen van het MPlayer-team zijn snelheid en flexibiliteit onder &linux; en andere Unices. Het project is gestart toen de oprichter van het team genoeg had van de slechte afspeelprestaties van de destijds beschikbare spelers. Er zijn mensen die zeggen dat het grafische ontwerp is opgeofferd voor het stroomlijnen van het ontwerp, maar het blijkt dat, als een gebruiker gewend is aan de commandoregelopties en de toetsencommando's, de applicatie erg goed werkt. MPlayer Bouwen MPlayer + maken MPlayer staat in multimedia/mplayer. MPlayer voert een aantal hardwarecontroles uit tijdens het bouwen, wat resulteert in een binair bestand dat niet van het ene naar het andere systeem verplaatst kan worden. Daarom is het van belang dat het uit de ports wordt gebouwd en niet als binair package wordt geïnstalleerd. Daarnaast staan er ook nog opties die vanaf de make commandoregel meegegeven kunnen worden beschreven in de Makefile en aan het begin van de build: &prompt.root; cd /usr/ports/multimedia/mplayer &prompt.root; make N - O - T - E Take a careful look into the Makefile in order to learn how to tune mplayer towards you personal preferences! For example, make WITH_GTK1 builds MPlayer with GTK1-GUI support. If you want to use the GUI, you can either install /usr/ports/multimedia/mplayer-skins or download official skin collections from http://www.mplayerhq.hu/homepage/dload.html De standaard portopties zijn voor de meeste gebruikers voldoende. Maar als bijvoorbeeld de XviD codec nodig is, dan moet de optie WITH_XVID op de commandoregel meegegeven worden. Het standaard DVD-apparaat kan ook gedefinieerd worden met de optie WITH_DVD_DEVICE, waarbij standaard /dev/acd0 wordt gebruikt. Op het moment van schrijven wordt de MPlayer port gebouwd met de HTML documentatie en twee uitvoerbare bestanden, mplayer en mencoder, wat een hulpmiddel is voor het opnieuw encoderen van video. De HTML documentatie voor MPlayer is erg informatief. Als de lezer vindt dat er informatie over videohardware en interfaces in dit hoofdstuk mist, dan is de documentatie van MPlayer een zeer grondige aanvulling. Het is de moeite waard de tijd te nemen om de documentatie van MPlayer te lezen, als meer informatie over de ondersteuning van video in &unix; welkom is. MPlayer Gebruiken MPlayer gebruiken Iedere gebruiker van MPlayer dient een submap .mplayer in zijn thuismap te hebben. Die kan als volgt gemaakt worden: &prompt.user; cd /usr/ports/multimedia/mplayer &prompt.user; make install-user De commando-opties voor mplayer staan in de hulppagina. Nog meer details staan in de HTML documentatie. In dit onderdeel worden slechts een aantal gebruiksmogelijkheden beschreven. Om een bestand als testfile.avi af te spelen met een van de beschikbare video-interfaces, kan de optie gebruikt worden: &prompt.user; mplayer -vo xv testfile.avi &prompt.user; mplayer -vo sdl testfile.avi &prompt.user; mplayer -vo x11 testfile.avi &prompt.root; mplayer -vo dga testfile.avi &prompt.root; mplayer -vo 'sdl:dga' testfile.avi Het is de moeite waard alle bovenstaande opties uit te proberen omdat hun relatieve prestatie afhangt van vele factoren die aanzienlijk verschillen tussen hardware. Om een DVD af te spelen dient testfile.avi vervangen te worden door waar N het titelnummer is dat afgespeeld moeten worden en APPARAAT de apparaatnode is voor de DVD-ROM. Om bijvoorbeeld titel 3 van /dev/dvd af te spelen: &prompt.root; mplayer -vo xv dvd://3 -dvd-device /dev/dvd Het standaard DVD-apparaat kan ingesteld worden bij het bouwen van de MPlayer port met de optie WITH_DVD_DEVICE. Standaard is dit apparaat /dev/acd0. Meer details staan in de Makefile van de port. Om te stoppen, pauzeren, verder te spoelen, enzovoort, kunnen de toetsendefinities gebruikt worden, die in te zien zijn door mplayer -h uit te voeren of de hulppagina te lezen. Overige belangrijke opties voor het afspelen zijn: , waarmee het volledige scherm wordt gebruikt, en , die prestatieverhogend werkt. Om ervoor te zorgen dat de commandoregels niet te lang worden, kan het bestand .mplayer/config met voorkeursinstellingen gemaakt worden: vo=xv fs=yes zoom=yes Tenslotte kan mplayer gebruikt worden om een DVD naar een bestand van het type .vob te rippen. Om de tweede titel van een DVD de dumpen kan het volgende commando gebruikt worden: &prompt.root; mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd Het uitvoerbestand out.vob, is van het type MPEG en kan bewerkt worden met andere in dit onderdeel besproken programma's. <command>mencoder</command> mencoder Voordat mencoder wordt gebruikt, is het verstandig de opties uit de HTML-documentatie te bekijken. Er is een hulppagina, maar die is niet echt bruikbaar zonder de HTML-documentatie. Er zijn ontelbare mogelijkheden om de kwaliteit te verhogen, de bitrate te verlagen en formaten te wijzigen en een aantal van die truuks maken het verschil tussen goede en slechte prestaties. Hieronder staan een aantal voorbeelden beschreven. Eenvoudigweg kopiëren: &prompt.user; mencoder input.avi -oac copy -ovc copy -o output.avi Verkeerde combinaties van commandoregelopties kunnen resulteren in uitvoerbestanden die zelfs niet af te spelen zijn door mplayer. Daarom wordt aangeraden om het bij de optie in mplayer te houden als het alleen maar nodig is een bestand te rippen. Om input.avi te converteren naar de MPEG4-codec met MPEG3-audio encoding (audio/lame is verplicht): &prompt.user; mencoder input.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi Hiermee wordt uitvoer gemaakt die af te spelen is met mplayer en xine. input.avi kan worden vervangen door en als root gedraaid worden om een DVD titel direct te hercoderen. Omdat het waarschijnlijk is dat de eerste experimenten niet direct tevredenstellend zijn, wordt aangeraden een titel eerst naar een bestand te dumpen en dat als werkbestand te gebruiken. <application>xine</application> Videospeler De xine videospeler is een project met een brede scope, dat niet alleen tracht een allesomvattende video-oplossing te bieden, maar ook probeert een herbruikbare basisbibliotheek en een modulair uitvoerbaar bestand te maken dat uitgebreid kan worden met plug-ins. Het kan als package en port geïnstalleerd worden uit multimedia/xine. De xine speler heeft nog wat ruwe randjes, maar is zeker goed van start gegaan. In de praktijk heeft xine een snelle CPU met een snelle videokaart of ondersteuning voor de XVideo extensie nodig. De GUI is bruikbaar, maar wat onhandig. Op het moment van schrijven wordt er geen invoermodule bij xine geleverd waarmee CSS gecodeerde DVD's afgespeeld kunnen worden. Er zijn er die door andere partijen zijn gebouwd die dat type modules wel hebben, maar die zijn niet beschikbaar in de &os; portscollectie. Vergeleken met MPlayer, doet xine meer voor de gebruiker, maar tegelijkertijd neemt het wat van de fijnafstellingsmogelijkheden weg. De xine videospeler werkt het beste op XVideo interfaces. Standaard start de xine speler op in een grafische gebruikersinterface. Via het menu kan een specifiek bestand geopend worden: &prompt.user; xine Het is ook mogelijk om zonder de GUI direct een bestand af te laten spelen: &prompt.user; xine -g -p mymovie.avi <application>transcode</application> Hulpprogramma's De software transcode is geen speler, maar een verzameling hulpprogramma's voor het hercoderen van .avi en .mpg bestanden. Met transcode wordt het mogelijk om videobestanden samen te voegen, kapotte bestanden te repareren en commandoregelprogramma's te gebruiken met stdin/stdout stream interfaces. Net als MPlayer is transcode bijzonder experimentele software die vanuit de port multimedia/transcode gebouwd moet worden. Er zijn veel opties voor make beschikbaar en daaruit worden de volgende aangeraden: &prompt.root; make WITH_LIBMPEG2=yes Als ook multimedia/avifile wordt geïnstalleerd, dan dient WITH_AVIFILE aan de make commandoregel te worden toegevoegd: &prompt.root; make WITH_AVIFILE=yes WITH_LIBMPEG2=yes Hieronder staan twee voorbeelden beschreven waarin transcode wordt gebruikt voor het converteren van video met als resultaat anders geschaalde uitvoer. Het eerste encodeert de uitvoer naar een openDIVX AVI-bestand, het tweede encodeert het naar het meer portabele formaat MPEG. &prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \ -y opendivx -N 0x55 -o output.avi &prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \ -y mpeg -N 0x55 -o output.tmp &prompt.user; tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1 Er is een hulppagina voor transcode, maar er is weinig documentatie voor de verschillende tc* programma's (zoals tcmplex) die ook zijn geïnstalleerd. Voor ieder commando is wel de commandoregeloptie beschikbaar, waarmee een korte beschrijving voor het gebruik van het programma wordt getoond. Als de twee vergeleken worden, draait transcode aanzienlijk langzamer dan mencoder, maar is de kans wel groter dat er een bestand uit komt dat op de meeste spelers afgespeeld kan worden. MPEG-bestanden die met transcode zijn gemaakt, zijn bijvoorbeeld al afgespeeld op &windows.media; Player en Apple's &quicktime;. Verder Lezen De beschikbare videosoftware pakketten voor &os; zijn fors in ontwikkeling. Het is goed mogelijk dat in de nabije toekomst de meeste problemen die hier aan de kaak zijn gesteld, zijn opgelost. Intussen kunnen zij die het hoogst haalbare uit de A/V mogelijkheden voor &os; willen halen, dat het beste doen door wat beschikbaar is bij elkaar te scharrelen uit de beschikbare FAQ's and tutorials en meerdere programma's gebruiken. Het doel van deze paragraaf is de lezer wat richting te geven op dat vlak. De MPlayer documentatie is technisch erg informatief. Deze documenten kunnen het beste bekeken worden door iemand die veel kennis wil opdoen over video in &unix;. Op de MPlayer mailinglijst wordt het niet op prijsgesteld als iemand de documentatie niet heeft gelezen, dus het is verstandig RTFM in gedachten te houden alvorens bug reports naar ze te mailen. De xine HOWTO bevat een hoofdstuk over het verbeteren van prestaties, dat op alle spelers van toepassing is. Tenslotte zijn er nog een aantal veelbelovende applicaties die het proberen waard zijn: Avifile bestaat ook als port: multimedia/avifile; Ogle is er ook als port: multimedia/ogle; Xtheater; multimedia/dvdauthor, een open source pakket voor authoring van DVD content. Josef El-Rayes Oorspronkelijk geschreven door Marc Fonvieille Verbeterd en aangepast door TV-kaarten Installeren TV-kaarten Inleiding Met TV-kaarten is het mogelijk om naar (kabel)uitzendingen te kijken op een computer. Op de meeste kaarten kan composiet video aangeleverd worden via een RCA of S-video input en sommige kaarten hebben ook een FM tuner. &os; biedt ondersteuning voor PCI-gebaseerde TV-kaarten met een Brooktree Bt848/849/878/879 of een Conexant CN-878/Fusion 878a Video Capture Chip met het stuurprogramma &man.bktr.4;. Het is van belang dat er op de kaart ook een ondersteunde tuner zit. Hiervoor kan &man.bktr.4; geraadpleegd worden, waarin een lijst met ondersteunde tuners staat. Stuurprogramma Toevoegen Voordat de kaart gebruikt kan worden, dient het stuurprogramma &man.bktr.4; geladen te worden. Dit kan door de volgende regel aan /boot/loader.conf toe te voegen: bktr_load="YES" Daarnaast is het ook mogelijk om statisch ondersteuning voor de TV-kaart in de kernel te compileren. Dan dient de volgende regel toegevoegd te worden aan de kernelinstellingen: device bktr device iicbus device iicbb device smbus De extra stuurprogramma's zijn nodig omdat de kaartcomponenten verbonden zijn via een I2C bus. Met deze instellingen kan een nieuwe kernel gebouwd en geïnstalleerd worden. Als een systeem eenmaal ondersteuning biedt, hoort de TV-kaart ongeveer als volgt bij een herstart getoond te worden: bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner. Deze berichten kunnen afwijken, afhankelijk van de gebruikte hardware. Het is van belang te controleren of de tuner juist herkend wordt; er kunnen nog een aantal instellingen gemaakt worden voor parameters met &man.sysctl.8; MIB's en in het kernelinstellingenbestand. Om bijvoorbeeld het gebruik van een Philips SECAM tuner te forceren, kan de volgende regel aan het bestand met kernelinstellingen worden toegevoegd: options OVERRIDE_TUNER=6 Dit kan ook via een instelling van &man.sysctl.8;: &prompt.root; sysctl hw.bt848.tuner=6 In &man.bktr.4; en /usr/src/sys/conf/NOTES staan meer details over de beschikbare opties (onder &os; 4.X dient voor /usr/src/sys/conf/NOTES het bestand /usr/src/sys/i386/conf/LINT gelezen te worden). Handige Programma's Om een TV-kaart te gebruiken, dient een van de volgende applicaties geïnstalleerd te worden: multimedia/fxtv biedt TV-in-een-window en beeld/audio/videocapture mogelijkheden; multimedia/xawtv is ook een TV applicatie met dezelfde mogelijkheden als fxtv; misc/alevt decodeert Videotext/Teletext en kan deze weergeven; audio/xmradio, een applicatie om de FM tuner die bij sommige TV-kaarten zit te gebruiken; audio/wmtune, een handige bureaubladapplicatie voor radiotuners. Er zijn nog meer applicaties beschikbaar in de portscollectie. Problemen Oplossen Bij problemen met een TV-kaart dient eerst gecontroleerd te worden of de videocapture chip en de tuner echt ondersteund worden door het stuurprogramma &man.bktr.4; en of de juiste instellingen worden gebruikt. Voor meer ondersteuning en vragen over een specifieke TV-kaart is het aan te raden de archieven van de &a.multimedia.name; mailinglijst te raadplegen of er contact mee op te nemen. Marc Fonvieille Geschreven door Scanners scanners Inleiding In &os; is het, net als in andere moderne besturingssystemen, mogelijk om scanners te gebruiken. Gestandaardiseerde toegang tot scanners is mogelijk met de SANE (Scanner Access Now Easy) API uit de &os; portscollectie. SANE gebruikt ook een aantal &os; apparaatstuurprogramma's om toegang te krijgen tot de hardware van de scanner. &os; ondesteunt SCSI en USB scanners. Het is van belang te controleren of een scanner door SANE wordt ondersteund voordat er instellingen worden gemaakt. SANE heeft een lijst met ondersteunde apparaten waarin gekeken kan worden of een scanner wordt ondersteund en wat de status voor ondersteuning is. In &man.uscanner.4; staat een lijst met ondersteunde USB-scanners. Kernel Instellen Zoals hierboven al is aangegeven, worden zowel SCSI als USB-scanners ondersteund. Afhankelijk van de gebruikte scannerinterface zijn verschillende apparaatstuurprogramma's nodig. USB Interface In de GENERIC kernel zitten standaard de apparaatstuurprogramma's die nodig zijn voor ondersteuning van USB-scanners. In het geval wordt besloten tot het maken van een aangepaste kernel, dan dienen de volgende regels in het kernelinstellingenbestand te worden opgenomen: device usb device uhci device ohci device uscanner Afhankelijk van de USB-chipset op een moederbord, is alleen device uhci of device ohci nodig, maar het opnemen van beiden in het bestand met kernelinstellingen is niet schadelijk. Als het niet wenselijk is een nieuwe kernel te bouwen en er wordt geen GENERIC kernel gebruikt, dan kan de apparaatstuurprogrammamodule &man.uscanner.4; direct geladen worden met &man.kldload.8;: &prompt.root; kldload uscanner Om de module bij iedere systeemstart te laden kan de volgende regel aan /boot/loader.conf worden toegevoegd: uscanner_load="YES" Na een herstart met een juiste ingestelde kernel of na het laden van de benodigde module, kan de USB-scanner aangesloten worden. De scanner hoort ongeveer als volgt gemeld te worden in de systeemberichtbuffer (&man.dmesg.8;): uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2 Het bovenstaande geeft aan dat de scanner de apparaatnode /dev/uscanner0 gebruikt. Om onder &os; 4.X bepaalde USB-apparaten te zien, moet daar de USB daemon (&man.usbd.8;) draaien. Om die in te schakelen, dient usbd_enable="YES" toegevoegd te worden aan /etc/rc.conf en dient een systeem herstart te worden. SCSI Interface Als een scanner een SCSI interface heeft, is het belangrijk te weten welk SCSI controllerbord gebruikt gaat worden. Afhankelijk van de gebruikte SCSI chipset, dient het bestand met kernelinstellingen aangepast te worden. De GENERIC kernel ondersteunt de meest voorkomende SCSI controllers. In het bestand NOTES (LINT onder &os; 4.X) is de juiste instelling te vinden die toegevoegd moet worden aan het bestand met kernelinstellingen. Naast het toevoegen van het juiste SCSI-adapter stuurprogramma, dienen ook de volgende regels opgenomen te worden in het kernelinstellingenbestand: device scbus device pass Als de kernel juist gecompileerd is, horen de apparaten zichtbaar te zijn in de systeemberichtbuffer tijdens het opstarten: pass2 at aic0 bus 0 target 2 lun 0 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device pass2: 3.300MB/s transfers Als een scanner niet aan staat tijdens het opstarten, is het nog mogelijk handmatig detectie te forceren door de SCSI-bus te laten scannen met &man.camcontrol.8;: &prompt.root; camcontrol rescan all Re-scan of bus 0 was successful Re-scan of bus 1 was successful Re-scan of bus 2 was successful Re-scan of bus 3 was successful In het bovenstaande geval zal de scanner ongeveer als volgt verschijnen in de lijst met SCSI-apparaten: &prompt.root; camcontrol devlist <IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0) <IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1) <AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3) <PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0) Meer details over SCSI-apparaten staan in &man.scsi.4; en &man.camcontrol.8;. SANE Instellen Het SANE systeem is opgesplitst in twee delen: de backends (graphics/sane-backends) en de frontends (graphics/sane-frontends). Het deel met de backends zorgt voor de toegang tot de scanner zelf. In de lijst met door SANE ondersteunde apparaten staat welk backend welke scanner(s) ondersteunt. Het is echt nodig het juiste backend vast te stellen, omdat het anders bijzonder lastig wordt een scanner aan de praat te krijgen. Het deel met frontends levert een grafische scaninterface (xscanimage). Als eerste dient de port of het package graphics/sane-backends geïnstalleerd te worden. Daarna kan met het commando sane-find-scanner gecontroleerd worden welke scanner er door het SANE systeem is gedetecteerd: &prompt.root; sane-find-scanner -q found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3 In de uitvoer is te lezen welk type interface en welke apparaatnode worden gebruikt om de scanner met een systeem te verbinden. Het merk en het model worden wellicht niet getoond, maar dat is ook niet echt van belang. Sommige USB-scanners verlangen dat er firmware wordt geladen. Dit wordt uitgelegd in de hulppagina van het backend. Het is ook van belang &man.sane-find-scanner.1; en &man.sane.7; te lezen. Hierna kan gecontroleerd worden of de scanner ook te zien is voor een scanner-frontend. Er zit bij de SANE backends een standaard hulpprogramma &man.scanimage.1;. Met dit commando kunnen de apparaten zichtbaar gemaakt worden en kan vanaf de commandoregel gescand worden. Met de optie kunnen de scannerapparaten getoond worden: &prompt.root; scanimage -L device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner De afwezigheid van uitvoer of een bericht dat aangeeft dat er geen scanners zijn aangetroffen, betekent dat &man.scanimage.1; niet in staat is een scanner te identificeren. Als dit gebeurt, dient het instellingenbestand voor het backend aangepast te worden en dient daar de juiste instelling gemaakt te worden. De map /usr/local/etc/sane.d/ bevat alle bestanden met instellingen voor de backends. Het is bekend dat dit identificatieprobleem optreedt bij bepaalde USB-scanners. De USB-scanner die in wordt gebruikt, toont bijvoorbeeld de volgende informatie met sane-find-scanner: &prompt.root; sane-find-scanner -q found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0 De bovenstaande uitvoer geeft aan dat de scanner juist is gedetecteerd, dat hij de USB interface gebruikt en is aangesloten op de apparaatnode /dev/uscanner0. Nu kan gecontroleerd worden of de scanner juist wordt geïdentificeerd: &prompt.root; scanimage -L No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages). Omdat in het bovenstaande voorbeeld de scanner niet wordt geïdentificeerd, dient het bestand /usr/local/etc/sane.d/epson.conf gewijzigd te worden. De gebruikte scanner is een &epson.perfection; 1650, dus in dit geval dient voor de scanner het backend epson gebruikt te worden. Het is van belang om het commentaar in de instellingenbestanden van de backends te lezen. Het aanpassen van regels is eenvoudig: plaats een commentaarkarakter voor alle regels voor andere interfaces dan die nodig zijn weg (in dit geval worden alle regels die beginnen met het woord scsi uitgeschakeld, omdat er een USB interface wordt gebruiken), en dan kan onderaan het bestand een regel met de gebruikte interface en apparaatnode geplaatst worden: usb /dev/uscanner0 Het is aan te raden de opmerkingen te lezen in het bestand met instellingen voor het backend en ook de hulppagina, omdat daarin meer details en de correcte syntaxis te vinden zijn. Nu kan gecontroleerd worden of de scanner wèl juist wordt geïdentificeerd: &prompt.root; scanimage -L device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner In het bovenstaande voorbeeld wordt duidelijk dat de USB-scanner is geïdentificeerd. Het is niet belangrijk dat het merk en model niet overeenkomen. Het belangrijkste is het veld `epson:/dev/uscanner0', dat de juiste benamingen voor het backend en de apparaatnode aangeeft. Als scanimage -L in staat is een scanner goed te zien, dan zijn de instellingen compleet. Er kan nu met het apparaat gescand worden. Hoewel &man.scanimage.1; in staat is om vanaf de commandoregel te scannen, is het aan te raden beelden te scannen vanuit de grafische gebruikersinterface. SANE heeft een eenvoudige, maar efficiënte grafische interface: xscanimage (graphics/sane-frontends). Xsane (graphics/xsane) is een ander populair grafisch scanfrontend, dat geavanceerde mogelijkheden biedt, zoals meerdere scanmodi (fotokopie, fax, enzovoort), kleurcorrectie, batchscannen, enzovoort. Beide applicaties zijn als plug-in voor GIMP te gebruiken. Scannergebruik voor Andere Gebruikers Toestaan Alle voorgaande taken zijn uitgevoerd met root rechten, maar het is wellicht ook nodig dat andere gebruikers de scanner kunnen gebruiken. Dan heeft een gebruiker lees- en schrijfrechten nodig op de apparaatnode voor een scanner. Een USB-scanner gebruikt bijvoorbeeld apparaatnode /dev/uscanner0, waarvan de groep operator eigenaar is. Door gebruiker joe lid te maken van de groep operator, kan die gebruiker de scanner gebruiken: &prompt.root; pw groupmod operator -m joe In &man.pw.8; staan meer details. Op de apparaatnode /dev/uscanner0 moeten ook de juiste rechten staan. Standaard kan de groep operator alleen lezen op de apparaatnode. Dit is te wijzigen door de volgende regel aan /etc/devfs.rules toe te voegen: [system=5] add path uscanner0 mode 660 Daarna kan de volgende regel aan /etc/rc.conf toegevoegd worden en dient een machine herstart te worden: devfs_system_ruleset="system" Meer informatie over de bovenstaande instellingen staan in &man.devfs.8; manual page. Onder &os; 4.X heeft de groep operator standaard lees- en schrijfrechten op /dev/uscanner0. Natuurlijk dient ook beveiliging een factor te zijn in de afweging of een gebruiker lid gemaakt moet worden van een bepaalde groep, zeker als dat om de groep operator gaat. diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml index 3529a72dae..a8fe348964 100644 --- a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml @@ -1,5529 +1,5530 @@ Murray Stokely Gereorganiseerd door Siebrand Mazeland Vertaald door Netwerkdiensten - Samenvatting + Overzicht Dit hoofdstuk behandelt een aantal veelgebruikte netwerkdiensten op &unix; systemen. Er wordt ingegaan op de installatie, het instellen, testen en beheren van verschillende typen netwerkdiensten. Overal in dit hoofdstuk staan voorbeeldbestanden met instellingen waar de lezer zijn voordeel mee kan doen. Na het lezen van dit hoofdstuk weet de lezer: Hoe om te gaan met de inetd daemon; Hoe een netwerkbestandssysteem opgezet kan worden; Hoe een netwerkinformatiedienst (NIS) opgezet kan worden voor het delen van gebruikersaccounts; Hoe automatische netwerkinstellingen gemaakt kunnen worden met DHCP; Hoe een domeinnaam server opgezet kan worden; Hoe een Apache HTTP Server opgezet kan worden; Hoe een File Transfer Protocol (FTP) Server opgezet kan worden; Hoe een bestands- en printserver voor &windows; clients opgezet kan worden met Samba; Hoe datum en tijd gesynchroniseerd kunnen worden en hoe een tijdserver opgezet kan worden met het NTP protocol. Veronderstelde voorkennis: Basisbegrip van de scripts in /etc/rc; Bekend zijn met basis netwerkterminologie; Kennis van de installatie van software van derde partijen (). Chern Lee Geschreven door De <application>inetd</application> <quote>Super-Server</quote> Overzicht &man.inetd.8; wordt de internet Super-Server genoemd, omdat die verbindingen voor meerdere diensten beheert. Als door inetd een verbinding wordt ontvangen, bepaalt die voor welk programma de verbinding bedoeld is, spawnt dat proces en delegeert de socket (het programma wordt gestart met de socket van de dienst als zijn standaard invoer, uitvoer en foutbeschrijvingen). Het draaien van één instantie van inetd reduceert de load op een systeem in vergelijking met het in stand-alone modus draaien van alle daemons. inetd wordt primair gebruikt om andere daemons aan te roepen, maar het handelt een aantal triviale protocollen direct af, zoals chargen, auth en daytime. In deze paragraaf worden de basisinstellingen van inetd behandeld met de opties vanaf de commandoregel en met het instellingenbestand /etc/inetd.conf. Instellingen inetd wordt gestart door het /etc/rc.conf systeem. De optie inetd_enable staat standaard op NO, maar wordt door sysinstall vaak ingeschakeld door de instellingen van het medium beveiligingsprofiel. Door het instellen van inetd_enable="YES" of inetd_enable="NO" in /etc/rc.conf wordt inetd bij het opstarten van een systeem wel of niet ingeschakeld. Dan kunnen er ook nog een aantal commandoregelopties aan inetd meegegeven worden met de optie inetd_flags. Commandoregelopties inetd overzicht: inetd [-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a adres | hostnaam] [-p bestandsnaam] [-R rate] [instellingenbestand] -d Schakel debugging in. -l Schakel het loggen van succesvolle verbindingen in. -w Schakel TCP Wrapping voor externe diensten in (staat standaard aan). -W Schakel TCP Wrapping voor internet diensten uit inetd in (staat standaard aan). -c maximum Geeft het maximale aantal gelijktijdige verzoeken voor iedere dienst aan. De standaard is ongelimiteerd. Kan per dienst ter zijde geschoven worden met de parameter . -C rate Geeft het maximale aantal keren aan dat een dienst vanaf een bepaald IP adres per minuut aangeroepen kan worden. Kan per dienst ter zijde geschoven worden met de parameter . -R rate Geeft het maximale aantal keren aan dat een dienst per minuut aangeroepen kan worden. De standaard is 256. De instelling 0 geeft aan dat er geen limiet is. -a Geeft een of meer IP adres associaties aan. Er kan ook een hostnaam opgegeven worden, in welk geval het IPv4 of IPv6 adres dat met de hostnaam overeenkomst wordt gebruikt. Meestal wordt er een hostnaam gebruikt als inetd in een &man.jail.8; draait en de hostnaam dus overeenkomst met de &man.jail.8;-omgeving. Als er een hostnaam wordt aangegeven en zowel IPv4 als IPv6 zijn nodig, dan moeten er twee instellingen in /etc/inetd.conf gemaakt worden, voor beide protocollen een. Een TCP-gebaseerde dienst heeft bijvoorbeeld twee regels met instellingen nodig: tcp4 en tcp6 voor beide protocollen. -p Geeft het bestand aan waarin het proces ID opgeslagen moet worden. Al deze opties kunnen aan inetd meegegeven worden met de optie inetd_flags in /etc/rc.conf. Standaard staat inetd_flags op –wW, dat TCP wrapping voor de interne en externe diensten van inetd inschakelt. Voor beginnende gebruikers hoeven deze waarden meestal niet aangepast te worden of ingegeven te worden in /etc/rc.conf. Een externe dienst is een daemon buiten inetd, die wordt aangesproken als er een verbinding voor wordt ontvangen. Een interne dienst is een dienst die inetd vanuit zichzelf kan aanbieden. <filename>inetd.conf</filename> De instellingen van inetd worden beheerd in /etc/inetd.conf. Als er een wijziging wordt aangebracht in /etc/inetd.conf, dan kan inetd gedwongen worden om de instellingen opnieuw in te lezen door een HangUP signaal naar het inetd proces te sturen: <application>inetd</application> een HangUP Signaal Sturen &prompt.root; kill -HUP `cat /var/run/inetd.pid` Iedere regel in het bestand met instellingen heeft betrekking op een individuele daemon. Commentaar wordt vooraf gegaan door een #. De opmaak van /etc/inetd.conf is als volgt: service-name socket-type protocol {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] user[:group][/login-class] server-program server-program-arguments Een voorbeeldregel voor de ftpd daemon met IPv4: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l service-name Dit is de dienstnaam van een daemon. Die moet overeenkomen met een dienst uit /etc/services. Hiermee kan de poort waarop inetd moet luisteren aangegeven worden. Als er een nieuwe dienst wordt gemaakt, moet die eerst in /etc/services gezet worden. socket-type Dit is stream, dgram, raw of seqpacket. stream moet gebruikt worden voor connectie gebaseerde TCP daemons, terwijl dgram wordt gebruikt voor daemons die gebruik maken van het UDP transport protocol. protocol Een van de volgende: Protocol Toelichting tcp, tcp4 TCP IPv4 udp, udp4 UDP IPv4 tcp6 TCP IPv6 udp6 UDP IPv6 tcp46 Zowel TCP IPv4 als v6 udp46 Zowel UDP IPv4 als v6 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] geeft aan of de daemon die door inetd wordt aangesproken zijn eigen sockets kan afhandelen of niet. sockettypen moeten de optie gebruiken, terwijl streamsocket daemons, die meestal multi-threaded zijn, de optie horen te gebruiken. geeft meestal meerdere sockets aan een daemon, terwijl een child daemon spawnt voor iedere nieuwe socket. Het maximun aantal child daemons dat inetd mag spawnen kan ingesteld worden met de optie . Als een limiet van tien instanties van een bepaalde daemon gewenst is, dan zou er /10 achter gezet worden. Naast is er nog een andere optie waarmee het maximale aantal verbindingen van een bepaalde plaats naar een daemon ingesteld kan worden. Dat kan met . Een waarde van tien betekent hier dat er van iedere IP adres maximaal tien verbindingen naar daemon tot stand gebracht kunnen worden. Dit kan gebruikt worden om bedoeld en onbedoeld bronnengebruik van een machine te voorkomen. In dit veld is of verplicht. en zijn optioneel. Een stream-type multi-threaded daemon zonder or limieten is eenvoudigweg: nowait. Dezelfde daemon met een maximale limiet van tien daemons zou zijn: nowait/10. Dezelfde instellingen met een limiet van twintig connecties per IP adres per minuut en een totaal maximum van tien child daemons zou zijn: nowait/10/20. Deze opties worden allemaal gebruikt door de standaardinstelling voor de fingerd daemon: finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s user Dit is de gebruikersnaam waar een daemon onder draait. Daemons draaien meestal als de gebruiker root. Om veiligheidsredenen draaien sommige daemons onder de gebruiker daemon of de gebruiker met de minste rechten: nobody. server-program Het volledige pad van de daemon die uitgevoerd moet worden als er een verbinding wordt ontvangen. Als de daemon een dienst is die door inetd intern wordt geleverd, dan moet de optie gebruikt worden. server-program-arguments Deze optie werkt samen met de optie en hierin worden de argumenten ingesteld, beginnend met argv[0], die bij het starten aan de daemon worden meegegeven. Als mijndaemon -d de commandoregel is, dan zou mijndaemon -d de waarde van zijn. Hier geldt ook dat als de daemon een interne dienst is, hier de optie moet worden. Beveiliging Afhankelijk van het beveiligingsprofiel dat bij de installatie is gekozen, kunnen veel van de daemons van inetd standaard ingeschakeld zijn. Het is verstandig een daemon die niet noodzakelijk is uit te schakelen! Dat kan door een # voor de daemon in /etc/inetd.conf en dan een hangup signaal naar inetd te sturen. Sommige daemons, zoals fingerd, zijn wellicht helemaal niet gewenst omdat ze een aanvaller te veel informatie geven. Sommige daemons zijn zich niet echt bewust van beveiliging en hebben lange of niet bestaande time-outs voor verbindingspogingen. Hierdoor kan een aanvaller langzaam veel verbindingen maken met een daemon en zo beschikbare bronnen verzadigen. Het is verstandig voor die daemons de limietopties en te gebruiken. TCP wrapping staat standaard aan. Er staat meer informatie over het zetten van TCP restricties op de verschillende daemons die door inetd worden aangesproken in &man.hosts.access.5;. Allerlei daytime, time, echo, discard, chargen en auth zijn allemaal interne diensten van inetd. De dienst auth biedt identiteitsnetwerkdiensten (ident, identd) en is tot op een bepaald niveau instelbaar. Er staat meer informatie in &man.inetd.8;. Tom Rhodes Gereorganiseerd en verbeterd door Bill Swingle Geschreven door Netwerkbestandssysteem (NFS) NFS Het Netwerkbestandssysteem (Network File System) is een van de vele bestandssystemen die &os; ondersteunt. Het staat ook wel bekend als NFS. Met NFS is het mogelijk om mappen en bestanden met anderen in een netwerk te delen. Door het gebruik van NFS kunnen gebruikers en programma's bij bestanden op andere systemen op bijna dezelfde manier als bij hun eigen lokale bestanden. De grootste voordelen van NFS zijn: Lokale werkstations gebruiken minder diskruimte omdat veel gebruikte data op één machine opgeslagen kan worden en nog steeds toegankelijk is voor gebruikers via het netwerk; Gebruikers hoeven niet op iedere machine een thuismap te hebben. Thuismappen kunnen op de NFS server staan en op het hele netwerk beschikbaar zijn; Opslagapparaten als floppydisks, CDROM drives en &iomegazip; drives kunnen door andere machines op een netwerk gebruikt worden. Hierdoor kan het aantal drives met verwijderbare media in een netwerk verkleind worden. Hoe <acronym>NFS</acronym> Werkt NFS bestaat uit tenminste twee hoofdonderdelen: een server en een of meer clients. De client benadert de gegevens die op een server machine zijn opgeslagen via een netwerk. Om dit mogelijk te maken moeten er een aantal processen ingesteld en gestart worden. In &os; 4.X is het hulpprogramma portmap gebruikt in plaats van rpcbind. Dus in &os; 4.X moet elke rpcbind vervangen worden door portmap in de volgende voorbeelden. Op de server moeten de volgende daemons draaien: NFS server fileserver - unix clients + UNIX clients rpcbind portmap mountd nfsd Daemon Beschrijving nfsd De NFS daemon die verzoeken van de NFS clients afhandelt. mountd De NFS mountdaemon die doorgestuurde verzoeken van &man.nfsd.8; uitvoert. rpcbind Deze daemon geeft NFS clients aan welke poort de NFS server gebruikt. Op de client kan ook een daemon draaien: nfsiod. De nfsiod daemon handelt verzoeken van de NFS server af. Dit is optioneel en kan de prestaties verbeteren, maar het is niet noodzakelijk voor een normale en correcte werking. Meer informatie staat in &man.nfsiod.8;. <acronym>NFS</acronym> Instellen NFS instellen NFS instellen gaat redelijk rechtlijnig. Alle processen die moeten draaien kunnen meestarten bij het opstarten door een paar wijzigingen in /etc/rc.conf. Op de NFS server dienen de volgende opties in /etc/rc.conf te staan: rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r" mountd start automatisch als de NFS server is ingeschakeld. Op de client dient de volgende optie in /etc/rc.conf te staan: nfs_client_enable="YES" In het bestand /etc/exports staat beschreven welke bestandssystemen NFS moet exporteren (soms heet dat ook wel delen of sharen). Iedere regel in /etc/exports slaat op een bestandssysteem dat wordt geëxporteerd en welke machines toegang hebben tot dat bestandssysteem. Samen met machines die toegang hebben, kunnen ook toegangsopties worden aangegeven. Er zijn veel opties beschikbaar, maar hier worden er maar een paar beschreven. Alle opties staan beschreven in &man.exports.5;. Nu volgen een aantal voorbeelden voor /etc/exports: NFS export voorbeelden Het volgende voorbeeld geeft een beeld van hoe een bestandssysteem te exporteren, hoewel de instellingen afhankelijk zijn van de omgeving en het netwerk. Om bijvoorbeeld de map /cdrom te exporteren naar drie machines die dezelfde domeinnaam hebben als de server (vandaar dat de machinenamen geef domeinachtervoegsel hebben) of in /etc/hosts staan. De vlag exporteert het bestandssysteem als alleen–lezen. Door die vlag kan een ander systeem niet schrijven naar het geëxporteerde bestandssysteem. /cdrom -ro host1 host2 host3 Het volgende voorbeeld exporteert /home naar drie hosts op basis van IP adres. Dit heeft zin als er een privaat netwerk bestaat, zonder dat er een DNS server is ingesteld. Optioneel kan /etc/hosts gebruikt worden om interne hostnamen in te stellen. Er is meer informatie te vinden in &man.hosts.5;. Met de vlag mogen submappen ook mountpunten zijn. De submap wordt dan niet feitelijk gemount, maar de client mount dan alleen de submappen die verplicht of nodig zijn. /home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 Het volgende voorbeeld exporteert /a zo dat twee clients uit verschillende domeinen bij het bestandssysteem mogen. Met de vlag mag de gebruiker op het andere systeem gegevens naar het geëxporteerde bestandssysteem schrijven als root. Als de vlag niet wordt gebruikt, dan kan een gebruiker geen bestanden wijzigen op het geëxporteerde bestandssysteem, zelfs niet als een gebruiker daar root is. /a -maproot=root host.example.com box.example.org Om een client toegang te geven tot een geëxporteerd bestandssysteem, moet die client daar rechten voor hebben. De client moet daarvoor genoemd worden in /etc/exports. In /etc/exports staat iedere regel voor de exportinformatie van één bestandssysteem naar één host. Per bestandssysteem mag een host maar één keer genoemd worden en mag maar één standaard hebben. Stel bijvoorbeeld dat /usr een enkel bestandssysteem is. Dan is de volgende /etc/exports niet valide: ># Werkt niet als /usr 1 bestandssysteem is /usr/src client /usr/ports client Eén bestandssysteem, /usr, heeft twee regels waarin exports naar dezelfde host worden aangegeven, client. In deze situatie is de juiste instelling: /usr/src /usr/ports client De eigenschappen van een bestandssysteem dat naar een bepaalde host wordt geëxporteerd moeten allemaal op één regel staan. Regels waarop geen client wordt aangegeven worden behandeld als een enkele host. Dit beperkt hoe bestandssysteem geëxporteerd kunnen worden, maar dat blijkt meestal geen probleem. Het volgende voorbeeld is een valide exportlijst waar /usr en /exports lokale bestandssystemen zijn: # Export src and ports to client01 and client02, but only # client01 has root privileges on it /usr/src /usr/ports -maproot=root client01 /usr/src /usr/ports client02 # The client machines have root and can mount anywhere # on /exports. Anyone in the world can mount /exports/obj read-only /exports -alldirs -maproot=root client01 client02 /exports/obj -ro Als /etc/exports wordt aangepast, moet mountd herstart worden om de wijzigingen actief te maken. Dat kan door een HUP signaal naar het mountd proces te sturen: &prompt.root; kill -HUP `cat /var/run/mountd.pid` Het is ook mogelijk een machine te herstarten, zodat &os; alles netjes in kan stellen, maar dat is niet nodig. Het uitvoeren van de volgende commando's als root hoort hezelfde resultaat te hebben. Op de NFS server: &prompt.root; rpcbind &prompt.root; nfsd -u -t -n 4 &prompt.root; mountd -r Op de NFS client: &prompt.root; nfsiod -n 4 Nu is alles klaar om feitelijk het netwerkbestandssysteem te mounten. In de volgende voorbeelden is de naam van de server server en de naam van de client is client. Om een netwerkbestandssysteem slechts tijdelijk te mounten of om alleen te testen, kan een commando als het onderstaande als root op de client uitgevoerd worden: NFS mounten &prompt.root; mount server:/home /mnt Hiermee wordt de map /home op de server gemount op /mnt op de client. Als alles juist is ingesteld, zijn nu in /mnt op de client de bestanden van de server zichtbaar. Om een netwerkbestandssysteem iedere keer als een computer opstart te mounten, kan het bestandssysteem worden toegevoegd aan /etc/fstab file: server:/home /mnt nfs rw 0 0 Alle beschikbare opties staan in &man.fstab.5;. Mogelijkheden voor Gebruik NFS is voor veel doeleinden in te zetten. Een aantal voorbeelden: NFS gebruik Een aantal machines een CDROM of andere media laten delen. Dat is goedkoper en vaak ook handiger, bijvoorbeeld bij het installeren van software op meerdere machines; Op grote netwerken kan het praktisch zijn om een centrale NFS server in te richten, waarop alle thuismappen staan. Die thuismappen kunnen dan geëxporteerd worden, zodat gebruikers altijd dezelfde thuismap hebben, op welk werkstation ze ook aanmelden; Meerdere machines kunnen een gezamenlijke map /usr/ports/distfiles hebben. Dan is het mogelijk om een port op meerdere machines te installeren, zonder op iedere machine de broncode te hoeven downloaden. Wylie Stilwell Geschreven door Chern Lee Herschreven door Automatisch Mounten met <application>amd</application> amd automatic mounter daemon &man.amd.8; (de automatic mounter daemon) mount automatisch netwerkbestandssystemen als er aan een bestand of map binnen dat bestandssysteem wordt gerefereerd. amd unmount ook bestandssystemen die een bepaalde tijd niet gebruikt worden. Het gebruikt van amd is een aantrekkelijk en eenvoudig alternatief ten opzichte van permanente mounts, die meestal in /etc/fstab staan. amd werkt door zichzelf als NFS server te koppelen aan de mappen /host en /net. Als binnen die mappen een bestand wordt geraadpleegd, dan zoekt amd de bijbehorende netwerkmount op en mount die automatisch. /net wordt gebruikt om een geëxporteerd bestandssysteem van een IP adres te mounten, terwijl /host wordt gebruikt om een geëxporteerd bestandssysteem van een hostnaam te mounten. Het raadplegen van een bestand in /host/foobar/usr geeft amd aan dat die moet proberen de /usr export op de host foobar te mounten. Een Export Mounten met <application>amd</application> De beschikbare mounts van een netwerkhost zijn te bekijken met showmount. Om bijvoorbeeld de mounts van de host foobar te bekijken: &prompt.user; showmount -e foobar Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0 &prompt.user; cd /host/foobar/usr Zoals in het bovenstaande voorbeeld te zien is, toont showmount /usr als een export. Als er naar de map /host/foobar/usr wordt gegaan, probeert amd de hostnaam foobar te resolven en de gewenste export automatisch te mounten. amd kan gestart worden door de opstartscript door de volgende regel in /etc/rc.conf te plaatsen: amd_enable="YES" Er kunnen ook nog opties meegegeven worden aan amd met de optie amd_flags. Standaard staat amd_flags ingesteld op: amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" In het bestand /etc/amd.map staan de standaardinstellingen waarmee exports gemount worden. In het bestand /etc/amd.conf staan een aantal van de meer gevorderde instellingen van amd. In &man.amd.8; en &man.amd.conf.5; staat meer informatie. John Lind Geschreven door Problemen bij Samenwerking met Andere Systemen Bepaalde Ethernet adapters voor ISA PC systemen kennen limieten die tot serieuze netwerkproblemen kunnen leiden, in het bijzonder met NFS. Dit probleem is niet specifiek voor &os;, maar het kan op &os; wel voor komen. Het probleem ontstaat bijna altijd als (&os;) PC systemen netwerken met high-performance werkstations, zoals van Silicon Graphics, Inc. en Sun Microsystems, Inc. De NFS mount werkt prima en wellicht lukken een aantal acties ook, maar dan ineens lijkt de server niet meer te reageren voor de client, hoewel verzoeken van en naar andere systemen gewoon verwerkt worden. Dit gebeurt op een clientsysteem, of de client nu het &os systeem is of het werkstation. Op veel systemen is er geen manier om de client netjes af te sluiten als dit probleem is ontstaan. Vaak is de enige mogelijkheid een reset van de client, omdat het probleem met NFS niet opgelost kan worden. Hoewel de enige correcte oplossing de aanschaf van een snellere en betere Ethernet adapter voor het &os; systeem is, is er zo om het probleem heen te werken dat het werkbaar is. Als &os; de server is, kan de optie gebruikt worden bij het mounten door de client. Als het &os; systeem de client is, dan dient het NFS bestandssysteem gemount te worden met de optie . Deze opties kunnen het vierde veld zijn in een regel in fstab voor automatische mounts en bij handmatige mounts met &man.mount.8; kan de parameter gebruikt worden. Soms wordt een ander probleem voor dit probleem versleten, als servers en clients zich op verschillende netwerken bevinden. Als dat het geval is, dan dient vastgesteld te worden dat routers de UDP informatie op de juiste wijze routeren, omdat er anders nooit NFS verkeer gerouteerd kan worden. In de volgende voorbeelden is fastws de host(interface)naam van een high-performance werkstation en freebox is de host(interface)naam van een &os; systeem met een Ehernet adapter die mindere prestaties levert. /sharedfs wordt het geëxporteerde NFS bestandssysteem (zie &man.exports.5;) en /project wordt het mountpunt voor het geëxporteerde bestandssysteem op de client. In sommige gevallen kunnen applicaties beter draaien als extra opties als of en gebruikt worden. Voorbeelden voor het &os; systeem (freebox) als de client in /etc/fstab op freebox: fastws:/sharedfs /project nfs rw,-r=1024 0 0 Als een handmatig mountcommando op freebox: &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project Voorbeelden voor het &os; systeem als de server in /etc/fstab op fastws: freebox:/sharedfs /project nfs rw,-w=1024 0 0 Als een handmatig mountcommando op fastws: &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project Bijna iedere 16–bit Ethernet adapter werkt zonder de hierboven beschreven restricties op de lees- en schrijfgrootte. Voor wie het wil weten wordt nu beschreven wat er gebeurt als de fout ontstaan, wat ook duidelijk maakt waarom het niet hersteld kan worden. NFS werkt meestal met een blockgrootte van 8 K (hoewel het mogelijk is dat er kleinere fragmenten worden verwerkt). Omdat de maximale grootte van een Ethernet pakket rond de 1500 bytes ligt, wordt een block opgesplitst in meerdere Ethernet pakketten, hoewel het hoger in de code nog steeds één eenheid is, en wordt ontvangen, samengevoegd en bevestigd als een eenheid. De high-performance werkstations kunnen de pakketten waaruit een NFS eenheid bestaat bijzonder snel naar buiten pompen. Op de kaarten met minder capaciteit worden de eerdere pakketten door de latere pakketten van dezelfde eenheid ingehaald voordat ze bij die host zijn aangekomen en daarom kan de eenheid niet worden samengesteld en bevestigd. Als gevolg daarvan ontstaat er op het werkstation een time-out en probeert die de eenheid opnieuw te sturen, maar dan weer de hele eenheid van 8 K, waardoor het proces wordt herhaald, ad infinitum. Door de grootte van de eenheid kleiner te houden dan de grootte van een Ethernet pakket, is het zeker dat elk Ethernet pakket dat compleet is aangekomen bevestigd kan worden, zodat de deadlock niet ontstaat. Toch kan een PC systeem nog wel overrompeld worden als high-performance werkstations er op inhakken, maar met de betere netwerkkaarten valt het dan in ieder geval niet om door de NFS eenheden. Als het systeem toch wordt overrompeld, dan worden de betrokken eenheden opnieuw verstuurd en dan is de kans groot dat ze worden ontvangen, samengevoegd en bevestigd. Bill Swingle Geschreven door Eric Ogren Verbeterd door Udo Erdelhoff Netwerkinformatiesysteem (NIS/YP) Wat Is Het? NIS Solaris HP-UX AIX Linux NetBSD OpenBSD NIS, dat staat voor Netwerkinformatiediensten (Network Information Services), is ontwikkeld door Sun Microsystems om het beheer van &unix; (origineel &sunos;) systemen te centraliseren. Tegenwoordig is het eigenlijk een industriestandaard geworden. - Alle grote &unix;-achtige systemen (&solaris;, HP-UX, &aix;, + Alle grote &unix; achtige systemen (&solaris;, HP-UX, &aix;, &linux;, NetBSD, OpenBSD, &os;, enzovoort) ondersteunen NIS. yellow pagesNIS NIS stond vroeger bekend als Yellow Pages, maar vanwege problemen met het handelsmerk heeft Sun de naam veranderd. De oude term, en yp, wordt nog steeds vaak gebruikt. NIS domeinen Het is een op RPC gebaseerd client/server systeem waarmee een groep machines binnen een NIS domein een gezamenlijke set met instellingenbestanden kan delen. Hierdoor kan een beheerder NIS systemen opzetten met een minimaal aantal instellingen en vanaf een centrale lokatie instellingen toevoegen, verwijderen en wijzigen. Windows NT Het is te vergelijken met het &windowsnt; domeinsysteem en hoewel de interne implementatie van de twee helemaal niet overeenkomt, is de basisfunctionaliteit vergelijkbaar. Termen en Processen om te Onthouden Er zijn een aantal termen en belangrijke gebruikersprocessen die een rol spelen bij het implementeren van NIS op &os;, zowel bij het maken van een NIS server als bij het maken van een systeem dan NIS client is: rpcbind portmap Term Beschrijving NIS domeinnaam Een NIS master server en al zijn clients (inclusief zijn slave master) hebben een NIS domeinnaan. Vergelijkbaar met een &windowsnt; domeinnaam, maar de NIS domeinnaam heeft niets te maken met DNS. rpcbind Moet draaien om RPC (Remote Procedure Call in te schakelen, een netwerkprotocol dat door NIS gebruikt wordt). Als rpcbind niet draait, dan kan een NIS server niet draaien en kan een machine ook geen NIS client zijn (In &os; 4.X wordt portmap in plaats van rpcbind). ypbind Verbindt een NIS client aan zijn NIS server. Dat gebeurt door met de NIS domeinnaam van het systeem en door het gebruik van RPC te verbinden met de server. ypbind is de kern van client-server communicatie in een NIS omgeving. Als ypbind op een machine stopt, dan kan die niet meer bij de NIS server komen. ypserv Hoort alleen te draaien op NIS servers. Dit is het NIS server proces zelf. Als &man.ypserv.8; stopt, dan kan de server niet langer reageren op NIS verzoeken (hopelijk is er dan een slave server om het over te nemen). Er zijn een aantal implementaties van NIS, maar niet die op &os;, die geen verbinding met een andere server proberen te maken als de server waarmee ze verbonden waren niet meer reageert. In dat geval is vaak het enige dat werkt het server proces herstarten (of zelfs de hele server) of het ypbind proces op de client. rpc.yppasswdd Nog een proces dat alleen op NIS master servers hoort te draaien. Dit is een daemon waarbij NIS clients hun NIS wachtwoorden kunnen wijzigen. Als deze daemon niet draait, moeten gebruikers aanmelden op de NIS master server en daar hun wachtwoord wijzigen. Hoe Werkt Het? Er zijn drie typen hosts in een NIS omgeving: master servers, slave servers en clients. Servers zijn het centrale depot voor instellingen voor een host. Master servers bevatten de geauthoriseerd kopie van die informatie, terwijl slave servers die informatie spiegelen voor redundantie. Clients verlaten zich op de servers om hun die informatie ter beschikking te stellen. Op deze manier kan informatie uit veel bestanden gedeeld worden. De bestanden master.passwd, group en hosts worden meestal via NIS gedeeld. Als een proces op een client informatie nodig heeft die normaliter in een van die lokale bestanden staat, dan vraagt die het in plaats daarvan aan de NIS servers waarmee hij verbonden is. Soorten Machines NIS master server Een NIS master server. Deze server onderhoudt, analoog aan een &windowsnt; primary domain controller, de bestanden die door alle NIS clients gebruikt worden. De bestanden passwd, group en andere bestanden die door de NIS clients gebruikt worden staan op de master server. Het is mogelijk om één machine master server te laten zijn voor meerdere NIS domeinen. Dat wordt in deze inleiding echter niet beschreven, omdat die uitgaat van een relatief kleine omgeving. NIS slave server NIS slave servers. Deze zijn te vergelijken met &windowsnt; backup domain controllers. NIS slave servers beheren een kopie van de bestanden met gegevens op de NIS master. NIS slave servers bieden redundantie, die nodig is in belangrijke omgevingen. Ze helpen ook om de belasting te verdelen met de master server: NIS client maken altijd een verbinding met de NIS server die het eerst reageert en dat geldt ook voor antwoorden van slave servers. NIS client NIS clients. NIS clients authenticeren, net als de meeste &windowsnt; werkstations, tegen de NIS server (of de &windowsnt; domain controller in het geval van &windowsnt; werkstations) bij het aanmelden. NIS/YP Gebruiken Dit onderdeel behandelt het opzetten van een NIS voorbeeldomgeving. Dit onderdeel veronderstelt dat &os; 3.3 of later draait. De nu volgende instructies werken waarschijnlijk voor iedere versie van &os; hoger dan 3.0, maar dat hoeft niet waar te zijn. Plannen Er wordt uitgegaan van een beheerder van een klein universiteitslab. Dat lab, dat bestaat uit &os; machines, kent op dit moment geen centraal beheer. Iedere machine heeft zijn eigen /etc/passwd en /etc/master.passwd. Die bestanden worden alleen met elkaar in lijn gehouden door handmatige handelingen. Als er op dit moment een gebruiker aan het lab wordt toegevoegd, moet adduser op alle 15 machines gedraaid worden. Dat moet natuurlijk veranderen en daarom is besloten het lab in te richten met NIS, waarbij twee machines als server worden gebruikt. Het lab ziet er ongeveer als volgt uit: Machinenaam IP adres Rol Machine ellington 10.0.0.2 NIS master coltrane 10.0.0.3 NIS slave basie 10.0.0.4 Wetenschappelijk werkstation bird 10.0.0.5 Client machine cli[1-11] 10.0.0.[6-17] Andere client machines Bij het voor de eerste keer instellen van een NIS schema is het verstandig eerst na te denken over hoe dat opgezet moet worden. Hoe groot een netwerk ook is, er moeten een aantal beslissingen gemaakt worden. Een NIS Domeinnaam Kiezen NIS domeinnaam Dit is wellicht niet de bekende domeinnaam. Daarom wordt het ook de NIS domeinnaam genoemd. Bij de broadcast van een client om informatie wordt ook de naam van het NIS domein waar hij onderdeel van uitmaakt meegezonden. Zo kunnen meerdere servers op een netwerk bepalen of er antwoord gegeven dient te worden op een verzoek. De NIS domeinnaam is kan voorgesteld worden als de naam van een groep hosts op op een of andere manier aan elkaar gerelateerd zijn. Sommige organisaties kiezen hun internet domeinnaam als NIS domeinnaam. Dat wordt niet aangeraden omdat het voor verwarring kan zorgen bij het debuggen van netwerkproblemen. De NIS domeinnaam moet uniek zijn binnen een netwerk en het is handig als die de groep machines beschrijft waarvoor hij geldt. Zo kan bijvoorbeeld de Financiële afdeling van Acme Inc. als NIS domeinnaam acme-fin hebben. In dit voorbeeld wordt de naam test-domain gekozen. SunOS Sommige besturingssystemen gebruiken echter (met name &sunos;) hun NIS domeinnaam als hun internet domeinnaam. Als er machines zijn op een netwerk die deze restrictie kennen, dan moet de internet domeinnaam als de naam voor het NIS domainnaam gekozen worden. Systeemeisen Bij het kiezen van een machine die als NIS server wordt gebruikt zijn er een aantal aandachtspunten. Een van de onhandige dingen aan NIS is de afhankelijkheid van de clients van de server. Als een client de server voor zijn NIS domein niet kan bereiken, dan wordt die machine vaak onbruikbaar. Door het gebrek aan gebruiker- en groepsinformatie bevriezen de meeste systemen. Daarom moet er een machine gekozen worden die niet vaak herstart hoeft te worden of wordt gebruikt voor ontwikkeling. De NIS server is in het meest ideale geval een alleenstaande server die als enige doel heeft NIS server te zijn. Als een netwerk niet zwaar wordt gebruikt, kan de NIS server op een machine die ook andere diensten aanbiedt gezet worden, maar het blijft belangrijk om ervan bewust te zijn dat als de NIS server niet beschikbaar is, dat nadelige invloed heeft op alle NIS clients. NIS Servers De hoofdversies van alle NIS informatie staan opgeslagen op één machine die de NIS master server heet. De databases waarin de informatie wordt opgeslagen heten NIS maps. In &os; worden die maps opgeslagen in /var/yp/[domainnaam] waar [domeinnaam] de naam is van het NIS domein dat wordt bediend. Een enkele NIS server kan tegelijkertijd meerdere NIS domeinen ondersteunen en het is dus mogelijk dat er meerdere van zulke mappen zijn, een voor ieder ondersteund domein. Ieder domein heeft zijn eigen onafhankelijke set maps. In NIS master en slave servers worden alle NIS verzoeken door de ypserv daemon afgehandeld. ypserv is verantwoordelijk voor het ontvangen van inkomende verzoeken van NIS clients, het vertalen van de gevraagde domeinnaam en mapnaam naar een pad naar het corresponderende databasebestand en het terugsturen van de database naar de client. Een NIS Master Server Opzetten NIS server opzetten Het opzetten van een master NIS server kan erg eenvoudig zijn, afhankelijk van de behoeften. &os; heeft ondersteuning voor NIS als basisfunctie. Alleen de volgende regels hoeven aan /etc/rc.conf toegevoegd te worden en &os; doet de rest: nisdomainname="test-domain" Deze regel stelt de NIS domainnaam in op test-domain bij het instellen van het netwerk (bij het opstarten). nis_server_enable="YES" Dit geeft &os; aan de NIS server processen te starten als het netwerk de volgende keer wordt opgestart. nis_yppasswdd_enable="YES" Dit schakelt de dameon rpc.yppasswdd in die, zoals al eerder aangegeven, clients toestaat om hun NIS wachtwoord vanaf een client machine te wijzigen. Afhankelijk van de inrichting van NIS, kunnen er nog meer instellingen nodig zijn. In het onderdeel NIS Servers die ook NIS Clients Zijn staan meer details. Nu hoeft alleen /etc/netstart als superuser uitgevoerd te worden. Dat stelt alles in met gebruikmaking van de waarden uit /etc/rc.conf. NIS Maps Initialiseren NIS maps Die NIS maps zijn databasebestanden die in de map /var/yp staan. Ze worden gemaakt uit de bestanden met instellingen uit de map /etc van de NIS master, met één uitzondering: /etc/master.passwd. Daar is een goede reden voor, want het is niet wenselijk om de wachtwoorden voor root en andere administratieve accounts naar alle servers in het NIS domein te sturen. Daar moet voor het initialiseren van de NIS maps het volgende uitgevoerd worden: &prompt.root; cp /etc/master.passwd /var/yp/master.passwd &prompt.root; cd /var/yp &prompt.root; vi master.passwd Dan horen alle systeemaccounts verwijderd te worden (bin, tty, kmem, games, enzovoort) en alle overige accounts waarvoor het niet wenselijk is dat ze op de NIS clients terecht komen (bijvoorbeeld root en alle andere UID 0 (superuser) accounts). /var/yp/master.passwd hoort niet te lezen te zijn voor een groep of voor de wereld (dus modus 600)! Voor het aanpassen van de rechten kan chmod gebruikt worden. Tru64 UNIX Als dat is gedaan, kunnen de NIS maps geïnitialiseerd worden. Bij &os; zit een script ypinit waarmee dit kan (in de hulppagina staat meer informatie). Dit script is beschikbaar op de meeste &unix; besturingssystemen, maar niet op allemaal. Op Digital UNIX/Compaq Tru64 UNIX heet het ypsetup. Omdat er maps voor een NIS master worden gemaakt, wordt de optie meegegeven aan ypinit. Aangenomen dat de voorgaande stappen zijn uitgevoerd, kunnen de NIS maps gemaakt worden op de volgende manier: ellington&prompt.root; ypinit -m test-domain Server Type: MASTER Domain: test-domain Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add: coltrane next host to add: ^D The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y] y [..uitvoer van het maken van de maps..] NIS Map update completed. ellington has been setup as an YP master server without any errors. ypinit hoort /var/yp/Makefile gemaakt te hebben uit /var/yp/Makefile.dist. Als dit bestand is gemaakt, neemt dat bestand aan dat er in een omgeving met een enkele NIS server wordt gewerkt met alleen &os; machines. Omdat test-domain ook een slave server bevat, dient /var/yp/Makefile gewijzigd te worden: ellington&prompt.root; vi /var/yp/Makefile Als de onderstaande regel niet al uitgecommentarieerd is, dient dat alsnog te gebeuren: NOPUSH = "True" Een NIS Slave Server Opzetten NIS slave server Het opzetten van een NIS slave server is nog makkelijker dan het opzetten van de master. Dit kan door aan te melden op de slave server en net als voor de master server /etc/rc.conf te wijzigen. Het enige verschil is dat nu de optie gebruikt wordt voor het draaien van ypinit. Met de optie moet ook de naam van de NIS master meegegven worden. Het commando ziet er dus als volgt uit: coltrane&prompt.root; ypinit -s ellington test-domain Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Don't forget to update map ypservers on ellington. Nu hoort er een map /var/yp/test-domain te zijn waarin kopieë van de NIS master server maps staan. Die moeten bijgewerkt blijven. De volgende regel in /etc/crontab op de slave servers regelt dat: 20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid Met de bovenstaande twee regels wordt de slave gedwongen zijn maps met de maps op de master server te synchroniseren. Hoewel dit niet verplicht is, omdat de master server probeert veranderingen aan de NIS maps door te geven aan zijn slaves, is het wel verstandig om een slave tot bijwerken te dwingen, omdat wachtwoordinformatie van vitaal belang is voor systemen die van de server afhankelijk zijn. Dit is des te belangrijker op drukke netwerken, omdat daar het bijwerken van maps niet altijd compleet afgehandeld hoeft te worden. Nu kan ook op de slave server het commando /etc/netstart uitgevoerd worden, dat op zijn beurt de NIS server start. NIS Clients Een NIS client maakt wat heet een verbinding (binding) met een NIS server met de ypbind daemon. ypbind controleert het standaarddomein van het systeem (zoals ingesteld met domainname) en begint met het broadcasten van RPC verzoeken op het lokale netwerk. Die verzoeken bevatten de naam van het domein waarvoor ypbind een binding probeert te maken. Als een server die is ingesteld om het gevraagde domein te bedienen een broadcast ontvangt, dan antwoordt die aan ypbind dat dan het IP adres van de server opslaat. Als er meerdere servers beschikbaar zijn, een master en bijvoorbeeld meerdere slaves, dan gebruikt ypbind het adres van de eerste server die antwoord geeft. Vanaf dat moment stuurt de client alle NIS verzoeken naar die server. ypbind pingt de server zo nu en dan om te controleren of die nog draait. Als er na een bepaalde tijd geen antwoord komt op een ping, dan markeert ypbind het domein als niet verbonden en begint het broadcasten opnieuw, in de hoop dat er een andere server wordt gelocaliseerd. Een NIS Client Opzetten NIS client instellen Het opzetten van een &os; machine als NIS client is redelijk doorzichtig: Wijzig /etc/rc.conf en voeg de volgende regels toe om de NIS domeinnaam in te stellen en ypbind mee te laten starten bij het starten van het netwerk: nisdomainname="test-domain" nis_client_enable="YES" Om alle mogelijke regels voor accounts uit de NIS server te halen, dienen alle gebruikersaccounts uit /etc/master.passwd verwijderd te worden en dient met vipw de volgende regel aan het einde van het bestand geplaatst te worden: +::::::::: Door deze regel wordt alle geldige accounts in de password map van de NIS server toegang gegeven. Er zijn veel manieren om de NIS client in te stellen door deze regel te veranderen. In het onderdeel netgroups hieronder staat meer informatie. Zeer gedetailleerde informatie staat in het boek NFS en NIS beheren van O'Reilly. Er moet tenminste één lokale account behouden blijven (dus niet geïmporteerd via NIS) in /etc/master.passwd en die hoort ook lid te zijn van de groep wheel. Als er iets mis is met NIS, dan kan die account gebruikt worden om via het netwerk aan te melden, root te worden en het systeem te repareren. Om alle groepen van de NIS server te importeren, kan de volgende regel aan /etc/group toegevoegd worden: +:*:: Na het afronden van deze stappen zou met ypcat passwd de passwd map van de NIS server te zien moeten zijn. NIS Beveiliging In het algemeen kan iedere netwerkgebruiker een RPC verzoek doen uitgaan naar &man.ypserv.8; en de inhoud van de NIS maps ontvangen, mits die gebruiker de domeinnaam kent. Omdat soort ongeautoriseerde transacties te voorkomen, ondersteunt &man.ypserv.8; de optie securenets, die gebruikt kan worden om de toegang te beperken tot een opgegeven aantal hosts. Bij het opstarten probeert&man.ypserv.8; de securenets informatie te laden uit het bestand /var/yp/securenets. Dit pad kan verschillen, afhankelijk van het pad dat opgegeven is met de optie . Dit bestand bevat regels die bestaan uit een netwerkspecificatie en een netwerkmasker, gescheiden door witruimte. Regels die beginnen met # worden als commentaar gezien. Een voorbeeld van een securenetsbestand zou er zo uit kunnen zien: # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 192.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 # this includes the machines in the testlab 10.0.0.0 255.255.240.0 Als &man.ypserv.8; een verzoek ontvangt van een adres dat overeenkomt met een van de bovenstaande regels, dan wordt dat verzoek normaal verwerkt. Als er geen enkele regel op het verzoek van toepassing is, dan wordt het verzoek genegeerd en wordt er een waarschuwing gelogd. Als het bestand /var/yp/securenets niet bestaat, dan accepteert ypserv verbindingen van iedere host. Het programma ypserv ondersteunt ook het pakket tcpwrapper van Wietse Venema. Daardoor kan een beheerder de instellingenbestanden van tcpwrapper gebruiken voor toegangsbeperking in plaats van /var/yp/securenets. Hoewel beide methoden van toegangscontrole enige vorm van beveiliging bieden, zijn ze net als de privileged port test kwetsbaar voor IP spoofing aanvallen. Al het NIS gerelateerde verkeer hoort door een firewall tegengehouden te worden. Servers die gebruik maken van /var/yp/securenets kunnen wellicht legitieme verzoeken van NIS clients weigeren als die gebruik maken van erg oude TCP/IP implementaties. Sommige van die implementaties zetten alle host bits op nul als ze een broadcast doen en/of kijken niet naar het subnetmasker als ze het broadcastadres berekenen. Hoewel sommige van die problemen opgelost kunnen worden door de instellingen op de client aan te passen, zorgen andere problemen voor het noodgedwongen niet langer kunnen gebruiker van NIS voor die client of het niet langer gebruiken van /var/yp/securenets. Het gebruik van /var/yp/securenets op een server met zo'n oude implementatie van TCP/IP is echt een slecht idee en zal leiden tot verlies van NIS functionaliteit voor grote delen van een netwerk. tcpwrapper Het gebruik van het tcpwrapper pakket leidt tot langere wachttijden op de NIS server. De extra vertraging kan net lang genoeg zijn om een timeout te veroorzaken in clientprogramma's, in het bijzonder als het netwerk druk is of de NIS server traag is. Als een of meer clients last hebben van dat symptoom, dan is het verstandig om de clientsystemen in kwestie NIS slave server te maken en naar zichzelf te laten wijzen. Aanmelden voor Bepaalde Gebruiker Blokkeren In het lab staat de machine basie, die alleen faculteitswerkstation hoort te zijn. Het is niet gewenst die machine uit het NIS domein te halen, maar het passwd bestand op de master NIS server bevat nu eenmaal accounts voor zowel de faculteit als de studenten. Hoe kan dat opgelost worden? Er is een manier om het aanmelden van specifieke gebruikers op een machine te weigeren, zelfs als ze in de NIS database staan. Daarvoor hoeft er alleen maar username aan het einde van /etc/master.passwd op de client machine toegevoegd te worden, waar username de gebruikersnaam van de gebruiker die niet mag aanmelden is. Dit gebeurt bij voorkeur met vipw, omdat vipw de wijzigingen aan /etc/master.passwd controleert en ook de wachtwoord database opnieuw bouwt na het wijzigen. Om bijvoorbeeld de gebruiker bill aan te kunnen laten aanmelden op basie: basie&prompt.root; vipw [add -bill to the end, exit] vipw: rebuilding the database... vipw: done basie&prompt.root; cat /etc/master.passwd root:[password]:0:0::0:0:The super-user:/root:/bin/csh toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin operator:*:2:5::0:0:System &:/:/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin +::::::::: -bill basie&prompt.root; Udo Erdelhoff Geschreven door Netgroups Gebruiken netgroups De methode uit het vorige onderdeel werkt prima als er maar voor een beperkt aantal gebruikers en/of machines speciale regels nodig zijn. Op grotere netwerken gebeurt het gewoon dat er wordt vergeten om een aantal gebruikers de aanmeldrechten op gevoelige machines te ontnemen of dat zelfs iedere individuele machine aangepast moet worden, waardoor het voordeel van NIS teniet wordt gedaan: centraal beheren. De ontwikkelaars van NIS hebben dit probleem opgelost met netgroups. Het doel en de semantiek kunnen vergeleken worden met de normale groepen die gebruikt worden op &unix; bestandssystemen. De belangrijkste verschillen zijn de afwezigheid van een numeriek ID en de mogelijkheid om een netgroup aan te maken die zowel gebruikers als andere netgroups bevat. Netgroups zijn ontwikkeld om gebruikt te worden voor grote, complexe netwerken met honderden gebruikers en machines. Aan de ene kant is dat iets Goeds. Aan de andere kant is het wel complex en bijna onmogelijk om netgroups met een paar eenvoudige voorbeelden uit te leggen. Dat probleem wordt in de rest van dit onderdeel duidelijk gemaakt. Stel dat de succesvolle implementatie van NIS in het lab de interesse heeft gewekt van een centrale beheerclub. De volgende taak is het uitbreiden van het NIS domein met een aantal andere machines op de campus. De onderstaande twee tabellen bevatten de namen van de nieuwe gebruikers en de nieuwe machines met een korte beschijving. Gebruikersna(a)m(en) Beschrijving alpha, beta Gewone medewerkers van de IT afdeling charlie, delta Junior medewerkers van de IT afdeling echo, foxtrott, golf, ... Gewone medewerkers able, baker, ... Stagiairs Machinena(a)m(en) Beschrijving war, death, famine, pollution De belangrijkste servers. Alleen senior medewerkers van de IT afdeling mogen hierop aanmelden. pride, greed, envy, wrath, lust, sloth Minder belangrijke servers. Alle leden van de IT afdeling mogen aanmelden op deze machines. one, two, three, four, ... Gewone werkstations. Alleen echte medewerkers mogen op deze machines aanmelden. trashcan Een erg oude machine zonder kritische data. Zelfs de stagiair mag deze doos gebruiken. Als deze restricties ingevoerd worden door iedere gebruiker afzonderlijk te blokkeren, dan wordt er een -user regel per systeem toegevoegd aan de passwd voor iedere gebruiker die niet mag aanmelden op dat systeem. Als er maar één regel wordt vergeten, kan dat een probleem opleveren. Wellicht lukt het nog dit juist in te stellen bij de bouw van een machine, maar het wordt echt vergeten de regels toe te voegen voor nieuwe gebruikers in de produktiegase. Murphy was tenslotte een optimist. Het gebruik van netgroups biedt in deze situatie een aantal voordelen. Niet iedere gebruiker hoeft separaat afgehandeld te worden. Een gebruik kan aan een of meer groepen worden toegevoegd en aanmelden kan voor alle leden van zo'n groep worden toegestaan of geweigerd. Als er een nieuwe machine wordt toegevoegd, dan hoeven alleen de aanmeldrestricties voor de netgroups te worden ingesteld. Als er een nieuwe gebruiker wordt toegevoegd, dan hoeft die alleen maar aan de juiste netgroups te worden toegevoegd. Die veranderingen zijn niet van elkaar afhankelijk: geen voor iedere combinatie van gebruiker en machine moet het volgende .... Als de NIS opzet zorgvuldig is gepland, dan hoeft er maar één instellingenbestand gewijzigd te worden om toegang tot machines te geven of te ontnemen. De eerst stap is het initialiseren van de NIS map netgroup. &man.ypinit.8; van &os; maakt deze map niet standaard, maar als die is gemaakt, ondersteunt de NIS implementatie hem wel. Een lege map wordt als volgt gemaakt: ellington&prompt.root; vi /var/yp/netgroup Nu kan hij gevuld worden. In het gebruikte voorbeeld zijn tenminste vier netgroups: IT medewerkers, IT junioren, gewone medewerkers en stagiars. IT_MW (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) USERS (,echo,test-domain) (,foxtrott,test-domain) \ (,golf,test-domain) STAGS (,able,test-domain) (,baker,test-domain) IT_MW, IT_APP enzovoort, zijn de namen van de netgroups. Iedere groep tussen haakjes bevat een of meer gebruikersnamen voor die groep. De drie velden binnen een groep zijn: De na(a)m(en) van de host(s) waar de volgende onderdelen geldig zijn. Als er geen hostnaam wordt opgegeven dan is de regel geldig voor alle hosts. Als er wel een hostnaam wordt opgegeven, dan wordt een donker, spookachtig en verwarrend domein betreden. De naam van de account die bij deze netgroup hoort. Het NIS domein voor de account. Er kunnen accounts uit andere NIS domeinen geïmporteerd worden in een netgroup als een beheerder zo ongelukkig is meerdere NIS domeinen te hebben. Al deze velden kunnen jokerkarakters bevatten. Details daarover staan in &man.netgroup.5;. netgroups De naam van een netgroup mag niet langer zijn dan acht karakters, zeker niet als er andere besturingssystemen binnen een NIS domein worden gebruikt. De namen zijn hoofdlettergevoelig: alleen hoofdletters gebruiken voor de namen van netgroups is een makkelijke manier om onderscheid te kunnen maken tussen gebruikers-, machine- en netgroupnamen. Sommige NIS clients (andere dan die op &os; draaien) kunnen niet omgaan met netgroups met veel leden. Sommige oudere versies van &sunos; gaan bijvoorbeeld lastig doen als een netgroup meer dan 15 leden heeft. Dit kan omzeild worden door meerdere sub-netgroups te maken met 15 gebruikers of minder en een echte netgroup die de sub-netgroups bevat: BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] BIGGRP2 (,joe16,domain) (,joe17,domain) [...] BIGGRP3 (,joe31,domain) (,joe32,domain) BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 Dit proces kan herhaald worden als er meer dan 225 gebruikers in een netgroup moeten. Het activeren en distribueren van de nieuwe NIS map is eenvoudig: ellington&prompt.root; cd /var/yp ellington&prompt.root; make Hiermee worden drie nieuwe NIS maps gemaakt: netgroup, netgroup.byhost en netgroup.byuser. Met &man.ypcat.1; kan bekeken worden op de nieuwe NIS maps beschikbaar zijn: ellington&prompt.user; ypcat -k netgroup ellington&prompt.user; ypcat -k netgroup.byhost ellington&prompt.user; ypcat -k netgroup.byuser De uitvoer van het eerste commando hoort te lijken op de inhoud van /var/yp/netgroup. Het tweede commando geeft geen uitvoer als er geen host-specifieke netgroups zijn ingesteld. Het derde commando kan gebruikt worden om een lijst van netgroups voor een gebruiker op te vragen. Het instellen van de client is redelijk eenvoudig. Om de server war in te stellen hoeft alleen met &man.vipw.8; de volgende regel in de regel daarna vervangen te worden: +::::::::: Vervang de bovenstaande regel in de onderstaande. +@IT_MW::::::::: Nu worden alleen de gebruikers die in de netgroup IT_MW geïmporteerd in de wachtwoord database van de host war, zodat alleen die gebruikers kunnen aanmelden. Helaas zijn deze beperkingen ook van toepassing op de functie ~ van de shell en alle routines waarmee tussen gebruikersnamen en numerieke gebruikers ID's wordt gewisseld. Met andere woorden: cd ~user werkt niet, ls –l toont het numerieke ID in plaats van de gebruikersnaam en find . –user joe –print faalt met de foutmelding No such user. Om dit te repareren moeten alle gebruikers geïmporteerd worden, zonder ze het recht te geven aan te melden op een server. Dit kan gedaan worden door nog een regel aan /etc/master.passwd toe te voegen: +:::::::::/sbin/nologin Dit betekent importeer alle gebruikers, maar vervang de shell door /sbin/nologin. Ieder veld in een passwd regel kan door een standaardwaarde vervangen worden in /etc/master.passwd. De regel +:::::::::/sbin/nologin moet na +@IT_MW::::::::: komen. Anders krijgen alle gebruikers die uit NIS komen /sbin/nologin als aanmeldshell. Na deze wijziging hoeft er nog maar één NIS map gewijzigd te worden als er een nieuwe medewerker komt bij de IT afdeling. Dezelfde aanpak kan gebruikt worden voor de minder belangrijke servers door de oude regel +::::::::: in de lokale versie van /etc/master.passwd door iets als het volgende te vervangen: +@IT_MW::::::::: +@IT_APP::::::::: +:::::::::/sbin/nologin Voor normale werkstations zijn het de volgende regels: +@IT_MW::::::::: +@USERS::::::::: +:::::::::/sbin/nologin En dat zou allemaal leuk en aardig zijn als er niet na een paar weken een beleidsverandering komt: de IT afdeling gaat stagiairs aannemen. De IT stagiairs mogen de normale werkstations en de minder belangrijke servers gebruiken en de junior beheerders mogen gaan aanmelden op de hoofdservers. Dat kan door een nieuwe groep IT_STAG te maken en de nieuwe IT stagiairs toe te voegen aan die netgroup en dan de instellingen op iedere machine te gaan veranderen. Maar zoals het spreekwoord zegt: Fouten in een centrale planning leiden tot complete chaos. Deze situaties kunnen voorkomen worden door gebruik te maken van de mogelijkheid in NIS om netgroups in netgroups op te nemen. Het is mogelijk om rol-gebaseerde netgroups te maken. Er kan bijvoorbeeld een netgroup BIGSRV gemaakt worden om het aanmelden op de belangrijke servers te beperken en er kan een andere netgroup SMALLSRV voor de minder belangrijke servers zijn en een derde netgroup met de naam USERBOX voor de normale werkstations. Al die netgroups kunnen de netgroups bevatten die op die machines mogen aanmelden. De nieuwe regels in de NIS map netgroup zien er dan zo uit: BIGSRV IT_MW IT_APP SMALLSRV IT_MW IT_APP ITSTAG USERBOX IT_MW ITSTAG USERS Deze methode voor het instellen van aanmeldbeperkingen werkt redelijk goed als er groepen van machines gemaakt kunnen worden met identieke beperkingen. Helaas blijkt dat eerder uitzondering dan regel. Meestal moet het mogelijk zijn om per machine in te stellen wie wel en wie niet mogen aanmelden. Daarom is het ook mogelijk om via machine-specifieke netgroups de hierboven aangegeven beleidswijziging op te vangen. In dat scenario bevat /etc/master.passwd op iedere machine twee regels die met + beginnen. De eerste voegt de netgroup toe met de accounts die op de machine mogen aanmelden en de tweede voegt alle andere accounts toe met /sbin/nologin als shell. Het is verstandig om als naam van de netgroup de machinenaam in HOOFDLETTERS te gebruiken. De regels zien er ongeveer als volgt uit: +@MACHINENAAM::::::::: +:::::::::/sbin/nologin Als dit voor alle machines is gedaan, dan hoeven de lokale versies van /etc/master.passwd nooit meer veranderd te worden. Alle toekomstige wijzigingen kunnen dan gemaakt worden door de NIS map te wijzigen. Hieronder staat een voorbeeld van een mogelijke netgroup map voor het beschreven scenario met een aantal toevoegingen: # Definieer eerst de gebruikersgroepen IT_MW (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) DEPT1 (,echo,test-domain) (,foxtrott,test-domain) DEPT2 (,golf,test-domain) (,hotel,test-domain) DEPT3 (,india,test-domain) (,juliet,test-domain) ITSTAG (,kilo,test-domain) (,lima,test-domain) D_STAGS (,able,test-domain) (,baker,test-domain) # # En nu een aantal groepen op basis van rollen USERS DEPT1 DEPT2 DEPT3 BIGSRV IT_MW IT_APP SMALLSRV IT_MW IT_APP ITSTAG USERBOX IT_MW ITSTAG USERS # # Een een groep voor speciale taken. # Geef echo en golf toegang tot de anti-virus machine. SECURITY IT_MW (,echo,test-domain) (,golf,test-domain) # # Machine-gebaseerde netgroups # Hoofdservers WAR BIGSRV FAMINE BIGSRV # Gebruiker india heeft toegang tot deze server nodig. POLLUTION BIGSRV (,india,test-domain) # # Deze is erg belangrijk en heeft strengere toegangseisen nodig. DEATH IT_MW # # De anti-virus machine als hierboven genoemd. ONE SECURITY # # Een machine die maar door 1 gebruiker gebruikt mag worden. TWO (,hotel,test-domain) # [...hierna volgen de andere groepen] Als er een soort database wordt gebruikt om de gebruikersaccounts te beheren, dan is het in ieder geval nodig dat ook het eerste deel van de map met de database rapportagehulpmiddelen gemaakt kan worden. Dan krijgen nieuwe gebruikers automatisch toegang tot de machines. Nog een laatste waarschuwing: het is niet altijd aan te raden gebruik te maken van machine-gebaseerde netgroups. Als er tientallen of zelfs honderden gelijke machines voor bijvoorbeeld studentenruimtes worden uitgerold, dan is het verstandiger rol-gebaseerde netgroups te gebruiken in plaats van machine-gebaseerde netgroups om de grootte van de NIS map binnen de perken te houden. Belangrijk om te Onthouden In een NIS omgeving werken een aantal dingen wel anders. Als er een gebruiker toegevoegd moet worden, dan moet die alleen toegevoegd worden aan de master NIS server en mag niet vergeten worden dat de NIS maps herbouwd moeten worden. Als dit wordt vergeten, dan kan de nieuwe gebruiker nergens anders aanmelden dan op de NIS master. Als bijvoorbeeld een nieuwe gebruiker jsmith toegevoegd moet worden: &prompt.root; pw useradd jsmith &prompt.root; cd /var/yp &prompt.root; make test-domain Er kan ook adduser jsmith in plaats van pw useradd jsmith gebruikt worden. De beheeraccounts moeten buiten de NIS maps gehouden worden. Het is niet handig als de beheeraccounts en wachtwoorden naar machines waarop gebruikers aanmelden die geen toegang tot die informatie horen te hebben zouden gaan. De NIS master en slave moeten veilig blijven en zo min mogelijk niet beschikbaar zijn. Als de machine wordt gehackt of als hij wordt uitgeschakeld, dan kunnen er in theorie nogal wat mensen niet meer aanmelden. Dit is de belangrijkste zwakte van elk gecentraliseerd beheersysteem. Als de NIS servers niet goed beschermd worden, dan worden veel gebruikers boos! NIS v1 Compatibiliteit ypserv voor &os; biedt wat ondersteuning voor NIS v1 clients. De NIS implementatie van &os; gebruikt alleen het NIS v2 protocol, maar andere implementaties bevatten ondersteuning voor het v1 protocol voor achterwaartse compatibiliteit met oudere systemen. De ypbind daemons die bij deze systemen zitten proberen een binding op te zetten met een NIS v1 server, hoewel dat niet per se ooit nodig is (en ze gaan misschien nog wel door met broadcasten nadat ze een antwoord van een v2 server hebben ontvangen). Het is belangrijk om te melden dat hoewel ondersteuning voor gewone clientcalls aanwezig is, deze versie van ypserv geen v1 map transferverzoeken af kan handelen. Daarom kan ypserv niet gebruikt worden als master of slave in combinatie met oudere NIS servers die alleen het v1 protocol ondersteunen. Gelukkig worden er in deze tijd niet meer zoveel van deze servers gebruikt. NIS Servers die ook NIS Clients Zijn Het is belangrijk voorzichtig om te gaan met het draaien van ypserv in een multi-server domein waar de server machines ook NIS clients zijn. Het is in het algemeen verstandiger om de servers te dwingen met zichzelf te binden dan ze toe te staan een bindverzoek te broadcasten en het risico te lopen dat ze een binding met elkaar maken. Er kunnen vreemde fouten optreden als een van de servers plat gaat als er andere servers van die server afhankelijk zijn. Na verloop van tijd treedt op de clients wel een timeout op en verbinden ze met een andere server, maar de daarmee gepaard gaande vertraging kan aanzienlijk zijn en de foutmodus is nog steeds van toepassing, omdat de servers dan toch weer opnieuw een verbinding met elkaar kunnen vinden. Het is mogelijk een host aan een specifieke server te binden door aan ypbind de vlag mee te geven. Om dit niet iedere keer handmatig na een herstart te hoeven uitvoeren, kan de volgende regel worden opgenomen in /etc/rc.conf van de NIS server: nis_client_enable="YES" # start ook het client gedeelte nis_client_flags="-S NIS domain,server" In &man.ypbind.8; staat meer informatie. Wachtwoordformaten NIS wachtwoordformaten Een van de meest voorkomende problemen bij het implementeren van NIS is de compatibiliteit van het wachtwoordformaat. Als een NIS server wachtwoorden gebruikt die met DES gecodeerd zijn, dan kunnen alleen clients die ook DES gebruiken ondersteund worden. Als er bijvoorbeeld &solaris; NIS clients in een netwerk zijn, dan moet er vrijwel zeker gebruik gemaakt worden van met DES gecodeerde wachtwoorden. Van welk formaat clients en servers gebruik maken is te zien in /etc/login.conf. Als een host gebruik maakt van met DES gecodeerde wachtwoorden, dan staat er in de klasse default een regel als de volgende: default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [Overige regels weggelaten] Andere mogelijke waarden voor passwd_format zijn blf en md5 (respectievelijk voor Blowfish en MD5 gecodeerde wachtwoorden). Als er wijzigingen gemaakt zijn aan /etc/login.conf dan moet de login capability database herbouwd worden door het volgende commando als root uit te voeren: &prompt.root; cap_mkdb /etc/login.conf Het formaat van de wachtwoorden die al in /etc/master.passwd staan worden niet bijgewerkt totdat een gebruiker zijn wachtwoord voor de eerste keer wijzigt nadat de login capability database is herbouwd. Om te zorgen dat de wachtwoorden in het gekozen formaat zijn gecodeerd, moet daarna gecontroleerd worden of de waarde crypt_default in /etc/auth.conf de voorkeur geeft aan het gekozen formaat. Om dat te realiseren dient het gekozen formaat vooraan gezet te worden in de lijst. Als er bijvoorbeeld gebruik gemaakt wordt van DES gecodeerde wachtwoorden, dan hoort de regel er als volgt uit te zien: crypt_default = des blf md5 Als de bovenstaande stappen op alle &os; gebaseerde NIS servers en clients zijn uitgevoerd, dan is het zeker dat ze het allemaal eens zijn over welk wachtwoordformaat er op het netwerk wordt gebruikt. Als er problemen zijn bij de authenticatie op een NIS client, dan is dit een prima startpunt voor het uitzoeken waar de problemen vandaan komen. Nogmaals: als er een NIS server in een heterogene omgeving wordt geplaatst, dan is het waarschijnlijk dat er gebruik gemaakt moet worden van DES op alle systemen, omdat dat de laagst overeenkomende standaard is. Greg Sutter Geschreven door Automatisch Netwerk Instellen (DHCP) Wat Is DHCP? Dynamic Host Configuration Protocol DHCP Internet Software Consortium (ISC) DHCP, het Dynamic Host Configuration Protocol, schrijft voor hoe een systeem verbinding kan maken met een netwerk en hoe het de benodigde informatie kan krijgen om met dat netwerk te communiceren. &os; gebruikt de ISC (Internet Software Consortium) DHCP implementatie, dus alle implementatie-specifieke informatie die hier wordt gegeven is bedoeld voor de ISC distributie. Wat Behandeld Wordt In dit onderdeel worden de client- en servercomponenten van het ISC DHCP systeem beschreven. Het programma voor de client, dhclient, zit standaard in &os; en de server is beschrikbaar via de net/isc-dhcp3-server port. Naast de onderstaande informatie, zijn de hulppagina's van &man.dhclient.8;, &man.dhcp-options.5; en &man.dhclient.conf.5; bruikbare bronnen. Hoe Het Werkt UDP Als dhclient, de DHCP client, wordt uitgevoerd op een clientmachine, dan begint die met het broadcasten van verzoeken om instellingeninformatie. Standaard worden deze verzoeken op UDP poort 68 gedaan. De server antwoordt op UDP 67 en geeft de client een IP adres en andere relevante netwerkinformatie, zoals een netmasker, router en DNS servers. Al die informatie komt in de vorm van een DHCP lease en is voor een bepaalde tijd geldig (die is ingesteld door de beheerder van de DHCP server). Op die manier kunnen IP adressen voor clients die niet langer met het netwerk verbonden zijn (stale) automatisch weer ingenomen worden. DHCP clients kunnen veel informatie van de server krijgen. Er staat een uitputtende lijst in &man.dhcp-options.5;. &os; Integratie &os; integreert de ISC DHCP client dhclient volledig. Er is ondersteuning voor de DHCP client in zowel het installatieprogramma als in het basissysteem, waardoor het niet noodzakelijk is om kennis te hebben van het maken van netwerkinstellingen voor het netwerk waar een DHCP server draait. dhclient is onderdeel van &os; distributies sinds 3.2. sysinstall DHCP wordt ondersteund door sysinstall. Bij het instellen van een netwerkinterface binnen - sysinstall is de eerste vraag: - Wil je proberen deze interface met DHCP in te + sysinstall is de tweede vraag: + Wil je proberen de interface met DHCP in te stellen? Als het antwoord bevestigend luidt, dan wordt dhclient uitgevoerd en als dat succesvol verloopt, dan worden de netwerkinstellingen automatisch ingevuld. Voor het gebruiken van DHCP bij het opstarten van het systeem zijn twee instellingen nodig: DHCP vereisten Het apparaat bpf moet in de kernel gecompileerd zijn. Dit kan door device bpf (pseudo-device bpf onder &os; 4.X) aan het bestand met kernelinstellingen toe te voegen en de kernel te herbouwen. Meer informatie over het bouwen van een kernel staat in . Het apparaat bpf is al onderdeel van de GENERIC kernel die bij &os; zit, dus als er geen sprake is van een aangepaste kernel, dan hoeft er geen nieuwe gemaakt te worden om DHCP aan te praat te krijgen. Voor de lezer die bijzonder begaan is met beveiliging, is het belangrijk aan te geven dat bpf ook het apparaat is waardoor pakketsnuffelaars hun werk kunnen doen (hoewel ze nog steeds als root moeten draaien). bpf is noodzakelijk voor DHCP, maar als beveiliging bijzonder belangrijk is, dan hoort bpf waarschijnlijk niet in een kernel te zitten omdat de verwachting dat er in de toekomst ooit DHCP gebruikt gaat worden. In /etc/rc.conf moet het volgende worden opgenomen: ifconfig_fxp0="DHCP" fxp0 dient vervangen te worden door de juiste aanduiding van de interface die dynamisch ingesteld moet worden, zoals beschreven staat in . Als er een andere lokatie voor dhclient wordt gebruikt of als er extra parameters aan dhclient meegegeven moeten worden, dan dient ook iets als het volgende toegevoegd te worden: dhcp_program="/sbin/dhclient" dhcp_flags="" DHCP server De DHCP server, dhcpd, zit bij de port net/isc-dhcp3-server in de portscollectie. Deze port bevat de ISC DHCP server en documentatie. Bestanden DHCP instellingenbestanden /etc/dhclient.conf Voor dhclient is een instellingenbestand /etc/dhclient.conf nodig. Dat bestand bevat meestal alleen maar commentaar, omdat de standaardinstellingen redelijk zinvol zijn. Dit bestand wordt beschreven in &man.dhclient.conf.5;. /sbin/dhclient dhclient is statisch gelinkt en staat in /sbin. Er staat meer informatie over dhclient in &man.dhclient.8;. /sbin/dhclient-script dhclient-script is het &os;-specifieke DHCP client instellingenscript. Het wordt beschreven in &man.dhclient-script.8;, maar het is niet nodig het te wijzigen om goed te werken. /var/db/dhclient.leases De DHCP client houdt in dit bestand een database bij van geldige leases, die naar een logboekbestand worden geschreven. In &man.dhclient.leases.5; staat een iets uitgebreidere beschrijving. Verder Lezen Het DHCP protocol staat volledig beschreven in RFC 2131. Er is nog een bron van informatie ingesteld op . Een DHCP Server Installeren en Instellen Wat Behandeld Wordt In dit onderdeel wordt beschreven hoe een &os; systeem zo ingesteld kan worden dat het opereert als DHCP server door gebruik te maken van de ISC (Internet Software Consortium) implementatie van de DHCP suite. Het servergedeelte van de suite is geen standaardonderdeel van &os; en om deze dienst aan te bieden dient de port net/isc-dhcp3-server geïnstalleerd te worden. In staat meer informatie over de portscollectie. DHCP Serverinstallatie DHCP installatie Om een &os; systeem in te stellen als DHCP server moet het apparaat &man.bpf.4; in de kernel zijn opgenomen. Om dit te doen dient device bpf (pseudo-device bpf onder &os; 4.X) aan het bestand met kernelinstellingen toegegvoegd te worden en dient de kernel herbouwd te worden. Meer informatie over het bouwen van kernels staat in . Het apparaat bpf is al onderdeel van de GENERIC kernel die bij &os;, dus het is meestal niet nodig om een aangepaste kernel te bouwen om DHCP aan de praat te krijgen. Het is belangrijk te vermelden dat bpf ook het apparaat is waardoor pakketsnuffelaars kunnen werken (hoewel de programma's die er gebruik van maken wel bijzondere toegang nodig hebben). bpf is verplicht voor DHCP, maar als beveiliging van belang is, dan is het waarschijnlijk niet verstandig om bpf in een kernel op te nemen alleen omdat er in de toekomst misschien ooit DHCP gebruikt gaat worden. Hierna dient het standaardbestand dhcpd.conf dat door de port net/isc-dhcp3-server is geïnstalleerd gewijzigd te worden. Standaard is dit /usr/local/etc/dhcpd.conf.sample en dit bestand dient gekopieerd te worden naar /usr/local/etc/dhcpd.conf voordat de wijzgingen worden gemaakt. De DHCP Server Instellen DHCP dhcpd.conf dhcpd.conf is opgebouwd uit declaraties over subnetten en hosts en is wellicht het meest eenvoudig te beschijven met een voorbeeld: option domain-name "example.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address mailhost.example.com; } Deze optie geeft het domein aan dat door clients als standaard zoekdomein wordt gebruikt. In &man.resolv.conf.5; staat meer over wat dat betekent. Deze optie beschrijft een door komma's gescheiden lijst met DNS servers die de client moet gebruiken. Het netmasker dat aan de clients wordt voorgeschreven. Een client kan om een bepaalde duur vragen die een lease geldig is. Anders geeft de server aan wanneer de lease vervalt (in seconden). Dit is de maximale duur voor een lease die de server toestaat. Als een client vraagt om een langere lease, dan wordt die wel verstrekt, maar is de maar geldig gedurende max-lease-time seconden. Deze optie geeft aan of de DHCP server moet proberen de DNS server bij te werken als een lease is geaccepteerd of wordt vrijgegeven. In de ISC implementatie is deze optie verplicht. Dit geeft aan welke IP adressen in de groep met adressen zitten die zijn gereserveerd om uitgegeven te worden aan clients. Alle IP adressen tussen de aangegeven adressen en die adressen zelf worden aan clients uitgegeven. Geeft de default gateway aan die aan de clients wordt voorgeschreven. Het hardware MAC adres van een host, zodat de DHCP server een host kan herkennen als die een verzoek doet. Geeft een host aan die altijd hetzelfde IP adres moet krijgen. Hier kan een hostnaam gebruikt worden, omdat de DHCP server de hostnaam zelf opzoekt voordat de lease-informatie terug wordt gegeven. Als dhcpd.conf is ingesteld, kan de server met het volgende commando gestart worden: &prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh start Als er later wijzigingen in de instellingen gemaakt moeten worden, dan is het belangrijk te onthouden dat het sturen van een SIGHUP signaal naar dhcpd niet resulteert in het opnieuw laden van de instellingen, zoals voor de meeste daemons geldt. Voor deze daemon dient een signaal SIGTERM gestuurd te worden om het proces te stoppen. Daarna dient de daemon met het hiervoor beschreven commando weer gestart worden. Bestanden DHCP instellingenbestanden /usr/local/sbin/dhcpd dhcpd is statisch gelinkt en staat in /usr/local/sbin. In de hulppagina voor &man.dhcpd.8; die meekomt met de port staat meer informatie over dhcpd. /usr/local/etc/dhcpd.conf dhcpd heeft een instellingenbestand, /usr/local/etc/dhcpd.conf, nodig voordat de daemon diensten aan clients kan leveren. Het bestand moet alle informatie bevatten die aan clients gegeven moet worden en de informatie die nodig is voor het draaien van de dienst. Dit instellingenbestand staat beschreven in de hulppagina voor &man.dhcpd.conf.5; die meekomt met de port. /var/db/dhcpd.leases De DHCP server houdt in dit bestand een database bij met leases die zijn uitgegeven en die naar een logboek worden geschreven. In de hulppagina &man.dhcpd.leases.5; die bij de port zit wordt dit uitvoeriger beschreven. /usr/local/sbin/dhcrelay dhcrelay wordt in uitgebreidere omgevingen gebruikt waar de ene DHCP server een verzoek van een client naar een andere DHCP server op een ander netwerk doorstuurt. Als deze functionaliteit nodig is, kan die beschikbaar komen door de port net/isc-dhcp3-relay te installeren. De hulppagina voor &man.dhcrelay.8; die bij de port zit bevat meer details. Chern Lee Geschreven door Domeinnaamsysteem (DNS) Overzicht BIND &os; gebruikt standaard een versie van BIND (Berkeley Internet Name Domain), wat de meest gebruikte implementatie van het DNS protocol is. DNS is het protocol waarmee namen aan IP adressen gebonden worden en vice versa. Zo wordt bijvoorbeeld op een zoekopdracht voor www.FreeBSD.org geantwoord met het IP adres van de webserver van het &os; Project en op een zoekopdracht voor ftp.FreeBSD.org wordt geantwoord met het bijbehorende IP adres van de FTP machine. Het tegenovergestelde kan ook gebeuren. Een zoekopdracht voor een IP adres kan de bijbehorende hostnaam opleveren. Het is niet nodig om een nameserver te draaien om op een systeem zoekopdrachten met DNS te maken. DNS DNS wordt op internet onderhouden door een complex systeem van autoritaire root nameservers en andere nameservers met een kleinere scope die domeininformatie hosten en cachen. In dit document wordt BIND 8.x beschreven, de stabiele versie die in &os; wordt gebruikt. BIND 9.x kan op &os; geïnstaleerd worden met de net/bind9 port. RFC1034 and RFC1035 schrijven het DNS protocol voor. Op dit moment wordt BIND beheerd door het Internet Software Consortium . Terminologie Voor het begrip van dit document dienen aan aantal termen begrepen te worden. resolver reverse DNS root zone Term Definitie Voorwaartse DNS Het koppelen van hostnamen aan IP adressen; Herkomst (origin) Verwijst naar het domein dat door een bepaald zonebestand wordt gedekt; named, BIND, nameserver Vaak gebruikte namen voor het BIND nameserver pakket in &os;; Resolver Een systeemproces waarmee een machine zoekopdrachten om zoneinformatie aan een nameserver stelt; Reverse DNS Het tegenovergestelde van voorwaartse DNS. Het koppelen van IP adressen aan hostnamen; Root zone Het begin van de internet zonehiërarchie. Alle zones vallen onder de root zone, net zoals alle bestanden in een bestandssysteem onder de rootmap vallen; Zone Een individueel domein, subdomein of een deel van de DNS die door dezelfde autoriteit wordt beheerd. zones voorbeelden Voorbeelden van zones: . is de root zone; org. is een zone onder de root zone; example.org. is een zone onder het zone org.; foo.example.org. is een subdomein onder de zone example.org.; 1.2.3.in-addr.arpa is een zone waarin alle IP adressen die onder de IP ruimte 3.2.1.* vallen. Zoals te zien is staat het meer specifieke deel van een hostnaam aan de linkerkant. Zo is example.org. bijvoorbeeld meer specifiek dan org. en is org. meer specifiek van de root zone. De indeling van ieder deel van een hostnaam lijkt veel op een bestandssysteem: de map /dev valt onder de root, enzovoort. Redenen om een Nameserver te Draaien Nameservers bestaan in het algemeen in twee smaken: een authoritative namserver en een caching namserver. Er is een authoritative namserver nodig als: het nodig is DNS informatie aan te bieden aan de wereld om met autoriteit (authoritatively) op verzoeken te antwoorden; een domein, zoals example.org, is geregistreerd en er IP adressen aan hostnamen die daaronder liggen toegewezen moeten worden; een IP adresblok reverse DNS entries nodig heeft (IP naar hostnaam); een backup namserver, die slave wordt genoemd, moet antwoorden op verzoeken als de primaire down of niet toegankelijk is. Er is een caching namserver nodig als: een lokale DNS server kan cachen en wellicht sneller kan antwoorden dan een namserver die verder weg staat; het wenselijk is om het totale netwerkverkeer te reduceren. Er is ooit vastgesteld dat DNS verkeer 5% of meer van het totale verkeer op internet uitmaakt. Als er een verzoek wordt gedaan voor www.FreeBSD.org, dan doet de resolver meestal een verzoek bij de nameserver van de ISP die de uplink levert en ontvangt daarop een antwoord. Met een lokale, caching namserver hoeft het verzoek maar één keer door de caching nameserver naar de buitenwereld gedaan te worden. Voor ieder volgend verzoek hoeft niet buiten het lokale netwerk gekeken te worden omdat het al lokaal in de cache staat. Hoe Het Werkt Om begrijpelijke redenen heet de BIND daemon in &os; named. Bestand Beschrijving named de BIND daemon ndc name daemon beheerprogramma /etc/namedb map waar BIND zoneinformatie staat /etc/namedb/named.conf daemon instellingenbestand Zonebestanden staat meestal binnen de map /etc/namedb en bevatten de DNS zone informatie die de namserver aanbiedt. BIND Starten BIND starten Omdat BIND standaard wordt geïnstalleerd, is het instellen relatief eenvoudig. Om de named daemon bij het booten te laten starten kan de volgende regel in /etc/rc.conf gezet worden: named_enable="YES" Om na het instellen de daemon handmatig te starten: &prompt.root; ndc start Instellingenbestanden BIND instellingenbestanden/secondary> <command>make-localhost</command> Gebruiken Het volgende commando dient uitgevoerd te worden om het bestand voor de lokale reverse DNS zone in /etc/namedb/localhost.rev op de juiste wijze aan te maken: &prompt.root; cd /etc/namedb &prompt.root; sh make-localhost <filename>/etc/namedb/named.conf</filename> // $FreeBSD$ // // In de hulppagina named(8) zijn meer details te vinden. Voor het // opzetten van een primaire server is begrip van de werking van DNS // noodzakelijk. Zelfs eenvoudige fouten kunnen de werking verstoren // of veel onnodig verkeer veroorzaken. options { directory "/etc/namedb"; // Als toevoeging op de "forwarders" clausule kan de namserver ook // worden aangegeven dat hij nooit zelf verzoeken mag maken, maar dat // altijd aan zijn forwarders moet vragen door de volgende regel te // activeren: // // forward only; // Als er een DNS server beschikbaar is bij een upstream provider dan // kan het IP adres op de regel hieronder ingegeven worden en kan die // geactiveerd worden. Hierdoor wordt voordeel gehaald uit de cache, // waardoor het DNS verkeer op internet vermindert. /* forwarders { 127.0.0.1; }; */ Zoals al in het commentaar staat kan het gebruik van een cache in de uplink met forwarders ingeschakeld worden. In normale omstandigheden maakt een namserver recursief verzoeken tot er een antwoord komt waar de server naar op zoek is. Door de bovenstaande optie in te schakelen wordt eerst bij de namserver die is opgegeven gevraagd, waardoor er gebruik gemaakt kan worden van de cache van die server. Als die namserver een drukke, snelle namserver is, kan het erg de moeite waard zijn van deze optie gebruik te maken. 127.0.0.1 werkt hier niet. Dat IP adres dient gewijzigd te worden naar een werkende namserver in de uplink. /* * Als er een firewall tussen een host en namservers staat waarmee * gesproken moet worden, dan dient het commentaar voor het * query-source hieronder verwijderd te worden. In eerdere versies van * BIND werden verzoeken altijd via poort 53 gedaan, maar vanaf * BIND 8.1 wordt een poort zonder privileges gebruikt. */ // query-source address * port 53; /* * Als de namserver in een sandbox draait, kan het wenselijk zijn om * een andere lokatie voor het dumpbestand in te geven. */ // dump-file "s/named_dump.db"; }; // Opmerking: het volgende wordt in een latere release ondersteund. /* host { any; } { topology { 127.0.0.0/8; }; }; */ // Het opzetten van een secondary is veel eenvoudiger en dat wordt // hieronder ruweg beschreven. // // Als er een lokale nameserver wordt gebruikt, dan dient niet // vergeten te worden om 127.0.0.1 in /etc/resolv.conf te zetten zodat // die eerst bevraagd wordt. Het is ook belangrijk wijzigingen aan te // brengen in /etc/rc.conf om named te starten. zone "." { type hint; file "named.root"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "localhost.rev"; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" { type master; file "localhost.rev"; }; // NB: De IP adressen hieronder zijn bedoeld als voorbeeld en dienen // niet gebruikt te worden! // // Voorbeeld secondary instellingen. Het kan handig zijn om tenminste // secondary te worden voor de zone waar de host onderdeel van // uitmaakt. Bij netwerkbeheerders kan nagevraagd worden welke server // de primaire server is. // // De reverse lookup zone (IN-ADDR.ARPA) mag nooit vergeten worden! Dat // zijn de eerste bytes van het respectievelijke IP adres in omgekeerde // volgorde met daarachter ".IN-ADDR.ARPA". // // Het is echter van groot belang om de werking van DNS en BIND te // begrijpen voordat er een primaire zone wordt opgeset. Er zijn // nogal wat onverwachte valkuiten. Het opzetten van een secondary is // veel eenvoudiger. // // NB: Het wordt afgeraden de onderstaande voorbeelden actief te maken. // Er dienen bestaande namen en adressen gebruikt te worden. // // BELANGRIJK!!! &os; draait BIND in een zandbak (zie named_flags in // rc.conf). In de map waarin de secundaire zones staat moet // geschreven kunnen worden door BIND. Dat kan als volgt: // // mkdir /etc/namedb/s // chown bind:bind /etc/namedb/s // chmod 750 /etc/namedb/s Meer informatie over het draaien van BIND in een zandbak staat in named in een Zandbak Draaien. /* zone "example.com" { type slave; file "s/example.com.bak"; masters { 192.168.1.1; }; }; zone "0.168.192.in-addr.arpa" { type slave; file "s/0.168.192.in-addr.arpa.bak"; masters { 192.168.1.1; }; }; */ De bovenstaande voorbeelden komen uit named.conf en zijn voorbeelden van instellingen voor een slave, voor een forward en reverse zone. Voor iedere nieuwe zone die wordt aangeboden dient een nieuwe instelling voor de zone aan named.conf toegevoegd te worden. De meest eenvoudige instelling voor de zone example.org kan er als volgt uitzien: zone "example.org" { type master; file "example.org"; }; De zone is een master, dat geeft de instelling aan, waarvan de zoneinformatie in /etc/namedb/example.org staat, wat de instelling aangeeft. zone "example.org" { type slave; file "example.org"; }; In het geval van de slave wordt de zoneinformatie voor een zone getransporteerd van de master namserver en opgeslagen in het ingestelde bestand. Als een master server het niet meer doet of niet bereikbaar is, dan heeft de slave server de getransporteerde zoneinformatie nog en kan die aanbieden. Zonebestanden Een voorbeeldbestand voor een master zone voor example.org (als bestand /etc/namedb/example.org): $TTL 3600 example.org. IN SOA ns1.example.org. admin.example.org. ( 5 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL ; DNS Servers @ IN NS ns1.example.org. @ IN NS ns2.example.org. ; Machinenamen localhost IN A 127.0.0.1 ns1 IN A 3.2.1.2 ns2 IN A 3.2.1.3 mail IN A 3.2.1.10 @ IN A 3.2.1.30 ; Aliases www IN CNAME @ ; MX Record @ IN MX 10 mail.example.org. Iedere hostnaam die eindigt op een . is een exacte hostnaam, terwijl alles zonder een . op het einde refereert aan de oorsprong. Zo wordt www bijvoorbeeld vertaald naar www.origin. In de zone uit het voorbeeld hierboven is de oorsprong example.org., dus www vertaalt naar www.example.org. De regels in een zonebestand volgen de volgende opmaak: recordnaam IN recordtype waarde DNS records De meest gebruikte DNS records: SOA begin van zoneautoriteit (start of authority) NS een bevoegde (authoritative) name server A een hostadres CNAME de canonieke (canonical) naam voor een alias MX mail exchanger PTR een domeinnaam pointer (gebruikt in reverse DNS) example.org. IN SOA ns1.example.org. admin.example.org. ( 5 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hour 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day example.org. de domeinnaam, ook de oorsprong voor dit zonebestand. ns1.example.org. de primaire/bevoegde namserver voor deze zone. admin.example.org. de persoon die verantwoordelijk is voor deze zone, e-mailadres met @ vervangen. admin@example.org wordt admin.example.org. 5 het serienummer van het bestand. Dit moet iedere keer als het zonebestand wordt aangepast opgehoogd worden. Tegenwoordig geven veel beheerders de voorkeur aan de opmaak yyyymmddrr voor het serienummer. 2001041002 betekent dan dat het voor het laatst is aangepast op 10–04–2001. De laatste 02 betekent dat het zonebestand een aantal keer is aangepast op die dag. Het serienummer is belangrijk omdat het slave nameservers aangeeft dat een zone is bijgewerkt. @ IN NS ns1.example.org. Hierboven staat een NS regel. Voor iedere nameserver die bevoegde antwoorden moet geven voor de zone hoort er zo'n regel te zijn. De @ betekent hetzelfde als example.org. Een @ vertaalt naar de oorsprong. localhost IN A 127.0.0.1 ns1 IN A 3.2.1.2 ns2 IN A 3.2.1.3 mail IN A 3.2.1.10 @ IN A 3.2.1.30 Een A record geeft een machinenaam aan. Hierboven is te zien dat ns1.example.org zou resolven naar 3.2.1.2. Nogmaals, het symbool voor oorsprong, @, wordt hier gebruikt en dus zou example.org resolven naar 3.2.1.30. www IN CNAME @ Een canoniek name record wordt meestal gebruikt voor het geven van aliasen aan een machine. In het voorbeeld is www een alias naar de machine die gelijk is aan de oorsprong, example.org (3.2.1.30). CNAME's kunnen gebruikt worden om een alias aan hostnamen te geven of om round robin één hostnaam naar meerdere machines te laten wijzen. MX record @ IN MX 10 mail.example.org. MX records geven aan welke mailservers verantwoordelijk zijn voor het afhandelen van inkomende mail voor de zone. mail.example.org is de hostnaam voor de mailserver en 10 is de prioriteit voor die mailserver. Het is mogelijk meerdere mailservers in te stellen met prioriteiten 3, 2 en 1. Een mailserver die probeert mail af te leveren voor example.org probeert dat eerst bij de MX met de hoogste prioriteit, daarna de op een na hoogste, enzovoort, totdat de mail afgeleverd kan worden. Voor in-addr.arpa zonebestanden (reverse DNS) wordt dezelfde opmaak gebruikt, maar dan met PTR regels in plaats van A of CNAME. $TTL 3600 1.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. ( 5 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 3600 ) ; Minimum @ IN NS ns1.example.org. @ IN NS ns2.example.org. 2 IN PTR ns1.example.org. 3 IN PTR ns2.example.org. 10 IN PTR mail.example.org. 30 IN PTR example.org. Dit bestand geeft de juiste IP adressen voor hostnamen in het voorbeelddomein hierboven. Caching Nameserver BIND caching namserver Een caching namserver is een namserver die voor geen enkele zone bevoegd is en alleen verzoeken doet en die onthoudt voor later gebruik. Het opzetten ervan is eenvoudigweg het opzetten van een namserver zonder zones toe te voegen. <application>named</application> in een Zandbak Draaien BIND in een zandbak draaien chroot Als extra beveiligingsmaatregel is het wellicht wenselijk om &man.named.8; als een gebruiker zonder privileges te draaien en de instellingen zo te maken dat die &man.chroot.8; in een zandbakmap draait. Hierdoor is alles buiten de zandbak niet toegankelijk voor de named daemon. Hierdoor wordt de schade die aangericht kan worden beperkt in het geval dat named wordt gehackt. Standaard kent &os; een gebruiker en groep bind die voor dit doel bestemd zijn. Er wordt ook wel gesteld dat het verstandiger is om named met chroot te draaien, maar in plaats daarvan in een &man.jail.8; te draaien. Dit wordt hier niet beschreven. Omdat named niet in staat is ook maar iets buiten de zankbak te raadplegen (zoals gedeelde bibliotheken, log sockets, enzovoort), moeten er een aantal stappen gevolgd worden om named goed te laten draaien. In de onderstaande controlelijst wordt aangenomen dat het pad naar de zandbak /etc/namedb is en dat er geen wijzigingen gemaakt zijn aan de inhoud van die map. De volgende stappen dienen als root uitgevoerd te worden: Maak alle mappen die named verwacht: &prompt.root; cd /etc/namedb &prompt.root; mkdir -p bin dev etc var/tmp var/run master slave &prompt.root; chown bind:bind slave var/* named hoeft alleen in deze mappen te schrijven, dus krijgt het alleen daar rechten. Herschik en maak de basiszone en stel het bestand met instellingen in: &prompt.root; cp /etc/localtime etc &prompt.root; mv named.conf etc && ln -sf etc/named.conf &prompt.root; mv named.root master &prompt.root; sh make-localhost && mv localhost.rev localhost-v6.rev master &prompt.root; cat > master/named.localhost $ORIGIN localhost. $TTL 6h @ IN SOA localhost. postmaster.localhost. ( 1 ; serial 3600 ; refresh 1800 ; retry 604800 ; expiration 3600 ) ; minimum IN NS localhost. IN A 127.0.0.1 ^D Hierdoor kan named de correcte tijd melden aan &man.syslogd.8;. syslog - logs + logboekbestanden - DNS + named Als er een oudere versie dan &os; 4.9-RELEASE draait, dient een statisch gelinkte kopie van named-xfer gebouwd te worden en naar de zankbak gekopieerd te worden: &prompt.root; cd /usr/src/lib/libisc &prompt.root; make cleandir && make cleandir && make depend && make all &prompt.root; cd /usr/src/lib/libbind &prompt.root; make cleandir && make cleandir && make depend && make all &prompt.root; cd /usr/src/libexec/named-xfer &prompt.root; make cleandir && make cleandir && make depend && make NOSHARED=yes all &prompt.root; cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xfer Nadat de statisch gelinkte named-xfer is geïnstalleerd, is het nodig wat op te ruimen om te voorkomen dat er kopieen van bibliotheken of programma's in de boomstructuur met broncode achterblijven: &prompt.root; cd /usr/src/lib/libisc &prompt.root; make cleandir &prompt.root; cd /usr/src/lib/libbind &prompt.root; make cleandir &prompt.root; cd /usr/src/libexec/named-xfer &prompt.root; make cleandir Deze stap gaat wel eens verkeerd. Als dit gebeurt, kan het volgende commando uitgevoerd worden: &prompt.root; cd /usr/src && make cleandir && make cleandir Daarnaast kan de /usr/obj structuur verwijderd worden: &prompt.root; rm -fr /usr/obj && mkdir /usr/obj Hiermee wordt aanwezige rommel uit de broncodestructuur verwijderd en kunnen de hierboven beschreven stappen opnieuw uitgevoerd worden. Als &os; version 4.9-RELEASE of later wordt gebruikt, dan is named-xfer in /usr/libexec standaard statisch gelinkt en kan er simpelweg met &man.cp.1; een kopie naar de zandbak gemaakt worden. Maak een dev/null die zichtbaar is voor named en waar named kan schrijven: &prompt.root; cd /etc/namedb/dev && mknod null c 2 2 &prompt.root; chmod 666 null Symlink /var/run/ndc naar /etc/namedb/var/run/ndc: &prompt.root; ln -sf /etc/namedb/var/run/ndc /var/run/ndc Hiermee wordt voorkomen dat er iedere keer als &man.ndc.8; wordt uitgevoerd de optie meegegeven moet worden. Omdat de inhoud van /var/run bij het booten wordt verwijderd, kan het wenselijk zijn dit commando aan de &man.crontab.5; van root toe te voegen met de optie . syslog - logboeken + logboekbestanden named Stel &man.syslogd.8; in om een extra log socket te maken waar named heen kan schrijven. Dit kan door -l /etc/namedb/dev/log toe te voegen aan de syslogd_flags variable in /etc/rc.conf. chroot Maak de instelling om named te starten en zich met chroot in een zandbak te plaatsen met de volgende aanpassing in /etc/rc.conf: named_enable="YES" named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf" In het instellingenbestand /etc/named.conf staan volledige paden relatief aan de zandbak. Het bestand in de regel hierboven is dus feitelijk /etc/namedb/etc/named.conf. Nu dient /etc/namedb/etc/named.conf gewijzigd te worden, zodat named weet welke zones geladen moeten worden en waar ze staan. Nu volgt een van commentaar voorzien voorbeeld. Alle regels zonder commentaar wijken niet af van de opzet voor een DNS server die niet in een zandbak draait: options { directory "/"; named-xfer "/bin/named-xfer"; version ""; // Laat versie BIND niet zien query-source address * port 53; }; // ndc control socket controls { unix "/var/run/ndc" perm 0600 owner 0 group 0; }; // Zones follow: zone "localhost" IN { type master; file "master/named.localhost"; allow-transfer { localhost; }; notify no; }; zone "0.0.127.in-addr.arpa" IN { type master; file "master/localhost.rev"; allow-transfer { localhost; }; notify no; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" { type master; file "master/localhost-v6.rev"; allow-transfer { localhost; }; notify no; }; zone "." IN { type hint; file "master/named.root"; }; zone "private.example.net" in { type master; file "master/private.example.net.db"; allow-transfer { 192.168.10.0/24; }; }; zone "10.168.192.in-addr.arpa" in { type slave; masters { 192.168.10.2; }; file "slave/192.168.10.db"; }; De opdracht directory heeft als waarde / omdat alle bestanden die named nodig heeft binnen die map staan. Dit staat dus gelijk aan /etc/namedb voor een normale gebruiker. Geeft het volledige pad naar het uitvoerbare bestand named-xfer (vanuit de optiek van named). Dit is nodig omdat named is gecompileerd om standaard te zoeken naar named-xfer in /usr/libexec. Geeft de bestandsnaam (relatief aan de instelling directory hierboven) waar named het zonebestand voor deze zone kan vinden. Geeft de bestandsnaam (relatief aan de instelling directory hierboven) waar named een kopie van het zonebestand moet schrijven nadat die succesvol van de master server is gekopieerd. Daarom moest de eigenaar van de map slave naar bind gewijzigd worden in een eerdere stap. Na het doorlopen van de hierboven beschreven stappen kan de server herstart worden of kunnen &man.syslogd.8; herstart en &man.named.8; gestart worden, mits de nieuwe opties voor syslogd_flags en named_flags zijn ingesteld. Dan draait named in een zandbak! Beveiliging Hoewel BIND de meest gebruikte implementatie van DNS is, is er altijd nog het beveiligingsvraagstuk. Soms worden er mogelijke en te misbruiken beveiligingsgaten gevonden. Het is verstandig om bij te blijven met CERT beveiligingswaarschuwingen en een abonnement te nemen op de &a.security-notifications; om bij te blijven met de beveiligingsproblemen wat betreft internet en &os;. Als er problemen ontstaan, kan het bijwerken van broncode en het opnieuw bouwen van named geen kwaad doen. Verder Lezen BIND/named hulppagina's: &man.ndc.8;, &man.named.8;, &man.named.conf.5; Officiële ISC BIND pagina BIND FAQ O'Reilly DNS en BIND 4e Editie RFC1034 - Domeinnamen - Concepten en Faciliteiten RFC1035 - Domeinnamen - Implementatie en Specificatie Tom Rhodes Geschreven door <acronym>BIND</acronym>9 en &os; bind9 instellen Het uitbrengen van &os; 5.3 was het moment van introductie van de BIND9 DNS server software in de distributie. Dit betekende nieuwe beveiligingsmogelijkheden, een nieuwe indeling van het bestandssysteem en automatische instelling van &man.chroot.8;. Deze paragraaf bestaat uit twee delen. In het eerste deel worden de nieuwe mogelijkheden en hun instelling beschreven en het tweede gedeelte gaat over hulp bij het upgraden naar &os; 5.3. Vanaf dit moment wordt er simpelweg verwezen naar &man.named.8; in plaats van naar BIND. Dit onderdeel slaat het beschrijven van de terminologie over, omdat die eerder is besproken. De theorie wordt ook niet beschreven. Het is aan te raden om die eerdere onderdelen te lezen voor dit onderdeel. - De bestanden met instellingen named staan - op dit moment in De bestanden met instellingen voor + named staan op dit moment in /var/named/etc/namedb/ en moeten voor gebruik aangepast worden. Daar worden de meeste instellingen gemaakt. Een Master Zone Instellen Om een master zone in te stellen kan in /var/named/etc/namedb/ het volgende uitgevoerd worden: &prompt.root; sh make-localhost Als alles goed is gegaan hoort er een nieuw bestand in de master map te staan. De bestandsnamen horen localhost.rev voor de lokale domeinnaam te zijn en localhost-v6.rev voor IPv6 instellingen. Instellingen voor standaardgebruik staan al in het instellingenbestand named.conf file. Een Slave Zone Instellen Instellingen voor extra domeinen of subdomeinen kunnen worden ingesteld als slave zones. In de meeste gevallen kan - master/localhost.rev gewoon naar de - slave map gekopieerd - worden en aangepast worden. Als dat is gedaan, moeten de - bestanden op de juiste wijze toegevoegd worden aan + het bestand master/localhost.rev gewoon + naar de map slave + gekopieerd worden en aangepast worden. Als dat is gedaan, + moeten de bestanden op de juiste wijze toegevoegd worden aan named.conf, zoals in het volgende voorbeeld voor example.com: zone "example.com" { type slave; file "slave/example.com"; masters { 10.0.0.1; }; }; zone "0.168.192.in-addr.arpa" { type slave; file "slave/0.168.192.in-addr.arpa"; masters { 10.0.0.1; }; }; In dit voorbeeld is het master IP adres de primaire domain server vanwaar de zones gehaald worden. Die hoeft niet per se zelf een DNS server te zijn. Opstarten Instellen - Om de named daemon met het systeem te - laten starten, hoort de volgende optie in + Om de named daemon met het + systeem te laten starten, hoort de volgende optie in rc.conf te staan: named_enable="YES" Hoewel er nog andere mogelijkheden bestaan, is dit het absolute minimum. In &man.rc.conf.5; staan nog meer mogelijkheden beschreven. Als er niets in rc.conf staat, kan - named gestart worden vanaf de commandoregel - met: + named gestart worden vanaf de + commandoregel: &prompt.root; /etc/rc.d/named start <acronym>BIND</acronym>9 Beveiliging Hoewel &os; named automatisch in een &man.chroot.8; omgeving zet, zijn er nog een aantal andere beveiligingsmogelijkheden die kunnen helpen om mogelijke aanvallen op de DNS dienst af te slaan. Toegangscontrolelijsten Opvragen Een toegangscontrolelijst (acl) voor vraagstellingen kan gebruikt worden om vraagstellingen voor zones te beperken. De instelling gaat door een netwerk te definiëren binnen het token acl en dan een lijst met IP adressen aan te geven in de instellingen voor de zone. Om domeinen toe te staan om de voorbeeldhost te gebruiken, kan iets als het volgende gebruikt worden: acl "example.com" { 192.168.0.0/24; }; zone "example.com" { type slave; file "slave/example.com"; masters { 10.0.0.1; }; allow-query { example.com; }; }; zone "0.168.192.in-addr.arpa" { type slave; file "slave/0.168.192.in-addr.arpa"; masters { 10.0.0.1; }; allow-query { example.com; }; }; Opvragen Versie Beperken Het opvragen van de versie van de DNS server kan een ingang zijn voor een aanvaller, die deze informatie kan gebruiken om te zoeken naar bekende exploits of bugs om in te breken op de host. Er kan een vervalste versiestring gezet worden in de sectie options van named.conf: options { directory "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; version "None of your business"; Murray Stokely Geschreven door Apache HTTP Server web server setting up Apache Overzicht &os; wordt gebruikt om een paar van de drukste websites ter wereld te draaien. De meeste webservers op internet maken gebruik van de Apache HTTP Server. Apache softwarepackages staan op de &os; installatiemedia. Als Apache niet bij de oorsponkelijke installatie van &os; is meegeïnstalleerd, dan kan dat vanuit de www/apache13 of www/apache2 port. Als Apache succesvol is geïnstalleerd, moeten er instelingen gemaakt worden. In dit onderdeel wordt versie 1.3.X van de Apache HTTP Server behandeld omdat die het meest gebruikt wordt op &os;. Apache 2.X biedt veel nieuwe mogelijkheden, maar wordt hier niet beschreven. Meer informatie over Apache 2.X is te vinden op . Instellen Apache configuration file Het belangrijkste bestand met instellingen voor de Apache HTTP Server op &os; is /usr/local/etc/apache/httpd.conf. Dit bestand is een typisch &unix; tekstgebaseerd instellingenbestand waarin regels met commentaar beginnen met het karakter #. Het uitputtend beschrijven van alle mogelijke instellingen valt buiten het bereik van dit boek, dus worden alleen de meest gebruikte directieven beschreven. ServerRoot "/usr/local" Hierin wordt de standaard mappenhiërarchie voor de Apache installatie aangegeven. Binaire bestanden staan in de submappen bin en sbin van de serverroot en bestanden met instellingen staan in etc/apache. ServerAdmin beheerder@beheer.adres Het adres waaraan problemen met de server gemaild kunnen worden. Dit adres verschijnt op een aantal door de server gegenereerde pagina's, zoals documenten met foutmeldingen. ServerName www.example.com Met ServerName kan een hostnaam ingesteld worden die wordt teruggezonden aan de clients als de naam van de server anders is dan die is ingesteld (gebruik bijvoorbeeld www in plaats van de echte hostnaam). DocumentRoot "/usr/local/www/data" DocumentRoot: de map waaruit de documenten worden geserveerd. Standaard worden alle verzoeken uit deze map gehaald, maar er kunnen symbolische links en aliasen gebruikt worden om naar andere locaties te wijzen. Het is altijd een goed idee om back-ups te maken van het instellingenbestand voor Apache vóór het maken van wijzigingen. Als de juiste instellingen gemaakt zijn, kan Apache gestart worden. <application>Apache</application> Draaien Apache starten of stoppen Apache draait niet vanuit de inetd super server zoals veel andere netwerkdiensten. Hij is ingesteld om zelfstandig te draaien vanwege beter prestaties voor het afhandelen van inkomende HTTP verzoeken van client webbrowsers. Er wordt een shellscriptwrapper bijgeleverd om het starten, stoppen en herstarten zo eenvoudig mogelijk te maken. Het volgende commando start Apache voor de eerste keer: &prompt.root; /usr/local/sbin/apachectl start De server kan op iedere moment gestopt worden met: &prompt.root; /usr/local/sbin/apachectl stop Na het maken van wijzigingen aan het instellingenbestand moet de dienst herstart worden: &prompt.root; /usr/local/sbin/apachectl restart Om Apache te herstarten zonder bestaande connecties te verbreken: &prompt.root; /usr/local/sbin/apachectl graceful In &man.apachectl.8; staat meer informatie. Om Apache met het systeem mee te starten kan de volgende regel aan /etc/rc.conf worden toegevoegd: apache_enable="YES" Als het nodig is additionele commandoregelopties op te geven voor de Apache httpd bij het opstarten, dan kunnen die in de volgende regel in rc.conf meegegeven worden: apache_flags="" Nu de webserver draait, is die te benaderen door een webbrowser te wijzen naar http://localhost/. De standaard webpagina is /usr/local/www/data/index.html. Virtuele Hosting Apache ondersteunt twee verschillende manieren van Virtuele Hosting. De eerste methode is Naam-gebaseerde Virtuele Hosting. Naam-gebaseerde Virtuele Hosting gebruikt de HTTP/1.1 headers van de clients om de hostnaam uit te zoeken. Hierdoor kunnen meerdere domeinen hetzelfde IP adres delen. Om Apache gebruik te laten maken van Naam-gebaseerde Virtuele Hosting kan een regel als de volgende in httpd.conf worden opgenomen: NameVirtualHost * Als een webserver www.domein.tld heet en er moet een virtueel domein voor www.anderdomein.tld gaan draaien, dan kunnen de volgende regels aan httpd.conf worden toegevoegd: <VirtualHost *> ServerName www.domein.tld DocumentRoot /www/domein.tld <VirtualHost> <VirtualHost *> ServerName www.anderdomein.tld DocumentRoot /www/anderdomein.tld </VirtualHost> De adressen en de paden uit dit voorbeeld kunnen in echte implementaties uiteraard gewijzigd worden. Meer informatie over het opzetten van virtuele hosts staat in de officiële documentatie voor Apache op Apache Modules Apache modules Er zijn veel verschillende Apache modules die functionaliteit toevoegen aan de basisdienst. De &os; portscollectie biedt op een eenvoudige manier de mogelijkheid om Apache samen met de meeste populaire add-on modules te installeren. mod_ssl webserver veilig SSL cryptografie De module mod_ssl gebruikt de OpenSSL bibliotheek om sterke cryptografie te leveren via de protocollen Secure Sockets Layer (SSL v2/v3) en Transport Layer Security (TLS v1). Deze module levert alles wat nodig is om een getekend certificaat aan te vragen bij een vertrouwde certificaatautoriteit om een veilige webserver onder &os; te kunnen draaien. Als Apache nog niet is geïnstalleerd, dan is er een versie van Apache 1.3.X die mod_ssl bevat en geïnstalleerd kan worden met de www/apache13-modssl port. SSL - ondersteuning is ook voor Apache 2.X beschikbaar in de - www/apache2 port, - waar het standaard is ingeschakeld. + ondersteuning is ook voor + Apache 2.X beschikbaar in de + www/apache2 port, waar + het standaard is ingeschakeld. mod_perl Perl Het Apache/Perl integratieproject brengt de volledige kracht van de Perl programmeertaal en de Apache HTTP Server samen. Met de mod_perl module is het mogelijk om Apache modules volledig in Perl te schrijven. Daarnaast voorkomt een ingebouwde persistente interpreter in de server de overhead van het starten van een externe interpreter en de nadelen van het opstarten van Perl. Als Apache nog niet is geïnstalleerd, dan is er een versie van Apache die mod_perl bevat en geïnstalleerd kan worden met de www/apache13-modperl port. PHP PHP PHP, dat staat voor PHP: Hypertext Preprocessor, is een veelgebruikte algemene Open Source scripttaal die bijzonder bruikbaar is voor webontwikkeling en die ingebed kan worden in HTML. De syntaxis is afgeleid van C, &java; en Perl en blijkt makkelijk te leren. Het belangrijkste doel van de taal is webontwikkelaars in staat te stellen om gemakkelijk dynamisch samengestelde webpagina's te schrijven. Maar er kan nog veel meer met PHP gedaan worden. PHP kan geïnstalleerd worden met de lang/php5 port. Murray Stokely Geschreven door File Transfer Protocol (FTP) - FTP server + FTP servers Overzicht Het File Transfer Protocol (FTP) biedt gebruikers een eenvoudige manier om bestanden van en naar een FTP server te verplaatsen. &os; bevat FTP server software, ftpd, in het basissysteem. Hierdoor is het opzetten en beheren van een FTP server op &os; erg overzichtelijk. Instellen De belangrijkste stap bij het instellen is de beslissing welke accounts toegang krijgen tot de FTP server. Een normaal &os; systeem heeft een aantal systeemaccounts die gebruikt worden voor daemons, maar onbekende gebruikers mag niet toegestaan worden van die accounts gebruikt te maken. In /etc/ftpusers staat een lijst met gebruikers die geen FTP toegang hebben. Standaard staan daar de voorgenoemde accounts in, maar het is ook mogelijk om daar gebruikers toe te voegen die geen FTP toegang mogen hebben. Het kan ook wenselijk zijn de FTP toegang voor sommige gebruikers te beperken, maar niet onmogelijk te maken. Dit kan met /etc/ftpchroot. In dat bestand staan gebruikers en groepen waarop FTP toegangsbeperkingen van toepassing zijn. In &man.ftpchroot.5; staan alle details die hier niet beschreven zijn. Om anonieme FTP toegang voor een server in te schakelen, dient er een gebruiker ftp op een &os; systeem aangemaakt te worden. Dan kunnen gebruikers op de server aanmelden met de gebruikersnaam ftp of anonymous en met ieder wachtwoord (de geldende conventie schrijft voor dat dit een e-mail adres van de gebruiker is). De FTP server roep bij een anonieme aanmelding &man.chroot.2; aan, zodat er alleen toegang is tot de thuismap van de gebruiker ftp. Er zijn twee tekstbestanden waarin welkomstberichten voor de FTP clients gezet kunnen worden. De inhoud van /etc/ftpwelcome wordt getoond voordat gebruikers een aanmeldprompt zien. Na een succesvolle aanmelding wordt de inhoud van /etc/ftpmotd getoond. Het genoemde pad is relatief ten opzichte van de aanmeldomgeving, dus voor anonieme gebruikers wordt ~ftp/etc/ftpmotd getoond. Als een FTP server eenmaal correct is ingesteld, moet die ingeschakeld worden in /etc/inetd.conf. Daar moet het commentaarkarakter # voor de bestaande ftpd regel verwijderd worden: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l Nadat het bestand met instellingen is gewijzigd, moet er een HangUP signaal verstuurd worden naar inetd, zoals uitgelegd in . Nu kan aangemeld worden op de FTP server met: &prompt.user; ftp localhost Beheren syslog - logboeken + logboekbestanden FTP De ftpd daemon gebruikt &man.syslog.3; om berichten te loggen. Standaard plaatst de systeemlogdaemon berichten over FTP in /var/log/xferlog. De lokatie van het FTP logboek kan gewijzigd worden door de volgende regels in /etc/syslog.conf te wijzigen: ftp.info /var/log/xferlog Het is verstandig na te denken over de gevaren die op de loer liggen bij het draaien van een anonieme FTP server. Dat geldt in het bijzonder voor het laten uploaden ven bestanden. Het is dan goed mogelijk dat een FTP site een forum wordt om commerciële software zonder licenties uit te wisselen of erger. Als anonieme uploads toch nodig zijn, dan horen de rechten op die bestanden zo te staan dat ze niet door andere anonieme gebruikers gelezen kunnen worden tot er door een beheerder naar gekeken is. Murray Stokely Geschreven door Bestands- en Printdiensten voor µsoft.windows; clients (Samba) Samba server Microsoft Windows file server Windows clients print server Windows clients Overzicht Samba is een populair open source softwarepakket dat bestands- en printdiensten voor µsoft.windows; clients biedt. Die clients kunnen dan ruimte op een &os; bestandssysteem gebruiken alsof het een lokale schijf is en &os; printers gebruiken alsof het lokale printers zijn. Samba software packages horen op de &os; installatiemedia te staan. Als Samba bij de basisinstallatie niet mee is geïnstalleerd, dan kan dat alsnog via de net/samba3 port of met het package. Instellen Een standaardbestand met instellingen voor Samba wordt geïnstalleerd als /usr/local/etc/smb.conf.default. Dit bestand dient gekopieerd te worden naar /usr/local/etc/smb.conf en voordat Samba gebruikt kan worden, moeten er aanpassingen aan worden gemaakt. smb.conf bevat de instellingen voor Samba, zoals die voor de printers en de gedeelde bestandssystemen die gedeeld worden met &windows; clients. Het Samba pakket bevat een webgebaseerde beheermodule die swat heet, waarmee smb.conf op een eenvoudige manier ingesteld kan worden. De Samba Webbeheermodule Gebruiken (SWAT) De Samba Webbeheermodule (SWAT) draait als een daemon vanuit inetd. Daarom dient voor de volgende regel uit /etc/inetd.conf het commentaarkarakter verwijderd te worden voordat swat gebruikt kan worden om Samba in te stellen: swat stream tcp nowait/400 root /usr/local/sbin/swat Nadat het bestand met instellingen is gewijzigd, moet er een HangUP signaal verstuurd worden naar inetd, zoals uitgelegd in . Als swat is ingeschakeld in inetd.conf, kan de module gebruikt worden door met een browser een verbinding te maken met . Er dient aangemeld te worden met de root account van het systeem. Na succesvol aanmelden op de hoofdpagina voor de Samba instellingen, is het mogelijk de systeemdocumentatie te bekijken of te starten door op het tabblad Globals te klikken. Het onderdeel Globals correspondeert met de sectie [global] in /usr/local/etc/smb.conf. Systeembrede Instellingen Of Samba nu wordt ingesteld door /usr/local/etc/smb.conf direct te bewerken of met swat, de eerste instellingen die gemaakt moeten worden zijn de volgende: workgroup NT Domeinnaam of Werkgroepnaam voor de computers die verbinding gaan maken met de server. netbios name NetBIOS Hiermee wordt de NetBIOS naam waaronder de Samba server bekend zal zijn ingesteld. Standaard is de naam het eerste gedeelte van de DNS naam van een host. server string Hiermee wordt de string ingesteld die te zien is als het commando net view en een aantal andere commando's die gebruik maken van de descriptieve tekst voor de server gebruikt worden. Beveiligingsinstellingen Twee van de belangrijkste instellingen in /usr/local/etc/smb.conf zijn het gekozen beveiligingsmodel en het wachtwoord voor clientgebruikers. Deze worden met de volgende instellingen gemaakt: security De twee meest gebruikte mogelijkheden hier zijn security = share en security = user. Als de clients gebruikersnamen hebben die overeenkomen met hun gebruikersnaam op de &os; machine, dan is het verstandig om te kiezen voor beveiliging op gebruikersniveau. Dit is het standaard beveiligingsbeleid en kent als voorwaarde dat gebruikers zich eerst moeten aanmelden voordat ze toegang krijgen tot gedeelde bronnen. Bij beveiliging op shareniveau hoeft een client niet met een geldige gebruikersnaam en wachtwoord aan te melden op de server voor het mogelijk is om een verbinding te proberen te krijgen met een gedeelde bron. Dit was het standaardbeveiligingsmodel voor oudere versies van Samba. passdb backend NIS+ LDAP SQL database Samba kent aan de achterkant verschillende authenticatiemodellen. Clients kunnen authenticeren met LDAP, NIS+, een SQL database of een aangepast wachtwoordbestand. De standaard authenticatiemethode is smbpasswd. Meer wordt hier niet behandeld. Als aangenomen wordt dat de standaard achterkant smbpasswd wordt gebruikt, dan moet /usr/local/private/smbpasswd gemaakt worden om Samba in staat te stellen clients te authenticeren. Alle &unix; gebruikersaccounts toegang geven vanaf &windows; clients gaat met het volgende commando: &prompt.root; grep -v "^#" /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd &prompt.root; chmod 600 /usr/local/private/smbpasswd In de Samba documentatie staat meer informatie over instellingen. Met de hier gegeven basisuitleg moet het mogelijk zijn Samba draaiende te krijgen. <application>Samba</application> Starten Om Samba in te schakelen bij het starten van een systeem dient de volgende regel aan /etc/rc.conf toegevoegd te worden: samba_enable="YES" Samba kan op ieder moment gestart worden met: &prompt.root; /usr/local/etc/rc.d/samba.sh start Starting SAMBA: removing stale tdbs : Starting nmbd. Starting smbd. Samba bestaat feitelijk uit drie afzonderlijke daemons. Het script samba.sh start de daemons nmbd en smbd. Als de winbind name resolution diensten in smb.conf zijn ingeschakeld, dan start ook de daemon winbindd. Samba kan op ieder moment gestopt worden met: &prompt.root; /usr/local/etc/rc.d/samba.sh stop Samba is een complexe softwaresuite met functionaliteit waarmee verregaande ingratie met µsoft.windows; netwerken mogelijk wordt. Informatie die verder gaat dan de basisinstallatie staat op . Tom Hukins Geschreven door Tijd Synchroniseren met NTP NTP Overzicht Na verloop van tijd gaat de tijd van een computer meestal uit de pas lopen. Het Netwerk Tijd Protocol (NTP) kan ervoor zorgen dat de tijd accuraat blijft. Veel diensten op internet zijn afhankelijk, of hebben veel voordeel, van het betrouwbaar zijn van de tijd. Zo ontvangt een webserver bijvoorbeeld veel verzoeken om een bestand te sturen als dat gewijzigd is sinds een bepaald moment. In een LAN omgeving is het van groot belang dat computers die bestanden delen van eenzelfde server gesynchroniseerde tijd hebben zodat de tijdstempels consistent blijven. Diensten zoals &man.cron.8; zijn ook afhankelijk van een betrouwbare systeemtijd om commando's op het ingestelde moment uit te voeren. NTP ntpd Bij &os; zit de &man.ntpd.8; NTP server die gebruikt kan worden om bij andere NTP servers de tijd op te vragen om de eigen klok gelijk te zetten of om de juiste tijd te verstrekken aan andere apparaten. Passende NTP Servers Kiezen NTP choosing servers Om de tijd te synchroniseren moeten er één of meer NTP servers beschikbaar zijn. Een lokale systeembeheerder of een ISP heeft wellicht een NTP server voor dit doel opgezet. Het is verstandig om documentatie te raadplegen en te bekijken of dat het geval is. Er is een online lijst van publiek toegankelijke NTP servers waarop een NTP server gezocht kan worden die in geografische zin dichtbij een te synchroniseren computer ligt. Het is belangrijk te voldoen aan het beleid voor de betreffende server en toestemming te vragen als dat in de voorwaarden staat. Het is verstandig meerdere, niet van elkaar afhankelijke, NTP servers te kiezen voor het geval een van de servers niet langer betrouwbaar is of niet bereikbaar is. &man.ntpd.8; gebruikt de antwoorden die van andere servers ontvangen worden op intelligente wijze: betrouwbare servers krijgen voorrang boven ontbetrouwbare servers. Machine Instellen NTP instellen Basisinstellingen ntpdate Als het alleen de bedoeling is de tijd te synchroniseren bij het opstarten van een machine, dan kan &man.ntpdate.8; gebruikt worden. Dit kan van toepassing zijn op desktops die regelmatig herstart worden en niet echt regelmatig gesynchroniseerd hoeven te worden. Op sommige machines hoort echter &man.ntpd.8; te draaien. Het gebruik van &man.ntpdate.8; bij het opstarten is ook een goed idee voor machines waarop &man.ntpd.8; draait. De &man.ntpd.8; wijzigt de tijd geleidelijk, terwijl &man.ntpdate.8; gewoon de tijd instelt, hoe groot het verschil tussen de bestaande tijd van een machine en de correcte tijd ook is. Om &man.ntpdate.8; tijdens het opstarten in te schakelen kan ntpdate_enable="YES" aan /etc/rc.conf worden toegevoegd. Alle voor de synchronisatie te gebruiken servers moeten dan, samen met eventuele opties voor &man.ntpdate.8;, in ntpdate_flags aangegeven worden. NTP ntp.conf Algemene Instellingen NTP wordt ingesteld met het bestand /etc/ntp.conf in het formaat dat beschreven staat in &man.ntp.conf.5;. Hieronder volgt een eenvoudig voorbeeld: server ntplocal.example.com prefer server timeserver.example.org server ntp2a.example.net driftfile /var/db/ntp.drift De optie server geeft aan welke servers er gebruikt moeten worden, met op elke regel een server. Als de server wordt ingesteld met het argument prefer, zoals bij ntplocal.example.com, dan krijgt die server de voorkeur boven de andere. Een antwoord van een voorkeursserver wordt genegeerd als dat significant afwijkt van de antwoorden van de andere servers. In andere gevallen wordt het gebruikt zonder rekening te houden met de andere antwoorden. Het argument prefer wordt meestal gebruikt voor NTP servers waarvan bekend is dat ze erg betrouwbaar zijn, zoals die met speciale tijdbewaking hardware. De optie driftfile geeft aan welk bestand gebruikt wordt om de offset van de klokfrequentie van het systeem op te slaan. &man.ntpd.8; gebruikt die om automatisch te compenseren voor het natuurlijke afwijken van de tijd, zodat er zelfs bij gebrek aan externe bronnen een redelijke accurate tijdsinstelling mogelijk is. De optie driftfile geeft aan welk bestand gebruikt wordt om informatie over eerdere antwoorden van NTP servers die gebruikt worden op te slaan. Dit bestand bevat interne informatie voor NTP. Het hoort niet door andere processen gewijzigd te worden. Toegang tot een Server Instellen Een NTP server is standaard toegankelijk voor alle hosts op een netwerk. De optie restrict in /etc/ntp.conf maakt het mogelijk om aan te geven welke machines de dienst mogen benaderen. Voor het blokkeren van toegang voor alle andere machines kan de volgende regel aan /etc/ntp.conf toegevoegd worden: restrict default ignore Om alleen machines op bijvoorbeeld het locale netwerk toe te staan hun tijd te synchroniseren met een server, maar ze tegelijkertijd niet toe te staan om de server te draaien of de server als referentie voor synchronisatie te gebruiken, kan de volgende regel toegevoegd worden: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap Hierboven is 192.168.1.0 een IP adres op een LAN en 255.255.255.0 is het bijbehorende netwerkmasker. /etc/ntp.conf mag meerdere regels met restrict bevatten. Meer details staan in het onderdeel Access Control Support van &man.ntp.conf.5;. De NTP Server Draaien De NTP server kan bij het opstarten gestart worden door de regel ntpd_enable="YES" aan /etc/rc.conf toe te voegen. Om extra opties aan &man.ntpd.8; mee te geven kan de parameter ntpd_flags in /etc/rc.conf gebruikt worden. Om de server zonder een herstart van de machine te starten kan ntpd uitgevoerd worden, met toevoeging van de parameters uit ntpd_flags in /etc/rc.conf. Bijvoorbeeld: &prompt.root; ntpd -p /var/run/ntpd.pid In &os; 4.X, dienen de ntpd uit het bovenstaande voorbeeld vervangen te worden door xntpd. ntpd Gebruiken met een Tijdelijke Internetverbinding &man.ntpd.8; heeft geen permanente verbinding met een netwerk nodig om goed te werken. Maar als er gebruik gemaakt wordt van een inbelverbinding, is het wellicht verstandig om ervoor te zorgen dat uitgaande NTP verzoeken geen uitgaande verbinding kunnen starten. Als er gebruik gemaakt wordt van user PPP, kunnen er filter commando's ingesteld worden in /etc/ppp/ppp.conf. Bijboorbeeld: set filter dial 0 deny udp src eq 123 # NTP verkeer zorgt niet voor uitbellen set filter dial 1 permit 0 0 set filter alive 0 deny udp src eq 123 # Inkomend NTP verkeer houdt de verbinding niet open set filter alive 1 deny udp dst eq 123 # Uitgaand NTP verkeer houdt de verbinding niet open set filter alive 2 permit 0/0 0/0 Meer details staan in de PACKET FILTERING sectie in &man.ppp.8; en in de voorbeelden in /usr/share/examples/ppp/. Sommige internet providers blokkeren lage poorten, waardoor NTP niet kan werken omdat er nooit een antwoord ontvangen kan worden door een machine. Meer Informatie HTML documentatie voor de NTP server staat in /usr/share/doc/ntp/. diff --git a/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml index fc1699c2f2..34ecdd1b86 100644 --- a/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml @@ -1,804 +1,911 @@ - + PGP Sleutels - pgp keys - Voor het geval je een ondertekening moet verifieren of een - gecodeerde e-mail wilt versturen naar een van de beambtes - (officers) of ontwikkelaars dan vind je hieronder - een aantal sleutels die dat vergemakkelijken. Een complete - sleutelring voor FreeBSD.org gebruikers kan je downloaden op - http://www.FreeBSD.org/doc/pgpkeyring.txt. + pgp sleutels + + In het geval een handtekening van een van de beambten of + ontwikkelaars gecontroleerd moet worden of er een versleutelde + e-mail aan ze gezonden moet worden, worden hier voor het gemak een + aantal sleutels weergegeven. Een complete sleutelring van FreeBSD.org gebruikers kan op de + volgende link gedownload worden: http://www.FreeBSD.org/doc/pgpkeyring.txt + . - Beambtes + Beambten &a.security-officer; &pgpkey.security-officer; &a.core-secretary; &pgpkey.core-secretary; - Leden Kernteam - - &a.imp; - &pgpkey.imp; - - &a.jhb; &pgpkey.jhb; &a.kuriyama; &pgpkey.kuriyama; + + &a.scottl; + &pgpkey.scottl; + + + + &a.imp; + &pgpkey.imp; + + + + &a.wes; + &pgpkey.wes; + + &a.murray; &pgpkey.murray; &a.peter; &pgpkey.peter; - - - &a.wes; - &pgpkey.wes; - Ontwikkelaars &a.will; &pgpkey.will; &a.mat; &pgpkey.mat; &a.asami; &pgpkey.asami; &a.dougb; &pgpkey.dougb; &a.tobez; &pgpkey.tobez; &a.mbr; &pgpkey.mbr; &a.harti; &pgpkey.harti; &a.obraun; &pgpkey.obraun; &a.jmb; &pgpkey.jmb; &a.brueffer; &pgpkey.brueffer; &a.markus; &pgpkey.markus; &a.wilko; &pgpkey.wilko; + + &a.perky; + &pgpkey.perky; + + &a.jon; &pgpkey.jon; &a.luoqi; &pgpkey.luoqi; &a.ache; &pgpkey.ache; &a.seanc; &pgpkey.seanc; &a.cjh; &pgpkey.cjh; &a.cjc; &pgpkey.cjc; &a.marcus; &pgpkey.marcus; &a.nik; &pgpkey.nik; &a.ceri; &pgpkey.ceri; &a.brooks; &pgpkey.brooks; + + &a.gnn; + &pgpkey.gnn; + + &a.pjd; &pgpkey.pjd; &a.bsd; &pgpkey.bsd; + + &a.danfe; + &pgpkey.danfe; + + &a.dd; &pgpkey.dd; &a.ale; &pgpkey.ale; &a.peadar; &pgpkey.peadar; &a.josef; &pgpkey.josef; &a.ue; &pgpkey.ue; &a.ru; &pgpkey.ru; &a.le; &pgpkey.le; &a.stefanf; &pgpkey.stefanf; &a.jedgar; &pgpkey.jedgar; &a.green; &pgpkey.green; &a.lioux; &pgpkey.lioux; &a.fanf; &pgpkey.fanf; &a.blackend; &pgpkey.blackend; &a.petef; &pgpkey.petef; &a.billf; &pgpkey.billf; &a.patrick; &pgpkey.patrick; &a.gioria; &pgpkey.gioria; &a.jmg; &pgpkey.jmg; &a.dannyboy; &pgpkey.dannyboy; &a.dhartmei; &pgpkey.dhartmei; &a.jhay; &pgpkey.jhay; &a.sheldonh; &pgpkey.sheldonh; &a.mikeh; &pgpkey.mikeh; + + &a.mheinen; + &pgpkey.mheinen; + + + + &a.niels; + &pgpkey.niels; + + &a.ghelmer; &pgpkey.ghelmer; &a.mux; &pgpkey.mux; &a.mich; &pgpkey.mich; &a.foxfair; &pgpkey.foxfair; &a.jkh; &pgpkey.jkh; + + &a.ahze; + &pgpkey.ahze; + + &a.trevor; &pgpkey.trevor; &a.phk; &pgpkey.phk; &a.joe; &pgpkey.joe; &a.vkashyap; &pgpkey.vkashyap; &a.kris; &pgpkey.kris; &a.keramida; &pgpkey.keramida; &a.fjoe; &pgpkey.fjoe; &a.andreas; &pgpkey.andreas; + + &a.jkois; + &pgpkey.jkois; + + &a.sergei; &pgpkey.sergei; &a.maxim; &pgpkey.maxim; &a.jkoshy; &pgpkey.jkoshy; &a.rik; &pgpkey.rik; &a.rushani; &pgpkey.rushani; &a.clement; &pgpkey.clement; &a.mlaier; &pgpkey.mlaier; &a.alex; &pgpkey.alex; &a.erwin; &pgpkey.erwin; &a.leeym; &pgpkey.leeym; &a.netchild; &pgpkey.netchild; + + &a.lesi; + &pgpkey.lesi; + + + + &a.glewis; + &pgpkey.glewis; + + + + &a.delphij; + &pgpkey.delphij; + + &a.ijliao; &pgpkey.ijliao; &a.clive; &pgpkey.clive; + + &a.clsung; + &pgpkey.clsung; + + &a.arved; &pgpkey.arved; - - &a.scottl; - &pgpkey.scottl; + + &a.remko; + &pgpkey.remko; &a.pav; &pgpkey.pav; &a.bmah; &pgpkey.bmah; &a.mtm; &pgpkey.mtm; &a.dwmalone; &pgpkey.dwmalone; + + &a.kwm; + &pgpkey.kwm; + + &a.matusita; &pgpkey.matusita; &a.ken; &pgpkey.ken; &a.dinoex; &pgpkey.dinoex; &a.sanpei; &pgpkey.sanpei; &a.jim; &pgpkey.jim; &a.marcel; &pgpkey.marcel; + + &a.marck; + &pgpkey.marck; + + &a.tmm; &pgpkey.tmm; &a.rich; &pgpkey.rich; &a.knu; &pgpkey.knu; &a.max; &pgpkey.max; &a.yoichi; &pgpkey.yoichi; &a.bland; &pgpkey.bland; &a.simon; &pgpkey.simon; &a.anders; &pgpkey.anders; &a.obrien; &pgpkey.obrien; &a.philip; &pgpkey.philip; &a.hmp; &pgpkey.hmp; &a.mp; &pgpkey.mp; &a.roam; &pgpkey.roam; &a.den; &pgpkey.den; &a.pirzyk; &pgpkey.pirzyk; &a.jdp; &pgpkey.jdp; &a.krion; &pgpkey.krion; &a.markp; &pgpkey.markp; &a.thomas; &pgpkey.thomas; + + &a.hq; + &pgpkey.hq; + + &a.dfr; &pgpkey.dfr; &a.trhodes; &pgpkey.trhodes; &a.benno; &pgpkey.benno; &a.paul; &pgpkey.paul; &a.roberto; &pgpkey.roberto; &a.guido; &pgpkey.guido; &a.niklas; &pgpkey.niklas; &a.marks; &pgpkey.marks; &a.hrs; &pgpkey.hrs; &a.wosch; &pgpkey.wosch; &a.das; &pgpkey.das; &a.schweikh; &pgpkey.schweikh; &a.gshapiro; &pgpkey.gshapiro; &a.arun; &pgpkey.arun; &a.vanilla; &pgpkey.vanilla; &a.cshumway; &pgpkey.cshumway; &a.demon; &pgpkey.demon; &a.jesper; &pgpkey.jesper; &a.scop; &pgpkey.scop; + + &a.glebius; + &pgpkey.glebius; + + &a.kensmith; &pgpkey.kensmith; &a.ben; &pgpkey.ben; &a.des; &pgpkey.des; &a.sobomax; &pgpkey.sobomax; &a.dcs; &pgpkey.dcs; &a.brian; &pgpkey.brian; &a.nsouch; &pgpkey.nsouch; + + &a.ssouhlal; + &pgpkey.ssouhlal; + + &a.vs; &pgpkey.vs; &a.gsutter; &pgpkey.gsutter; + + &a.metal; + &pgpkey.metal; + + &a.nyan; &pgpkey.nyan; &a.mi; &pgpkey.mi; &a.gordon; &pgpkey.gordon; + + &a.lth; + &pgpkey.lth; + + &a.thierry; &pgpkey.thierry; &a.viny; &pgpkey.viny; + + &a.ups; + &pgpkey.ups; + + &a.nectar; &pgpkey.nectar; &a.adamw; &pgpkey.adamw; &a.nate; &pgpkey.nate; &a.wollman; &pgpkey.wollman; &a.joerg; &pgpkey.joerg; + + &a.bz; + &pgpkey.bz; + + &a.phantom; &pgpkey.phantom; - diff --git a/nl_NL.ISO8859-1/books/handbook/ports/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/ports/chapter.sgml index 8d0b77eb4e..a6cd794a02 100644 --- a/nl_NL.ISO8859-1/books/handbook/ports/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/ports/chapter.sgml @@ -1,1408 +1,1409 @@ Rene Ketelaars Vertaald door Siebrand Mazeland Applicaties Installeren: Packages en Ports Overzicht ports packages &os; bevat een grote collectie aan systeemgereedschappen als onderdeel van het basissysteem. De mogelijkheden reiken echter niet heel ver en daarom is er snel een applicatie van een andere partij nodig. &os; bevat twee complementaire technologieën om andere applicaties te installeren: de &os; portscollectie en binaire softwarepackages. Beide systemen kunnen gebruikt worden om de nieuwste versies van een gewenste applicatie te installeren van lokale media of rechtstreeks van het netwerk. Na het lezen van dit hoofdstuk weet de lezer: Hoe binaire softwarepackages van derden te installeren; Hoe software van derden vanuit de portscollectie te installeren; Hoe eerder geïnstalleerde packages of ports te verwijderen; Hoe standaardwaardes die door de ports worden gebruikt te wijzigen; Hoe het juiste softwarepackage te vinden; Hoe ports bij te werken. Overzicht van Softwareinstallatie Als de lezer eerder gebruik heeft gemaakt van een &unix; systeem dan is het bekend dat de standaardprocedure voor het installeren van software van derden ongeveer als volgt is: Download de software als broncode of als binair bestand; Pak de software uit vanuit zijn originele distributietype (meestal een tar-bestand gecomprimeerd met &man.compress.1;, &man.gzip.1;, of &man.bzip2.1;); Zoek de documentatie (meestal een INSTALL of README bestand of enkele bestanden in een submap doc/) en lees zorgvuldig hoe de software geïnstalleerd moet worden; Als de software als broncode is gedistribueerd, moet de broncode gecompileerd worden. Dit kan wijzigingen in een Makefile vereisen of het draaien van een configure script en andere werkzaamheden; De software installeren en testen. En dat geldt alleen als alles goed gaat. Als er een softwarepackage geïnstalleerd wordt dat niet specifiek gemaakt is voor &os; moet mogelijkerwijs zelfs de code aangepast worden om alles goed te laten werken. Als de gebruiker het wenst, kan hij in &os; doorgaan met het installeren van software op de traditionele manier. &os; levert echter twee technologieën die veel moeite kunnen besparen: packages en ports. Op dit moment zijn zo meer dan &os.numports; applicaties beschikbaar. Voor iedere gewenste applicatie is het &os; package voor die applicatie één te downloaden bestand. Het package bevat voorgecompileerde kopiën met alle commando's voor de applicatie en alle instellingenbestanden of documentatie. Een gedownload packagebestand kan gemanipuleerd worden met &os; packagemanagement commando's zoals &man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1;, enzovoort. Het installeren van een nieuwe applicatie kan met één commando. Een &os; port van een applicatie is een groep bestanden ontworpen om het proces van compileren van een applicatie vanuit broncode te automatiseren. Het is te vergelijken met de stappen die normaal gevolgd worden om een programma te compileren (downloaden, uitpakken, aanpassen, compileren en installeren). De bestanden die samen een port vormen bevatten alle noodzakelijke informatie om het systeem dit te laten doen. Met een aantal eenvoudige commando's wordt de broncode voor de applicatie automatisch gedownload, uitgepakt, aangepast, gecompileerd en geïnstalleerd. Het portssysteem kan zelfs gebruikt worden om packages te maken die later weer gemanipuleerd kunnen worden met pkg_add en andere packagemanagement commando's, waarover later meer uitleg wordt gegeven. Zowel packages als ports kennen afhankelijkheden (dependencies). Stel dat er een applicatie geïnstalleerd gaat worden die er vanuit gaat dat een specifieke bibliotheek wordt geïnstalleerd. Zowel de applicatie als de bibliotheek zijn beschikbaar als &os; ports en packages. Als het commando pkg_add of het portssysteem wordt gebruikt om de applicatie toe te voegen, dan zien beiden dat de bibliotheek niet geïnstalleerd is en wordt deze automatisch eerst geïnstalleerd. Gezien het feit dat beide technologieën vrijwel identiek zijn, kan de vraag rijzen waarom &os; de moeite neemt om beide te faciliteren. Packages en ports hebben ieder hun eigen kracht. Welke gebruikt wordt hangt af van voorkeuren en omstandigheden. Voordelen van Packages Een gecomprimeerd package tar-bestand is meestal kleiner dan het gecomprimeerde tar-bestand met de broncode van de applicatie; Packages vereisen geen additionele compilatie. Voor grote applicaties als Mozilla, KDE of GNOME kan dit belangrijk zijn, vooral als een systeem wat trager is; Packages vereisen geen begrip van het proces van het compileren van software op &os;. Voordelen van Ports Packages worden meestal gecompileerd met conservatieve opties, omdat ze moeten draaien op een maximaal aantal systemen. Bij het installeren vanuit de port kunnen de compilatieinstellingen aangepast worden om zo bijvoorbeeld code te maken die specifiek voor een Pentium IV of een Athlon processor is; Sommige applicaties hebben compilatieinstellingen gerelateerd aan wat ze wel of niet kunnen doen. Apache kan bijvoorbeeld ingesteld worden met een uitgebreide hoeveelheid verschillende ingebouwde instellingen. Door vanuit de port te werken hoeven niet alle standaardinstellingen geaccepteerd te worden en kunnen ze ingesteld worden; In sommige gevallen zijn er meerdere packages voor dezelfde applicatie om specifieke instellingen aan te geven. Ghostscript is bijvoorbeeld beschikbaar als een ghostscript package en ghostscript-nox11 package, afhankelijk van het al dan niet geïnstalleerd hebben van een X11 server. Deze ruwe vorm van tweaking is mogelijk met packages, maar dit wordt snel onmogelijk als een applicatie meer dan één of twee verschillende compilatieinstellingen heeft; De licentievoorwaarden van sommige softwaredistributies verbieden binaire distributie. Ze moeten dus gedistribueerd worden als broncode; Sommige mensen vertrouwen binaire distributies niet. Broncode kan tenminste (in theorie) zelf doorgelezen en gecontroleerd worden op potentiële problemen; Als er lokale modificaties zijn, is de broncode nodig om ze toe te passen; Sommige mensen hebben graag de broncode zodat ze die kunnen lezen als ze zich vervelen, erin kunnen hacken, code kunnen overnemen (indien de licentie dit toestaat natuurlijk), enzovoort. Om vernieuwingen van ports bij te houden kan een abonnement genomen worden op de &a.ports; en/of de &a.ports-bugs;. Voordat een applicatie wordt geïnstalleerd is het aan te raden op na kijken of er geen beveiligingsproblemen voor de gewenste applicatie bekend zijn. Het is ook mogelijk om security/portaudit te installeren, dat automatisch alle geïnstalleerde applicaties controleert op bekende fouten. Deze controle wordt ook uitgevoerd voordat een port wordt geïnstalleerd. Met het commando portaudit -F -a kunnen de packages die al geïnstalleerd zijn worden gecontroleerd. In de rest van dit hoofdstuk wordt uitgelegd hoe packages en ports gebruikt kunnen worden om software in &os; te installeren en te beheren. Een Applicatie Zoeken Voordat een applicatie geïnstalleerd kan worden, moeten de doelen bekend zijn en hoe de applicatie heet. De lijst met voor &os; beschikbare applicaties groeit continu. Gelukkig zijn er een aantal manieren om te zoeken: Op de &os; website staat een recente doorzoekbare lijst met alle beschikbare applicaties: http://www.FreeBSD.org/ports/. De ports zijn onderverdeeld in categorieën. Er kan naar een applicatie gezocht worden op naam (als die bekend is) of alle applicaties in een categorie kunnen bekeken worden. FreshPorts Dan Langille onderhoudt FreshPorts op . FreshPorts volgt veranderingen in applicaties in de ports en biedt de mogelijkheid om of meer ports te volgen. Er wordt dan een e-mail gestuurd als de port is bijgewerkt. FreshMeat Als de naam van de gewenst applicatie niet bekend is, is het wellicht mogelijk deze te achterhalen via een website als FreshMeat () en kan daarna op de &os; site gecontroleerd worden of de applicatie al geschikt gemaakt is voor gebruik met &os;. Als de precieze naam van de port bekend is, maar niet bekend is in welke categorie deze staat, kan dit achterhaald worden met &man.whereis.1;. Door simpelweg whereis bestand in te geven, waar bestand het te instelleren programma is. Als het op het systeem staat, wordt dat als volgt aangegeven: &prompt.root; whereis lsof lsof: /usr/ports/sysutils/lsof Dit geeft aan dat lsof (een systeemhulpprogramma) in de map /usr/ports/sysutils/lsof staat. Een andere manier om een port op te sporen is door het ingebouwde zoekmechanisme van de portscollectie te gebruiken. Hiervoor moet het huidige pad de map /usr/ports zijn. Vanuit die map kan make search name=programmanaam uitgevoerd worden, waar programmanaam de naam is van het programma dat wordt gezocht. Als bijvoorbeeld lsof wordt gezocht: &prompt.root; cd /usr/ports &prompt.root; make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps: Het belangrijkste onderdeel van de uitvoer is in dit geval de regel waarop Path: staat, omdat die aangeeft waar de port staat. De andere informatie is niet nodig voor de installatie van de port en wordt hier niet behandeld. Voor nog dieper zoeken kan ook make search key=string gebruikt worden waar string tekst is waarnaar gezocht moet worden. Hiermee wordt naar namen van ports, commentaar, beschrijvingen en afhankelijkheden gezocht en dit kan gebruikt worden om ports te vinden die te maken hebben met een bepaald onderwerp als onbekend is hoe het gezochte programma heet. In beide gevallen is de zoekstring niet hoofdlettergevoelig. Zoeken naar LSOF geeft hetzelfde resultaat als zoeken naar lsof. Chern Lee Bijgedragen door Het Packagessysteem Gebruiken Een Package Installeren packages installeren pkg_add Met &man.pkg.add.1; kan een &os; softwarepackage geïnstalleerd worden vanaf een lokaal bestand of vanaf een server op het netwerk. Handmatig een Package Downloaden en Lokaal Installeren &prompt.root; ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp3.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit &prompt.root; pkg_add lsof-4.56.4.tgz Als er lokaal geen bron is voor packages (zoals de &os; CD-ROM set) dan is het waarschijnlijk makkelijker om de optie te gebruiken met &man.pkg.add.1;. Deze optie zorgt er voor dat het hulpprogramma automatisch het correcte formaat en de juiste versie bepaalt en die daarna binnenhaalt en installeert vanaf een FTP site. pkg_add &prompt.root; pkg_add -r lsof Het voorbeeld hierboven haalt het correcte package binnen en installeert het zonder dat de gebruiker iets hoeft te doen. Het is mogelijk een alternatieve &os; packagessite aan te geven in plaats van de hoofddistributiesite. Dan moet PACKAGESITE ingesteld worden om de standaardinstellingen aan te passen. &man.pkg.add.1; gebruikt &man.fetch.3; om de bestanden binnen te halen, dat gebruik maakt van diverse omgevingsvariabelen zoals FTP_PASSIVE_MODE, FTP_PROXY, en FTP_PASSWORD. Mogelijk moeten ook één of meer van deze variabelen gebruikt worden als een machine achter een firewall staat of als gebruik gemaakt moet worden van een FTP/HTTP proxy. In &man.fetch.3; staat de complete lijst. In het voorbeeld hierboven is gebruik gemaakt van lsof in plaats van lsof-4.56.4. Als het package wordt binnengehaald met behulp van de bovenstaande instellingen, dan moet het versienummer van het package niet gebruikt worden. &man.pkg.add.1; haalt automatisch de laatste versie van de applicatie binnen. &man.pkg.add.1; downloadt de meest recente versie van een applicatie als &os.current; of &os.stable;. Als een -RELEASE versie wordt gebruikt, wordt het package dat bij die release hoort gebruikt. Het is mogelijk dit gedrag te veranderen door de omgevingsvariabele PACKAGESITE te wijzigen. Packagebestanden worden gedistribueerd in de formaten .tgz en .tbz. Ze zijn te vinden op of op de &os; CD-ROM distributie. Iedere CD in de &os; 4-CD set (en de PowerPak, enzovoort) bevat packages in de map /packages. De opbouw van de packages is ongeveer gelijk aan die van /usr/ports. Iedere categorie heeft zijn eigen map en ieder package staat ook in de map All. De mappenstructuur van het packagesysteem is gelijk aan die van het portssysteem. Samen vormen ze het package/portssysteem. Packages Beheren packages beheren &man.pkg.info.1; is een hulpprogramma dat de diverse geïnstalleerde packages toont en beschrijft. pkg_info &prompt.root; pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ... &man.pkg.version.1; is een hulpprogramma dat een samenvatting van de versie van alle geïnstalleerde packages geeft. Het vergelijkt de versie van het package met de huidige versie in de portscollectie. pkg_version &prompt.root; pkg_version cvsup = docbook = ... De symbolen in de tweede kolom geven aan hoe de geïnstalleerde versie staat ten opzichte van de versie die beschikbaar is in de lokale portscollectie. Symbool Betekenis = De versie van het geïnstalleerde package komt overeen met die in de lokale portscollectie. < De geïnstalleerde versie is ouder dan die beschikbaar is in de ports. > De geïnstalleerde versie is nieuwer dan die in de lokale portscollectie. De lokale portscollectie is waarschijnlijk verouderd. ? Het geïnstalleerde package kan niet gevonden worden in index van de portscollectie. Dit kan bijvoorbeeld gebeuren als een geïnstalleerde port uit de portscollectie wordt verwijderd of hernoemd. * Er zijn meerdere versies van het package. Een Package Verwijderen pkg_delete packages deleting Voor het verwijderen van een geïnstalleerd package wordt het hulpprogramma &man.pkg.delete.1; gebruikt. &prompt.root; pkg_delete xchat-1.7.1 Diversen Alle informatie over packages wordt opgeslagen in de map /var/db/pkg. De lijst met geïnstalleerde bestanden en beschrijvingen van ieder package staat in de bestanden in deze map. De Portscollectie Gebruiken In de volgende paragrafen worden basisinstructies gegeven over het gebruik van de portscollectie om programma's op een systeem te installeren of ervan te verwijderen. De Portscollectie Voordat ports geïnstalleerd kunnen worden moet eerst de portscollectie op een systeem staan, die in essentie een set van Makefiles, patches en bestanden met beschrijvingen is in /usr/ports. Tijdens het installeren van een &os; systeem, vraagt sysinstall of de portscollectie geïnstalleerd moet worden. Als daar NO is aangegeven, dan kan met behulp van de volgende instructies alsnog de portscollectie op een systeem gezet worden: Met Sysinstall Bij deze methode wordt sysinstall weer gebruikt om de portscollectie te installeren. sysinstall (/stand/sysinstall in &os; versies ouder dan 5.2) dient als root uitgevoerd te worden: >&prompt.root; sysinstall Selecteer onderaan Configure en druk op Enter; Selecteer onderaan Distributions en druk op Enter; Selecteer ports en druk op Space; Selecteer bovenaan Exit en druk op Enter; Selecteer het gewenste installatiemedium, zoals CDROM, FTP, enzovoort; Selecteer bovenaan Exit en druk op Enter; Druk op X om sysinstall te verlaten. De alternatieve methode om de portscollectie te installeren en bij te werken maakt gebruik van CVSup. Zie hiervoor het bestand /usr/share/examples/cvsup/ports-supfile uit de port CVSup. In dat bestand en CVSup gebruiken () staat meer informatie over het gebruik van CVSup. Met CVSup Dit is een snelle methode om de portscollectie te installeren met behulp van CVSup. Meer informatie over CVSup of over het bijgewerkt houden van de portscollectie staat in de eerder genoemde paragraaf. De port net/cvsup dient geïnstalleerd te worden. Meer details zijn te vinden in CVSup Installatie (); /usr/share/examples/cvsup/ports-supfile dient als root naar een nieuwe lokatie zoals /root of een thuismap gekopieerd te worden; ports-supfile dient aangepast te worden; CHANGE_THIS.FreeBSD.org dient gewijzigd te worden in een CVSup server in de buurt. In CVSup Mirrors () staat een complete lijst van mirrorsites; Start cvsup: &prompt.root; cvsup -g -L 2 /root/ports-supfile Als dit commando later wordt herhaald, dan worden alle recente veranderingen binnengehaald. De ports die al geïnstalleerd zijn worden niet opnieuw gebouwd! Ports Installeren ports installeren Het eerste wat uitleg behoeft als het over de portscollectie gaat is de term skelet (skeleton). In een notendop is een portskelet een minimaal aantal bestanden dat &os; aangeeft hoe een programma gecompileerd en geïnstalleerd kan worden. Ieder portskelet bevat: Een Makefile. De Makefile bevat verschillende definities die aangeven hoe de applicatie gecompileerd moet worden en waar die op een systeem geïnstalleerd moet worden; Een bestand distinfo. Dit bestand bevat informatie over de bestanden die gedownload moeten worden om de port te bouwen en hun checksums, om met &man.md5.1; vast te stellen dat de bestanden niet corrupt zijn geraakt tijdens de download.; Een map files. Deze map bevat patches om het programma op een &os; systeem te laten compileren en installeren. Patches zijn in essentie kleine bestanden waarin kleine veranderingen aan andere, specifieke, bestanden staan aangegeven. Ze zijn opgesteld in platte tekst en er staan dingen in als Verwijder regel 10 of Wijzig regel 26 in .... Patches staan ook wel bekend als diffs omdat ze gemaakt worden met het programma &man.diff.1;. Deze map kan ook andere bestanden bevatten die gebruikt worden om de port te bouwen; Een bestand pkg-descr. Dit is een meer gedetailleerde beschijving van het programma, vaak in één regel; Een bestand pkg-plist. Dit is een lijst met alle bestanden die door de port geïnstalleerd worden. Het geeft het portssysteem ook aan welke bestanden bij het verwijderen van de port weer verwijderd kunnen worden. Sommige ports bevatten nog andere bestanden, zoals pkg-message. Het portssysteem gebruikt die bestanden voor het afhandelen van bijzondere situaties. Meer details over die bestanden en over ports in het algemeen zijn na te lezen in het &os; Handboek voor Porters. De port bevat instructies over hoe de broncode gebouwd moet worden, maar de broncode zelf is er geen onderdeel van. De broncode staat op een CD-ROM of op internet. De broncode wordt verspreid op de wijze waarop de auteur dat wenst. Vaak is dat als een tar of gzip bestand, maar het kan ook ingepakt zijn met een ander programma of helemaal niet ingepakt zijn. De broncode van een programma, in welke vorm dan ook, heet een distfile. De twee methoden om een &os; port te installeren worden hieronder beschreven. Ports installeren dient als root te gebeuren. Voordat een port wordt geïnstalleerd is het aan te raden op na kijken of er geen beveiligingsproblemen voor de gewenste applicatie bekend zijn. Het is ook mogelijk om security/portaudit te installeren. Hiermee wordt die controle automatisch uitgevoerd voordat een port wordt geïnstalleerd. Met het commando portaudit -F kan de meest recente versie van de database met beveiligingsproblemen opgehaald worden. Door deze port wordt dagelijks een beveiligingsaudit gedaan en wordt ook dagelijks de database bijgewerkt. Meer informatie is te vinden in &man.portaudit.1; en &man.periodic.8;. Ports vanaf CD-ROM Installeren ports installeren vanaf CD-ROM De officiële &os; Project CD-ROM images bevatten geen distfiles meer. Die kostten veel ruimte die beter gevuld kon worden met voorgecompileerde packages. CD-ROM producten als het &os; PowerPak bevatten wel distfiles en deze kunnen besteld worden bij een verkoper als de &os; Mall. In deze paragraaf wordt aangenomen dat er een &os; CD-ROM set aanwezig is. De &os; CD-ROM dient in de drive te zitten en gemount te worden op /cdrom. Als er een ander - mountpunt wordt gebruikt werkt de installatie niet. Om te - beginnen dient de juiste map voor een port aangegeven te - worden: + mountpunt wordt gebruikt, dient de make + variable CD_MOUNTPTS te worden ingesteld. + Om te beginnen dient de juiste map voor een port aangegeven + te worden: &prompt.root; cd /usr/ports/sysutils/lsof Eenmaal in de map lsof is het skelet van de port te zien. In de volgende stap wordt de broncode voor de port gecompileerd of gebouwd. Dit wordt gedaan door op het prompt make in te voeren. Dat levert iets als het volgende op: &prompt.root; make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 ... [uitvoer van uitpakken verwijderd] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [uitvoer van configure verwijderd] ... ===> Building for lsof-4.57 ... [uitvoer van compileren verwijderd] ... &prompt.root; Als het compileren is afgerond is het prompt weer zichtbaar. In de volgende stap wordt de port geïnstalleerd. Om dat te bewerkstelligen wordt het woord install aan make toegevoegd: &prompt.root; make install ===> Installing for lsof-4.57 ... [uitvoer installatie verwijderd] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; Als het prompt weer beschikbaar is, is de applicatie klaar voor gebruik. Omdat lsof met verhoogde rechten wordt uitgevoerd, wordt er een waarschuwing getoond. Tijdens het bouwen en installeren van ports zijn de getoonde waarschuwingen van belang. Het is mogelijk een stap minder te gebruiken door make install uit te voeren in plaats van make en make install als twee afzonderlijke stappen. Sommige shells houden een cache bij van de commando's die in de mappen uit de omgevingsvariabele PATH staan om het opzoeken van een uitvoerbaar bestand te versnellen. Als zo'n shell wordt gebruikt, moet er na de installatie van een port het commando rehash worden uitgevoerd voordat zojuist geïnstalleerde commando's kunnen worden gebruikt. Dit geldt zowel voor shells die onderdeel uitmaken van het basissysteem (zoals tcsh) als voor shells uit de portscollectie (als shells/zsh). Licenties van sommige ports staan niet toe dat de code wordt opgenomen in een CD-ROM. Dit kan komen doordat er een formulier ingevuld moet worden voor een download of doordat herdistributie niet is toegestaan of om een andere reden. Om een port te installeren die niet op de CD-ROM staat moet de computer waarop de port geïnstalleerd wordt een internetverbinding hebben. Dit staat in de volgende paragraaf beschreven. Ports vanaf Internet Installeren Net als in de vorige paragraaf wordt hier aangenomen dat er voor een systeem een werkende internetverbinding is. Als die er niet is, dient de CD-ROM installatie gevolgd te worden of moet met de hand de distfile in /usr/ports/distfiles gezet worden. Het installeren van een ports vanaf internet gaat op precies dezelfde manier als de installatie vanaf CD-ROM. Het enige verschil is dat de distfile van internet komt in plaats vanaf de CD-ROM. Het stappenplan is ook hetzelfde: &prompt.root; make install >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57 ... [uitvoer van uitpakken verwijderd] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [uitvoer van configure verwijderd] ... ===> Building for lsof-4.57 ... [uitvoer van compileren verwijderd] ... ===> Installing for lsof-4.57 ... [uitvoer van installatie verwijderd] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; Het enige verschil is de regel die aangeeft waar de distfile wordt opgehaald. Het portssysteem gebruikt &man.fetch.1; om bestanden te downloaden. Dat programma maakt gebruik van een aantal omgevingsvariabelen, waaronder FTP_PASSIVE_MODE, FTP_PROXY, en FTP_PASSWORD. Als een systeem achter een firewall staat, is het wellicht noodzakelijk om een of meer van deze omgevingsvriabelen in te stellen of om gebruik te maken van een FTP/HTTP proxy. In &man.fetch.3; staat een complete lijst. Als er geen continue internetverbinding is, kan gebruik gemaakt worden van make fetch. Door dit commando in de map /usr/ports uit te voeren worden alle benodigde bestanden gedownload. Dit commando werkt ook op een lager niveau als /usr/ports/net of /usr/ports/net/xmule. Als een port afhankelijk is van bibliotheken of andere ports dan worden de distfiles van die ports niet opgehaald. Om dat de bereiken dient fetch vervangen te worden door fetch-recursive. Het is mogelijk alle ports in een categorie te bouwen door make in een hogere map uit te voeren, naar analogie van het voorbeeld voor make fetch. Dit is wel gevaarlijk, omdat sommige ports niet tegelijk met andere geïnstalleerd kunnen zijn. In andere gevallen installeren twee ports hetzelfde bestand met een andere inhoud. In zeldzame gevallen willen of moeten gebruikers de tar bestanden van een andere site dan de MASTER_SITES halen (de locatie waar de bestanden vandaan komen). Dat is mogelijk met de optie MASTER_SITES met een volgend commando: &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch In het voorgaande voorbeeld is de optie MASTER_SITES gewijzigd naar ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Sommige ports staan toe (of schrijven zelfs voor) dat er een aantal instellingen worden meegegeven die bepaalde onderdelen (niet gebruikt, beveiligingsinstellingen en andere aanpassingen) van de applicatie in- of uitschakelen. Voorbeelden van ports waarbij dat het geval is zijn www/mozilla, security/gpgme en mail/sylpheed-claws. Er wordt een bericht getoond als dit soort instellingen beschikbaar zijn. Standaardmappen voor Ports Wijzigen Soms is het handig (of verplicht) om een andere map voor distfiles of ports te gebruiken. Met de variabelen PORTSDIR en PREFIX kunnen de standaardmappen veranderd worden: &prompt.root; make PORTSDIR=/usr/home/example/ports install Het voorbeeld hierboven compileert de port in /usr/home/example/ports en installeert alles in /usr/local. &prompt.root; make PREFIX=/usr/home/example/local install Het voorbeeld hierboven compileert in /usr/ports en installeert in /usr/home/example/local. &prompt.root; make PORTSDIR=../ports PREFIX=../local install Het voorbeeld hierboven combineert de twee instellingen. Het gaat te ver om dit volledig in het handboek te beschrijven, maar hier krijgt de lezer een idee van de mogelijkheden. Het is ook mogelijk de bovenstaande variabelen als deel van de omgeving in te stellen. In de hulppagina's van de gebruikte shell staat hoe dat mogelijk is. Omgaan met <command>imake</command> Er zijn ports die imake gebruiken (een onderdeel van het X Window Systeem) die niet goed werken met PREFIX en erop staan te installeren in /usr/X11R6. Er zijn ook een aantal Perl ports die PREFIX negeren en in de Perl hiërarchie installeren. Deze ports op de PREFIX locatie laten installeren is meestal erg moeilijk of onmogelijk. Geïnstalleerde Ports Verwijderen ports verwijderen In deze paragraaf wordt het verwijderen van ports behandeld. Dat kan nodig zijn als een port niet langer wordt gebruikt of als de verkeerde ports is geïnstalleerd. Dit wordt geïllustreerd door de port uit het vorige voorbeeld te verwijderen (lsof). Net als bij het installeren van ports, moet eerst naar de juiste map gegaan worden (/usr/ports/sysutils/lsof). Daarna kan lsof verwijderd worden. Dit gaat met het commando make deinstall: &prompt.root; cd /usr/ports/sysutils/lsof &prompt.root; make deinstall ===> Deinstalling for lsof-4.57 Erg makkelijk dus. Nu is lsof van een systeem verwijderd. Om het opnieuw te installeren kan vanuit de map /usr/ports/sysutils/lsof make reinstall uitgevoerd worden. Het uitvoeren van make deinstall en make reinstall werkt niet als ooit make clean voor die port is uitgevoerd. Om een port te verwijderen na het cleanen van die port kan &man.pkg.delete.1; gebruikt worden, zoals wordt toegelicht in de paragraaf Het Packagessysteem Gebruiken. Ports en Schijfruimte ports schijfruimte Werken met de portscollectie kan in de loop der tijd veel diskruimte gebruiken. Omdat de portsstructuur de neiging heeft in de loop der tijd in grootte te groeien, na het bouwen en installeren van software uit de ports, is het van belang altijd de tijdelijke werkmappen work op te ruimen met het commando make clean. Hiermee wordt de map work verwijderd nadat een port is gebouwd en geïnstalleerd. Daarnaast kunnen ook de distfiles met de broncode verwijderd worden uit de map distfiles en kunnen ports die niet meer gebruikt worden verwijderd worden. Sommige gebruikers kiezen ervoor om de beschikbare port categorieën te beperken met instellingen in het bestand refuse. Zo kan bij het draaien van de applicatie CVSup voorkomen worden dat bestanden in een categorie worden gedownload. Meer informatie over refuse staat in . Ports Bijwerken portupgrade ports bijwerken Als de portscollectie eenmaal is bijgewerkt vóór het bijwerken van ports, is het verstandig het bestand /usr/ports/UPDATING te raadplegen. In dat bestand staan aanwijzingen en wijzigingen voor gebruikers die van belang zijn bij het bijwerken van ports. Het bijwerken van ports kan een vervelend klusje zijn. Om bijvoorbeeld een port bij te werken is het nodig om naar de juiste portsmap te gaan, de port te bouwen, de oude port te verwijderen, de nieuwe port te installeren en daarna de werkmap op te ruimen. Het is voorstelbaar dat dit voor bijvoorbeeld vijf ports een vervelend klusje is. Dit was een groot probleem voor systeembeheerders, dus zijn daar hulpprogramma's voor gemaakt. Zo voert het hulpprogramma sysutils/portupgrade het complete hiervoor beschreven proces uit! Die port is gewoon als iedere andere port te installeren met make install clean. Nu kan er een database gemaakt worden met het commando pkgdb -F. Hiermee wordt de lijst van geïnstalleerde ports gelezen en wordt een databasebestand gemaakt in de map /var/db/pkg. Als daarna portupgrade -a wordt uitgevoerd, wordt die database gelezen en het bestand INDEX van de ports. Tenslotte begint portupgrade met het downloaden, bouwen, back-uppen, installeren en opschonen van de ports die zijn bijgewerkt. portupgrade kent veel opties voor verschillend gebruik. De meest belangrijke worden hieronder besproken. Om een specifieke applicatie bij te werken en niet de hele database, kan portupgrade pkgname gebruikt worden. De vlag kan gebruikt worden om portupgrade ook te draaien voor alle packages waar het opgegeven package van afhankelijk is en de optie zorgt ervoor dat het wordt gedraaid voor alle packages die van het opgegeven package afhankelijk zijn. Om bij installatie van packages in plaats van ports gebruik te maken kan gebruikt worden. Met deze optie zoekt portupgrade in de lokale mappen uit PKG_PATH of haalt de packages van via het netwerk op als het lokaal niet wordt aangetroffen. Als een package niet lokaal en niet via het netwerk wordt gevonden, dan gebruikt portupgrade ports. Om het gebruik van ports te voorkomen kan gebruik gemaakt worden van de optie . Om alleen de distfiles op te halen (of packages als is opgegeven), zonder bouwen of installeren, is beschikbaar. Meer informatie staat in &man.portupgrade.1;. Het is van belang om regelmatig de packagedatabase bij te werken met pkgdb -F om inconsistenties de repareren, in het bijzonder als portupgrade daar om vraagt. Als portupgrade tijdens het bijwerken van de packagedatabase wordt onderbroken levert dat een inconsistente database op. Er bestaan ook andere hulpprogramma's die de besproken taken uit kunnen voeren. Deze zijn te vinden in de map ports/sysutils. Activiteiten na het Installeren Na het installeren van een nieuwe applicatie is het meestal verstandig om de documentatie te lezen die bij een applicatie zit, bestanden met instellingen die vereist zijn aan te passen, ervoor te zorgen dat de applicatie start na het booten (als het een daemon is), enzovoort. De exacte stappen om een applicatie in te stellen zijn natuurlijk voor iedere applicatie anders. Maar als er net een nieuwe applicatie is geïnstalleerd en het is niet vanzelfsprekend hoe verder te gaan, dan kunnen de volgende tips helpen: Met &man.pkg.info.1; kan uitgevonden worden welke bestanden geïnstalleerd zijn en waar. Om bijvoorbeeld uit te vinden welke bestanden door FooPackage versie 1.0.0 zijn geïnstalleerd: &prompt.root; pkg_info -L foopackage-1.0.0 | less Bestanden in mapnamen met man/ zijn hulppagina's, etc/ bevat bestanden met instellingen en doc/ bevat uitgebreidere documentatie. Als niet helemaal duidelijk is welke versie van het programma is geïnstalleerd, kan een commando als volgt gebruikt worden: &prompt.root; pkg_info | grep -i foopackage Hiermee worden alle packages getoond waar foopackage in de packagenaam voorkomt. Als de hulppagina's zijn gevonden, kunnen die bekeken worden met &man.man.1;. Zo kan er ook in de bestanden met voorbeeldinstellingen gekeken worden en naar aanvullende documentatie, als die is bijgeleverd. Als er een website is voor de applicatie staat daar vaak ook aanvullende documentatie, veelgestelde vragen, enzovoort. Als het webadres niet bekend is, kan dat nog staan in de uitvoer van het volgende commando: &prompt.root; pkg_info foopackage-1.0.0 Als er een regel met WWW: in staat, is dat de URL naar de website voor de applicatie. Ports die na het booten moeten starten (zoals internet diensten) hebben meestal een voorbeeldscript in /usr/local/etc/rc.d. Dit script kan bekeken, aangepast en hernoemd worden waar nodig. Meer informatie staat in Diensten Starten. Omgaan met Kapotte Ports Als een port niet werkt, zijn er een aantal mogelijke manieren om verder te komen: Repareren! In het Handboek voor de Porter is gedetailleerde informatie te vinden over de infrastructuur van de Ports, zodat een kapotte port gemaakt kan worden of er zelfs een nieuwe port ingestuurd kan worden. Klaag alleen per e-mail! Er kan eerst een e-mail naar de beheerder van de port gestuurd worden. Voor het mailadres van de beheerder kan make maintainer ingegeven worden of het kan in de Makefile staan. In de mail dienen in ieder geval de naam en versie van de port te staan (de regel met $&os;: in de Makefile) en de uitvoer tot en met de foutmelding. Als er geen antwoord komt van de beheerder, kan er met &man.send-pr.1; een foutrapport ingestuurd worden. Zoek een package van een FTP site in de buurt. De master packagecollectie staat op ftp.FreeBSD.org in de map packages, maar het is van belang dat er eerst in de buurt wordt gekeken! Dat het package werkt is waarschijnlijker dan wanneer uit de de broncode wordt gecompileerd en het is nog sneller ook. Een package kan met &man.pkg.add.1; geïnstalleerd worden. diff --git a/nl_NL.ISO8859-1/books/handbook/preface/preface.sgml b/nl_NL.ISO8859-1/books/handbook/preface/preface.sgml index eea0e14448..81d951cdb9 100644 --- a/nl_NL.ISO8859-1/books/handbook/preface/preface.sgml +++ b/nl_NL.ISO8859-1/books/handbook/preface/preface.sgml @@ -1,556 +1,733 @@ Voorwoord Bedoeld publiek De nieuwkomers bij &os; zullen zien dat de eerste sectie van dit boek ze begleidt door de &os; installatieprocedure en de geleidelijke introductie in de concepten van &unix;. - Om deze sectie goed te kunnen doorlopen heb je meer nodig dan - de wens om te ontdekken en de mogelijkheid om nieuwe concepten - op te nemen wanneer ze geïntroduceerd worden. + Om deze sectie goed te kunnen doorlopen is meer nodig dan de wens + om te ontdekken en de mogelijkheid om nieuwe concepten op te nemen + wanneer ze geïntroduceerd worden. - Wanneer je eenmaal hier bent, de tweede veel grotere sectie - van het handboek is een uitvoerige referentie naar alle mogelijke - (relevante) onderwerpen die interessant zijn voor &os; - systeembeheerders. Sommige van deze hoofdstukken adviseren je - mogelijk om wat vroegere documentatie te lezen, dit wordt aangegeven - in de samenvatting aan het begin van elk hoofdstuk. + De tweede, veel grotere, sectie van het handboek is een + uitvoerige referentie naar alle mogelijke (relevante) onderwerpen + die interessant zijn voor &os; systeembeheerders. Sommige van deze + hoofdstukken adviseren mogelijk om eerdere documentatie te lezen. + Dit wordt aangegeven in de samenvatting aan het begin van elk + hoofdstuk. Voor een lijst van extra bronnen van informatie zie . + Wijzigingen ten + opzichte van de Tweede Editie + + Deze derde editie is het resultaat van meer dan twee jaar + werk van de toegewijde leden van het &os; Documentatieproject. + Hieronder staan de grootste veranderingen in deze nieuwe + editie: + + + + , Instellingen en + Optimalisatie, is uitgebreid met nieuwe informatie over APCI + power en resource management, het systeemhulpprogramma cron + en er staan meer opties voor het optimaliseren van de kernel + beschreven. + + + + , Beveiliging, is uitgebreid met + meer informatie over virtuele private netwerken (VPN's), + toegangscontrolelijsten voor het bestandssysteem (ACL's) en + beveiligingswaarschuwingen. + + + + , Verplichte Toegangscontrole (MAC), + is een nieuw hoofdstuk in deze editie. Er wordt in + uitgelegd wat MAC is en hoe het gebruikt kan worden om &os; + te beveiligen. + + + + , Opslag, is uitgebreid met + informatie over USB opslagapparaten, snapshots van + bestandssystemen, bestandssystemen op basis van bestanden + en het netwerk en versleutelde partities op disks. + + + + , Vinum, is een nieuw + hoofdstuk in deze editie. Er wordt in beschreven hoe + Vinum gebruikt kan worden. Vinum is een logische volume + manager die apparaat onafhankelijke logische disks kan + aanbieden en software RAID-0, RAID-1 en RAID-5. + + + + Aan , PPP en SLIP, is een + paragraaf toegevoegd over problemen oplossen. + + + + , E-mail, is uitgebreid met + informatie over alternatieve transport programma's, + SMTP authenticatie, UUCP, fetchmail, procmail en een + aantal andere gevorderde onderwerpen. + + + + , Netwerkdiensten, is + nieuw in deze editie. Dit hoofdstuk bevat informatie over + het opzetten van een Apache HTTP Server, FTPd en het + opzetten van een server voor Microsoft &windows; clients + met Samba. Een aantal paragrafen + uit , Netwerken voor + Gevorderden, zijn om reden van presentatie naar dit hoofdstuk + verplaatst. + + + + , Netwerken voor + Gevorderden, is uitgebreid met informatie over het gebruik + van Bluetooth apparaten met &os;, het opzetten van draadloze + netwerken en Asynchronous Transfer Mode (ATM) netwerken. + + + + Er is een termenoverzicht toegevoegd als centrale locatie + voor definities van technische termen die in dit boek + gebruikt worden. + + + + Tenslotte zijn er nog veel estetische wijzigingen + doorgevoerd aan tabellen en figuren in het boek. + + + Veranderingen ten opzichte van de eerste editie - Deze tweede editie is een optelsom van meer dan twee jaar - werk door vaste leden van het &os; Documentation Project. - Het volgende zijn de grote wijzigingen in deze editie: + Deze tweede editie is een optelsom van meer dan twee jaar + werk door vaste leden van het &os; Documentation Project. + Het volgende zijn de grote wijzigingen in deze editie: + + + + Er is een complete INDEX toegevoegd. + + + + Alle ASCII figuren zijn vervangen door grafische + diagrammen. + + + + Aan elk hoofdstuk is een standaardsamenvatting toegevoegd + om een snel overzicht te geven welke informatie zich in het + hoofdstuk bevindt en wat de lezer geacht wordt te weten. + + + + De inhoud is logisch ingedeeld in drie delen: + Starten, Systeembeheer en + Appendix. + + + + (&os; + Installeren) is compleet herschreven met veel + screenshots erbij om het makkelijker te maken voor nieuwe + gebruikers om greep te krijgen op de tekst. + + + + (&unix; + Beginselen) is uitgebreid met extra informatie over + processen, daemons en signalen. + + + + (Applicaties + installeren) is uitgebreid met extra informatie over + binair package-beheer. + + + + (Het X Window Systeem) + is compleet herschreven met de nadruk op het gebruik van + moderne bureaubladtechnologiën zoals + KDE en + GNOME op &xfree86; 4.X. + + + + (Het &os; + Opstartproces) is uitgebreid. + + + + (Opslag) is + herschreven uit wat eens twee aparte hoofdstukken waren over + disks en backups. We vinden + dat de onderwerpen beter begrijpbaar zijn wanneer ze in + één hoofdstuk zijn ondergebracht. Er is ook een + sectie ver RAID (zowel hardware als softwarematig) + toegevoegd. + + + + (Seriële + communicatie) is compleet gereorganiseerd en + bijgewerkt voor &os; 4.X/5.X. + - - - Er is een complete INDEX toegevoegd. - + + (PPP en SLIP) + is aanzienlijk bijgewerkt. + - - Alle ASCII figuren zijn vervangen door grafische - diagrammen. - + + Veel nieuwe secties zijn toegevoegd aan + (Geavanceerd + netwerken). + + + + (E-mail) + is uitgebreid met meer informatie over het instellen van + sendmail. + + + + + ( &linux; Binaire Compatibiliteit) + is uitgebreid met informatie over het installeren van + &oracle; en + &sap.r3; + + + + De volgende nieuwe onderwerpen worden behandeld in + deze tweede editie: + + + + Instellingen en Optimalisatie + (). + + + + Multimedia () + + + + - - Een standaardsamenvatting is aan elk hoofdstuk toegevoegd - om een snel overzicht te geven welke informatie zich in het - hoofdstuk bevindt en wat de lezer geacht wordt te weten. - + De opbouw van dit + boek - - De inhoud is logisch ingedeeld in drie delen: - Starten, Systeembeheer en - Appendix. - + Dit boek is opgedeeld in vijf logische secties. + De eerste sectie, Starten, behandelt + de installatie en het basisgebruik van &os;. Er wordt verwacht + dat lezers deze hoofdstukken volgt, en mogelijk + hoofdstukken overslaat met bekende onderwerpen. De tweede sectie, + Algemene Taken, behandelt veelgebruikte + functies van &os;. Deze sectie en alle volgende kunnen in een + willekeurige volgorde gelezen worden. Iedere sectie begint met een + beknopte samenvatting die beschrijft wat het hoofdstuk inhoudt en + wat de lezer al moet weten. Dit is bedoeld om de lezer de kans te + geven alleen dat te lezen wat voor hem van belang is. In de derde + sectie, Systeembeheer, wordt het beheer + behandeld. De vierde sectie, + Netwerkcommunicatie, gaat over netwerken en + servers. De vijfde sectie bevat appendices met + referentiemateriaal. - - (&os; - Installeren) is compleet herschreven met veel - screenshots erbij om het makkelijker te maken voor nieuwe - gebruikers om greep te krijgen op de tekst. - + - - (&unix; - Beginselen) is uitgebreid met extra informatie over - processen, daemons en signalen. - + - - (Applicaties - installeren) is uitgebreid met extra informatie over - binair package-beheer. - + + , + Introductie - (Het X Window Systeem) - is compleet herschreven met de nadruk op het gebruik van - moderne bureaubladtechnologiën zoals - KDE en - GNOME op &xfree86; 4.X. + Introduceert &os; aan een nieuwe gebruiker. Het + beschrijft de geschiedenis van het &os; project, de doelen en + het ontwikkel model. + - - (Het opstart proces van - &os;) is uitgebreid. - + + , + Installatie - (Opslag) is - herschreven uit wat eens twee aparte hoofdstukken waren over - disks en backups. We vinden - dat de onderwerpen beter begrijpbaar zijn wanneer ze in - één hoofdstuk zijn ondergebracht. Een sectie - over RAID (zowel hardware als softwarematig) is ook - toegevoegd. + Begleidt een gebruiker door de installatieprocedure. + Sommige geavanceerde installatie-onderwerpen zoals + installatie door middel van een seriële console worden + ook behandeld. + - - (Seriële - communicatie) is compleet gereorganiseerd en - bijgewerkt voor &os; 4.X/5.X. - + + , &unix; + basis - (PPP en SLIP) - is aanzienlijk bijgewerkt. + Behandelt de basiscommando's en functionaliteit van het + &os; besturingssyteem. Als de lezer bekend is met &linux; of + een andere &unix; variant, kan dit hoofdstuk waarschijnlijk + overgeslagen worden. + - - Veel nieuwe secties zijn toegevoegd aan - (Geavanceerd - netwerken). - + + , Applicaties + Installeren - (Electronische email) - is uitgebreid met meer informatie over het configureren van - sendmail. + Behandelt de installatie van software van derden, met + zowel &os;'s innovatieve Portscollectie als + de standaard binaire packages. + - - (Linux - compatibiliteit) is uitgebreid met meer informatie - over het installeren van &oracle; en - &sap.r3;. - + + , Het X Window + Systeem - De volgende nieuwe onderwerpen worden behandeld in - deze tweede editie: - - - Configuratie en tuning - (). - - - - Multimedia () - - + Beschrijft het X Window Systeem in het algemeen en + het gebruik van X11 op &os; in het bijzonder. Het beschrijft + ook standaard bureaubladomgevingen zoals + KDE en + GNOME. - - De opbouw van dit - boek + - Dit boek is opgedeeld in drie logische verschillende secties. - De eerste sectie, Starten, behandelt - de installatie en het basisgebruik van &os;. Er wordt verwacht - dat lezers deze hoofdstukken volgt, en mogelijk - hoofdstukken overslaat met bekende onderwerpen. De tweede sectie - ,Systeembeheer, behandeld een brede collectie - van onderwerpen die interessant zijn voor de meer geavanceerde - &os; gebruiker. Elke sectie begint met een beknopte samenvatting - die beschrijft wat het hoofdstuk inhoudt, en wat de lezer al zou - moeten weten. Dit is bedoeld om de willekeurige lezers de kans te - geven om hoofdstukken te vinden die interessant zijn voor ze. De - derde sectie bevat een appendix met referentie materiaal. + - - , Introductie - - Introduceert &os; aan een nieuwe gebruiker. Het - beschrijft de geschiedenis van het &os; project, de doelen en - het ontwikkel model. - - + , + Bureaubladapplicaties - - , Installatie - Begleidt een gebruiker door de installatieprocedure. - Sommige geavanceerde installatie-onderwerpen zoals - installatie door middel van een seriële console worden - ook behandeld. + Levert standaard bureaubladapplicaties in een lijst, + zoals webbrowsers en productiviteitspakketten, en + beschrijft hoe ze te installeren op &os;. - , &unix; basis - - Behandelt de basiscommando's en functionaliteit van het - &os; besturingssyteem. Als je bekend bent met Linux of een - andere &unix; variant, kan je dit hoofdstuk waarschijnlijk - overslaan. - - + , + Multimedia - - , Applicaties installeren - Behandelt de installatie van software van derden, met - zowel &os;'s innovatieve Ports collectie als - de standaard binary packages. + Laat zien hoe geluid- en video-ondersteuning te + installeren voor een systeem. Het beschrijft ook een + aantal voorbeeld audio- en video- applicaties. - , Het X Window Systeem + , Instellen van de + &os; Kernel + - Beschrijft het X Window Systeem in het algemeen en - het gebruik van &xfree86; op &os; - in het bijzonder. Het beschrijft ook standaard - bureaubladomgevingen zoals KDE - en GNOME. + Beschrijft waarom misschien een nieuwe kernel ingesteld + moet worden en levert gedetailleerde instructies voor het + instellen, bouwen en installeren van een eigen kernel. + - , Configuratie en tuning + , + Printen + - Beschrijft de parameters beschikbaar voor - systeembeheerders om een &os; te fine-tunen voor - de beste prestaties. Het beschrijft ook diverse - configuratiebestanden die gebruikt worden in &os; en waar - je die kan vinden. + Beschrijft hoe printers beheerd worden onder &os;, + met informatie over bannerpagina's, printer-accouting en + initiële installatie. + + - , De opstartprocedure + , Instellingen en + Optimalisatie + - Beschrijft de &os; opstartprocedure en legt uit hoe - je dit kan bewerken met configuratie-opties. + Beschrijft de parameters beschikbaar voor + systeembeheerders om een &os; te fine-tunen voor + de beste prestaties. Het beschrijft ook diverse + instellingenbestanden die gebruikt worden in &os; en waar + die te vinden zijn. - , Gebruikers en basis account - beheer + , Het &os; + Opstartproces + - Beschrijft hoe je gebruikers-accounts aanmaakt, en - verandert. Het beschrijft ook welke resource-beperkingen er - gezet kunnen worden op gebruikers en andere - account-beheerstaken. + Beschrijft de &os; opstartprocedure en legt uit hoe + deze aan te passen met instellingen. - , Configuratie van de - &os; Kernel + , Gebruikers en Basis + Accountbeheer + - Beschrijft waarom je misschien een nieuwe kernel moet - configureren en levert gedetailleerde instructies voor - configuratie, het bouwen, en het installeren van een eigen - kernel. + Beschrijft hoe gebruikers-accounts aan te maken en te + wijzigen. Het beschrijft ook welke resource-beperkingen er + gezet kunnen worden op gebruikers en andere + account-beheerstaken. - , Beveiliging + , + Beveiliging + - Beschrijft vele verschillende hulpapplicaties die - beschikbaar zijn die je helpen om je &os; systeem veilig - te houden, met oa: Kerberos, IPsec, OpenSSH en - netwerk-firewalls. + Beschrijft vele verschillende hulpapplicaties die + beschikbaar zijn die helpen om een &os; systeem veilig + te houden, met oa: Kerberos, IPsec en OpenSSH. - , Printen + , Verplichte + Toegangscontrole + - Beschrijft hoe je printers beheert onder &os;, - met informatie over bannerpagina's, printer-accouting, en - initiële installatie. + Legt uit was Verplichte Toegangscontrole (MAC) is en hoe + het gebruikt kan worden om een &os; te beveiligen. , Opslag - - Beschrijft hoe je opslagmedia en bestandssystemen beheert - onder &os;. Dit bevat fysieke schijven, RAID arrays, - optische en tape media, geheugenschijven, en - netwerkbestandssystemen. - - - - , Vinum - Beschrijft hoe je Vinum gebruikt, een logische - volumebeheerder welke apparaatonafhankelijke logische disken - levert, met software RAID-0, RAID-1 en RAID-5. + Beschrijft hoe opslagmedia en bestandssystemen beheerd + worden onder &os;. Dit omvat fysieke schijven, RAID arrays, + optische en tape media, geheugenschijven en + netwerkbestandssystemen. - , Localisatie - - Beschrijft hoe je &os; met andere talen kunt gebruiken - in plaats van Engels. Behandelt zowel het systeem- als - applicatieniveau van localisatie. - - + , + Vinum - - , Bureaubladapplicatie's - Levert standaard bureaubladapplicatie's in een lijst, - zoals webbrowsers, en productiviteitspakketten, en - beschrijft hoe je ze installeert op &os;. + Beschrijft hoe Vinum gebruikt wordt, een logische + volumebeheerder die apparaatonafhankelijke logische disken + levert, met software RAID-0, RAID-1 en RAID-5. - , Multimedia + , + Lokalisatie - I18N/L10N Gebruiken en + Instellen + - Laat zien hoe je geluid- en video-ondersteuning - installeert voor je systeem. Het beschrijft ook een - aantal voorbeeld audio- en video- applicaties. + Beschrijft hoe &os; met andere talen dan Engels te + gebruiken is. Behandelt zowel het systeem- als + applicatieniveau van localisatie. - , Seriële communicaties + , Het Scherp van de + Snede + - Legt uit hoe je een verbinding kan maken met terminals en - modems op je &os; systeem voor zowel dial-in als dial-out - verbindingen. + Geeft uitleg over de verschillen tussen &os;-STABLE, + &os;-CURRENT en &os; releases. Beschrijft welke gebruikers + voordeel hebben van het bijhouden van een ontwikkelsysteem + en legt dat proces uit. + + - , PPP en SLIP + , Seriële + communicatie + - Beschrijft hoe je PPP, SLIP en PPP over Ethernet kan - gebruiken om verbinding te maken met remote systemen met - &os;. + Legt uit hoe een verbinding te maken met terminals en + modems op een &os; systeem voor zowel dial-in als dial-out + verbindingen. - , Geavanceerde netwerken + , PPP en + SLIP + - Beschrijft meerderenetwerk onderwerpen, inclusief - het delen van een internetverbinding met andere computers in - je LAN, het gebruik van netwerkbestandssystemen, en het delen - van accountinformatie door middel van NIS, het opzetten van - een nameserver en nog veel meer. + Beschrijft hoe PPP, SLIP en PPP over Ethernet te + gebruiken om verbinding te maken met remote systemen met + &os;. - , Electronische mail + , Electronische + Mail + - Legt verschillende componenten uit van een mailserver en - gaat dieper in op simpele configuratie-onderwerpen voor de - populairste mailserver software: - sendmail. + Legt verschillende componenten uit van een mailserver en + gaat dieper in op simpele instellingen voor de populairste + mailserver software: + sendmail. - , The Cutting edge + , + Netwerkdiensten + - Geeft uitleg over de verschillen tussen &os;-Stable, - &os;-Current en &os; releases. Beschrijft welke gebruikers - kunnen profiteren van het volgen van een ontwikkelsysteem - en legt dat systeem uit. + Geeft gedetailleerde instructies en voorbeeldinstellingen + om een &os; machine als een netwerk bestandssysteem server, + DNS server, netwerk informatiesysteem server of tijdserver + in te stellen. + + , + Firewalls + + + Licht de filosofie achter op software gebaseerde + firewalls toe en beschrijf in detail hoe de verschillende + firewalls die in &os; beschikbaar zijn ingesteld kunnen + worden. + + + - , Linux binary compatibiliteit + , Netwerken + voor Gevorderden + - Beschrijft de Linux compatibiliteitmogelijkheden van &os;. - Het beschrijft ook gedetaileerde installatie-instructies voor - verschillende populaire Linux-applicaties zoals - &oracle;, - &sap.r3; - en &mathematica;. + Beschrijft meerdere netwerk onderwerpen, inclusief + het delen van een internetverbinding met andere computers in + een LAN, routeren voor gevorderden, draadloze netwerken, + bluetooth, ATM, IPv6 en nog veel meer. + + - , Het verkrijgen van &os; + , &os; + Verkrijgen + - Geeft verschillende bronnen aan voor het verkrijgen van - &os; media op CDROM of DVD evenals verschillende sites op het - internet die je in staat stellen &os; te downloaden en te - installeren. + Geeft verschillende bronnen aan voor het verkrijgen van + &os; media op CDROM of DVD evenals verschillende sites op het + internet die gebruikers in staat stellen &os; te downloaden + en te installeren. - , Bibliografie + , + Bibliografie + - Dit boek geeft veel verschillende onderwerpen die je - misschien hongerig maken naar een gedetaileerdere uitleg. - De bibliografie geeft een aantal uitstekende boeken waarnaar - gerefereerd worden in de tekst. + Dit boek geeft veel verschillende onderwerpen die de + lezer misschien hongerig maken naar een gedetaileerdere + uitleg. De bibliografie bevat verwijzingen naar een aantal + uitstekende boeken. - , Resources op het internet + , Bronnen op + Internet + - Beschrijft de vele forums die beschikbaar zijn voor &os; - gebruikers om vragen te stellen, en om deel te nemen aan - technische conversaties over &os;. + Beschrijft de vele forums die beschikbaar zijn voor &os; + gebruikers om vragen te stellen, en om deel te nemen aan + technische conversaties over &os;. - , PGP Keys + , PGP + Sleutels + - Geeft de PGP-vingerafdrukken van verschillende &os; - ontwikkelaars. + Geeft de PGP-vingerafdrukken van verschillende &os; + ontwikkelaars. Overeenkomsten in dit boek - Om consistentie en leesbaarheid te behouden en de leesbaarheid - te behouden worden er een aantal overeenkomsten nageleefd in dit - boek. + Om consistentie en leesbaarheid te behouden en de leesbaarheid + te behouden worden er een aantal overeenkomsten nageleefd in dit + boek. - Typografische + Typografische overeenkomsten Italic + Een italic lettertype wordt gebruikt voor bestandsnamen, URLs, benadrukte tekst, en het eerste gebruik van technische termen. Monospace + - Een monospaced lettertype wordt - gebruikt voor foutmeldingen, commando's, - omgevingsvariabelen, namen van ports, hostnames, - gebruikersnamen, groupsnamen, device namen, variabelen, - en stukjes code. + Een monospaced lettertype wordt + gebruikt voor foutmeldingen, commando's, + omgevingsvariabelen, namen van ports, hostnames, + gebruikersnamen, groupsnamen, device namen, variabelen en + stukjes code. - Bold + Vet + - Een bold lettertype wordt + Een vet lettertype wordt gebruikt voor applicaties, commando's en toetsen. Gebruikersinvoer Toetsen worden weergegeven in bold om op te vallen tussen andere tekst. Toetscombinaties die bedoeld zijn om tegelijkertijd getypt te worden worden weergeven met - `+' tussen de toetsen zoals + +' tussen de toetsen zoals - - Ctrl - Alt - Del - + Ctrl + AltDel - Betekent dat de gebruiker de volgende toetsen moet indrukken - op hetzelfde moment: Ctrl,Alt en - Del. + Betekent dat de gebruiker de volgende toetsen op hetzelfde + moment moet indrukken: Ctrl, Alt + en Del. Toetsen die bedoeld zijn om achter elkaar te typen worden gescheiden door komma's, bijvoorbeeld - - Ctrl - X - , - - Ctrl - S - + Ctrl + X, + + Ctrl + S zou betekenen dat de gebruiker de Ctrl en X toetsen tegelijk moet indrukken en erna Ctrl en S tegelijkertijd moet indrukken. Voorbeelden Voorbeelden die beginnen met E:\> geven aan dat het een &ms-dos; commando betreft. Tenzij anders - vermeld, kunnen deze commando's in een - Command promptscherm in een moderne - µsoft.windows; omgeving worden gebruikt. + vermeld, kunnen deze commando's in een Command + promptscherm in een moderne µsoft.windows; omgeving + worden gebruikt. E:\> tools\fdimage floppies\kern.flp A: Voorbeelden die starten met een &prompt.root; geven aan dat een - commando ingegeven moet worden als de superuser in &os;. Je kan - inloggen met root om het commando in te typen, - of je logt in als gewone gebruiker en gebruikt &man.su.1; om - superuser-privileges te verkrijgen. + commando ingegeven moet worden als de superuser in &os;. Er kan + aangemeld worden met root om het commando in + te typen, of er kan na als gewone gebruiker aangemeld te hebben + gebruikt gemaakt worden van &man.su.1; om superuser-rechten te + verkrijgen. &prompt.root; dd if=kern.flp of=/dev/fd0 Voorbeelden die starten met &prompt.user; geven aan dat een - commando opgegeven moet worden vanuit een normaal gebruikersaccount. - Tenzij anders vermeld, wordt de C-shell syntax gebruikt voor het - instellen van omgevingsvariabelen en andere shell-commando's. + commando opgegeven moet worden vanuit een normale + gebruikersaccount. Tenzij anders vermeld, wordt de C-shell + syntaxis gebruikt voor het instellen van omgevingsvariabelen en + andere shellcommando's. &prompt.user; top Dankwoorden - Het boek dat je nu voor je hebt representeert de inspanningen - van honderden mensen over de hele wereld. Of ze nu foutjes + Het boek dat nu voorligt representeert de inspanningen van + honderden mensen over de hele wereld. Of ze nu foutjes verbeteren of complete hoofdstukken inleveren, ze hebben allemaal nuttig bijgedragen. Verschillende bedrijven hebben bijgedragen aan het maken van dit document door de schrijvers te betalen om hier full-time aan te werken, door te betalen voor de publicatie, etc. In het - bijzonder heeft BSDi (Overgenomen door - Wind River Systems) - leden van het &os; Documentatie Project betaald om full-time te - werken aan het verbeteren van dit boek, wat leidde tot de publicatie - van de eerste editie in maart 2000 (ISBN 1-57176-241-8). Wind River - Systems heeft daarna verschillende schrijvers betaald om een - aantal verbeteringen uit te voeren voor de - printuitvoer-infrastructuur en om extra hoofdstukken toe te voegen - aan de tekst. Dit werk leverde de publicatie van de tweede - geprinte editie in november 2001 (ISBN 1-57176-303-1). - + bijzonder heeft BSDi (Overgenomen door Wind River Systems) leden + van het &os; Documentatie Project betaald om full-time te werken + aan het verbeteren van dit boek, wat leidde tot de publicatie van + de eerste editie in maart 2000 (ISBN 1-57176-241-8). Wind River + Systems heeft daarna verschillende schrijvers betaald om een aantal + verbeteringen uit te voeren voor de printuitvoer-infrastructuur en + om extra hoofdstukken toe te voegen aan de tekst. Dit werk leverde + de publicatie van de tweede gedrukte editie in november 2001 + (ISBN 1-57176-303-1). In 2003-2004 heeft &os; Mall, Inc een + aantal mensen die bijdragen hebben geleverd betaald om het handboek + te verbeteren voor een derde gedrukte editie. diff --git a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml index 921edc2da9..ae3222667b 100644 --- a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml @@ -1,5312 +1,5313 @@ Matthew Dillon Veel uit dit hoofdstuk is overgenomen uit de security(7) handboekpagina van Siebrand Mazeland Vertaald door Beveiliging beveiliging Overzicht Dit hoofdstuk biedt een basisinleiding in systeembeveiligingsconcepten, een aantal goede basisregels en een paar gevorderde onderwerpen binnen &os;. Veel van de onderwerpen die worden behandeld kunnen ook worden toegepast op systemen en internet in het algemeen. Het internet is niet langer een vriendelijke omgeving waar iedereen een goede buur wil zijn. Het beveiligen van een systeem is onontbeerlijk als gegevens, intellectueel eigendom, tijd en wat dan ook uit de handen van hackers c.s. gehouden moeten worden. &os; biedt veel hulpmiddelen en mechanismen om te zorgen voor de integriteit en veiligheid van een systeem en netwerk. Na het lezen van dit hoofdstuk weet de lezer: Van basis systeembeveiligingsconcepten in relatie tot &os;; Meer over verschillende versleutelingsmechanismen die beschikbaar zijn in &os; zoals DES en MD5; Hoe eenmalige wachtwoordauthenticatie opgezet kan worden; Hoe TCP Wrappers in te stellen voor gebruik met inetd; Hoe KerberosIV op &os; releases eerder dan 5.0 opgezet kan worden; Hoe Kerberos5 op &os; 5.0 release en verder opgezet kan worden; Hoe IPsec wordt ingesteld en hoe een VPN op te zetten tussen &os; en µsoft.windows; machines; Hoe OpenSSH, &os;'s SSH implementatie, in te stellen en te gebruiken; Wat filesysteem ACLs zijn en hoe die te gebruiken; Hoe om te gaan met publicaties van &os; beveiligingswaarschuwingen. Er wordt aangenomen dat de lezer van dit hoofdstuk: Basisbegrip heeft van &os; en internetconcepten. In dit boek worden nog meer onderwerpen met betrekking tot beveiliging beschreven. Zo wordt bijvoorbeeld Verplichte Toegangscontrole (Mandatory Access Control) besproken in en Internet Firewalls in . Introductie Beveiliging is een taak die begint en eindigt bij de systeembeheerder. Hoewel alle BSD &unix; multi-user systemen enige inherente beveiliging kennen, is het bouwen en onderhouden van additionele beveiligingsmechanismen om de gebruikers eerlijk te houden waarschijnlijk een van de zwaarste taken voor de systeembeheerder. Machines zijn zo veilig als ze gemaakt worden en beveiligingsoverwegingen staan altijd op gespannen voet met de wens om gebruiksvriendelijkheid. &unix; systemen zijn in het algemeen in staat tot het tegelijkertijd uitvoeren van een enorm aantal processen en veel van die processen acteren als server - daarmee wordt bedoeld dat externe entiteiten er verbindingen mee kunnen maken en ertegen kunnen praten. Nu de minicomputers en mainframes van gisteren de desktops van vandaag zijn en computers onderdeel zijn van netwerken en internetwerken, wordt beveiliging nog belangrijker. Beveiliging kan het beste ingesteld worden door een gelaagde ui-aanpak. In een notendop zijn er het beste net zoveel lagen van beveiliging als handig is en daarna dient het systeem zorgvuldig gemonitord te worden op inbraken. Het is niet wenselijk beveiliging te overontwerpen, want dat doet afbreuk aan de detectiemogelijkheden en detectie is een van de belangrijkste aspecten van beveiligingsmechanismen. Zo heeft het bijvoorbeeld weinig zin om de schg vlaggen (zie &man.chflags.1;) op ieder binair bestand op een systeem te zetten, omdat het, hoewel dit misschien tijdelijk binaire bestanden beschermt, een inbreker in een systeem ervan kan weerhouden een eenvoudig te detecteren wijziging te maken waardoor beveiligingsmaatregelen de inbreker misschien helemaal niet ontdekken. Systeembeveiliging heeft ook te maken met het omgaan met verschillende vormen van aanvallen, zoals een poging om een systeem te crashen of op een andere manier onstabiel te maken, zonder te proberen de root account aan te vallen (break root). Aandachtspunten voor beveiliging kunnen opgesplitst worden in categorieën: Ontzeggen van dienst aanvallen (Denial of service). Gebruikersaccounts compromitteren. root compromitteren via toegankelijke servers. root compromitteren via gebruikersaccounts. Achterdeur creëren (Backdoor). DoS aanvallen Ontzegging van Dienst (DoS) beveiliging Ontzegging van Dienst DoS aanvallen (DoS) Ontzegging van Dienst (DoS) Een ontzegging van dienst (DoS) aanval is een techniek die de machine middelen ontneemt. In het algemeen zijn DoS aanvallen brute kracht mechanismen die proberen de machine te crashen of op een andere manier onbruikbaar te maken door de machine of de netwerkcode te overvragen. Sommige DoS aanvallen proberen misbruik te maken van bugs in de netwerkcode om een machine met een enkel pakket te crashen. Zoiets kan alleen gerepareerd worden door een aanpassing aan de kernel te maken. Aanvallen op servers kunnen vaak hersteld worden door op de juiste wijze opties in stellen om de belasting van servers te limiteren in ongunstige omstandigheden. Omgaan met brute kracht aanvallen is lastiger. Zo is een aanval met gefingeerde pakketten (spoofed-packet) vrijwel niet te stoppen, behalve dan door het systeem van internet los te koppelen. Misschien gaat de machine er niet door plat, maar het kan wel een volledige internetverbinding verzadigen. beveiliging account compromittering Een gecompromitteerde gebruikersaccount komt nog veel vaker voor dan een DoS aanval. Veel systeembeheerders draaien nog steeds standaard telnetd, rlogind, rshd en ftpd servers op hun machines. Deze servers communiceren standaard niet over beveiligde verbindingen. Het resultaat is dat als er een redelijk grote gebruikersgroep is, er altijd wel van een of meer van de gebruikers die van afstand op dat systeem aanmelden (wat toch de meest normale en makkelijke manier is om op een systeem aan te melden) het wachtwoord is afgeluisterd (sniffed). Een oplettende systeembeheerder analyseert zijn logboekbestanden om te zoeken naar verdachte bronadressen, zelfs als het om succesvolle aanmeldpogingen gaat. Uitgangspunt moet altijd zijn dat als een aanvaller toegang heeft tot een gebruikersaccount, de aanvaller de root account kan compromitteren. In werkelijkheid is het wel zo dat voor een systeem dat goed beveiligd is en goed wordt onderhouden, toegang tot een gebruikersaccount niet automatisch betekent dat de aanvaller ook root privileges kan krijgen. Het is van belang dit onderscheid te maken, omdat een aanvaller zonder toegang tot root in het algemeen zijn sporen niet kan wissen en op z'n best wat kan rommelen met bestanden van de gebruiker of de machine kan crashen. Gecompromitteerde gebruikersaccounts zijn vrij normaal omdat gebruikers normaliter niet de voorzorgsmaatregelen nemen die systeembeheerders nemen. beveiliging achterdeuren Systeembeheerders moeten onthouden dat er in potentie heel veel manieren zijn om toegang tot root te krijgen. Een aanvaller zou het root wachtwoord kunnen kennen, een bug kunnen ontdekken in een dienst die onder root draait en daar via een netwerkverbinding op in kunnen breken of een aanvaller zou een probleem kunnen met een suid-root programma dat de aanvaller in staat stelt root te worden als hij eenmaal toegang heeft tot een gebruikersaccount. Als een aanvaller een manier heeft gevonden om root te worden op een machine, dan hoeft hij misschien geen achterdeur (backdoor) te installeren. Veel bekende manieren die zijn gevonden om root te worden, en weer zijn afgesloten, vereisen veel werk van de aanvaller om zijn rommel achter zich op te ruimen, dus de meeste aanvallers installeren een achterdeur. Een achterdeur biedt de aanvaller een manier om makkelijk opnieuw root toegang tot het systeem te krijgen, maar dit geeft de slimme systeembeheerder ook een makkelijke manier om de inbraak te ontdekken. Het onmogelijk maken een achterdeur te installeren zou best wel eens nadelig kunnen zijn voor beveiliging, omdat hiermee nog niet het gat gedicht is waardoor er in eerste instantie is ingebroken. Beveiligingsmaatregelen moeten altijd geïmplementeerd worden in een meerlagenmodel en worden als volgt gecategoriseerd: Beveiligen van root en medewerkersaccounts. Beveiligen van root – servers onder root en suid/sgid binaire bestanden. Beveiligen van gebruikersaccounts. Beveiligen van het wachtwoordbestand. Beveiligen van de kern van de kernel, ruwe devices en bestandssystemen. Snel detecteren van ongeoorloofde wijzigingen aan het systeem. Paranoia. In het volgende onderdeel van dit hoofdstuk gaan we dieper in op de bovenstaande punten. &os; Beveiligen beveiliging &os; beveiligen Commando vs. Protocol In dit hele document gebruiken we vette tekst om te verwijzen naar een commando of applicatie en een monospaced lettertype om te verwijzen naar specifieke commando's. Protocollen staan vermeld in een normaal lettertype. Dit typografische onderscheid is zinvol omdat bijvoorbeeld ssh zowel een protocol als een commando is. In de volgende onderdelen behandelen we de methodes uit de vorige paragraaf om een &os; systeem te beveiligen. Beveiligen van <username>root</username> en Medewerkersaccounts. su Om te beginnen: doe geen moeite om medewerkersaccounts te beveiligen als de root account niet beveiligd is. Op de meeste systemen heeft de root account een wachtwoord. Als eerste moet aangenomen worden dat dit wachtwoord altijd gecompromitteerd is. Dit betekent niet dat het wachtwoord verwijderd moet worden. Het wachtwoord is namelijk bijna altijd nodig voor toegang via het console van de machine. Het betekent wel dat het niet mogelijk gemaakt moet worden om het wachtwoord te gebruiken buiten het console om en mogelijk zelfs niet via het &man.su.1; commando. Pty's moeten bijvoorbeeld gemarkeerd staan als onveilig (insecure) in het bestand /etc/ttys zodat direct aanmelden met root via telnet of rlogin niet wordt toegestaan. Als andere aanmelddiensten zoals sshd gebruikt worden, dan hoort direct aanmelden via root uitgeschakeld staat. Dit kan door het bestand /etc/ssh/sshd_config te bewerken en ervoor te zorgen dat PermitRootLogin op NO staat. Dit moet gebeuren voor iedere methode van toegang – diensten zoals FTP worden vaak over het hoofd gezien. Het direct aanmelden van root hoort alleen te mogen via het systeemconsole. wheel Natuurlijk moet een systeembeheerder de mogelijkheid hebben om root te worden. Daarvoor kunnen een paar gaatjes geprikt worden. Maar dan moet ervoor gezorgd worden dat er voor deze gaatjes extra aanmelden met een wachtwoord nodig is. Eén manier om root toegankelijk te maken is door het toevoegen van de juiste medewerkersaccounts aan de wheel groep (in /etc/group). De medewerkers die lid zijn van de groep wheel mogen su–en naar root. Maak medewerkers nooit native lid van de groep wheel door ze in de groep wheel te plaatsen in /etc/group. Medewerkersaccounts horen lid te zijn van de groep staff en horen dan pas toegevoegd te worden aan de groep wheel in het bestand /etc/group. Alleen medewerkers die ook echt toegang tot root nodig hebben horen in de groep wheel geplaatst te worden. Het is ook mogelijk, door een authenticatiemethode als Kerberos te gebruiken, om het bestand .k5login van Kerberos in de root account te gebruiken om een &man.ksu.1; naar root toe te staan zonder ook maar iemand lid te maken van de groep wheel. Dit is misschien wel een betere oplossing, omdat het wheel-mechanisme het nog steeds mogelijk maakt voor een inbreker root te breken als de inbreker een wachtwoordbestand te pakken heeft gekregen en toegang kan krijgen tot één van de medewerkersaccounts. Hoewel het instellen van het wheel-mechanisme beter is dan niets, is het niet per se de meest veilige optie. Een indirecte manier om de medewerkersaccounts te beveiligen en uiteindelijk ook de toegang tot root, is het gebruik van alternatieve aanmeldmethodes en de wachtwoorden van de medewerkersaccounts, zoals het heet uit te sterren. Met &man.vipw.8; kan iedere instantie van een gecodeerd wachtwoord vervangen worden door een enkel * karakter. Met dit commando worden /etc/master.passwd en de gebruikers/wachtwoord database bijgewerkt om het aanmelden met wachtwoord uit te schakelen. Een regel voor een medewerkersaccount als: foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh Zou veranderd moeten worden naar: foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh Door deze wijziging kan niet langer normaal aangemeld worden omdat het gecodeerde wachtwoord nooit gelijk is aan de *. Nu dit is gebeurd, moeten medewerkers een ander mechanisme gebruiken om zich te authenticeren zoals &man.kerberos.1; of &man.ssh.1; met een publiek/privaat sleutelpaar. Bij het gebruik van iets als Kerberos moeten gewoonlijk de machines waarop de Kerberos server draait en het desktop werkstation beveiligd worden. Bij het gebruik van een publiek/privaat sleutelpaar met ssh, moet in het algemeen de machine van waar wordt aangemeld beveiligd worden (meestal een werkstation). Het is mogelijk nog een beveiligingslaag toe te voegen door het sleutelpaar te beschermen met een wachtwoord als het aan te maken met &man.ssh-keygen.1;. Door accounts van medewerkers uit te sterren is het ook gegarandeerd dat ze alleen aan kunnen melden door gebruik te maken van de veilige toegangsmethodes die de beheerder heeft ingesteld. Hierdoor worden alle medewerkers gedwongen veilige, gecodeerde verbindingen te gebruiken voor al hun sessies. Daarmee wordt een belangrijk beveiligingsgat gesloten dat veel indringers gebruiken: snuffelen aan het netwerk vanaf een niet-relevante minder veilige machine. Meer indirecte beveiligingsmechanismen hebben ook als uitgangspunt dat vanaf een zwaarder beveiligde machine wordt aangemeld op een minder beveiligd systeem. Als een hoofdserver bijvoorbeeld allerlei servers draait, zou het werkstation er geen moeten draaien. Om een werkstation redelijk veilig te laten zijn, dienen er zo min mogelijk servers op te draaien, bij voorkeur zelfs geen en er zou een schermbeveiliging met wachtwoordbeveiliging op moeten draaien. Maar als een aanvaller fysieke toegang heeft tot een werkstation, dan kan hij elke beveiliging die erop is aangebracht omzeilen. Dit probleem dient echt overwogen te worden, net als het feit dat de meeste aanvallen van een afstand plaatsvinden, via het netwerk, door mensen die geen fysieke toegang hebben tot werkstations of servers. KerberosIV Het gebruik van iets als Kerberos geeft de mogelijkheid om het wachtwoord van de account van een medewerker buiten gebruik te stellen of te wijzigen op één plaats, waarbij het meteen actief is op alle machines waarop die medewerker een account heeft. Als de account van een medewerker gecompromitteerd raakt, moet vooral de mogelijkheid om per direct het wachtwoord voor machines te kunnen aanpassen niet onderschat worden. Met afzonderlijke wachtwoorden kan het veranderen van wachtwoorden op N systemen een puinhoop worden. Met Kerberos kunnen ook wachtwoordrestricties opgelegd worden: het is niet alleen mogelijk om een Kerberos ticket na een bepaalde tijd te laten verlopen, maar het Kerberos systeem kan afdwingen dat de gebruiker na een bepaalde tijd een nieuw wachtwoord kiest (na bijvoorbeeld een maand). Beveiligen van <username>root</username> – servers onder <username>root</username> en suid/sgid Binaire Bestanden ntalk comsat finger zandbakken sshd telnetd rshd rlogind Een voorzichtige systeembeheerder draait alleen die servers die nodig zijn, niets meer, niets minder. Bedenk dat servers van derde partijen vaak de meeste neiging hebben tot het vertonen van bugs. Zo staat bijvoorbeeld het draaien van een oude versie van imapd of popper gelijk aan het weggeven van de root account aan de hele wereld. Draai nooit een server die niet zorgvuldig is onderzocht. Veel servers hoeven niet te draaien als root. Zo kunnen de ntalk, comsat en finger daemons bijvoorbeeld draaien in speciale gebruikerszandbakken (sandboxes). Een zandbak is niet perfect, tenzij er heel veel moeite gedaan wordt, maar de meerlagenbenadering blijft bestaan: als iemand via een server die in een zandbak draait weet in te breken, dan moeten ze eerst nog uit de zandbak komen. Hoe groter het aantal lagen is waar een inbreker doorheen moet, hoe kleiner de kans op succes is. root gaten zijn historisch gezien aanwezig geweest in vrijwel iedere server die ooit als root gedraaid heeft, inclusief de basisservers van een systeem. Op een machine waarop mensen alleen aanmelden via sshd en nooit via telnetd of rshd of rlogind dienen die servers uitgeschakeld te worden! &os; draait ntalkd, comsat en finger tegenwoordig standaard in een zandbak. Een ander programma dat misschien beter in een zandbak kan draaien is &man.named.8;. In /etc/defaults/rc.conf staat als commentaar welke parameters er nodig zijn om named in een zandbak te draaien. Afhankelijk van of het een nieuwe systeeminstallatie of het bijwerken van een bestaand systeem betreft, worden de speciale gebruikersaccounts die bij die zandbakken horen misschien niet geïnstalleerd. Een voorzichtige systeembeheerder onderzoekt en implementeert zandbakken voor servers waar dat ook maar mogelijk is. sendmail Er zijn een aantal diensten die vooral niet in een zandbak draaien: sendmail, popper, imapd, ftpd en andere. Voor sommige servers zijn alternatieven, maar dat kost misschien meer tijd dan er te besteden is (gemak dient de mens). Het kan voorkomen dat deze servers als root moeten draaien en dat er vertrouwd moet worden op andere mechanismen om een inbraak via die servers te detecteren. De andere grote mogelijkheid voor root gaten in een systeem zijn de suid-root en sgid binaire bestanden die geïnstalleerd zijn op een systeem. Veel van die bestanden, zoals rlogin, staan in /bin, /sbin, /usr/bin of /usr/sbin. Hoewel het niet 100% veilig is, mag aangenomen worden dat de suid en sgid binaire bestanden van een standaardsysteem redelijk veilig zijn. Toch worden er nog wel eens root gaten gevonden in deze bestanden. Zo is er in 1998 een root gat gevonden in Xlib waardoor xterm (die normaliter suid is) kwetsbaar bleek. Een voorzichtige systeembeheerder kiest voor better to be safe than sorry door de suid bestanden die alleen medewerkers hoeven uit te voeren aan een speciale groep toe te wijzen en de suid bestanden die niemand gebruikt te lozen (chmod 000). Een server zonder monitor heeft normaal gezien xterm niet nodig. Sgid bestanden kunnen bijna net zo gevaarlijk zijn. Als een inbreker een sgid-kmem stuk kan krijgen, dan kan hij wellicht /dev/kmem lezen en dus het gecodeerde wachtwoordbestand, waardoor mogelijk ieder account met een wachtwoord besmet is. Een inbreker toegang tot de groep kmem kan krijgen, zou bijvoorbeeld mee kunnen kijken met de toetsaanslagen die ingegeven worden via de pty's, inclusief die pty's die gebruikt worden door gebruikers die via beveiligde methodes aanmelden. Een inbreker die toegang krijgt tot de groep tty kan naar bijna alle tty's van gebruikers schrijven. Als een gebruiker een terminalprogramma of een terminalemulator met een toetsenbordsimulatieoptie draait, dan kan de inbreker in potentie een datastroom genereren die ervoor zorgt dat de terminal van de gebruiker een commando echot, dat dan wordt uitgevoerd door die gebruiker. Beveiligen van Gebruikersaccounts Gebruikersaccounts zijn gewoonlijk het meest lastig om te beveiligen. Hoewel er allerlei Draconische maatregelen genomen kunnen worden met betrekking tot de medewerkers en hun wachtwoorden weggesterd kunnen worden, gaat dat waarschijnlijk niet lukken met de gewone gebruikersaccounts. Als er toch voldoende vrijheid is, dan prijst de beheerder zich gelukkig en is het misschien toch mogelijk de accounts voldoende te beveiligen. Als die vrijheid er niet is, dan moeten die accounts gewoon netter gemonitord worden. Het gebruik van ssh en Kerberos voor gebruikersaccounts is problematischer vanwege het extra beheer en de ondersteuning, maar nog steeds een prima oplossing in vergelijking met een gecodeerd wachtwoordbestand. Beveiligen van het Wachtwoordbestand De enige echte oplossing is zoveel mogelijk wachtwoorden * maken en ssh of Kerberos gebruiken voor toegang tot die accounts. Hoewel een gecodeerd wachtwoordbestand (/etc/spwd.db) alleen gelezen kan worden door root, is het wel mogelijk dat een inbreker leestoegang krijgt tot dat bestand zonder dat de aanvaller root-schrijftoegang krijgt. Beveiligingsscripts moeten altijd controleren op en rapporteren over wijzigingen in het wachtwoordbestand (zie ook Bestandsintegriteit Controleren hieronder). Beveiligen van de Kern van de Kernel, Ruwe Devices en Bestandssystemen Als een aanvaller toegang krijgt tot root dan kan hij ongeveer alles, maar er zijn een paar slimmigheidjes. Zo hebben bijvoorbeeld de meeste moderne kernels een ingebouwde pakketsnuffeldriver (packet sniffing). Bij &os; is dat het bpf device. Een inbreker zal in het algemeen proberen een pakketsnuffelaar te draaien op een gecompromitteerde machine. De inbreker hoeft deze mogelijkheid niet te hebben en bij de meeste systemen is het niet verplicht het bpf device mee te compileren. sysctl Maar zelfs als het bpf device is uitgeschakeld, dan zijn er nog /dev/mem en /dev/kmem. De inbreker kan namelijk nog schrijven naar ruwe diskdevices. En er is ook nog een optie in de kernel die modulelader (module loader) heet, &man.kldload.8;. Een ondernemende inbreker kan een KLD module gebruiken om zijn eigen bpf device of een ander snuffeldevice te installeren in een draaiende kernel. Om deze problemen te voorkomen, moet de kernel op een hoger veiligheidsniveau draaien, ten minste securelevel 1. Het securelevel wordt ingesteld met sysctl op de kern.securelevel variabele. Als securelevel op 1 staat, is het niet langer mogelijk te schrijven naar ruwe devices en speciale chflags vlaggen als schg worden dan afgedwongen. Ook dient de vlag schg gezet te worden op kritische opstartbestanden, mappen en scriptbestanden. Alles dat wordt uitgevoerd voordat het securelevel wordt ingesteld. Dit is misschien wat overdreven en het wordt lastiger een systeem te vernieuwen als dat in een hoger securelevel draait. Er is een compromis mogelijk door het systeem in een hoger securelevel te draaien maar de schg vlag niet op alle systeembestanden en mappen te zetten die maar te vinden zijn. / en /usr zouden ook als alleen-lezen gemount kunnen worden. Het is nog belangrijk om op te merken dat als de beheerder te Draconisch omgaat met dat wat hij wil beschermen, hij daardoor kan veroorzaken dat die o-zo belangrijke detectie van een inbraak wordt misgelopen. Bestandsintegriteit Controleren: Binaire Bestanden, Instellingenbestanden, Etc. Als puntje bij paaltje komt kan de kern van een systeem maar tot een bepaald punt beveiligd worden zonder dat het minder prettig werken wordt. Zo werk het zetten van de schg bit met chflags op de meeste bestanden in / en /usr waarschijnlijk averechts, omdat, hoewel de bestanden beschermd zijn, ook het venster waarin detectie plaats kan vinden is gesloten. De laatste laag van beveiliging is waarschijnlijk de meest belangrijke: detectie. Alle overige beveiliging is vrijwel waardeloos (of nog erger: geeft een vals gevoel van veiligheid) als een mogelijke inbraak niet gedetecteerd kan worden. Een belangrijk doel van het meerlagenmodel is het vertragen van een aanvaller, nog meer dan hem te stoppen, om de detectiekant van de vergelijking de kans te geven hem op heterdaad te betrappen. De beste manier om te zoeken naar een inbraak is zoeken naar gewijzigde, missende of onverwachte bestanden. De beste manier om te zoeken naar gewijzigde bestanden is vanaf een ander (vaak gecentraliseerd) systeem met beperkte toegang. Met zelfgeschreven scripts op dat extra beveiligde systeem met beperkte toegang ben is een beheerder vrijwel onzichtbaar voor mogelijke aanvallers en dat is belangrijk. Om het nut te maximaliseren moeten in het algemeen dat systeem met beperkte toegang best veel rechten gegeven worden op de andere machines in het netwerk, vaak via een alleen-lezen NFS export van de andere machines naar het systeem met beperkte toegang of door ssh sleutelparen in te stellen om het systeem met beperkte toegang een ssh verbinding te laten maken met de andere machines. Buiten het netwerkverkeer, is NFS de minst zichtbare methode. Hierdoor kunnen de bestandssystemen op alle client machines vrijwel ongezien gemonitord worden. Als de server met beperkte toegang verbonden is met de client machines via een switch, dan is de NFS methode vaak de beste keus. Als de server met beperkte toegang met de andere machines is verbonden via een hub of door meerdere routers, dan is de NFS methode wellicht niet veilig genoeg (vanuit een netwerk standpunt) en kan beter ssh gebruikt worden, ondanks de audit-sporen die ssh achterlaat. Als de machine met beperkte toegang eenmaal minstens leestoegang heeft tot een clientsysteem dat het moet gaan monitoren, dan moeten scripts gemaakt worden om dat monitoren ook echt uit te voeren. Uitgaande van een NFS mount, kunnen de scripts gebruik maken van eenvoudige systeem hulpprogramma's als &man.find.1; en &man.md5.1;. We adviseren minstens één keer per dag een md5 te maken van alle bestanden op de clientmachine en van instellingenbestanden als in /etc en /usr/local/etc zelfs vaker. Als er verschillen worden aangetroffen ten opzichte van de basis md5 informatie op het systeem met beperkte toegang, dan hoort het script te gillen om een beheerder die het moet gaan uitzoeken. Een goed beveiligingsscript controleert ook op onverwachte suid bestanden en op nieuwe en verwijderde bestanden op systeempartities als / en /usr. Als ssh in plaats van NFS wordt gebruikt, dan is het schrijven van het script lastiger. Dan moeten de scripts met scp naar de client verplaatst worden om ze uit te voeren, waardoor ze zichtbaar worden. Voor de veiligheid dienen ook de binaire bestanden die het script gebruikt, zoals &man.find.1;, gekopieerd te worden. De ssh client op de client zou al gecompromitteerd kunnen zijn. Het is misschien noodzakelijk ssh te gebruiken over onveilige verbindingen, maar dat maakt alles een stuk lastiger. Een goed beveiligingsscript voert ook controles uit op de instellingenbestanden van gebruikers en medewerkers: .rhosts, .shosts, .ssh/authorized_keys, enzovoort… Dat zijn bestanden die buiten het bereik van de MD5 controle vallen. Als gebruikers veel diskruimte hebben, dan kan het te lang duren om alle bestanden op deze partitie te controleren. In dat geval is het verstandig de mount vlaggen zo in te stellen dat suid binaire bestanden en devices op die partities niet zijn toegestaan. Zie daarvoor de nodev en nosuid opties (zie &man.mount.8;). Die partities moeten wel toch nog minstens eens per week doorzocht worden, omdat het doel van deze beveiligingslaag het ontdekken van een inbraak is, of die nu succesvol is of niet. Procesverantwoording (zie &man.accton.8;) kost relatief gezien weinig en kan bijdragen aan een evaluatie mechanisme voor na inbraken. Het is erg handig om uit te zoeken hoe iemand precies heeft ingebroken op het systeem, mits het bestand nog onbeschadigd is na de inbraak. Tenslotte horen beveiligingsscripts de logboekbestanden te verwerken en de logboekbestanden zelf horen zo veilig mogelijk tot stand te komen. remote syslog kan erg zinvol zijn. Een aanvaller probeert zijn sporen uit te wissen en logboekbestanden zijn van groot belang voor een systeembeheerder als het gaat om uitzoeken wanneer en hoe er is ingebroken. Een manier om logboekbestanden veilig te stellen is door het systeemconsole via een seriële poort aan te sluiten op een veilige machine en zo continu informatie te verzamelen. Paranoia Een beetje paranoia is niet verkeerd. Eigenlijk kan de systeembeheerder zoveel beveiligingsopties inschakelen als hij wil, als deze maar geen impact hebben op het gebruiksgemak en de beveiligingsopties die wel impact hebben op het gebruiksgemak kunnen ingeschakeld worden als daar zorgvuldig mee wordt omgegaan. Nog belangrijker is misschien dat er een juiste combinatie wordt gevonden. Als de aanbevelingen uit dit document woord voor woord worden opgevolgd, dan worden daarmee de methodes aan een toekomstige aanvaller verraden, die ook toegang heeft tot dit document. Ontzeggen van Dienst Aanvallen Ontzegging van Dienst (DoS) In deze paragraaf worden Ontzeggen van Dienst aanvallen (Denial of Service of DoS) behandeld. Een DoS aanval wordt meestal uitgevoerd als pakketaanval. Hoewel er weinig gedaan kan worden tegen de huidige aanvallen met gefingeerde pakketten die een netwerk kunnen verzadigen, kan de schade geminimaliseerd worden door ervoor te zorgen dat servers er niet door plat gaan. Limiteren van server forks. Limiteren van springplank (springboard) aanvallen (ICMP response aanvallen, ping broadcast, etc.). Kernel Route Cache. Een veelvoorkomende DoS aanval tegen een server die forkt is er een die probeert processen, file descriptors en geheugen te gebruiken tot de machine het opgeeft. inetd (zie &man.inetd.8;) kent een aantal instellingen om dit type aanval af te zwakken. Hoewel het mogelijk is ervoor te zorgen dat een machine niet plat gaat, is het in het algemeen niet mogelijk te voorkomen dat de dienstverlening door de aanval wordt verstoord. Meer is te lezen in de handleiding van inetd en het advies is in het bijzonder aandacht aan de , en opties te besteden. Aanvallen met gefingeerde IP adressen omzeilen de optie naar inetd, dus in het algemeen moet een combinatie van opties gebruikt worden. Sommige op zichzelf staande servers hebben parameters waarmee het aantal forks gelimiteerd kan worden. Sendmail heeft de optie die veel beter blijkt te werken dan het gebruik van de opties van sendmail waarmee de werklast gelimitteerd kan worden. De parameter MaxDaemonChildren moet zodanig ingesteld worden dat als sendmail start, hij hoog genoeg is om de te verwachten belasting aan te kunnen, maar niet zo hoog is dat de computer het aantal instanties van sendmails niet aankan zonder plat te gaan. Het is ook verstandig om sendmail in de wachtrij modus () te draaien en de daemon (sendmail -bd) los te koppelen van de verwerking van de wachtrij (sendmail -q15m). Als de verwerking van wachtrij real-time moet, kunnen de tussenpozen voor verwerking verkort worden door deze bijvoorbeeld op in te stellen, maar dan is een redelijke instelling van MaxDaemonChildren van belang om die sendmail te beschermen tegen trapsgewijze fouten (cascade failures). Syslogd kan direct aangevallen worden en het is sterk aan te raden de optie te gebruiken waar dat ook maar mogelijk is en anders de optie. Er dient voorzichtig omgesprongen te worden met diensten die terugverbinden zoals tcpwrapper's reverse-identd die direct aangevallen kan worden. In het algemeen is het hierom onverstandig gebruik te maken van de reverse-ident optie van tcpwrappers. Het is een goed idee om interne diensten af te schermen voor toegang van buitenaf door ze te firewallen op de routers aan de rand van een netwerk (border routers). Dit heeft als achtergrond dat verzadigingsaanvallen voorkomen van buiten het LAN voorkomen kunnen worden. Daarmee wordt geen aanval op root via het netwerk en die diensten daaraan voorkomen. Er dient altijd een exclusieve firewall te zijn, d.w.z. firewall alles behalve poorten A, B, C, D en M-Z. Zo worden alle lage poorten gefirewalled behalve die voor specifieke diensten als named (als er een primary is voor een zone), ntalkd, sendmail en andere diensten die vanaf internet toegankelijk moeten zijn. Als de firewall andersom wordt ingesteld, als een inclusieve of tolerante firewall, dan is de kans groot dat er wordt vergeten een aantal diensten af te sluiten of dat er een nieuwe interne dienst wordt toegevoegd en de firewall niet wordt bijgewerkt. Er kan nog steeds voor gekozen worden de hoge poorten open te zetten, zodat een tolerante situatie ontstaat, zonder de lage poorten open te stellen. &os; biedt ook de mogelijkheid een reeks poortnummers die gebruikt worden voor dynamische verbindingen in te stellen via de verscheidene net.inet.ip.portrange sysctls (sysctl -a | fgrep portrange), waardoor ook de complexiteit van de firewall instellingen kan vereenvoudigen. Zo kan bijvoorbeeld een normaal begin tot eindbereik ingesteld worden van 4000 tot 5000 en een hoog poortbereik van 49152 tot 65535. Daarna kan alles onder 4000 op de firewall geblokkeerd worden (met uitzondering van bepaalde poorten die vanaf internet bereikbaar moeten zijn natuurlijk). ICMP_BANDLIM Een andere veelvoorkomende DoS aanval is de springplank aanval: een server zo aanvallen dat de respons van die server de server zelf, het lokale netwerk of een andere machine overbelast. De meest voorkomende aanval van dit type is de ICMP ping broadcast aanval. De aanvaller fingeert ping pakketten die naar het broadcast adres van het LAN worden gezonden met als bron het IP adres van de machine die hij eigenlijk aan wil vallen. Als de routers aan de rand van het netwerk niet zijn ingesteld om een ping aan een broadcast adres te blokkeren, dan kan het LAN genoeg antwoorden produceren om de verbinding van het slachtoffer (het gefingeerde bronadres) te verzadigen, zeker als de aanvaller hetzelfde doet met tientallen andere netwerken. Broadcastaanvallen met een volume van meer dan 120 megabit zijn al voorgekomen. Een tweede springplank aanval is er een tegen het ICMP foutmeldingssysteem. Door een pakket te maken waarop een ICMP foutmelding komt, kan een aanvaller de inkomende verbinding van een server verzadigen en de uitgaande verbinding wordt verzadigd door de foutmeldingen. Dit type aanval kan een server ook laten crashen, zeker als de server de ICMP antwoorden niet zo snel kwijt kan als ze ontstaan. De kernel van &os; kent een nieuwe compileeroptie waarmee de effectiviteit van dit type aanvallen afneemt. De laatste belangrijke klasse springplankaanvallen hangt samen met een aantal interne diensten van inetd zoals de UDP echo dienst. Een aanvaller fingeert eenvoudigweg een UDP pakket met als bronadres de echopoort van Server A en als bestemming de echopoort van Server B, waar Server A en B allebei op een LAN staan. Die twee servers gaan dat pakket dan heen en weer kaatsen. Een aanvaller kan beide servers overbelasten door een aantal van deze pakketten te injecteren. Soortgelijke problemen kunnen ontstaan met de chargen poort. Een competente systeembeheerder zal al deze interne inetd test-diensten uitschakelen. Gefingeerde pakketten kunnen ook gebruikt worden om de kernel route cache te overbelasten. Raadpleeg daarvoor de net.inet.ip.rtexpire, rtminexpire en rtmaxcache sysctl parameters. Een aanval met gefingeerde pakketten met een willekeurig bron IP zorgt ervoor dat de kernel een tijdelijke cached route maakt in de routetabel, die uitgelezen kan worden met netstat -rna | fgrep W3. Deze routes hebben een levensduur van ongeveer 1600 seconden. Als de kernel merkt dat de cached routetabel te groot is geworden, dan wordt rtexpire dynamisch verkleind, maar deze waarde wordt nooit lager dan rtminexpire. Er zijn twee problemen: De kernel reageert niet snel genoeg als een laag belaste server wordt aangevallen. rtminexpire is niet laag genoeg om de kernel de aanval te laten overleven. Als servers verbonden zijn met het internet via een E3 of sneller, dan is het verstandig om handmatig rtexpire en rtminexpire aan te passen via &man.sysctl.8;. Als de een van de parameters op nul wordt gezet, dan crasht de machine. Het instellen van beide waarden op 2 seconden is voldoende om de routetabel tegen een aanval te beschermen. Aandachtspunten voor Toegang met <application>Kerberos</application> en <application>SSH</application> ssh KerberosIV Er zijn een aantal aandachtspunten die in acht genomen moeten worden als Kerberos of ssh gebruikt worden. Kerberos V is een prima authenticatieprotocol, maar er zitten bugs in de kerberos versies van telnet en rlogin waardoor ze niet geschikt zijn voor binair verkeer. Kerberos codeert standaard sessie niet, tenzij de optie wordt gebruikt. ssh codeert standaard wel alles. ssh werkt prima, maar het stuurt coderingssleutels standaard door. Dit betekent dat als gegeven een veilig werkstation met sleutels die toegang geven tot de rest van het systeem en ssh wordt gebruikt om verbinding te maken met een onveilige machine, die sleutels gebruikt kunnen worden. De sleutels zelf zijn niet bekend, maar ssh stelt een doorstuurpoort in zolang als een gebruikers aangemeld blijft. Als de aanvaller roottoegang heeft op de onveilige machine, dan kan hij die poort gebruiken om toegang te krijgen tot alle machines waar de sleutels van de gebruiker toegang toe geven. Het advies is ssh in combinatie met Kerberos te gebruiken voor het aanmelden door medewerkers wanneer dat ook maar mogelijk is. ssh kan gecompileerd worden met Kerberos ondersteuning. Dit vermindert de kans op blootstelling van ssh sleutels en beschermt tegelijkertijd de wachtwoorden met Kerberos. ssh sleutels zouden alleen gebruikt moeten worden voor geautomatiseerde taken vanaf veilige machines (iets waar Kerberos ongeschikt voor is). Het advies is om het doorsturen van sleutels uit te schakelen in de ssh instellingen of om de from=IP/DOMAIN optie te gebruiken die ssh in staat stelt het bestand authorized_keys te gebruiken om de sleutel alleen bruikbaar te maken voor entiteiten die zich aanmelden vanaf vooraf aangewezen machines. Bill Swingle Delen geschreven en herschreven door Siebrand Mazeland Vertaald door DES, MD5 en Crypt beveiliging crypt crypt DES MD5 Iedere gebruiker op een &unix; systeem heeft een wachtwoord bij zijn account. Het lijkt voor de hand liggend dat deze wachtwoorden alleen bekend horen te zijn bij de gebruiker en het eigenlijke besturingssysteem. Om deze wachtwoorden geheim te houden, zijn ze gecodeerd in een eenweg hash (one-way hash), wat betekent dat ze eenvoudig gecodeerd kunnen worden maar niet gedecodeerd. Met andere woorden, wat net gesteld werd is helemaal niet waar: het besturingssysteem kent het echte wachtwoord niet. De enige manier om een wachtwoord in platte tekst te verkrijgen, is door er met brute kracht naar te zoeken in alle mogelijke wachtwoorden. Helaas was DES, de Data Encryption Standard, de enige manier om wachtwoorden veilig te coderen toen &unix; ontstond. Dit was geen probleem voor gebruikers in de VS, maar omdat de broncode van DES niet geëxporteerd mocht worden moest &os; een manier vinden om zowel te gehoorzamen aan de wetten van de VS als aansluiting te houden bij alle andere &unix; varianten die nog steeds DES gebruikten. De oplossing werd gevonden in het splitsen van de coderingsbibliotheken zodat gebruikers in de VS de DES bibliotheken konden installeren en gebruiken en internationale gebruikers een coderingsmethode konden gebruiken die geëxporteerd mocht worden. Zo is het gekomen dat &os; MD5 is gaan gebruiken als coderingsmethode. Van MD5 wordt aangenomen dat het veiliger is dan DES, dus de mogelijkheid om DES te installeren is vooral beschikbaar om aansluiting te kunnen houden. Het Crypt Mechanisme Herkennen Voor &os; 4.4 was libcrypt.a een symbolic link die wees naar de bibliotheek die gebruikt werd voor codering. In &os; 4.4 veranderde libcrypt.a zodat er een instelbare wachtwoordhash bibliotheek kwam. Op dit moment ondersteunt de bibliotheek DES, MD5 en Blowfish hashfuncties. Standaard gebruikt &os; MD5 om wachtwoorden te coderen. Het is vrij makkelijk om uit te vinden welke coderingsmethode &os; op een bepaald moment gebruikt. De gecodeerde wachtwoorden in /etc/master.passwd bekijken is een manier. Wachtwoorden die gecodeerd zijn met MD5 zijn langer dan wanneer ze gecodeerd zijn met DES hash. Daarnaast beginnen ze met de karakters $1$. Wachtwoorden die beginnen met $2a$ zijn gecodeerd met de Blowfish hashfunctie. DES password strings hebben geen bijzondere kenmerken, maar ze zijn korter dan MD5 wachtwoorden en gecodeerd in een 64-karakter alfabet waar geen $ karakter in zit. Een relatief korte string die niet begint met een dollar teken is dus waarschijnlijk een DES wachtwoord. Het wachtwoord formaat voor nieuwe wachtwoorden wordt ingesteld met de passwd_format aanmeldinstelling in /etc/login.conf waar des, md5 of blf mag staan. Zie de &man.login.conf.5; handboekpagina voor meer informatie over aanmeldinstellingen. Eenmalige Wachtwoorden eenmalige wachtwoorden beveiliging eenmalige wachtwoorden S/Key is een eenmalige wachtwoord methode die gebaseerd is op de eenweg hashfunctie. &os; gebruikt een MD4 hash om aansluiting te houden, maar andere systemen gebruiken ook wel MD5 en DES-MAC. S/Key is al een onderdeel van het &os; basissysteem vanaf versie 1.1.5 en wordt ook in een groeiend aantal andere besturingssystemen gebruikt. S/Key is een geregistreerd handelsmerk van Bell Communications Research, Inc. Vanaf versie 5.0 van &os; is S/Key vervangen door OPIE (Eenmalige Wachtwoorden in Alles - One-time Passwords In Everything). OPIE gebruikt standaard een MD5 hash. Hier worden drie verschillende soorten wachtwoorden besproken. De eerste is het normale &unix; of Kerberos wachtwoord. Dit heet het &unix; wachtwoord. Het tweede type is een eenmalig wachtwoord dat wordt gemaakt met het S/Key programma key of het OPIE programma &man.opiekey.1; en dat wordt geaccepteerd door keyinit of &man.opiepasswd.1; en de aanmeldprocedure. Dit heet het eenmalige wachtwoord. Het laatste type wachtwoord is het wachtwoord dat wordt opgegeven aan de key/ opiekey programma's (en soms aan de keyinit / opiepasswd programma's) die gebruikt worden om eenmalige wachtwoorden te maken. Dit type heet geheim wachtwoord of gewoon een wachtwoord zonder toevoeging. Het geheime wachtwoord heeft niets te maken met het &unix; wachtwoord; ze kunnen hetzelfde zijn, dat wordt afgeraden. S/Key en OPIE geheime wachtwoorden kennen niet de beperking van 8 karakters als de oude &unix; wachtwoorden. Bij &os; mag het wachtwoord voor aanmelden tot 128 karakters lang zijn. Het mag onbeperkt lang zijn. Wachtwoorden van een zes of zeven woorden lange zin zijn niet ongewoon. Voor het overgrote deel werkt het S/Key of OPIE systeem volledig onafhankelijk van het &unix; wachtwoordsysteem. Buiten het wachtwoord zijn er nog twee stukjes data die van belang zijn voor S/Key en OPIE. Het eerste wordt zaad (seed) of sleutel (key) genoemd en bestaat uit twee letters en vijf cijfers. Het tweede stukje data heet de iteratieteller (iteration count), een nummer tussen 1 en 100. S/Key maakt een eenmalig wachtwoord door het zaad en het geheime wachtwoord aaneen te schakelen en daarop het door de iteratieteller aangegeven keren MD4/MD5 hash toe te passen. Daarna wordt het resultaat omgezet in zes korte Engelse woorden. Die zes woorden zijn een eenmalige wachtwoord. Het authenticatiesysteem (hoofdzakelijk PAM) houdt bij welk eenmalig wachtwoord het laatst is gebruikt en de gebruiker wordt geauthenticeerd als de hash van het door de gebruiker ingegeven wachtwoord gelijk is aan het vorige wachtwoord. Omdat er een eenweg hash wordt gebruikt, is het onmogelijk om toekomstige eenmalige wachtwoorden te maken als iemand toch een eenmalig wachtwoord heeft afgevangen. De iteratieteller wordt verlaagd na iedere succesvolle aanmelding om de gebruiker en het aanmeldprogramma synchroon te houden. Als de iteratieteller op 1 staat, moeten S/Key en OPIE opnieuw ingesteld worden. Er zijn drie programma's bij ieder systeem betrokken die hieronder worden besproken. De key en opiekey programma's hebben een iteratieteller, zaad en een geheim wachtwoord nodig en maken dan een eenmalig wachtwoord of een lijst van opeenvolgende eenmalige wachtwoorden. De programma's keyinit en opiepasswd worden gebruikt om respectievelijk S/Key en OPIE te initialiseren en om wachtwoorden, iteratietellers en zaad te wijzigen. Ze accepteren zowel wachtwoordzinnen als een iteratieteller, zaad en een eenmalig wachtwoord. De programma's keyinfo en opieinfo bekijken de relevante bestanden waarin de eigenschappen staan (/etc/skeykeys of /etc/opiekeys) en tonen de huidige iteratieteller en zaad van de gebruiker die het commando uitvoert. Nu worden vier verschillende acties besproken. Bij de eerste worden keyinit of opiepasswd gebruikt in een beveiligde verbinding om voor het eerst eenmalige wachtwoorden in te stellen of om een wachtwoord of zaad aan te passen. Bij de tweede worden keyinit of opiepasswd gebruikt in een niet-beveiligde verbinding samen met key of opiekey over een beveiligde verbinding om hetzelfde te bereiken. In een derde scenario wordt key/opiekey gebruikt om te melden over een onveilige verbinding. Het vierde scenario behandelt het gebruik van key of opiekey om een aantal sleutels aan te maken die opgeschreven of afgedrukt kunnen worden, zodat ze meegenomen kunnen worden naar een plaats van waar geen enkele veilige verbinding opgezet kan worden. Veilige Verbinding Initialiseren Om S/Key voor de eerste keer te initialiseren, een wachtwoord te wijzigen of zaad te veranderen over een beveiligde verbinding (bv. op het console van een machine of via ssh), moet het commando keyinit gebruikt worden zonder parameters terwijl een gebruiker als zichzelf is aangemeld: &prompt.user; keyinit Adding unfurl: Reminder - Only use this method if you are directly connected. If you are using telnet or rlogin exit with no password and use keyinit -s. Enter secret password: Again secret password: ID unfurl s/key is 99 to17757 DEFY CLUB PRO NASH LACE SOFT Bij OPIE wordt opiepasswd gebruikt: &prompt.user; opiepasswd -c [grimreaper] ~ $ opiepasswd -f -c Adding unfurl: Only use this method from the console; NEVER from remote. If you are using telnet, xterm, or a dial-in, type ^C now or exit with no password. Then run opiepasswd without the -c parameter. Using MD5 to compute responses. Enter new secret pass phrase: Again new secret pass phrase: ID unfurl OTP key is 499 to4268 MOS MALL GOAT ARM AVID COED Als Enter new secret pass phrase: of Enter secret password: op het scherm verschijnt, dient een wachtwoord of wachtwoordzin ingevoerd te worden. Dit is dus niet het aanmeldwachtwoord is, maar dat dit wordt gebruikt om eenmalige wachtwoorden te maken. De ID regel geeft de parameters van het verzoek weer: de aanmeldnaam, de iteratieteller en zaad. Bij het aanmelden kent het systeem deze parameters en worden deze weergegeven zodat ze niet onthouden hoeven te worden. Op de laatste regel staat het eenmalige wachtwoord dat overeenkomt met die parameters en het geheime wachtwoord. Als de gebruiker direct opnieuw zou aanmelden, zou hij dat eenmalige wachtwoord moeten gebruiken. Onveilige Verbinding Initialiseren Om te initialiseren of een wachtwoord te wijzigen over een onveilige verbinding, moet er al ergens een veilige verbinding bestaand de gebruiker key of opiekey kan uitvoeren. Dit kan een desktop programma zijn op een &macintosh; of een shell prompt op een machine die vertrouwd wordt. De gebruiker moet ook een iteratieteller verzinnen (100 is wellicht een prima getal) en moet een eigen zaad bedenken of er een laten fabriceren. Over de onveilige verbinding (naar de machine die de gebruiker wil initialiseren) wordt het commando keyinit -s gebruikt: &prompt.user; keyinit -s Updating unfurl: Old key: to17758 Reminder you need the 6 English words from the key command. Enter sequence count from 1 to 9999: 100 Enter new key [default to17759]: s/key 100 to 17759 s/key access password: s/key access password:CURE MIKE BANE HIM RACY GORE Bij OPIE is dat opiepasswd: &prompt.user; opiepasswd Updating unfurl: You need the response from an OTP generator. Old secret pass phrase: otp-md5 498 to4268 ext Response: GAME GAG WELT OUT DOWN CHAT New secret pass phrase: otp-md5 499 to4269 Response: LINE PAP MILK NELL BUOY TROY ID mark OTP key is 499 gr4269 LINE PAP MILK NELL BUOY TROY Om het standaard zaad te accepteren (dat het programma keyinit nogal verwarrend een key) noemt, is de invoer Return. Voor een toegangswachtwoord wordt ingevoerd, dient eerst gewisseld te worden naar de veilige verbinding of het S/Key desktop programma en dienen dezelfde parameters ingegeven te worden: &prompt.user; key 100 to17759 Reminder - Do not use this program while logged in via telnet or rlogin Enter secret password: <secret password> CURE MIKE BANE HIM RACY GORE Of bij OPIE: &prompt.user; opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT In de onveilige verbinding wordt nu het eenmalige wachtwoord in het relevante programma gekopieerd. Een Enkel Eenmalig Wachtwoord Maken Als S/Key of OPIE eenmaal is ingesteld staat er bij het aanmelden iets als het volgende: &prompt.user; telnet example.com Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login: <username> s/key 97 fw13894 Password: Of bij OPIE: &prompt.user; telnet example.com Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login: <username> otp-md5 498 gr4269 ext Password: NB: de S/Key en OPIE meldingen hebben een erg zinvolle optie (die hier niet te zien is): als er op Return wordt gedrukt bij de wachtwoordregel, wordt de echo aangezet, zodat de invoer zichtbaar is. Dit is erg handig als er met de hand een wachtwoord wordt ingegeven, zoals wanneer het wordt ingevoerd vanaf een afdruk. MS-DOS Windows MacOS Nu moet het eenmalige wachtwoord gemaakt worden om het aanmeldprompt mee te antwoorden. Dit moet gedaan worden op een vertrouwd systeem waarop key of opiekey beschikbaar is. Er zijn ook - versies voor DOS, &windows; en &macos;. Voor beide commando's - moet zowel de iteratieteller als het zaad ingeven worden op de - commandoregel. Deze kan zo overgenomen worden vanaf het - aanmeldprompt op de machine waarop de gebruiker wil + versies voor &ms-dos;, &windows; en &macos;. Voor beide + commando's moet zowel de iteratieteller als het zaad ingeven + worden op de commandoregel. Deze kan zo overgenomen worden + vanaf het aanmeldprompt op de machine waarop de gebruiker wil aanmelden. Op het vertrouwde systeem: &prompt.user; key 97 fw13894 Reminder - Do not use this program while logged in via telnet or rlogin. Enter secret password: WELD LIP ACTS ENDS ME HAAG Bij OPIE: &prompt.user; opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT Nu het eenmalige wachtwoord er is, kan het aanmelden doorgang vinden: login: <username> s/key 97 fw13894 Password: <return to enable echo> s/key 97 fw13894 Password [echo on]: WELD LIP ACTS ENDS ME HAAG Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ... Meerdere Eenmalige Wachtwoorden Maken Soms moet is een gebruiker ergens waarvandaan er geen toegang is tot een vertrouwde machine of een beveiligde verbinding. In dat geval is het mogelijk om met de key en opiekey commando's een aantal eenmalige wachtwoorden te maken om uit te printen en deze mee te nemen: &prompt.user; key -n 5 30 zz99999 Reminder - Do not use this program while logged in via telnet or rlogin. Enter secret password: <secret password> 26: SODA RUDE LEA LIND BUDD SILT 27: JILT SPY DUTY GLOW COWL ROT 28: THEM OW COLA RUNT BONG SCOT 29: COT MASH BARR BRIM NAN FLAG 30: CAN KNEE CAST NAME FOLK BILK Of bij OPIE: &prompt.user; opiekey -n 5 30 zz99999 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: <secret password> 26: JOAN BORE FOSS DES NAY QUIT 27: LATE BIAS SLAY FOLK MUCH TRIG 28: SALT TIN ANTI LOON NEAL USE 29: RIO ODIN GO BYE FURY TIC 30: GREW JIVE SAN GIRD BOIL PHI Met worden vijf opeenvolgende sleutels aangevraagd, geeft aan wat het laatste iteratiegetal moet zijn. Deze wachtwoorden worden weergegeven in omgekeerde volgorde voor gebruik. Als de gebruiker echt paranoïde bent kan hij ze opschrijven of hij kan er ook voor kiezen ze af te drukken met lpr. Op iedere regel staat dus de iteratieteller en het eenmalige wachtwoord, maar misschien is het toch handig om ze na gebruik af te strepen. Gebruik van &unix; Wachtwoorden Beperken S/Key kan beperkingen plaatsen op het gebruik van &unix; wachtwoorden gebaseerd op hostnaam, gebruikersnaam, terminalpoort of IP adres van een aanmeldsessie. Deze beperkingen staan in het instellingenbestand /etc/skey.access. De handboekpagina voor &man.skey.access.5; bevat meer informatie over de inhoud van het bestand en bevat ook details over een aantal aandachtspunten voor beveiliging voordat besloten wordt dit bestand te gebruiken in de beveiliging. Als het bestand /etc/skey.access niet bestaat (dat mag in &os; 4.X systemen), dan mogen alle gebruikers hun &unix; wachtwoord gebruiken. Maar als het bestand wel bestaat, dan moeten alle gebruikers S/Key gebruiken, tenzij iets anders expliciet wordt toegestaan door instellingen in het bestand skey.access. In alle gevallen worden &unix; wachtwoorden op het console wel toegestaan. Nu volgt een voorbeeld met instellingen in het bestand skey.access waarin de drie meest gebruikte instellingen terugkomen: permit internet 192.168.0.0 255.255.0.0 permit user fnord permit port ttyd0 In de eerste regel (permit internet) staat dat gebruikers met een bron IP adres (wat gefingeerd kan worden) dat past binnen de aangegeven waarde en masker altijd &unix; wachtwoorden mogen gebruiken. Dit mag niet gezien worden als beveiligingsmechanisme, maar eerder als een mogelijkheid om gebruikers aan wie het wordt toegestaan eraan te herinneren dat ze op een onveilig netwerk zitten en gebruik moeten maken van S/Key bij het aanmelden. De tweede regel (permit user) staat de gebruiker fnord toe om altijd &unix; wachtwoorden te gebruiken. In het algemeen dient dit alleen gebruikt te worden voor gebruikers die niet in staat zijn het programma key te gebruiken, zoals gebruikers met domme terminals of gebruikers die totaal niet op te voeden zijn. De derde regel (permit port) staat gebruikers die aanmelden vanaf een aangegeven terminalverbinding toe om &unix; wachtwoorden te gebruiken. Dit kan gebruikt worden voor inbellers. Met OPIE kan ook paal en perk gesteld worden aan het gebruik van &unix; wachtwoorden op basis van het IP adres van een aanmeldsessie, net als met S/Key. Dat kan met het bestand /etc/opieaccess dat standaard aanwezig is op &os; 5.0 en latere systemen. Bij &man.opieaccess.5; staat meer informatie over dit bestand en welke beveiligingsoverwegingen bestaan bij het gebruik. Hieronder een voorbeeld voor een opieaccess bestand: permit 192.168.0.0 255.255.0.0 In deze regel (permit internet) staat dat gebruikers met een bron IP adres (wat gefingeerd kan worden) dat past binnen de aangegeven waarde en masker altijd &unix; wachtwoorden mogen gebruiken. Als geen van de regels uit opieaccess van toepassing is, worden standaard pogingen zonder OPIE geweigerd. Tom Rhodes Geschreven door Siebrand Mazeland Vertaald door TCP Wrapper TCP Wrappers Iedereen die bekend is met &man.inetd.8; heeft waarschijnlijk wel eens van TCP Wrappers gehoord. Maar slechts weinigen lijken volledig te begrijpen hoe ze in een netwerkomgeving toegepast kunnen worden. Het schijnt dat iedereen een firewall wil hebben om netwerkverbindingen af te handelen. Ondanks dat een firewall veel kan, zijn er toch dingen die hij niet kan, zoals tekst terugsturen naar ontstaansplaats van een verbinding. De TCP software kan dat en nog veel meer. In dit onderdeel worden de TCP Wrappers mogelijkheden besproken en, waar dat van toepassing is, worden ook voorbeelden voor implementatie gegeven. De TCP Wrappers software vergroot de mogelijkheden van inetd door de mogelijkheid al zijn serverdaemons te controleren. Met deze methode is het mogelijk om te loggen, berichten te zenden naar verbindingen, een daemon toe te staan alleen interne verbindingen te accepteren, etc. Hoewel een aantal van deze mogelijkheden ook ingesteld kunnen worden met een firewall, geeft deze manier niet alleen een extra laag beveiliging, maar gaat dit ook verder dan wat een firewall kan bieden. De toegevoegde waarde van TCP Wrappers - is niet dat het een goede firewall vervangt. Het moet samen - met een firewall en andere beveiligingsinstellingen gebruikt - worden om een extra laag van beveiliging voor het systeem te - bieden. + is niet dat het een goede firewall vervangt. + TCP Wrappers kunnen samen met een firewall en + andere beveiligingsinstellingen gebruikt worden om een extra laag + van beveiliging voor het systeem te bieden. Omdat dit een uitbreiding is op de instellingen van inetd, wordt aangenomen dat de lezer het onderdeel inetd configuration heeft gelezen. Hoewel programma's die onder &man.inetd.8; draaien niet echt daemons zijn, heten ze traditioneel wel zo. Deze term wordt hier dus ook gebruikt. Voor het Eerst Instellen De enige voorwaarde voor het gebruiken van TCP Wrappers in &os; is ervoor te zorgen dat de inetd gestart wordt vanuit rc.conf met de optie . Dit is de standaardinstelling. Er wordt vanuit gegaan dat /etc/hosts.allow juist is ingesteld, maar als dat niet zo is, dan zal &man.syslogd.8; dat melden. In tegenstelling tot bij andere implementaties van TCP Wrappers is het gebruik van hosts.deny niet langer mogelijk. Alle instellingen moeten in /etc/hosts.allow staan. In de meest eenvoudige instelling worden verbindingen naar daemons toegestaan of geweigerd afhankelijk van de opties in /etc/hosts.allow. De standaardinstelling in &os; is verbindingen toe te staan naar iedere daemon die met inetd is gestart. Na de basisinstelling wordt aangegeven hoe dit gewijzigd kan worden. De basisinstelling heeft meestal de vorm daemon : adres : actie. daemon is de daemonnaam die inetd heeft gestart. Het adres kan een geldige hostnaam, een IP adres of een IPv6 adres tussen blokhaken ([ ]) zijn. Het veld actie kan allow of deny zijn, afhankelijk van of toegang toegestaan of geweigerd moet worden. De instellingen werken zo dat ze worden doorlopen van onder naar boven om te kijken welke regel als eerste van toepassing is. Als een regel van toepassing is gevonden, dan stop het zoekproces. Er zijn nog andere mogelijkheden, maar die worden elders toegelicht. Een eenvoudige instelling kan al van met deze informatie worden gemaakt. Om bijvoorbeeld POP3 verbindingen toe te staan via de mail/qpopper daemon, zouden de volgende instellingen moeten worden toegevoegd aan hosts.allow: # This line is required for POP3 connections: qpopper : ALL : allow Nadat deze regel is toegevoegd moet inetd herstart worden. Dit gaat met het &man.kill.1; commando of met de restart parameter met /etc/rc.d/inetd. Gevorderde Instellingen TCP Wrappers hebben ook gevorderde instellingen. Daarmee komt meer controle over de wijze waarop er met verbindingen wordt omgegaan. Soms is het een goed idee om commentaar te sturen naar bepaalde hosts of daemonverbindingen. In andere gevallen moet misschien iets in een logboekbestand geschreven worden of een e-mail naar de beheerder gestuurd worden. Dit kan allemaal met instellingen die wildcards, uitbreidingskarakters (expansion characters) en het uitvoeren van externe commando's heten. De volgende twee paragrafen beschrijven deze mogelijkheden. Externe Commando's Stel dat zich de situatie voordoet waar een verbinding geweigerd moet worden, maar er een reden gestuurd moet worden naar het individu dat die verbinding probeerde op te zetten. Hoe gaat dat? Dat is mogelijk door gebruik te maken van de optie . Als er een poging tot verbinding wordt gedaan, wordt er met een shellcommando of script uitgevoerd. Er staat al een voorbeeld in hosts.allow: # De andere daemons zijn beschermd. ALL : ALL \ : severity auth.info \ : twist /bin/echo "You are not welcome to use %d from %h." Dit voorbeeld geeft aan dat het bericht You are not allowed to use daemon from hostname. wordt teruggestuurd voor iedere daemon die niet al is ingesteld in het toegangsbestand. Het is erg handig om een antwoord terug te sturen naar degene die een verbinding op heeft willen zetten meteen nadat een tot stand gekomen verbinding is verbroken. Let wel dat alle berichten die gezonden worden moeten staan tussen " karakters. Hier zijn geen uitzonderingen op. Het is mogelijk een ontzegging van dienst aanval uit te voeren op de server als een aanvaller, of een groep aanvallers, deze daemons kan overstromen met verzoeken om verbindingen te maken. Het is ook mogelijk hier de optie te gebruiken. Net als weigert impliciet de verbinding en kan het gebruikt worden om shellcommando's of scripts uit te voeren. Anders dan bij stuurt geen bericht aan degene die de verbinding wilde maken. Zie bijvoorbeeld de volgende instelling: # Geen verbindingen van example.com: ALL : .example.com \ : spawn (/bin/echo %a from %h attempted to access %d >> \ /var/log/connections.log) \ : deny Hiermee worden alle verbindingen van het domein *.example.com geweigerd. Tegelijkertijd worden ook hostnaam, IP adres en de daemon waarmee verbinding werd gemaakt naar /var/log/connections.log geschreven. Naast de vervangingskarakters die al zijn toegelicht, zoals %a, bestaan er nog een paar andere. In de handboekpagina van &man.hosts.access.5; staat een volledige lijst. Wildcard Opties Tot nu toe is in ieder voorbeeld ALL gebruikt. Er bestaan nog andere opties waarmee de mogelijkheden nog verder gaan. Zo kan ALL gebruikt worden om van toepassing te zijn op iedere instantie van een daemon, domein of een IP adres. Een andere wildcard die gebruikt kan worden is PARANOID. Daarmee wordt iedere host die een IP adres geeft dat gefingeerd kan zijn aangeduid. In andere woorden: paranoid kan gebruikt worden om een actie aan te geven als er een IP adres gebruikt wordt dat verschilt van de hostnaam. Het volgende voorbeeld kan wat verheldering brengen: # Weiger mogelijke gespoofte verzoeken aan sendmail: sendmail : PARANOID : deny In het voorgaande voorbeeld worden alle verbindingsverzoeken aan sendmail met een IP adres dat verschilt van de hostnaam geweigerd. Het gebruik van PARANOID kan nogal wat schade aanrichten als de client of de server kapotte DNS instellingen heeft. Voorzichtigheid van de beheerder is geboden. De handboekpagina van &man.hosts.access.5; geeft meer uitleg over wildcards en de mogelijkheden die ze bieden. Voordat de bovenstaande instellingen werken, dient de eerste regels in hosts.allow als commentaar gemarkeerd te worden. Mark Murray Bijgedragen door Mark Dapoz Gebaseerd op een bijdrage van Siebrand Mazeland Vertaald door <application>KerberosIV</application> Kerberos is een netwerkdienst, protocol en systeem waarmee gebruikers zich kunnen aanmelden met behulp van een dienst op een veilige server. Diensten als op een andere server aanmelden, op afstand kopiëren, veilig tussen systemen kopiëren en andere taken met een hoog risico worden aanmerkelijk veiliger en beter controleerbaar. De onderstaande instructies kunnen gebruikt worden als handleiding voor het opzetten van Kerberos op &os;. Voor een volledige beschrijving wordt verwezen naar de relevante handboekpagina's. <application>KerberosIV</application> Installeren MIT KerberosIV - Installeren + installeren Kerberos is een optioneel component van &os;. De meest eenvoudige manier om de software te installeren is het selecteren van de krb4 of krb5 distributie in sysinstall tijdens de initiële installatie van &os;. Hierdoor wordt de eBones (KerberosIV) of Heimdal (Kerberos5) implementatie van Kerberos geïnstalleerd. Deze implementaties zijn beschikbaar omdat ze ontwikkeld zijn buiten de VS/Canada en dus zijn ze beschikbaar voor systeemeigenaren buiten die landen in dit tijdperk waarin er beperkingen gelden ten aanzien van de export van coderingsprogramma's uit de VS. Het is ook mogelijk te kiezen voor de MIT implementatie van Kerberos via de ports collectie: security/krb5. Maken van de Initiële Database Dit hoeft alleen op de Kerberos gedaan te worden. Er dienen geen oude Kerberos databases rond te slingeren. Controleer in de map /etc/kerberosIV of de volgende bestanden aanwezig zijn: &prompt.root; cd /etc/kerberosIV &prompt.root; ls README krb.conf krb.realms Als er nog meer bestanden zijn (zoals principal.* of master_key), dan kan met het programma kdb_destroy de oude Kerberos database vernietigd worden of de overige bestanden kunnen verwijderd worden als Kerberos niet draait. Nu moeten de bestanden krb.conf en krb.realms gewijzigd om de Kerberos wereld te definiëren. In dit geval heet de wereld EXAMPLE.COM en de server heet grunt.example.com. Wijzig of creëer het bestand krb.conf: &prompt.root; cat krb.conf EXAMPLE.COM EXAMPLE.COM grunt.example.com admin server CS.BERKELEY.EDU okeeffe.berkeley.edu ATHENA.MIT.EDU kerberos.mit.edu ATHENA.MIT.EDU kerberos-1.mit.edu ATHENA.MIT.EDU kerberos-2.mit.edu ATHENA.MIT.EDU kerberos-3.mit.edu LCS.MIT.EDU kerberos.lcs.mit.edu TELECOM.MIT.EDU bitsy.mit.edu ARC.NASA.GOV trident.arc.nasa.gov In dit geval hoeven de andere werelden er niet te zijn. Ze staan er als voorbeeld van hoe een machine attent gemaakt kan worden op het bestaan van meerdere werelden. In een eigen test kan ervoor gekozen worden ze weg te laten. De eerste regel benoemt de wereld waarin het systeem opereert. De andere regels bevatten werelden/hosts. Het eerste deel van een regel bevat de wereld en het tweede deel is een host in die wereld die fungeert als sleutel distributiecentrum. De woorden admin server achter een hostnaam betekenen dat een host ook administratieve database server is. In de handboekpagina's van Kerberos wordt hierover meer uitleg gegeven. Nu moet grunt.example.com aan de wereld EXAMPLE.COM toegevoegd worden en er moet ook een instelling gemaakt worden voor alle hosts uit het .example.com domein in de wereld EXAMPLE.COM. Het bestand krb.realms dient dan als volgt gewijzigd te worden: &prompt.root; cat krb.realms grunt.example.com EXAMPLE.COM .example.com EXAMPLE.COM .berkeley.edu CS.BERKELEY.EDU .MIT.EDU ATHENA.MIT.EDU .mit.edu ATHENA.MIT.EDU Nogmaals: de andere werelden hoeven er niet te staan. Ze staan er als voorbeeld hoe een machine van het bestaan van andere werelden op de hoogte gebracht kan worden. Om het overzichtelijker te maken, kan mogen ze verwijderd worden. De eerste regel plaatst het specifieke systeem in de genoemde wereld. De rest van de regels geeft aan hoe standaardsystemen uit een bepaald subdomein in een wereld plaatst worden. Nu kan de database aangemaakt worden. Dit hoeft alleen op de Kerberos server gedaan te worden (of Sleutel Distributie Centrum) met het commando kdb_init: &prompt.root; kdb_init Realm name [default ATHENA.MIT.EDU ]: EXAMPLE.COM You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter Kerberos master key: Nu moet de sleutel opgeslagen worden zodat diensten op de lokale machine er gebruik van kunnen maken met het commando kstash: &prompt.root; kstash Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Nu is de gecodeerde hoofdsleutel opgeslagen in /etc/kerberosIV/master_key. Help Het aan de Praat KerberosIV - Eerste keer starten + eerste keer starten Voor ieder systeem dat met Kerberos wordt beveiligd moeten twee principals worden aangemaakt. Die heten kpasswd en rcmd. Deze twee principals worden aangemaakt voor iedere systeem en de instantie is de naam van het systeem. Deze daemons, kpasswd en rcmd, staan andere systemen toe om Kerberos wachtwoorden te wijzigen en commando's als &man.rcp.1;, &man.rlogin.1; en &man.rsh.1; uit te voeren. Deze worden nu toegevoegd: &prompt.root; kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: passwd Instance: grunt <Not found>, Create [y] ? y Principal: passwd, Instance: grunt, kdc_key_ver: 1 New Password: <---- enter RANDOM here Verifying password New Password: <---- enter RANDOM here Random password [y] ? y Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: rcmd Instance: grunt <Not found>, Create [y] ? Principal: rcmd, Instance: grunt, kdc_key_ver: 1 New Password: <---- enter RANDOM here Verifying password New Password: <---- enter RANDOM here Random password [y] ? Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: <---- null entry here will cause an exit Aanmaken van het Serverbestand Nu moeten alle instanties die de diensten op iedere server definiëren geëxtraheerd worden. Dat kan met het commando ext_srvtab. Dit commando maakt een bestand aan dat veilig gekopieerd moet worden naar de map /etc/kerberosIV van iedere Kerberos client. Dit bestand moet aanwezig zijn op iedere server en op iedere client en is van doorslaggevend belang voor de werking van Kerberos. &prompt.root; ext_srvtab grunt Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Generating 'grunt-new-srvtab'.... Het bovenstaande commando maakt een tijdelijk bestand aan dat hernoemd moet worden naar srvtab zodat alle diensten erbij kunnen. Met &man.mv.1; kan het op de juiste plaats op het originele systeem gezet worden: &prompt.root; mv grunt-new-srvtab srvtab Als het bestand voor een clientsysteem is en het netwerk is niet veilig, dan kan het bestand client-new-srvtab dan naar een verwijderbaar medium gekopieerd worden en dan fysiek veilig getransporteerd worden. Op de client dient het bestand srvtab te heten in de map /etc/kerberosIV en in mode 600 te staan: &prompt.root; mv grumble-new-srvtab srvtab &prompt.root; chmod 600 srvtab De Database Vullen Nu moeten de gebruikers in de database. In dit voorbeeld wordt de gebruiker jane als eerste ingevoerd. Hiervoor is het commando kdb_edit: &prompt.root; kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: jane Instance: <Not found>, Create [y] ? y Principal: jane, Instance: , kdc_key_ver: 1 New Password: <---- enter a secure password here Verifying password New Password: <---- re-enter the password here Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: <---- null entry here will cause an exit Alles Testen Eerst moeten de Kerberos daemons gestart worden. Als de juiste wijziging in /etc/rc.conf zijn gemaakt, dan gebeurt dit automatisch na een herstart. Dit hoeft alleen ingesteld te worden op de Kerberos server. Kerberos clients vinden automatisch wat ze zoeken in de map /etc/kerberosIV. &prompt.root; kerberos & Kerberos server starting Sleep forever on error Log file is /var/log/kerberos.log Current Kerberos master key version is 1. Master key entered. BEWARE! Current Kerberos master key version is 1 Local realm: EXAMPLE.COM &prompt.root; kadmind -n & KADM Server KADM0.0A initializing Please do not use 'kill -9' to kill this job, use a regular kill instead Current Kerberos master key version is 1. Master key entered. BEWARE! Nu kunnen kan er getest worden of met het commando kinit een ticket (kaartje) gekregen kan worden voor het ID jane dat net is aangemaakt: &prompt.user; kinit jane MIT Project Athena (grunt.example.com) Kerberos Initialization for "jane" Password: Met klist kan gecontroleerd worden of de tokens er echt zijn: &prompt.user; klist Ticket file: /tmp/tkt245 Principal: jane@EXAMPLE.COM Issued Expires Principal Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COM Nu wordt het wachtwoord gewijzigd met &man.passwd.1; om te controleren of de kpasswd daemon autorisatie krijgt van de Kerberos database: &prompt.user; passwd realm EXAMPLE.COM Old password for jane: New Password for jane: Verifying password New Password for jane: Password changed. <command>su</command> Rechten Toewijzen Kerberos biedt mogelijkheid iedere gebruiker die rootrechten nodig heeft zijn eigen afzonderlijke &man.su.1; wachtwoord te geven. Nu wordt een ID toegevoegd dat geautoriseerd is om &man.su.1; te gebruiken naar root. Dit wordt geregeld door een instantie van root te verbinden met een principal. Met kdb_edit kan jane.root gemaakt worden in de Kerberos database: &prompt.root; kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: jane Instance: root <Not found>, Create [y] ? y Principal: jane, Instance: root, kdc_key_ver: 1 New Password: <---- enter a SECURE password here Verifying password New Password: <---- re-enter the password here Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- Keep this short! Attributes [ 0 ] ? Edit O.K. Principal name: <---- null entry here will cause an exit Een lijst van de tokens kan bevestigen als alles werkt zoals verwacht: &prompt.root; kinit jane.root MIT Project Athena (grunt.example.com) Kerberos Initialization for "jane.root" Password: Nu dient de gebruiker toegevoegd te worden aan het bestand .klogin van root: &prompt.root; cat /root/.klogin jane.root@EXAMPLE.COM Na een &man.su.1;: &prompt.user; su Password: kan de lijst met tokens bekeken worden: &prompt.root; klist Ticket file: /tmp/tkt_root_245 Principal: jane.root@EXAMPLE.COM Issued Expires Principal May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COM Andere Commando's Gebruiken In een eerder voorbeeld is een principal met de naam jane gemaakt met een instantie root. Dit was gebaseerd op een gebruiker met dezelfde naam als de principal en dit is de standaard binnen Kerberos: een <principal>.<instantie> in de vorm van <gebruikersnaam>. root staat die <gebruikersnaam> het gebruik van &man.su.1; naar root toe als de benodigde instellingen in het bestand .klogin in de home directory van root zijn gemaakt: &prompt.root; cat /root/.klogin jane.root@EXAMPLE.COM Zo werkt het ook als een gebruiker in zijn eigen home directory iets als volgt heeft opgenomen: &prompt.user; cat ~/.klogin jane@EXAMPLE.COM jack@EXAMPLE.COM Hierdoor mag iedereen die zich in de wereld EXAMPLE.COM heeft geauthenticeerd als jane of jack (via kinit, zie boven) bij jane's account of de bestanden op dit systeem (grunt) met &man.rlogin.1;, &man.rsh.1; of &man.rcp.1;. Nu meldt bijvoorbeeld jane zich aan op een ander systeem met Kerberos: &prompt.user; kinit MIT Project Athena (grunt.example.com) Password: &prompt.user; rlogin grunt Last login: Mon May 1 21:14:47 from grumble Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995 Of jack meldt zich aan op jane's account op dezelfde machine (jane heeft het bestand .klogin ingesteld zoals hierboven en de beheerder van Kerberos heeft een principal jack aangemaakt zonder instantie): &prompt.user; kinit &prompt.user; rlogin grunt -l jane MIT Project Athena (grunt.example.com) Password: Last login: Mon May 1 21:16:55 from grumble Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995 Tillman Hodgson Bijgedragen door Mark Murray Gebaseerd op een bijdrage van Siebrand Mazeland Vertaald door <application>Kerberos5</application> Iedere &os; release hoger dan &os;-5.1 bevat alleen ondersteuning voor Kerberos5. Daarom is Kerberos5 de enige versie die erbij zit. De instellingen zijn op veel gebieden gelijk aan die van KerberosIV. De nu volgende informatie geldt alleen voor &os;-5.0 releases en verder. Gebruikers die het KerberosIV package willen gebruiken kunnen dat installeren uit de security/krb4 port. Kerberos is een netwerkdienst, protocol en systeem waarmee gebruikers zich kunnen aanmelden met behulp van een dienst op een veilige server. Diensten als op een andere server aanmelden, op afstand kopiëren, veilig tussen systemen kopiëren en andere taken met een hoog risico worden aanmerkelijk veiliger en beter controleerbaar. Kerberos kan omschrijven worden als identiteitbevestigend proxy systeem. Het kan ook omschreven worden als een vertrouwd authenticatiesysteem van een derde partij. Kerberos vervult maar één taak: het veilig authenticeren van gebruikers op het netwerk. Het vervult geen autorisatietaken (wat gebruikers mogen) en controleert ook niets (wat gebruikers hebben gedaan). Nadat een client en server Kerberos hebben gebruikt om hun identiteit vast te stellen kunnen ze ook al hun communicatie coderen om hun privacy en data-integriteit te garanderen. Daarom wordt het sterk aangeraden om Kerberos samen met andere beveiligingsmechanismen te gebruiken die autorisatie en controlemogelijkheden bieden. De aanwijzingen die nu volgen kunnen gebruikt worden als werkinstructie om Kerberos in te stellen zoals dat wordt meegeleverd met &os;. Een complete beschrijving staat in de handboekpagina. Voor demonstratie van de installatie van Kerberos wordt gebruik gemaakt van de volgende naamgeving: Het DNS domein (zone) is example.org. De Kerberos wereld is EXAMPLE.ORG. Het advies is voor installaties van Kerberos echte domeinnamen te gebruiken, zelfs als het alleen intern wordt gebruikt. Hiermee worden DNS problemen voorkomen is een goede samenwerking met andere Kerberos werelden verzekerd. Geschiedenis Kerberos5 - Geschiedenis + geschiedenis Kerberos is ontworpen door MIT als oplossing voor netwerkbeveiligingsproblemen. Het Kerberos protocol gebruikt sterke codering zodat een client zijn identiteit kan bewijzen aan een server (en andersom) over een onveilige netwerkverbinding. Kerberos is zowel de naam van een netwerkautorisatieprotocol als een bijvoeglijk naamwoord om de programma's te beschrijven die gebruik maken van het programma (zoals Kerberos telnet). De huidige versie van het protocol is versie 5 en is beschreven in RFC 1510. Er zijn een aantal vrij beschikbare implementaties van dit protocol beschikbaar voor veel systemen. Het Massachusetts Institute of Technology (MIT), waar Kerberos ooit is ontwikkeld, ontwikkelt nog steeds door aan hun Kerberos pakket. Het wordt in de VS veel gebruikt als coderingspakket en daarom wordt het ook geraakt door de exportwetgeving van de VS. Kerberos van MIT is beschikbaar als port (security/krb5). Heimdal Kerberos is een andere implementatie van versie 5 die expliciet buiten de VS is ontwikkeld om de exportwetgeving de omzeilen (en wordt daarom vaak gebruikt in niet-commerciële &unix; varianten). De Heimdal Kerberos distributie is beschikbaar als port (security/heimdal) en er zit een minimale installatie in de basisinstallatie van &os;. Om het grootst mogelijke publiek te bereiken gaan deze instructies ervan uit dat de Heimdal distributie die bij &os; zit wordt gebruikt. Opzetten van een Heimdal <acronym>KDC</acronym> Kerberos5 - Sleutel Distributie Centrum Instellingen + sleutel distributie centrum instellingen Het Sleutel Distributie Centrum (KDC, voluit Key Distribution Center) is de gecentraliseerde authenticatiedienst die Kerberos levert. Het is de computer die Kerberos tickets uitgeeft. Het KDC wordt vertrouwd door alle andere computer in de Kerberos wereld en daarom dient er een strenger beveiligingsregime op van kracht te zijn. Hoewel het draaien van de Kerberos dienst erg weinig van een systeem vraagt, wordt het wel aangeraden om een machine in te richten exclusief voor het KDC om beveiligingsredenen. Het opzetten van een KDC begint met de controle of de instellingen in /etc/rc.conf juist zijn om te functioneren als KDC (misschien moeten paden veranderd worden voor een eigen systeem): kerberos5_server_enable="YES" kadmind5_server_enable="YES" kerberos_stash="YES" is alleen beschikbaar in &os; 4.X. Daarna wordt het Kerberos instellingenbestand /etc/krb5.conf aangemaakt: [libdefaults] default_realm = EXAMPLE.ORG [realms] EXAMPLE.ORG = { kdc = kerberos.example.org admin_server = kerberos.example.org } [domain_realm] .example.org = EXAMPLE.ORG /etc/krb5.conf gaat ervan uit dat de KDC de fully-qualified hostname kerberos.example.org heeft. Als de KDC een andere hostname heeft, moet er nog een CNAME (alias) toevoegd aan de zonefile. Voor grotere netwerken met een juist ingestelde BIND DNS server kan het bovenstaande voorbeeld ingekort worden tot: [libdefaults] default_realm = EXAMPLE.ORG Door de volgende regels toe te voegen aan de zonefile voor example.org: _kerberos._udp IN SRV 01 00 88 kerberos.example.org. _kerberos._tcp IN SRV 01 00 88 kerberos.example.org. _kpasswd._udp IN SRV 01 00 464 kerberos.example.org. _kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org. _kerberos IN TXT EXAMPLE.ORG. Om clients de Kerberos diensten te kunnen laten vinden, moet er een volledig ingestelde /etc/krb5.conf zijn of een minimaal ingestelde /etc/krb5.conf en een correct ingestelde DNS server. Nu wordt de Kerberos database aangemaakt. Deze database bevat de sleutels voor alle principals en zijn versleuteld met een hoofdwachtwoord. Dit wachtwoord hoeft niet onthouden te worden omdat het wordt opgeslagen in (/var/heimdal/m-key). De hoofdsleutel wordt aangemaakt door kstash te starten en een wachtwoord in te voeren. Als de hoofdsleutel is gemaakt, kan de database ingeschakeld worden met kadmin met de optie -l (die staat voor local). Deze optie geeft kadmin de opdracht om de databasebestanden direct te wijzigingen in plaats van via de kadmind netwerkdienst. Hiermee wordt het kip-ei probleem opgelost waarbij een verbinding wordt gemaakt met de database voordat hij bestaat. Op het prompt van kadmin kan met init de database met de werelden aangemaakt worden. Tenslotte, nog steeds in kadmin, kan de eerste principal gemaakt worden met add. De standaardopties voor de principal worden nu aangehouden. Deze kunnen later altijd nog gewijzigd worden met modify. Met het commando ? kunnen alle beschikbare mogelijkheden getoond worden. Hieronder een sessie waarin een voorbeelddatabase wordt aangemaakt: &prompt.root; kstash Master key: xxxxxxxx Verifying password - Master key: xxxxxxxx &prompt.root; kadmin -l kadmin> init EXAMPLE.ORG Realm max ticket life [unlimited]: kadmin> add tillman Max ticket life [unlimited]: Max renewable life [unlimited]: Attributes []: Password: xxxxxxxx Verifying password - Password: xxxxxxxx Nu kan de KDC dienst gestart worden met /etc/rc.d/kerberos start en /etc/rc.d/kadmind start. Op dit moment draait er nog geen enkele daemon die gebruik maakt van Kerberos. Bevestiging dat KDC draait is te krijgen door een ticket te vragen en dat uit te lezen voor de principal (user) die zojuist is aangemaakt vanaf de commandoregel van het KDC zelf: &prompt.user; k5init tillman tillman@EXAMPLE.ORG's Password: &prompt.user; k5list Credentials cache: FILE:/tmp/krb5cc_500 Principal: tillman@EXAMPLE.ORG Issued Expires Principal Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG <application>Kerberos</application> inschakelen op een Server met Heimdal diensten Kerberos5 - Diensten Inschakelen + diensten inschakelen Als eerste is een kopie van het instellingenbestand van Kerberos nodig, /etc/krb5.conf. Dit bestand kan eenvoudigweg op een veilige manier (met netwerkprogramma's als &man.scp.1;, of fysiek via een floppy) naar de clientcomputer gekopieerd worden vanaf de KDC. Hierna is het /etc/krb5.keytab nodig. Dit is het belangrijkste verschil tussen een server die een daemons met Kerberos aanbiedt en een werkstation: de server heeft het bestand keytab nodig. Dit bestand bevat de hostsleutel van de server waardoor het werkstation en de KDC elkaars identiteit kunnen bevestigen. Dit bestand dient veilig overgebracht te worden omdat de beveiliging van de server doorbroken kan worden als de sleutel openbaar wordt gemaakt. Dit betekent expliciet dat overdracht via een protocol dat platte tekst gebruikt, bv. FTP, een slecht idee is. Meestal wordt keytab naar de server gebracht met kadmin. Dat werkt handig omdat ook de host principal (het KDC onderdeel van krb5.keytab) aangemaakt moet worden met kadmin. Let wel op dat er al een ticket moet zijn en dat dit ticket de kadmin interface moet mogen gebruiken in kadmind.acl. Zie Beheer op Afstand in de Heimdal informatiepagina's (info heimdal) voor details over het ontwerpen van toegangscontrole. Als kadmin via het netwerk geen toegang mag hebben, dan kan ook op een veilige verbinding gemaakt worden met de KDC (via het lokale console, &man.ssh.1; of Kerberos &man.telnet.1;) zodat alles lokaal uitgevoerd kan worden met kadmin -l. Na het installeren van /etc/krb5.conf kan kadmin van de Kerberos server gebruikt worden. Met add --random-key kan de host principal toegevoegd worden en met ext kan de host principal van de server naar zijn eigen keytab getrokken worden. Bijvoorbeeld: &prompt.root; kadmin kadmin> add --random-key host/myserver.example.org Max ticket life [unlimited]: Max renewable life [unlimited]: Attributes []: kadmin> ext host/myserver.example.org kadmin> exit Let op: ext slaat de sleutel standaard op in /etc/krb5.keytab. Als kadmind niet beschikbaar is op de KDC (wellicht om beveiligingsredenen) en er via het netwerk dus geen toegang is tot kadmin, dan kan de host principal (host/myserver.EXAMPLE.ORG) ook direct aan de KDC toegevoegd worden en daarna in een tijdelijk bestand gezet worden. Het volgende kan gebruikt worden om te voorkomen dat /etc/krb5.keytab op de KDC) wordt overschreven: &prompt.root; kadmin kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org kadmin> exit Hierna kan de keytab veilig gekopieerd worden naar de server (met scp of een floppy). Geef een niet-standaard naam op voor de keytab om te voorkomen dat de keytab op de KDC wordt overschreven. Nu kan de server communiceren met de KDC (vanweg krb5.conf) en zijn identiteit bewijzen (vanwege krb5.keytab). Nu is de server klaar om er een aantal Kerberos diensten op te activeren. In dit voorbeeld wordt de dienst telnet geactiveerd door de volgende regel in /etc/inetd.conf te zetten en dan &man.inetd.8; te herstarten met /etc/rc.d/inetd restart: telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a user Het belangrijkste is dat de typering -a (van authenticatie) op user staat. Meer details zijn in &man.telnetd.8; te vinden. <application>Kerberos</application> Activeren op een Client met Heimdal Kerberos5 - Clientinstellingen + clientinstellingen Het opzetten van een clientcomputer is eigenlijk kinderlijk eenvoudig. Wat betreft de Kerberos instelling is alleen het Kerberos instellingenbestand (/etc/krb5.conf) nodig. Dat kan eenvoudigweg naar de clientcomputer gekopieerd worden vanaf de KDC. Test de client met kinit, klist en kdestroy vanaf de client om een ticket te krijgen, te bekijken en daarna te verwijderen voor de principal die hierboven is aangemaakt. Nu moeten ook Kerberos applicaties gebruikt kunnen worden om verbindingen te maken met servers waarop Kerberos is geactiveerd. Als dat niet lukt en het verkrijgen van een ticket is wel mogelijk, dan ligt dat hoogstwaarschijnlijk aan de server en niet aan de client of de KDC. Bij het testen van een applicatie als telnet kan het beste een pakketsnuffelaar (bv. &man.tcpdump.1;) gebruikt worden om te bevestigen dat een wachtwoord niet als tekst wordt verzonden. Gebruik telnet met de optie -x. Dan wordt de complete datastroom versleuteld (vergelijkbaar met ssh). De Kerberos sleutelapplicaties op de client (meestal kinit, klist, kdestroy en kpasswd) zitten in de basisinstallatie van &os;. Let wel dat ze in &os; versies van voor 5.0 hernoemd zijn naar k5init, k5list, k5destroy, k5passwd en k5stash (deze commando's worden gewoonlijk maar een keer gebruikt). Er worden standaard ook andere Kerberos applicaties op de client geïnstalleerd. Hier komt de minimalistische natuur van de Heimdal basisinstallatie boven drijven: telnet is de enige dienst waarvoor Kerberos geactiveerd is. De Heimdal port voegt een aantal missende clientapplicaties toe: versies met ondersteuning voor Kerberos van ftp, rsh, rcp, rlogin en een paar minder gebruikelijke programma's. De MIT port bevat ook een volledig gamma aan Kerberos clientapplicaties. Instellingenbestanden voor Gebruikers: <filename>.k5login</filename> en <filename>.k5users</filename> Kerberos5 - Bestanden met Gebruikersinstellingen + bestanden met gebruikersinstellingen Voor gebruikers binnen een wereld wijst hun Kerberos principal (bv. tillman@EXAMPLE.ORG) gewoonlijk naar een lokale gebruikeraccount (bv. een lokale account met de naam tillman). Voor Clientapplicaties als telnet is gewoonlijk geen gebruikersnaam of principal nodig. Soms moet iemand zonder bijpassende Kerberos principal toch toegang hebben tot een lokale gebruikersaccount. tillman@EXAMPLE.ORG zou bijvoorbeeld toegang nodig kunnen hebben tot de lokale gebruikersaccount webdevelopers. Andere principals zouden die toegang wellicht ook nodig kunnen hebben. De bestanden .k5login en .k5users uit de gebruikersmap kunnen op eenzelfde manier gebruikt worden als .hosts en .rhosts. Zo wordt het voorgaande probleem opgelost. Als bijvoorbeeld een .k5login met de volgende inhoud: tillman@example.org jdoe@example.org in de thuismap van de lokale gebruiker webdevelopers gezet wordt dan zouden beide principals toegang hebben tot die account zonder dat ze een wachtwoord hoeven te delen. We raden aan de handboekpagina's voor deze commando's te lezen. Let op dat de ksu handboekpagina .k5users behandelt. <application>Kerberos</application> Tips, Trucs en Problemen Oplossen Kerberos5 - Problemen Oplossen + problemen oplossen Als de Heimdal of MIT Kerberos port wordt gebruikt dan dient de PATH omgevingsvariabele de Kerberos versies van de clientapplicaties te tonen voor de systeemversies. Hebben alle computers in de wereld hun tijd gesynchroniseerd? Als dat niet zo is, dan slaagt de authenticatie wellicht niet. beschrijft hoe klokken met NTP gesynchroniseerd kunnen worden. MIT en Heimdal werken prima samen. Dit geldt niet voor kadmin omdat daarvoor geen protocolstandaard is. Als een hostnaam wordt gewijzigd, dan moet ook de host/ principal aangepast en de keytab. Dit geldt ook voor bijzondere instellingen in de keytab zoals de www/ principal voor www/mod_auth_kerb van Apache. Alle hosts in een wereld moeten oplosbaar (resolvable) zijn (zowel vooruit als achteruit) in de DNS (of tenminste in /etc/hosts). CNAMEs werken wel, maar de A en PTR records moeten juist en actief zijn. De foutmelding is niet erg duidelijk: Kerberos5 refuses authentication because Read req failed: Key table entry not found. Sommige besturingssystemen van clients voor een KDC zetten wellicht geen setuid root voor ksu. Dit betekent dat ksu niet werkt. Dat is vanuit beveiligingsoogpunt een prima idee, maar wel lastig. Dit is dus geen KDC fout. Als met MIT Kerberos een principal een ticket moet krijgen dat langer geldig is dan de standaard van tien uur, dan moet modify_principal in kadmin gebruikt worden om de maximale geldigheidsduur (maxlife) van zowel de principal waar het om gaat als de krbtgt principal aan te passen. Dan kan de principal kinit -l gebruiken om een ticket met een langere levensduur aan te vragen. Als een pakketsnuffelaar op de KDC draait bij om te helpen bij het oplossen van problemen en dan kinit vanaf een werkstation wordt gestart, dan wordt zichtbaar dat de TGT meteen wordt verstuurd als kinit start, zelfs nog voor het wachtwoord! De reden hiervoor is dat de Kerberos server vrijelijk een TGT (Ticket Granting Ticket) verstuurt op iedere niet geautoriseerd verzoek. Maar iedere TGT is versleuteld met een sleutel die is afgeleid van het wachtwoord van de gebruiker. Als een gebruiker zijn wachtwoord ingeeft, wordt dat dus niet naar de KDC gezonden, maar ontcijfert het de TGT die kinit al heeft ontvangen. Als de ontcijfering resulteert in een geldige ticket met een geldige tijdstempel, dan heeft de gebruiker geldige Kerberos rechten. Deze rechten bevatten ook een sessiesleutel voor het opzetten van beveiligde communicatie met de Kerberos server in de toekomst en de eigenlijke ticket-granting ticket, die is versleuteld met de sleutel van de Kerberos server zelf. Deze tweede laag van versleuteling is niet bekend voor de gebruiker, maar het stelt de Kerberos server in staat om de juistheid van iedere TGT te bevestigen. Als tickets worden gebruik die lang geldig zijn (bv. een week) en OpenSSH wordt gebruikt om een verbinding te maken met de machine waarop het ticket staat, zorg er dan voor dat de Kerberos optie op no staat in sshd_config want anders worden tickets verwijderd bij afmelden. Host principals kunnen ook een langere levensduur hebben. Als een gebruikers principal een levensduur van een week heeft, maar de host waar de verbinding mee gemaakt wordt heeft een levensduur van negen uur, dan heb staat er een verlopen host principal in de cache en dan werkt e.e.a. niet zoals verwacht. Een krb5.dict bestand om het gebruik van bepaalde slechte wachtwoorden te voorkomen (dit wordt kort behandeld in de handboekpagina voor kadmind) heeft alleen betrekking op principals waar een wachtwoordbeleid voor geldt. De opmaak van krb5.dict is eenvoudig: een rij tekens per regel. Een symbolic link maken naar /usr/share/dict/words is misschien handig. Verschillen met de <acronym>MIT</acronym> port Het belangrijkste verschil tussen de MIT en Heimdal installatie heeft betrekking op kadmin, dat een andere (maar gelijkwaardige) set commando's kent en een andere protocol gebruikt. Dit betekent nogal wat als een KDC MIT is, omdat dan de kadmin van Heimdal niet gebruikt kan worden om de KDC vanaf afstand te beheren (dat geldt trouwens ook vice versa). De clientapplicaties kunnen ook commandoregelopties gebruiken die een beetje verschillen, maar waarmee wel hetzelfde wordt bereikt. We raden aan de instructies op de MIT Kerberos website () te volgen. Wees voorzichtig met paden: de MIT port installeert standaard in /usr/local/ en dus kunnen de normale systeemapplicaties gestart worden in plaats van die van MIT als de PATH omgevingsvariabele de systeemmappen als eerste weergeeft. Als de MIT security/krb5 port die bij &os; zit wordt gebruikt, dan zorgt het lezen van /usr/local/share/doc/krb5/README.FreeBSD dat bij de port wordt geïnstalleerd voor een beter begrip over waarom het aanmelden via telnetd en klogind soms wat vreemd verloopt. Als belangrijkste wijzen we erop dat het bij het corrigeren van onjuiste rechten op het cachebestand noodzakelijk is dat het binaire bestand login.krb5 wordt gebruikt voor authenticatie zodat het op de juiste wijze eigenaarschap kan wijzigen voor de doorgegeven rechten. Beperkingen in <application>Kerberos</application> Kerberos5 - Beperkingen en Tekortkomingen + beperkingen en tekortkomingen <application>Kerberos</application> is een alles of niets aanpak Iedere ingeschakelde dienst op het netwerk moet aangepast worden om met Kerberos te werken (of op een andere manier beschermd zijn tegen netwerkaanvallen), want anders kunnen gebruikersrechten worden gestolen en hergebruikt. Een voorbeeld hier van is het inschakelen van Kerberos voor alle shells op afstand (via rsh en telnet bijvoorbeeld), maar de POP3 mailserver die wachtwoorden als platte tekst verzend ongemoeid laten. <application>Kerberos</application> is bedoeld voor werkstations met een gebruiker In een multi-user omgeving is Kerberos minder veilig. Dit komt doordat de tickets worden opgeslagen in de map /tmp, waar gelezen kan worden door alle gebruikers. Als een gebruiker een computer deelt met andere gebruikers op hetzelfde moment (dus multi-user), dan is het mogelijk dat een ticket van een gebruiker wordt gestolen (gekopieerd) door een andere gebruiker. Dit kan voorkomen worden met de commandoregeloptie -c bestandsnaam of (bij voorkeur) de omgevingsvariabele KRB5CCNAME, maar dat wordt zelden gedaan. In principe kan het opslaan van een ticket in de thuismap van een gebruiker in combinatie met eenvoudige bestandsrechten dit probleem verhelpen. De KDC is een single point of failure Zoals het is ontworpen, moet de KDC zo goed mogelijk beveiligd zijn, omdat de hoofd wachtwoorddatabase erop staat. De KDC hoort geen enkele andere dienst aan te bieden en moet ook fysiek afgeschermd worden. Het gevaar is groot, omdat Kerberos alle wachtwoorden versleutelt met dezelfde sleutel (de master sleutel) die als een bestand op de KDC staat. Toch is een gecompromitteerde master sleutel niet zo'n groot probleem als wellicht wordt verondersteld. De mastersleutel wordt alleen gebruikt om de Kerberos database te versleutelen en als zaad voor de generator van willekeurige nummers. Zo lang als de toegang tot de KDC is beveiligd, kan een aanvaller niet echt iets doen met de mastersleutel. Als de KDC niet beschikbaar is (misschien door een ontzeggen van dienst aanval of netwerkproblemen) kunnen de netwerkdiensten niet gebruikt worden omdat er geen authenticatie uitgevoerd kan worden; een recept voor een ontzeggen van dienst aanval. Dit risico kan omzeild worden door meerdere KDC's (één master en één of meer slaves) en een zorgvuldige implementatie van secundaire of fall-back authenticatie. PAM is hier uitermate geschikt voor. Tekortkomingen van <application>Kerberos</application> Kerberos stelt gebruikers, hosts en diensten in staat om elkaar te authenticeren. Maar het heeft geen mechanisme om de KDC te authenticeren aan de gebruikers, hosts of diensten. Dit betekent dat bijvoorbeeld een vervalste kinit alle gebruikersnamen en wachtwoorden zou kunnen afluisteren. Iets als security/tripwire of andere controle-instrumenten voor de integriteit van bestandssystemen kunnen hier verlichting brengen. Bronnen en Verdere Informatie Kerberos5 - Externe Bronnen + externe bronnen De Kerberos FAQ (Engels) Een Authenticatiesysteem Ontwerpen: een Dialoog in Vier Scenes (Engels) RFC 1510, De Kerberos Netwerk Authenticatie Dienst (V5) (Engels) MIT Kerberos homepage Heimdal Kerberos homepage Tom Rhodes Geschreven door Siebrand Mazeland Vertaald door OpenSSL beveiliging OpenSSL OpenSSL Een toepassing die bij &os; zit die veel gebruikers over het hoofd zien is OpenSSL. OpenSSL biedt een versleutelde transportlaag bovenop de normale communicatielaag. Daardoor biedt het de mogelijkheid met veel netwerktoepassingen en diensten verweven te raken. Een aantal toepassingen van OpenSSL zijn versleutelde authenticatie van mailclients, webgebaseerde transacties als creditcardbetalingen en nog veel meer. Veel ports zoals www/apache13-ssl en mail/sylpheed-claws bieden tijdens het compileren ondersteuning om OpenSSL in te bouwen. - In de meeste gevallen zal de portscollectie proberen - security/openssl te bouwen, - tenzij de make variabele WITH_OPENSSL_BASE - expliciet naar yes is gezet. + In de meeste gevallen zal de portscollectie proberen de + port security/openssl te + bouwen, tenzij de make variabele + WITH_OPENSSL_BASE expliciet naar + yes is gezet. De versie van OpenSSL die bij &os; zit ondersteunt Secure Sockets Layer v2/v3 (SSLv2/SSLv3), Transport Layer Security v1 (TLSv1) netwerk beveiligingsprotocollen en kan gebruikt worden als generieke - versleutelingsbibliotheek voor applicaties. + versleutelingsbibliotheek. Hoewel OpenSSL ondersteuning biedt voor het IDEA algoritme, is dat standaard uitgeschakeld in verband met patenten in de VS. Om het te gebruiken dient de licentie gelezen te worden en, als de restricties aanvaardbaar zijn, dient de make variabele MAKE_IDEA ingesteld te worden in make.conf. Een van de meest gebruikte toepassingen van OpenSSL is het leveren van certificaten voor gebruik met softwaretoepassingen. Deze certificaten verzekeren dat de eigenschappen van een bedrijf of individu geldig zijn en niet vervalst. Als het certificaat in kwestie niet geldig verklaard is door een van de - Certificate Authorities of CA's, dan komt er - een waarschuwing. Een Certificate Authority is een bedrijf, - zoals VeriSign, dat certificaten ondertekent zodat de - eigenschappen van een bedrijf of individu geldig verklaard kunnen - worden. Dit proces kost geld en het is zeker geen voorwaarde - voor het gebruik van certificaten. Het stelt wel de meer - paranoïde gebruikers gerust. + Certificate Authorities of + CA's, dan komt er een waarschuwing. Een + Certificate Authority is een bedrijf, zoals VeriSign, dat certificaten + ondertekent zodat de eigenschappen van een bedrijf of individu + geldig verklaard kunnen worden. Dit proces kost geld en het is + zeker geen voorwaarde voor het gebruik van certificaten. Het + stelt wel de meer paranoïde gebruikers gerust. Certificaten Maken OpenSSL certificaten maken Voor het maken van certificaten is het volgende commando beschikbaar: &prompt.root; openssl req -new -nodes -out req.pem -keyout cert.pem Generating a 1024 bit RSA private key ................ ....................................... writing new private key to 'cert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:PA Locality Name (eg, city) []:Pittsburgh Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Organizational Unit Name (eg, section) []:Systems Administrator Common Name (eg, YOUR name) []:localhost.example.org Email Address []:trhodes@FreeBSD.org Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:SOME PASSWORD An optional company name []:Another Name Let op dat het antwoord direct na Common Name een domeinnaam weergeeft. De prompt wil dat er een servernaam wordt ingegeven voor het verificatieproces. Het plaatsen van iets anders dan een domeinnaam zorgt ervoor dat het certificaat waardeloos wordt. Er zijn ook andere opties als verloopdatum, andere versleutelingsalgoritmen, etc, beschikbaar. Een volledige lijst is na te lezen in de handboekpagina van &man.openssl.1;. Er zou nu een bestand cert.pem moeten bestaan in de map waar het voorgaande commando is uitgevoerd. - Dit is het certificaat dat naar een van de - CA's ter ondertekening gezonden kan - worden. + Dit is het certificaat dat aan een CA ter + ondertekening gezonden kan worden. In gevallen waar ondertekening door een CA niet vereist is, kan een zelfondertekend certificaat gemaakt worden. Maak als eerste de RSA sleutel: &prompt.root; openssl dsaparam -rand -genkey -out myRSA.key 1024 Hierna kan de CA sleutel gemaakt worden: &prompt.root; openssl gendsa -des3 -out \ myca.key myRSA.key Deze sleutel kan gebruikt worden om een certificaat te maken: &prompt.root; openssl req -new -x509 -days 365 -key myca.key -out new.crt Er zouden nu twee bestanden bijgekomen moeten zijn in de map: een certificate authority ondertekeningsbestand myca.key en new.crt, het certificaat zelf. Deze moeten in een map geplaatst worden, bij voorkeur onder /etc waar alleen root kan lezen. De rechten 0700 zijn hier prima en die kunnen ingesteld worden met chmod. Certificate Gebruiken: een Voorbeeld En wat kunnen deze bestanden? Een prima toepassing zou het versleutelen van verbindingen naar de Sendmail MTA kunnen zijn. Daardoor zouden gebruikers niet langer platte tekst hoeven te authenticeren om mail te sturen via de lokale MTA. Dit is niet de best denkbare toepassing omdat sommige MUA's de gebruiker een foutmelding geven als ze het certificaat niet lokaal geïnstalleerd hebben. De documentatie bij de software geeft meer informatie over het installeren van certificaten. De volgende regels moeten opgenomen worden in het lokale .mc bestand: dnl SSL Options define(`confCACERT_PATH',`/etc/certs')dnl define(`confCACERT',`/etc/certs/new.crt')dnl define(`confSERVER_CERT',`/etc/certs/new.crt')dnl define(`confSERVER_KEY',`/etc/certs/myca.key')dnl define(`confTLS_SRV_OPTIONS', `V')dnl /etc/certs/ is de map die gebruikt wordt voor het lokaal opslaan van certificaten en sleutels. De laatste voorwaarde het is opnieuw aanmaken van het lokale .cf bestand. Dit gaat door eenvoudigweg make< install te typen in de map /etc/mail. Laat dat volgen door een make restart waardoor de Sendmail daemon herstart zou moeten worden. Als alles goed is gegaan, dan staan er geen foutmeldingen /var/log/maillog en is Sendmail zichtbaar in de proceslijst. Maak als eenvoudige test een verbinding met de mailserver met &man.telnet.1;: &prompt.root; telnet example.com 25 Trying 192.0.34.166... Connected to example.com. Escape character is '^]'. 220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT) ehlo example.com 250-example.com Hello example.com [192.0.34.166], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-STARTTLS 250-DELIVERBY 250 HELP quit 221 2.0.0 example.com closing connection Connection closed by foreign host. Als de regel STARTTLS verschijnt in de uitvoer dan werkt alles correct. Nik Clayton
nik@FreeBSD.org
Gerschreven door
Siebrand Mazeland Vertaald door
VPN via IPsec Een VPN opzetten met &os; gateways tussen twee netwerken die gescheiden zijn door internet. Hiten M. Pandya
hmp@FreeBSD.org
Geschreven door
Siebrand Mazeland Vertaald door
IPsec Begrijpen Deze paragraaf is een gids in het proces van het opzetten, en gebruiken van IPsec en het veilig laten communiceren van machines in een omgeving die bestaat uit &os; en µsoft.windows; 2000/XP. Voordat IPsec opgezet kan worden dient de lezer bekend te zijn met de concepten die nodig zijn om een aangepaste kernel te bouwen (zie ). IPsec is een protocol dat bovenop de Internet Protocol (IP) laag ligt. Hiermee kunnen twee of meer host op een veilige manier communiceren (vandaar de naam). De &os; IPsec netwerk wachtrij (stack) is gebaseerd op de KAME implementatie, die zowel de IPv4 als de IPv6 protocolfamilies ondersteunt. &os; 5.X bevat een door hardware geaccelereerde IPsec wachtrij die Fast IPsec heet en uit OpenBSD komt. Die kan gebruik maken van cryptografische hardware (waar mogelijk) via het &man.crypto.4; subsysteem om de prestaties van IPsec te optimaliseren. Dit subsysteem is nieuw en ondersteunt niet alle opties die beschikbaar zijn in de KAME versie van IPsec. Voordat er gebruik gemaakt kan worden van door hardware versnelde IPsec, moet de volgende optie in het kernelinstellingenbestand worden gezet: options FAST_IPSEC # new IPsec (cannot define w/ IPSEC) Het is op dit moment niet mogelijk om het Fast IPsec subsysteem samen met de KAME implementatie van IPsec te gebruiken. Zie &man.fast.ipsec.4; voor meer informatie. IPsec bestaat uit twee subprotocollen: Encapsulated Security Payload (ESP) beschermt de IP pakketdata tegen inmenging door een derde partij door de inhoud te versleutelen met symmetrische versleutelingsalgoritmen (als Blowfish en 3DES). Authentication Header (AH) beschermt de IP pakketkop tegen inmenging door een derde partij en spoofing door een cryptografische checksum te berekenen en de IP pakketkopvelden te hashen met een veilige hashfunctie. Hierna wordt een extra kop ingevoegd die de hash bevat zodat de informatie in het pakket geauthenticeerd kan worden. ESP en AH kunnen samen of apart gebruikt worden, afhankelijk van de omgeving. IPsec kan gebruikt worden om het verkeer tussen twee hosts direct te versleutelen (dat heet Transport Mode) of door virtuele tunnels te bouwen tussen twee subnetten die gebruikt kunnen worden voor veilige communicatie tussen twee bedrijfsnetwerken (dat heet Tunnel Mode). De laatste versie staat beter bekend als Virtual Private Network (VPN). In &man.ipsec.4; staat gedetailleerde informatie over het IPsec subsysteem in &os;. Voor ondersteuning voor IPsec in de kernel zijn de volgende opties nodig in het kernelinstellingenbestand: options IPSEC #IP security options IPSEC_ESP #IP security (crypto; define w/ IPSEC) Als er ook fouten in IPsec (debugging) verwijderd moeten kunnen worden, dan is de volgende optie ook nodig: options IPSEC_DEBUG #debug for IP security
Het Probleem Er bestaat geen standaard voor wat een VPN is. VPN's kunnen opgezet worden met behulp van een aantal verschillende technologieën die allemaal hun eigen voor- en nadelen hebben. Dit onderdeel bevat een scenario en de strategieën die gebruikt kunnen worden voor het implementeren van een VPN in iedere situatie. Het Scenario: twee netwerken die één moeten lijken en via internet verbonden zijn Dit is het uitgangspunt: Er zijn tenminste twee locaties Beide locaties gebruiken IP Beide locaties hebben een internetverbinding via een gateway waarop &os; draait. De gateway op ieder netwerk heeft tenminste één publiek IP adres. De interne adressen van de twee netwerken mogen publieke of private IP adressen zijn, dat maakt niet uit. Er mag NAT draaien op de gateway als dat nodig is. De interne IP adressen van de twee netwerken mogen niet conflicteren. Hoewel dit in theorie mogelijk is een combinatie van VPN en NAT te gebruiken om dit te laten werken, wordt het vast een drama om dit in te stellen. Als de twee netwerken die met elkaar verbonden moeten worden intern dezelfde private IP adresreeksen gebruiken (beiden gebruiken bijvoorbeeld 192.168.1.x), dan moet een van de netwerken hernummerd worden. De netwerk topologie zou er zo uit kunnen zien: Netwerk #1 [ Interne Hosts ] Privaat Net, 192.168.1.2-254 [ Win9x/NT/2K ] [ UNIX ] | | .---[fxp1]---. Privaat IP, 192.168.1.1 | FreeBSD | `---[fxp0]---' Publiek IP, A.B.C.D | | -=-=- Internet -=-=- | | .---[fxp0]---. Publiek IP, W.X.Y.Z | FreeBSD | `---[fxp1]---' Privaat IP, 192.168.2.1 | | Netwerk #2 [ Internal Hosts ] [ Win9x/NT/2K ] Privaat Net, 192.168.2.2-254 [ UNIX ] Let op de twee publieke IP adressen. In de rest van dit onderdeel worden de letters gebruikt om ze aan te duiden. Overal waar die letters staan, kunnen ze vervangen worden door eigen publieke IP adressen. Zo hebben ook de twee gateway machines intern .1 IP adressen en de twee netwerken hebben andere IP adressen (respectievelijk 192.168.1.x en 192.168.2.x). Alle machines op de private netwerken zijn zo ingesteld dat ze de .1 machine als hun standaard gateway gebruiken. Het is de bedoeling dat, vanuit het netwerkstandpunt, ieder netwerk de machines in het andere netwerk kan zien alsof ze beiden aan dezelfde router zouden zitten; wel een router die een beetje langzaam is en af een toe een pakketje laat vallen. Dit betekent dat (bijvoorbeeld) op machine 192.168.1.20: ping 192.168.2.34 uitgevoerd kan worden en dat werkt, transparant. µsoft.windows; machines moeten het andere netwerk kunnen zien, gedeelde bestanden kunnen benaderen, enzovoort, op dezelfde manier als ze dat kunnen op het lokale netwerk. En dat alles moet veilig zijn. Dat betekent dat verkeer tussen de twee netwerken versleuteld moet zijn. Het opzetten van een VPN tussen twee netwerken is een proces dat uit meerdere stappen bestaat: Het maken van een virtuele netwerkverbinding tussen de twee netwerken over het internet. Testen met gereedschappen als &man.ping.8; om te bevestigen dat het werkt. Het instellen van beveiligingsbeleid om te verzekeren dat het verkeer tussen de twee netwerken transparant wordt versleuteld en ontsleuteld wanneer dat nodig is. Testen met gereedschappen als &man.tcpdump.1; om te bevestigen dat het werkt. Additionele software instellen op de &os; gateways om µsoft.windows; machines de andere kant van het VPN te laten zien. Stap 1: De <quote>virtuele</quote> netwerkverbinding maken en testen Stel dat een gebruiker is aangemeld op de gatewaymachine in netwerk #1 (met publiek IP adres A.B.C.D en privaat IP adres 192.168.1.1) en de voert ping 192.168.2.1 uit, naar het private adres van de machine met IP adres W.X.Y.Z. Wat moet er gebeuren om dat te laten werken? De gateway host moet weten hoe hij 192.168.2.1 kan bereiken. Met andere woorden: hij moet een route hebben naar 192.168.2.1. Private IP adressen als de reeks 192.168.x horen in het algemeen niet thuis op internet. Ieder pakket naar 192.168.2.1 moet dus ingepakt worden in een ander pakket. Dit pakket moet afkomstig lijken van A.B.C.D en moet naar W.X.Y.Z verstuurd worden. Dit proces heet inkapseling (encapsulation). Als dit pakket aankomt bij W.X.Y.Z dan moet het uitgekapseld (unencapsulated) worden en afgeleverd worden aan 192.168.2.1. Dit is alsof er een tunnel moet bestaan tussen de twee netwerken. De twee tunnelopeningen zijn de IP adressen A.B.C.D en W.X.Y.Z en de tunnel moet op de hoogte zijn van de private IP adressen die door de tunnel mogen. De tunnel wordt gebruikt om verkeer met private IP adressen over het internet te leiden. Deze tunnel wordt gemaakt door gebruik te maken van de generieke interface of gif devices op &os;. De gif interface moet op iedere gatewaymachine ingesteld zijn met vier IP adressen: twee voor de publieke IP adressen en twee voor de private IP adressen. Ondersteuning voor het gif device moet in de &os; kernel van beide machine gecompileerd worden. Dit kan door de volgende optie toe te voegen aan de kernelinstellingenbestanden op beide machines, dan de kernel te compileren, te installeren en dan gewoon te herstarten: pseudo-device gif Het instellen van de tunnel gaat in twee stappen. Eerst moet de tunnel verteld worden wat de IP adressen aan de buitenkant (publiek) zijn met &man.gifconfig.8;. Daarna moeten de private IP adressen ingesteld worden met &man.ifconfig.8;. In &os; 5.X is de functionaliteit van &man.gifconfig.8; opgenomen in &man.ifconfig.8;. Op de gatewaymachine op netwerk #1 moeten de volgende commando's uitgevoerd worden om te tunnel in te stellen. gifconfig gif0 A.B.C.D W.X.Y.Z ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff Op de andere gatewaymachine moeten dezelfde commando's uitgevoerd worden met omgedraaide IP adressen. gifconfig gif0 W.X.Y.Z A.B.C.D ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff Daarna toont: gifconfig gif0 de instellingen. Op netwerk #1 zou dat het volgende zijn: &prompt.root; gifconfig gif0 gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280 inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff physical address inet A.B.C.D --> W.X.Y.Z Er is nu een tunnel gemaakt tussen de fysieke adressen A.B.C.D en W.X.Y.Z en het verkeer dat door de tunnel mag is dat tussen 192.168.1.1 en 192.168.2.1. Hiermee is ook een regel gemaakt in de routetabel op beide machines die te bekijken zijn met netstat -rn. Deze uitvoer komt van de gatewayhost op netwerk #1. &prompt.root; netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire ... 192.168.2.1 192.168.1.1 UH 0 0 gif0 ... De Flags waarde geeft aan dat dit een hostroute is, wat betekent dat iedere gateway weet hoe hij de andere gateway kan bereiken, maar dat ze niet weten hoe ze bij de rest van elkaars netwerk kunnen komen. Dat probleem wordt snel opgelost. Het is waarschijnlijk dat op beide machines een firewall draait. Die moet omzeild worden voor VPN verkeer. Het is mogelijk al het verkeer tussen de beide netwerken toestaan of firewallregels toe te voegen waarmee de beide netwerken die het VPN met elkaar verbindt tegen elkaar beschermd worden. Het testen wordt een stuk eenvoudiger als de firewall zo is ingesteld dat al het verkeer door het VPN wordt doorgelaten. Laten kunnen nog restricties toegevoegd worden. Met &man.ipfw.8; wordt met ipfw add 1 allow ip from any to any via gif0 al het verkeer tussen de twee eindstations van het VPN toegestaan zonder dat dit de andere regels van de firewall beïnvloedt. Dit commando moet natuurlijk wel op beide gatewayhosts uitgevoerd worden. Deze instelling is toereikend om elke gateway machine het recht te geven de ander te pingen. Op 192.168.1.1 kan nu: ping 192.168.2.1 gedraaid worden en moet een antwoord komen. Op de andere machine kan dezelfde test gedaan worden. Maar nu zijn de andere machines op het interne netwerk nog niet te bereiken. Dat komt door de routering: hoewel de gateway machines elkaar nu weten te vinden, weten ze nog niet hoe ze het netwerk achter elkaar kunnen bereiken. Om dat probleem op te lossen moet een statische route worden toevoegd op iedere gateway machine. Het commando daarvoor is: route add 192.168.2.0 192.168.2.1 netmask 0xffffff00 Dit betekent: om hosts op het netwerk 192.168.2.0 te bereiken moeten pakketten naar de host 192.168.2.1 sturen. Een zelfde dient op de andere gateway uitgevoerd te worden, maar dan met de 192.168.1.x adressen. IP verkeer van hosts op het ene netwerk kan nu hosts op het andere netwerk bereiken. Hiermee is tweederde van het VPN tussen twee netwerken aangelegd in de zin dat het virtueel is en er een netwerk is. Maar het is nog niet privaat. Dit wordt aangetoond met &man.ping.8; en &man.tcpdump.1;. Voer op de gateway host het volgende commando uit:/para> tcpdump dst host 192.168.2.1 Voer vanuit een andere sessie op de host het onderstaande commando uit: ping 192.168.2.1 De uitvoer is ongeveer als volgt: 16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request 16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply 16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request 16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply 16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request 16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply Het is zichtbaar dat de ICMP berichten niet versleuteld heen en weer gaan. Als met &man.tcpdump.1; de parameter was gebruikt om meer bytes te tonen uit de pakketten, dan was meer informatie te zien geweest. Dit is natuurlijk onacceptabel. In de volgende paragraaf gaat het dan ook over het beveiligen van de verbinding tussen de twee netwerken zodat al het verkeer automatisch wordt versleuteld. Samenvatting: Stel voor beide kernels het pseudo-device gif in. Wijzig /etc/rc.conf op gateway host #1 en voeg de volgende regels toe (wijzig IP adressen naar wens). gifconfig_gif0="A.B.C.D W.X.Y.Z" ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff" static_routes="vpn" route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00" Wijzig het firewallscript (/etc/rc.firewall of iets dergelijks) op beide hosts en voeg het volgende toe: ipfw add 1 allow ip from any to any via gif0 Maak gelijksoortige wijzigingen in /etc/rc.conf op gateway host #2 en draai de volgorde van de IP adressen om. Stap 2: De Verbinding Beveiligen Om de verbinding te beveiligen wordt IPsec gebruikt. IPsec biedt een mechanisme waarmee twee hosts samen een sleutel hebben en die sleutel dan gebruiken om gegevens te versleutelen tussen die twee hosts. Hiervoor moet op twee plaatsen een aanpassing gemaakt worden in de instellingen. Er moet een mechanisme zijn voor de twee hosts om het eens te worden over het versleutelingsmechanisme dat gebruikt gaat worden. Als de twee hosts het daar over eens zijn, dan hebben ze een zogenaamde beveiligingssamenwerking (security association). Er moet een mechanisme zijn waarmee wordt aangegeven welk verkeer versleuteld moet worden. Tenslotte moet niet al het uitgaande verkeer versleuteld worden, maar alleen het verkeer dat onderdeel is van het VPN. De regels die worden opgesteld om te bepalen welke verkeer versleuteld wordt heten beveiligingsbeleid (security policies). Beveiligingssamenwerking en beveiligingsbeleid worden beiden onderhouden door de kernel en kunnen aangepast worden met programma's in userland. Maar voor dit mogelijk is, moet de kernel geschikt gemaakt worden voor ondersteuning van IPsec en het Encapsulated Security Payload (ESP) protocol. Dit kan door de volgende regel op te nemen in het kernelinstellingenbestand: options IPSEC options IPSEC_ESP Daarna dienen hercompilatie en installatie van de kernel plaats te vinden en moet de machine gereboot worden. Dit moet voor beide gateway hosts uitgevoerd worden. Het is mogelijk twee wegen te bewandelen voor het opzetten van beveiligingssamenwerking. Als het met de hand wordt opgezet dan moeten een versleutelingsalgoritme, coderingssleutels, enzovoort gekozen worden. Er kan ook een daemons gebruikt worden die het Internet Key Exchange protocol (IKE) implementeert om dit uit te voeren. Het advies is voor het laatste te kiezen. Los van andere overwegingen is het makkelijker in te stellen. Voor het wijzigen en weergeven van het beveiligingsbeleid is er &man.setkey.8;. Ter vergelijking: setkey is voor het beveiligingsbeleid van de kernel wat &man.route.8; is voor de routetabellen van de kernel. setkey kan ook de huidige beveiligingssamenwerkingen weergeven en om de vergelijking door te zetten is het in die zin verwant aan netstat -r. Er zijn een aantal daemons beschikbaar voor het bijhouden van beveiligingssamenwerking in &os;. In dit artikel wordt beschreven hoe dat met racoon gaat. racoon zit in de &os; portscollectie in de security/ categorie en kan op de gebruikelijke manier geïnstalleerd worden. racoon moet draaien op beide gateway hosts. Op iedere host moet het IP adres van de andere kant van het VPN ingesteld worden en een geheime sleutel (die door de gebruiker zelf is gekozen en die hetzelfde moet zijn op beide gateways). De twee daemons zoeken dan contact met elkaar en stellen vast dat ze zijn wie ze beweren te zijn (door gebruik te maken van de geheime sleutel die is ingesteld). De daemons maken dan een nieuwe geheime sleutel aan en gebruiken die om het verkeer over het VPN te versleutelen. Ze wijzigen die sleutel periodiek zodat een aanvaller er niets aan heeft in het geval hij achter een van de sleutels zou komen. Dit is theoretisch trouwens vrijwel onuitvoerbaar. Tegen de tijd dat de sleutel gekraakt is, hebben de twee daemons al een nieuwe gekozen. De instellingen van racoon worden opgeslagen in ${PREFIX}/etc/racoon. Daar tref staat een instellingenbestand aan dat niet ingrijpend hoeft te wijzigen. De andere component van de instellingen van racoon die gewijzigd moet worden is de wederzijds bekende sleutel (pre-shared key). Standaard verwacht racoon dat die in ${PREFIX}/etc/racoon/psk.txt staat. Het is belangrijk op te merken dat de wederzijds bekende sleutel niet de sleutel is die gebruikt wordt om het verkeer van de VPN verbinding te versleutelen. Het is gewoon een token die de sleutelbeheerdaemons in staat stelt elkaar te vertrouwen. psk.txt bevat een regel voor iedere locatie waarmee verbinding bestaat. In dit voorbeeld zijn er twee locaties en dus bevat ieder psk.txt bestand één regel (omdat de ene kant van de VPN alleen iets te maken heeft met één andere kant). Op gateway host #1 ziet dat er als volgt uit: W.X.Y.Z secret Er staat dus het publieke IP adres van de andere kant, witruimte ;– spatie(s) of tab(s) – en een stuk tekst met de geheime sleutel. Natuurlijk dient secret niet als sleutel gebruikt te worden. Ook hier gelden de normale regels voor wachtwoorden. Op gateway host #2 ziet dat er dan zo uit: A.B.C.D secret Dus het publieke IP adres van de andere kant en dezelfde geheime sleutel. psk.txt moet in mode 0600 staan (alleen lees en schrijfrechten voor root) voordat racoon zal werken. Racoon moet draaien op beide gatewaymachines. Er moeten ook een aantal firewallregels toegevoegd worden om IKE verkeer toe te staan, dat over UDP naar de ISAKMP (Internet Security Association Key Management Protocol) poort loopt. Nogmaals: deze regels staan bij voorkeur zo vroeg mogelijk in de firewallregels. ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp Als racoon eenmaal draait, dan kan de ene gateway host vanaf de andere gepingd worden. De verbinding is dan nog steeds niet versleuteld, maar racoon stelt wel de beveiligingssamenwerking tussen de twee hosts op. Dat kan heel even duren en dat uit zich in een kleine vertraging voordat er een antwoord op de ping komt. Als de beveiligingssamenwerking tot stand is gekomen, dan kan deze getoond worden met &man.setkey.8;: setkey -D Het bovenstaande commando toont de beveiligingssamenwerkingsingsinformatie. Dat is de ene helft van het probleem. De andere helft is het instellen van het beveiligingsbeleid. Voor er een zinvol beveiligingsbeleid opgesteld kan worden volgt eerst een samenvatting van wat tot nu toe is bereikt. Het volgende geldt voor beide kanten van de verbinding. Ieder IP pakket dat wordt verzonden heeft een kop die gegevens over het pakket bevat. De kop bevat het IP adres van zowel de bron als de bestemming. Zoals bekend horen private IP adressen zoals de reeks 192.168.x.y niet thuis op internet. Ze moeten eerst ingepakt worden in een ander pakket. Voor dat pakket moeten het publieke bron en bestemmingsadres op de plaats van de private adressen gezet worden. Dus als een uitgaand pakket als volgt begon: .----------------------. | Src: 192.168.1.1 | | Dst: 192.168.2.1 | | <andere kopinfo> | +----------------------+ | <pakket data> | `----------------------' Dan wordt het ingepakt in een andere pakket dat er ongeveer als volgt uitziet: .--------------------------. | Src: A.B.C.D | | Dst: W.X.Y.Z | | <andere kop info> | +--------------------------+ | .----------------------. | | | Src: 192.168.1.1 | | | | Dst: 192.168.2.1 | | | | <andere kop info> | | | +----------------------+ | | | <pakket data> | | | `----------------------' | `--------------------------' Het gif device zorgt voor het inpakken. Het pakket heeft nu een echt IP adres aan de buitenkant en het originele pakket zit ingepakt als data in het pakket dat het internet opgestuurd gaat worden. Nu moet het verkeer over het VPN natuurlijk versleuteld worden. Dat kan als volgt worden weergegeven: Als een pakket A.B.C.D verlaat met als bestemming W.X.Y.Z, versleutel het dan met de benodigde beveiligingssamenwerkingen. Als een pakket aankomt van W.X.Y.Z en het heeft A.B.C.D als bestemming, ontcijfer het dan met de benodigde beveiligingssamenwerkingen. Dat klopt bijna, maar niet helemaal. Als dit gebeurde, dan zou al het verkeer van en naar W.X.Y.Z, zelfs als dat geen deel uit zou maken van het VPN, versleuteld worden. Dat is niet wenselijk. Het correcte beleid ziet er zo uit: Als een pakket A.B.C.D verlaat en dat pakket bevat een ander pakket en als het W.X.Y.Z als bestemming heeft, versleutel het dan met de benodigde beveiligingssamenwerkingen. Als een pakket aankomt van W.X.Y.Z en het pakket bevat een ander pakket en het heeft A.B.C.D als bestemming, ontcijfer het dan met de benodigde beveiligingssamenwerkingen. Dat is een subtiele aanpassing, maar wel noodzakelijk. Beveiligingsbeleid wordt ook ingesteld met &man.setkey.8;. &man.setkey.8; biedt een instellingtaal voor het definiëren van beleid. Instructies kunnen via STDIN gegeven worden of met de optie uit een bestand komen dat de instellingen bevat. De instellingen op gateway host #1 (die het publieke IP adres A.B.C.D heeft) om al het uitgaande verkeer naar W.X.Y.Z te laten versleutelen is: spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require; Deze commando's kunnen in een bestand (bv. /etc/ipsec.conf) gezet worden om uitgevoerd te worden: &prompt.root; setkey -f /etc/ipsec.conf vertelt &man.setkey.8; dat er een regel toegevoegd moet worden aan de database met het beveiligingsbeleid. De rest van de regel geeft aan op welke pakketten dit beleid van toepassing is. A.B.C.D/32 en W.X.Y.Z/32 zijn de IP adressen en netmaskers waarmee het netwerk of de hosts worden aangegeven waarop het beleid van toepassing is. In dit geval is het van toepassing op het verkeer tussen twee hosts. vertelt de kernel dat dit beleid alleen van toepassing is op pakketten waarin een ander pakket ingepakt zit. betekent dat dit beleid van toepassing is op uitgaande pakketten en betekent dat de pakketten beveiligd moeten worden. Het tweede deel geeft aan hoe een pakket versleuteld wordt. is het protocol dat gebruikt moet worden en geeft aan dat het pakket ingepakt moet worden in een IPsec pakket. Het herhaalde gebruik van A.B.C.D en W.X.Y.Z heeft te maken met het aangeven welke beveiligingssamenwerking gebruikt moet worden en als laatste is het door verplicht dat de pakketten versleuteld worden als deze regel van toepassing is. Deze regel is alleen van toepassing op uitgaande pakketten. Er moet ook nog een regel komen voor inkomende pakketten. spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require; Let wel dat hier dus staat in plaats van en dat de IP adressen zijn omgedraaid. Op de andere gateway host (met een publiek IP adres W.X.Y.Z) zijn soortgelijke regels nodig. spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require; spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require; Tenslotte moeten de firewalls ESP en IPENCAP pakketten naar beide kanten toestaan. Deze regels moeten op beide hosts toegevoegd worden. ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D Omdat deze regels symmetrisch zijn, kunnen ze op beide gateway hosts gebruikt worden. Uitgaande pakketten zien er nu ongeveer zo uit: .------------------------------. --------------------------. | Src: A.B.C.D | | | Dst: W.X.Y.Z | | | <andere kop info> | | Versleuteld +------------------------------+ | pakket. | .--------------------------. | -------------. | inhoud | | Src: A.B.C.D | | | | is | | Dst: W.X.Y.Z | | | | volledig | | <andere kop info> | | | |- veilig | +--------------------------+ | | Ingepakt | voor | | .----------------------. | | -. | pakket | snoopen | | | Src: 192.168.1.1 | | | | Origineel|- met echt | door derden | | | Dst: 192.168.2.1 | | | | pakket, | IP adres | | | | <andere kop info> | | | |- privaat | | | | +----------------------+ | | | IP adres | | | | | <pakket data> | | | | | | | | `----------------------' | | -' | | | `--------------------------' | -------------' | `------------------------------' --------------------------' Als ze ontvangen worden door de andere kant van het VPN dan worden ze eerst ontcijferd (met de beveiligingssamenwerking die door racoon tot stand is gebracht). Daarna komen ze de gif interface binnen die de tweede laag uitpakt zodat het binnenste pakket overblijft, dan nu naar het interne netwerk kan reizen. De beveiliging kan gecontroleerd worden met dezelfde &man.ping.8; test die eerder is uitgevoerd, door eerst aan te melden op de A.B.C.D gateway machine en het onderstaande uit te voeren: tcpdump dst host 192.168.2.1 In nog een sessie op dezelfde host kan dan het volgende commando uitgevoerd worden: ping 192.168.2.1 Nu hoort de volgende uitvoer te zien te zijn: XXX tcpdump output &man.tcpdump.1; toont nu de ESP pakketten. Als deze pakketten verder bekeken worden met de optie dan is de uitvoer onbegrijpelijk vanwege de versleuteling. Gefeliciteerd. Nu is het VPN tussen de twee locaties opgezet. Samenvatting Stel beide kernels in met: options IPSEC options IPSEC_ESP Installeer security/racoon. Wijzig ${PREFIX}/etc/racoon/psk.txt op beide gateway hosts en voeg een regel toe voor het IP adres van de host aan de andere kant en een geheime sleutel die aan beide kanten bekend is. Dit bestand hoort mode 0600 te hebben. Voeg de volgende regels toe aan /etc/rc.conf voor iedere host: ipsec_enable="YES" ipsec_file="/etc/ipsec.conf" Maak /etc/ipsec.conf op iedere host die de benodigde spdadd regels bevat. Op gateway host #1 zou dat zijn: spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require; spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require; En op gateway host #2 is dat: spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require; spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require; Voeg firewallregels toe om IKE, ESP en IPENCAP verkeer toe te staan naar beide hosts: ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D De voorgaande twee stappen zouden voldoende moeten zijn voor het opzetten van het VPN. Machines op ieder netwerk kunnen elkaar nu bereiken op basis van IP adressen en al het verkeer over de verbinding wordt automatisch en veilig versleuteld.
Chern Lee Bijgedragen door Siebrand Mazeland Vertaald door OpenSSH OpenSSH beveiliging OpenSSH OpenSSH is een groep netwerkverbindingsprogramma's waarmee computers via het netwerk veilig benaderd kunnen worden. Het kan ingezet worden als een directe vervanger van rlogin, rsh, rcp en telnet. Daarnaast kunnen alle andere TCP/IP verbindingen veilig getunneld of geforward worden door SSH. OpenSSH versleutelt al het verkeer om afluisteren, het stelen van een verbinding en andere netwerkaanvallen effectief te voorkomen. OpenSSH wordt onderhouden door het OpenBSD project en is gebaseerd op SSH v1.2.12 met alle recente bugfixes en updates. Het is compatibel met beide protocollen SSH 1 en 2. OpenSSH zit in de basisinstallatie sinds &os; 4.0. Voordelen van Gebruik van OpenSSH Als gewoonlijk &man.telnet.1; of &man.rlogin.1; wordt gebruikt, wordt de data in platte tekst en niet versleuteld verzonden. Netwerksnuffelaars die ergens tussen de client en de server meeluisteren, kunnen een gebruikersnaam en wachtwoord stelen en zien welke gegevens er worden overgezonden tijdens een sessie. OpenSSH biedt een verscheidenheid aan authenticatie en versleutelingsmethoden die het voorgaande voorkomen. sshd Inschakelen OpenSSH inschakelen In rc.conf dient het volgende te staan: sshd_enable="YES" Hierdoor wordt &man.sshd.8; geladen, het daemonprogramma voor OpenSSH, als het systeem de volgende keer opstart. De sshd daemon kan ook direct gestart worden door sshd in te geven op de commandoregel. SSH Client OpenSSH client &man.ssh.1; werkt net zoals &man.rlogin.1;. &prompt.root; ssh user@example.com Host key not found from the list of known hosts. Are you sure you want to continue connecting (yes/no)? yes Host 'example.com' added to the list of known hosts. user@example.com's password: ******* Het aanmelden gaat nu net zoals het zou gaan als wanneer er een sessie gestart zou worden met rlogin of telnet. SSH maakt gebruik van een systeem met vingerafdrukken als sleutels voor het vaststellen met welke server verbinding wordt gemaakt op het moment dat de client verbinding zoekt. De gebruiker krijgt alleen de eerste keer dat verbinding wordt gezocht met de server een vraag waarop yes geantwoord dient te worden. Bij volgende pogingen om aan te melden wordt de vingerafdruksleutel vergeleken met de sleutel die is opgeslagen. De SSH client alarmeert de gebruiker als de opgeslagen vingerafdruk sleutel anders is dan de sleutel die de server meldt. De vingerafdrukken worden opgeslagen in ~/.ssh/known_hosts of in ~/.ssh/known_hosts2 voor SSH v2 vingerafdrukken. OpenSSH servers staan standaard - ingesteld om SSH v1 and SSH v2 en connecties toe te staan. De - client kan echter tussen beiden kiezen. Versie 2 is robuster - en veiliger dan zijn voorloper. + ingesteld om alleen SSH v2 connecties toe te staan. De client + kan echter tussen beiden kiezen. Versie 2 is robuster en + veiliger dan zijn voorloper. Het commando &man.ssh.1; kan gedwongen worden om een van de twee protocollen te gebruiken door de optie of voor respectievelijk v1 en v2 aan te geven. - Veilig Kopieren + Veilig Kopiëren OpenSSH veilig kopiëren scp Het commando &man.scp.1; (secure copy) werkt gelijk aan &man.rcp.1;. Het kopieert een bestand van of naar een andere machine, maar doet dat veilig. &prompt.root; scp user@example.com:/COPYRIGHT COPYRIGHT user@example.com's password: ******* COPYRIGHT 100% |*****************************| 4735 00:00 &prompt.root; Omdat de vingerafdruk al is opgeslagen voor deze host in het vorige voorbeeld, is die al geverifieerd als &man.scp.1; gebruik wordt. De argumenten die aan &man.scp.1; gegeven worden zijn vrijwel gelijk aan die voor &man.cp.1; met het bestand of de bestanden als het eerste argument en de bestemming als het tweede. Omdat het bestand over het netwerk gaat, door SSH, hebben een of meer van de bestandsargumenten de vorm . Instellen OpenSSH instellen Het instellingenbestand dat voor het hele systeem geldt voor zowel de OpenSSH daemon als client staat in de map /etc/ssh. ssh_config bevat de instellingen voor de client en sshd_config bevat ze voor de daemon. Daarnaast bieden het (standaard /usr/sbin/sshd) en rc.conf opties nog meer mogelijkheden voor instellingen. ssh-keygen In plaats van het gebruik van wachtwoorden kan &man.ssh-keygen.1; gebruikt worden om RSA sleutels te maken om een gebruiker te authenticeren: &prompt.user; ssh-keygen -t rsa1 Initializing random number generator... Generating p: .++ (distance 66) Generating q: ..............................++ (distance 498) Computing the keys... Key generation complete. Enter file in which to save the key (/home/user/.ssh/identity): Enter passphrase: Enter the same passphrase again: Your identification has been saved in /home/user/.ssh/identity. ... &man.ssh-keygen.1; maakt een publiek en privaat sleutelpaar aan dat gebruikt kan worden voor authenticatie. De private sleutel staat opgeslagen in ~/.ssh/identity en de publieke sleutel staat in ~/.ssh/identity.pub. De publieke sleutel moet in ~/.ssh/authorized_keys van de andere machine staan om dit te laten werken. Nu is het mogelijk een verbinding te maken met een andere machine die gebaseerd is op RSA authenticatie in plaats van op wachtwoorden. De optie maakt RSA sleutels voor versie 1 van het SSH protocol. Als gebruik van versie 2 gewenst is, dan het commando ssh-keygen -t rsa gebruikt te worden. Als er een wachtwoordzin is gebruikt bij &man.ssh-keygen.1; dan wordt de gebruiker iedere keer dat de private sleutel wordt gebruikt een wachtwoord gevraagd. Het is mogelijk een SSH protocol versie 2 DSA sleutel te maken voor hetzelfde doel met het commando ssh-keygen -t dsa. Hiermee wordt een publiek/privaat DSA sleutelpaar gemaakt dat alleen gebruikt kan worden in SSH protocol versie 2 sessies. De publieke sleutel staat in ~/.ssh/id_dsa.pub en de private sleutel staat in ~/.ssh/id_dsa. Publieke DSA staan ook in ~/.ssh/authorized_keys op de andere machine. &man.ssh-agent.1; en &man.ssh-add.1; zijn hulpprogramma's die gebruikt worden om meerdere met wachtwoorden beschermde private sleutels te beheren. Opties en bestandslocaties kunnen afhankelijk zijn van de gebruikte OpenSSH versie op een systeem. Raadpleeg de &man.ssh-keygen.1; handboekpagina voor de correcte gegevens. SSH Tunnels OpenSSH tunnels OpenSSH kan een tunnel maken waarin een ander protocol ingepakt kan worden zodat er een versleutelde sessie ontstaat. Het volgende commando geeft &man.ssh.1; aan dat er een tunnel voor telnet gemaakt moet worden: &prompt.user; ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com &prompt.user; Aan het ssh commando worden de volgende opties meegegeven: Dit dwingt ssh om versie 2 van het protocol te gebruiken. Gebruik van deze optie wordt afgeraden als er verbinding wordt gemaakt met oudere SSH servers. Dit geeft aan dat er geen commando volgt, maar dat er een tunnel opgezet moet worden. Als deze optie niet aanwezig was, zou ssh een normale sessie starten. Dit dwingt ssh om in de achtergrond te draaien. Dit geeft aan dat de lokaal een tunnel wordt gemaakt in de vorm lokale_poort:netwerk_host:netwerk_poort. Wijst naar een gebruiker op de SSH server op het netwerk. Een SSH tunnel werkt doordat een luistersocket wordt gemaakt op localhost op de aangegeven poort. Die stuurt dan iedere ontvangen verbinding op de lokale host/poort via de SSH verbinding door naar de aangegeven host en poort op het netwerk. In het voorbeeld wordt poort 5023 op localhost doorgestuurd naar poort 23 op localhost van de machine op het netwerk. Omdat 23 telnet is, zou dit een veilige telnet verbinding opleveren door een SSH tunnel. Dit kan gebruikt worden om ieder willekeurig onveilig TCP protocol in te pakken als SMTP, POP3, FTP, etc. SSH Gebruiken om een Veilige Tunnel te Maken voor SMTP &prompt.user; ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com user@mailserver.example.com's password: ***** &prompt.user; telnet localhost 5025 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mailserver.example.com ESMTP Dit kan samen met een &man.ssh-keygen.1; en extra gebruikersaccounts gebruikt worden om een min of meer naadloze en eenvoudige SSH tunnelomgeving te maken. In plaats van wachtwoorden kunnen sleutels gebruikt worden en de tunnels kunnen in de omgeving van een aparte gebruiker draaien. Praktische Voorbeelden van een SSH Tunnel Veilige Toegang tot een POP3 Server Op het werk staat een SSH server die verbindingen van buitenaf toestaat. Op hetzelfde netwerk op kantoor staat een mailserver waarop POP3 draait. Het netwerk of het netwerkpad tussen de locatie op internet en kantoor is wellicht niet helemaal te vertrouwen. Om deze reden dient de mailserver op een veilige manier benaderd te worden. De oplossing is een SSH verbinding opzetten naar de SSH server op kantoor en dan door de tunnel heen een verbinding opzetten met de mailserver. &prompt.user; ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com user@ssh-server.example.com's password: ****** Als de tunnel eenmaal draait, dan kan de mailclient naar localhost poort 2110 gewezen worden. Alle verbinding naar die poort worden veilig doorgestuurd door de tunnel naar mail.example.com. Een Draconische Firewall Omzeilen Sommige netwerkbeheerders stellen draconische firewallregels op en filteren niet alleen inkomende verbindingen, maar ook uitgaande. Meestal mag dan alleen maar verbinding gemaakt worden met andere machines op poorten 22 en 80 voor SSH en websurfen. Soms wil een gebruiker dan toch toegang krijgen tot andere (wellicht niet netwerk-gerelateerd) diensten, zoals een Ogg Vorbis server om muziek te streamen. Als die Ogg Vorbis server streamt op een andere poort dan 22 of 80, dan kan deze niet bereikt worden. De oplossing ligt in het opzetten van een SSH verbinding naar een machine buiten de firewall en die tunnel te gebruiken om bij de Ogg Vorbis server te komen. &prompt.user; ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org user@unfirewalled-system.example.org's password: ******* De streamingclient kan nu gewezen worden naar localhost poort 8888 vanwaar er wordt doorverwezen naar music.example.com poort 8000 en zo wordt de firewall succesvol ontwerken. Meer Lezen OpenSSH &man.ssh.1; &man.scp.1; &man.ssh-keygen.1; &man.ssh-agent.1; &man.ssh-add.1; &man.sshd.8; &man.sftp-server.8; Tom Rhodes Bijgedragen door Siebrand Mazeland Vertaald door ACL - Bestandssysteem Toegangscontrole Lijsten + Bestandssysteem Toegangscontrolelijsten In combinatie met verbeteringen als snapshots, bieden &os; 5.0 en volgende versies de veiligheid van - Bestandssysteem Toegangscontrole Lijsten (Access Control Lists, + Bestandssysteem Toegangscontrolelijsten (Access Control Lists, ACLs). - Met Toegangscontrole Lijsten wordt het standaard &unix; + Met Toegangscontrolelijsten wordt het standaard &unix; rechtenmodel uitgebreid op een zeer verenigbare (&posix;.1e) manier. Deze methodes stellen een beheerder in staat om gebruik te maken en voordeel te halen uit een geraffineerder beveiligingsmodel. Om ondersteuning voor ACLs voor bestandssystemen in te schakelen dient het volgende in de kernel gecompileerd te worden: options UFS_ACL Als deze optie niet aanwezig is, dan wordt er een waarschuwing weergegeven als er wordt geprobeerd een bestandssysteem te mounten dat gebruik maakt van ACLs. Deze optie is al geactiveerd in de GENERIC kernel. ACLs zijn afhankelijk van uitgebreide attributen die zijn ingeschakeld op het bestandssysteem. Uitgebreide attributen worden standaard ondersteund in het volgende generatie &unix; bestandssysteem UFS2. Er is meer administratieve overhead nodig om uitgebreide attributen in te stellen op UFS1 dan op UFS2. De prestaties van uitgebreide attributen zijn op UFS2 ook veel beter. Daarom wordt UFS2 ook meestal aangeraden boven - UFS1 bij het gebruik van toegangscontrole - lijsten. + UFS1 bij het gebruik van + toegangscontrolelijsten. ACLs worden ingeschakeld door de beheersvlag op het moment van mounten. Dit kan ook in /etc/fstab staan. De vlag op het moment van mounten kan ook automatisch gezet worden op een persistente wijze met &man.tunefs.8; door een superblok in de bestandssysteemkop te wijzigen. In het algemeen wordt de voorkeur gegeven aan de vlag in het superblok om een aantal redenen: De ACLs vlag op het moment van mounten kan niet gewijzigd worden bij opnieuw mounten (&man.mount.8; ), maar alleen door een volledige &man.umount.8; en een verse &man.mount.8;. Dit betekent dat ACLs niet ingeschakeld kunnen worden op root bestandssysteem na het booten. Het betekent ook dat de aard van een bestandssysteem niet veranderd kan worden als het eenmaal in gebruik is. Het inschakelen van de superblok vlag zorgt ervoor dat het bestandssysteem altijd wordt gemount met de ACLs ingeschakeld, zelfs als het niet in fstab staat of als de apparaten van plaats veranderen. Hiermee wordt voorkomen dat het bestandssysteem wordt gebruikt zonder dat ACLs ingeschakeld zijn, wat ervoor zou kunnen zorgen dat ACLs onjuist worden toegepast wat weer kan zorgen voor beveiligingsproblemen. Wellicht wordt het mogelijk om de ACLs via de vlag in te schakelen zonder een compleet verse &man.mount.8;, maar de ontwikkelaars vinden het wenselijk om het per ongeluk zonder ACLs mounten te ontmoedigen, omdat er bijzonder vervelende gevolgen kunnen zijn als ACLs worden ingeschakeld, daarna worden uitgezet en weer worden ingeschakeld zonder dat de uitgebreide attributen worden geschoond. In het algemeen geldt dat als ACLs eenmaal zijn ingeschakeld voor een bestandssysteem, ze niet meer uitgeschakeld moeten worden, omdat de resulterende bestandsbescherming wellicht niet compatibel is met dat wat gebruikers van het systeem nodig hebben en het opnieuw aanzetten van ACLs kan leiden tot het opnieuw koppelen van voorheen bestaande ACLs aan bestanden waarvoor de toegangsrechten sindsdien zijn aangepast, wat kan leiden tot onverwachte situaties. Bestandssystemen waarvoor ACLs zijn ingeschakeld worden weergegeven met een + (plus) teken als de toegangsrechten worden bekeken: drwx------ 2 robert robert 512 Dec 27 11:54 private drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1 drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3 drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html Hierboven is te zien dat mappen directory1, directory2 en directory3 allemaal gebruik maken van ACLs. De map public_html doet dat niet. Gebruik Maken van <acronym>ACL</acronym>s De ACLs van het bestandssysteem kunnen bekeken worden met het hulpprogramma &man.getfacl.1;. Om de ACL op het bestand test te bekijken zou het volgende commando nodig zijn: &prompt.user; getfacl test #file:test #owner:1001 #group:1001 user::rw- group::r-- other::r-- Om de ACL op dit bestand te wijzigen wordt het hulpprogramma &man.setfacl.1; als volgt gebruikt: &prompt.user; setfacl -k test De vlag verwijdert alle bestaande ACLs van een bestand of bestandssysteem. De methode die de voorkeur geniet is gebruiken omdat die optie de basisvelden die nodig zijn voor het laten werken van de ACLs laat staan. &prompt.user; setfacl -m u:trhodes:rwx,group:web:r--,o::--- test Bij het commando hierboven, werd de optie gebruikt om de standaard ACL aan te passen. Omdat er geen voorgedefinieerde instellingen waren, die waren verwijderd door het commando daarvoor, werden nu de standaardinstellingen hersteld en de rechten die werden aangegeven toegevoegd. Let op dat bij het toevoegen van een gebruiker of een groep die niet bekend is op het systeem een foutmelding Invalid argument wordt geschreven naar stdout. Tom Rhodes Bijgedragen door Siebrand Mazeland Vertaald door &os; Beveiligingswaarschuwingen &os; Beveiligingswaarschuwingen Net als veel andere kwalitatief goede productiebesturingssystemen publiceert &os; Beveiligingswaarschuwingen. Deze waarschuwingen worden meestal pas naar de beveiligingslijst gemaild en gedocumenteerd in de Errata als de van toepassing zijnde releases gepatcht zijn. In deze paragraaf wordt toegelicht wat een waarschuwing is, hoe die te begrijpen en welke maatregelen er genomen moeten worden om een systeem bij te werken. Hoe Ziet een Waarschuwing eruit? De &os; beveiligingswaarschuwingen zien er ongeveer uit als die hieronder die van de &a.security-notifications.name; mailinglijst komt. ============================================================================= &os;-SA-XX:XX.UTIL Security Advisory The &os; Project Topic: denial of service due to some problem Category: core Module: sys Announced: 2003-09-23 Credits: Person@EMAIL-ADDRESS Affects: All releases of &os; &os; 4-STABLE prior to the correction date Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE) 2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6) 2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15) 2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8) 2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18) 2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21) 2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33) 2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43) 2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39) &os; only: NO For general information regarding FreeBSD Security Advisories, including descriptions of the fields above, security branches, and the following sections, please visit http://www.FreeBSD.org/security/. I. Background II. Problem Description III. Impact IV. Workaround V. Solution VI. Correction details VII. References Het veld Topic geeft aan wat precies het probleem is. Het is eigenlijk een inleiding op de beveiligingswaarschuwing en geeft aan welke programma kwetsbaar is. Het veld Category geeft aan welk onderdeel van het systeem kwetsbaar is. Dat kan een van de onderdelen core, contrib of ports zijn. De categorie core betekent dat de een kerncomponent van het &os; besturingssysteem kwetsbaar is. De categorie contrib betekent dat software die toegevoegd is aan het &os; Project kwetsbaar is, zoals sendmail. Tenslotte geeft de categorie ports aan dat een optionele component uit de portscollectie kwetsbaar is. Het veld Module geeft aan waar de component zich bevindt, bijvoorbeeld sys. In dit voorbeeld wordt het duidelijk dat de module sys kwetsbaar is. Hier gaat het dus om een kwetsbaar component die gebruikt wordt in de kernel. Het veld Announced geeft aan wanneer de beveiligingswaarschuwing gepubliceerd of aangekondigd is. Dit betekent dat het beveiligingsteam heeft bevestigd dat het probleem bestaat en dat er een patch is gecommit in het depot met de broncode van &os;. In het veld Credits wordt iemand of een organisatie bedankt die de kwetsbaarheid heeft ontdekt en gerapporteerd. Het veld Affects geeft aan welke releases van &os; door deze kwetsbaarheid worden getroffen. Voor de kernel kan snel gekeken worden naar de uitvoer van ident voor de betreffende bestanden om te bepalen welke revisie ze hebben. Voor ports is het versienummer te zien in /var/db/pkg. Als het systeem niet gelijk op loopt met het &os; CVS depot en dagelijks herbouwd wordt, dan is de kans groot dat het systeem kwetsbaar is. Het veld Corrected geeft de datum, tijd en tijdzone aan en de release die is aangepast. Het veld &os; only geeft aan of deze kwetsbaarheid alleen betrekking heeft op &os; of dat hij ook betrekking heeft op andere besturingssystemen. Het veld Background geeft meer informatie over wat er precies aan de hand is. Meestal staat hier waarom het programma aanwezig is in &os;, waar het voor gebruikt wordt en hoe het programma is ontstaan. Het veld Problem Description geeft gedetailleerde toelichting op het beveiligingsprobleem. Hier kan informatie bij staat over programmacode die fouten bevat of zelfs hoe het programma gebruikt kan worden om een beveiligingsgat te openen. Het veld Impact beschrijft welke invloed het probleem kan hebben op het systeem. Dit kan bijvoorbeeld een ontzegging van dienst aanval zijn, gebruikers extra rechten geven of het verkrijgen van supergebruiker toegang voor de aanvaller zijn. Het veld Workaround geeft aan hoe het mogelijk is het probleem te omzeilen (workaround) in het geval systeembeheerders niet in staat zijn om het systeem bij te werken. Dit zou te maken kunnen hebben met de tijd, beschikbaarheid van het netwerk en een hele lijst met andere redenen. Hoe dan ook, beveiliging dient serieus genomen te worden en een systeem dat kwetsbaar is moet bijgewerkt worden of het gat in de beveiliging moet gedicht worden met de alternatieve oplossing. Het veld Solution geeft instructies over hoe een systeem aangepast kan worden. Dit is een werkinstructie die getest en gecontroleerd is om een systeem aan te passen en weer veilig werkend te krijgen. In het veld Correction Details staan de CVS takken of releasenamen, met de punten veranderd in een liggend streepje. Er staat ook welke revisienummer de aangetaste bestanden binnen een tak hebben. In het veld References wordt gewoonlijk verwezen naar andere bronnen. Dit kunnen URLs, boeken, mailinglijsten en nieuwsgroepen zijn.
diff --git a/nl_NL.ISO8859-1/books/handbook/users/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/users/chapter.sgml index cf1f4fc2d0..d90de6fdf1 100644 --- a/nl_NL.ISO8859-1/books/handbook/users/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/users/chapter.sgml @@ -1,1285 +1,1285 @@ Neil Blakey-Milner Geschreven door Siebrand Mazeland Vertaald door Gebruikers en Basis Accountbeheer Overzicht Met &os; is het mogelijk een computer met meerdere gebruikers tegelijkertijd te gebruiken. Natuurlijk kan er op een zeker moment maar één gebruiker achter het scherm en toetsenbord zitten Tenzij er natuurlijk meerdere terminals worden aangesloten, maar dat wordt behandeld in . , maar er kan een groot aantal gebruikers zijn aangemeld via het netwerk om dingen met de computer te doen. Om een systeem te gebruiken moet een gebruiker een account hebben. Na het lezen van dit hoofdstuk weet de lezer: De verschillen tussen de gebruikersaccounts op een &os; systeem; Hoe gebruikersaccounts toe te voegen; Hoe gebruikersaccounts te verwijderen; Hoe eigenschappen van accounts te wijzigen, zoals de volledige naam van de gebruiker of de voorkeursshell; Hoe op een per account basis limieten in te stellen om het bronnengebruik van bijvoorbeeld geheugen en processortijd te reguleren voor accounts en accountgroepen; Hoe groepen te gebruiken om accountbeheer te vereenvoudigen. Aangeraden voorkennis: Basisbegrip van &unix; en &os; (). Inleiding Via accounts wordt alle toegang tot een systeem gegeven en alle processen worden door gebruikers gedraaid. Dus gebruikers en accountbeheer zijn van integraal belang op &os; systemen. Elke account op een &os; systeem heeft een aantal informatievelden waarmee de account geïdentificeerd kan worden. Gebruikersnaam De gebruikersnaam, zoals die ingevoerd wordt bij het prompt login:. Gebruikersnamen moeten uniek zijn op een computer. Er mogen geen twee gebruikers zijn met dezelfde gebruikersnaam. Er horen een aantal regels bij het maken van geldige gebruikersnamen, die in &man.passwd.5; staan beschreven. Gebruikersnamen bestaan gewoonlijk uit acht of minder karakters (geen hoofdletters). Wachtwoord Bij ieder account hoort een wachtwoord. Het wachtwoord kan leeg zijn. Er is dan geen wachtwoord nodig om toegang te krijgen tot een systeem. Dit is meestal een slecht idee. Ieder account hoort een wachtwoord te hebben. Gebruikers ID (UID) Het UID is een nummer, traditioneel van 0 tot 65535 Het is mogelijk om UID/GID's te gebruiken tot 4294967295, maar die ID's kunnen tot serieuze problemen leiden met software die aannames maakt over de waarde van ID's. , dat wordt gebruikt om een gebruiker op een systeem uniek te identificeren. Intern gebruikt &os; het UID om gebruikers te identificeren. Voor alle &os; commando's waarin een gebruikersnaam wordt opgegegeven, wordt eerst geconverteerd naar het UID voordat ermee gewerkt wordt. Dit betekent dat er verschillende accounts kunnen zijn met andere gebruikersnamen maar met hetzelfde UID. Wat &os; betreft zijn al die accounts één gebruiker. Het is onwaarschijnlijk dat het ooit nodig is deze eigenschap te gebruiken. Groep ID (GID) Het GID is een nummer, traditioneel van 0 tot 65535 , gebruikt om de primaire groep waartoe een gebruiker behoort, uniek te identificeren. Groepen zijn een methode waarmee toegang tot bronnen beheerst kan worden, gebaseerd op het GID van een gebruiker in plaats van op een UID. Hiermee kan het aantal instellingen in bepaalde bestanden aanzienlijk verkleind worden. Een gebruiker kan lid zijn van meer dan één groep. Aanmeldklasse Aanmeldklassen zijn een uitbreiding op het groepenmechanisme waarmee additionele flexibiliteit wordt geboden bij het aanpassen van een systeem op verschillende gebruikers. Wijzigingstijd wachtwoord Standaard dwingt &os; gebruikers niet tot het periodiek wijzigen van hun wachtwoord. Dit kan wel per gebruiker afgedwongen worden, zodat sommige of alle gebruikers hun wachtwoord na een bepaalde periode moeten wijzigen. Verloopdatum account Standaard verlopen accounts op &os; niet. Als er accounts gemaakt worden waarvan bekend is dat ze maar een beperkte tijd nodig zijn, bijvoorbeeld op een school waar accounts bestaan voor studenten, dan kan er aangegeven worden wanneer een account verloopt. Nadat de verloopdatum is verstreken kan de account niet meer gebruikt worden om aan te melden op een systeem, hoewel de mappen en bestanden van de account nog wel blijven bestaan. Volledige gebruikersnaam De gebruikersnaam identificeert de account uniek voor &os;, maar die geeft niet zonder meer de echte naam van de gebruiker weer. Deze informatie kan aan de account gekoppeld worden. Thuismap De thuismap is het volledige pad naar een map op een systeem waar de gebruiker start als die aanmeldt op een systeem. Het is de gewoonte dat alle thuismappen voor gebruikers onder /home/gebruikersnaam of /usr/home/gebruikersnaam staan. Gebruikers slaan hun persoonlijke bestanden op in hun thuismap en in mappen die daaronder worden gemaakt. Gebruikersshell De shell biedt een standaardomgeving waarmee gebruikers met een systeem werken. Er zijn vele shells en ervaren gebruikers hebben hun eigen voorkeuren, die hun weerslag kunnen hebben in hun accountinstellingen. Er zijn drie hoofdtypen accounts: de Superuser, systeemgebruikers en gebruikersaccounts. De Superuser account, die meestal root heet, wordt gebruikt om een systeem te beheren zonder beperkingen. Systeemgebruikers kunnen diensten draaien. Tenslotte kunnen gebruikersaccounts gebruikt worden door echte personen, die aanmelden, e-mail lezen, enzovoort. De Superuser Account accounts superuser (root) De superuser account, die meestal root heet, is al ingesteld om gebruikt te worden voor systeembeheer en hoort niet gebruikt te worden voor dagelijkse werkzaamheden, zoals het sturen en ontvangen van e-mail, het verkennen van het systeem of programmeren. Dit omdat de Superuser, anders dan gewone gebruikersaccounts, zonder beperkingen kan opereren en misbruik van een Superuser account kan resulteren in spectaculaire problemen. Gebruikersaccounts kunnen niet per ongeluk een systeem vernielen, dus het is aan te raden om wanneer maar mogelijk gewone gebruikersaccounts te gebruiken, tenzij de extra privileges noodzakelijk zijn. Commando's die als superuser worden uitgevoerd dienen altijd twee of drie keer gecontroleerd te worden voordat ze worden uitgevoerd, omdat een extra spatie of een missend karakter kan leiden tot niet terug te draaien dataverlies. Als het niet al geregeld is, is het dus na het lezen van dit hoofdstuk aan te raden als eerste een gebruikersaccount zonder bijzondere rechten te maken voor de dagelijkse bezigheden. Dit geldt zowel als het gaat over een machine voor één gebruiker als wanneer het gaat over een machine voor meerdere gebruikers. Later in dit hoofdstuk wordt beschreven hoe additionele accounts gemaakt kunnen worden en hoe er tussen de normale gebruiker en de Superuser gewisseld kan worden. Systeemaccounts accounts systeem Systeemgebruikers draaien diensten, zoals DNS, mailservers, webservers, enzovoort. De reden hiervoor is beveiliging. Als alle diensten als Superuser zouden draaien, dan zouden ze zonder beperkingen kunnen opereren. accounts daemon accounts operator Voorbeelden van systeemgebruikers zijn daemon, operator, bind (voor de Domain Name Service) en news. Vaak maken systeembeheerders httpd om webservers die ze installeren te draaien. accounts nobody nobody is de generieke systeemgebruiker zonder bijzondere privileges Het is wel belangrijk om ervan bewust te zijn dat hoe meer diensten nobody gebruiken, hoe meer bestanden en processen er bij die gebruiker horen en dat de gebruiker daardoor meer privileges kan krijgen. Gebruikersaccounts accounts gebruiker Gebruikersaccounts zijn het primaire middel dat echte gebruikers gebruiken om toegang te krijgen tot een systeem en die account schermen de gebruiker en de omgeving af, waardoor die gebruikers het systeem of andere gebruikers niet kunnen beschadigen en waardoor gebruikers hun omgeving kunnen aanpassen zonder invloed te hebben op anderen. Iedereen die toegang heeft tot een systeem hoort een unieke gebruikersaccount te hebben. Hierdoor is het mogelijk uit te vinden wie wat aan het doen is, te voorkomen dat mensen elkaars instellingen kunnen verpesten of elkaars e-mail kunnen lezen, enzovoort. Iedere gebruiker kan zijn eigen omgeving instellen op een systeem, door andere shells, editors, toetsenbordinstellingen en taal te kiezen. Accounts Wijzigen accounts wijzigen Er zijn vele commando's beschikbaar in de &unix; omgeving om gebruikersaccounts te manipuleren. De meest gebruikte commando's worden hieronder beschreven, gevolgd door meer gedetailleerde voorbeelden van gebruik. Commando Samenvatting &man.adduser.8; Het aanbevolen commandoregelprogramma voor het aanmaken van nieuwe gebruikers. &man.rmuser.8; Het aanbevolen commandoregelprogramma voor het verwijderen van gebruikers. &man.chpass.1; Een flexibel hulpprogramma voor het wijzigen van informatie in de gebruikersdatabase. &man.passwd.1; Een eenvoudig commandoregelprogramma voor het wijzigen van wachtwoorden van gebruikers. &man.pw.8; Een krachtig en flexibel hulpprogramma voor het wijzigen van alle aspecten van gebruikersaccounts. <command>adduser</command> accounts toevoegen adduser /usr/share/skel skeleton map &man.adduser.8; is een eenvoudig programma voor het aanmaken van nieuwe gebruikers. Er worden regels mee toegevoegd aan de systeembestanden passwd en group. Het maakt ook een thuismap voor de nieuwe gebruiker, kopieert de standaard instellingenbestanden (dotfiles) uit /usr/share/skel en kan, optioneel, de nieuwe gebruiker een welkomstbericht mailen. In &os; 5.0, is &man.adduser.8; herschreven van een Perl script naar een shell script dat een wrapper om &man.pw.8; is, zodat het gebruik wat verschilt tussen &os; 4.X en &os; 5.X. Een eerste instellingenbestand kan gemaakt worden met adduser -s -config_create Door de optie start &man.adduser.8; standaard in stille modus. Later wordt de optie gebruikt als de standaarden worden aangepast. . Hierna worden de &man.adduser.8; standaarden ingesteld en kan de eerste gebruikersaccount gemaakt worden, omdat het gebruik van root voor normaal gebruik boosaardig en naar kan zijn. <command>adduser</command> Instellen en een Gebruiker op &os; 4.X Toevoegen &prompt.root; adduser -v Use option ``-silent'' if you don't want to see all warnings and questions. Check /etc/shells Check /etc/master.passwd Check /etc/group Enter your default shell: csh date no sh tcsh zsh [sh]: zsh Your default shell is: zsh -> /usr/local/bin/zsh Enter your default HOME partition: [/home]: Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: Send message from file: /etc/adduser.message no [/etc/adduser.message]: no Do not send message Use passwords (y/n) [y]: y Write your changes to /etc/adduser.conf? (y/n) [n]: y Ok, let's go. Don't worry about mistakes. I will give you the chance later to correct any input. Enter username [a-z0-9_-]: jru Enter full name []: J. Random User Enter shell csh date no sh tcsh zsh [zsh]: Enter home directory (full path) [/home/jru]: Uid [1001]: Enter login class: default []: Login group jru [jru]: Login group is ``jru''. Invite jru into other groups: guest no [no]: wheel Enter password []: Enter password again []: Name: jru Password: **** Fullname: J. Random User Uid: 1001 Gid: 1001 (jru) Class: Groups: jru wheel HOME: /home/jru Shell: /usr/local/bin/zsh OK? (y/n) [y]: y Added user ``jru'' Copy files from /usr/share/skel to /home/jru Add another user? (y/n) [y]: n Goodbye! &prompt.root; Samenvattend is de standaard shell gewijzigd in zsh (een extra shell uit de portscollectie) en is het sturen van een welkomstbericht aan nieuwe gebruikers uitgeschakeld. Daarna zijn de instellingen opgeslagen en is een account gemaakt voor jru en is jru in de groep wheel geplaatst (zodat die gebruiker de rol van root mag aannemen met het commando &man.su.1;). Het wachtwoord dat wordt ingegeven wordt niet weergegeven en er worden ook geen sterretjes getoond. Het is belangrijk geen typefouten in het wachtwoord te maken. Vanaf nu kan &man.adduser.8; zonder argumenten gebruikt worden en hoeven de standaardinstellingen niet meer aangepast te worden. Als het programma vraagt om de instellingen te wijzigen, kan het verlaten worden en opnieuw gestart worden met de optie . Een Gebruiker Toevoegen aan &os; 5.X &prompt.root; adduser Username: jru Full name: J. Random User Uid (Leave empty for default): Login group [jru]: Login group is jru. Invite jru into other groups? []: wheel Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]: zsh Home directory [/home/jru]: Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : jru Password : **** Full Name : J. Random User Uid : 1001 Class : Groups : jru wheel Home : /home/jru Shell : /usr/local/bin/zsh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (jru) to the user database. Add another user? (yes/no): no Goodbye! &prompt.root; <command>rmuser</command> rmuser accounts verwijderen Met &man.rmuser.8; kan een gebruiker volledig van een systeem verwijderd worden. &man.rmuser.8; voert de volgende stappen uit: Verwijdert de &man.crontab.1; van de gebruiker (als die bestaat). Verwijdert bestaande &man.at.1; taken van de gebruiker. Stopt alle processen van de gebruiker. Verwijdert de gebruiker uit het lokale wachtwoordbestand van een systeem. Verwijdert de thuismap van de gebruiker (als de gebruiker daar eigenaar van is). Verwijdert de inkomende e-mail voor de gebruiker uit /var/mail. Verwijdert alle bestanden waar de gebruiker eigenaar van is uit opslaggebieden voor tijdelijke bestanden als /tmp. Als laatste wordt de gebruikersnaam uit alle groepen in /etc/group waar die lid van was verwijderd. Als een groep leeg raakt en de groepsnaam is hetzelfde als de gebruikersnaam, dan wordt de groep verwijderd. Dit is het tegenovergestelde van wat &man.adduser.8; met een unieke groep per gebruiker. &man.rmuser.8; kan niet gebruikt worden om superuser accounts te verwijderen, omdat dat vrijwel altijd leidt tot vreselijke verwoesting. Standaard wordt een interactieve modus gebruikt, die ervoor zorgt dat alle stappen bewust worden genomen. Interactief Accounts Verwijderen met <command>rmuser</command> &prompt.root; rmuser jru Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove? y Remove user's home directory (/home/jru)? y Updating password file, updating databases, done. Updating group file: trusted (removing group jru -- personal group is empty) done. Removing user's incoming mail file /var/mail/jru: done. Removing files belonging to jru from /tmp: done. Removing files belonging to jru from /var/tmp: done. Removing files belonging to jru from /var/tmp/vi.recover: done. &prompt.root; <command>chpass</command> chpass &man.chpass.1; wijzigt informatie in de gebruikersdatabase, zoals wachtwoorden, shells en persoonlijke informatie. Alleen systeembeheerders, zoals de Superuser, mogen de informatie en wachtwoorden voor andere andere gebruikers wijzigen met &man.chpass.1;. Als er geen opties worden meegegeven, buiten de optionele gebruikersnaam, dan toont &man.chpass.1; een editor waarin de gebruikersinformatie wordt weergegeven. Als de gebruiker de editor verlaat, dan wordt de gebruikersdatabase bijgewerkt met de nieuwe informatie. In &os; 5.X wordt er gevraagd om een wachtwoord na het verlaten van de editor als de uitvoerende gebruiker geen superuser is. Interactieve <command>chpass</command> door Superuser #Informatie in de gebruikersdatabase wijzigen voor jru. Login: jru Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information: Een normale gebruiker kan slechts een deel van de bovenstaande informatie wijzen en alleen voor zijn eigen account. Interactieve <command>chpass</command> door een Gewone Gebruiker #Informatie in de gebruikersdatabase wijzigen voor jru. Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information: &man.chfn.1; en &man.chsh.1; zijn gewoon links naar &man.chpass.1;. Dat geldt ook voor &man.ypchpass.1;, &man.ypchfn.1; en &man.ypchsh.1;. Ondersteuning voor NIS gaat automatisch; er hoeft dus geen yp voor het commando aangegeven te worden. NIS wordt behandeld in . <command>passwd</command> passwd accounts wachtwoord wijzigen Met &man.passwd.1; wijzigt een gebruiker gewoonlijk zijn eigen wachtwoord of dat van een andere gebruiker als het door de Superuser wordt uitgevoerd. Om onbedoelde of ongeautoriseerde wijzigen te voorkomen moet het originele wachtwoord worden ingegeven voordat een nieuw wachtwoord kan worden ingesteld. Wachtwoord Wijzigen &prompt.user; passwd Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done Als Superuser het Wachtwoord van een Andere Gebruiker Wijzigen &prompt.root; passwd jru Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done Net als bij &man.chpass.1; is &man.yppasswd.1; gewoon een link naar &man.passwd.1;, dus NIS werkt met beide commando's. <command>pw</command> pw &man.pw.8; is een commandoregelhulpprogramma om gebruikers en groepen te maken, verwijderen, aan te passen en weer te geven. Het werkt als een voorkant voor de systeembestanden met gebruikers en groepen. &man.pw.8; heeft een zeer krachtige set commandoregelopties, waardoor het erg geschikt is om in shell scripts gebruikt te worden. Nieuwe gebruikers vinden het wellicht gecompliceerder dan de andere commando's die hier beschreven worden. Gebruikers Beperken gebruikers beperken accounts beperken Bij het hebben van gebruikers komt wellicht ook de gedachte aan het beperken van de mogelijkheden op een systeem. &os; biedt een aantal mogelijkheden waarmee een beheerder de hoeveelheid systeembronnen die een gebruiker kan aanwenden kan beperken. Die beperkingen zijn onderverdeeld in twee onderdelen: schijfquota en andere beperkingen voor bronnen. quota gebruikers beperken quota schijfquota Schijfquota beperken het schijfgebruik voor gebruikers en ze bieden een mogelijkheid om dat gebruik snel te controleren zonder het iedere keer te hoeven berekenen. Quota worden besproken in . De overige beperking van bronnen omvat het beperken van het gebruik van CPU, geheugen en andere bronnen die gebruikers tot hun beschikking hebben. Die worden ingesteld in aanmeldklassen en worden hieronder beschreven. /etc/login.conf Aanmeldklassen worden ingesteld in /etc/login.conf. De precieze semantiek wordt niet behandeld in dit handboek, maar die staat beschreven in &man.login.conf.5;. Hier is het voldoende aan te geven dat iedere gebruiker wordt toegewezen aan een aanmeldklasse (standaard default) en dat iedere aanmeldklasse verbonden is met een groep aanmeldmogelijkheden (login capability). Een aanmeldmogelijkheid is een naam=waarde paar, waar naam een bekende eigenschap is en waarde een arbitraire string is die wordt verwerkt afhankelijk van de naam. Het instellen van aanmeldklassen en -mogelijkheden is een redelijk eenvoudig proces en wordt ook beschreven in &man.login.conf.5;. Een systeem leest de instellingen uit /etc/login.conf niet direct, maar leest het databasebestand /etc/login.conf.db. /etc/login.conf.db kan met het volgende commando gemaakt worden uit /etc/login.conf: &prompt.root; cap_mkdb /etc/login.conf Beperkingen van bronnen verschillen van standaard aanmeldmogelijkheden op twee manieren. Ten eerste is er voor iedere beperking een zachte en een harde limiet. Een zachte (huidige) limiet kan door een gebruiker of applicatie aangepast worden, maar mag niet hoger zijn dan de harde limiet. De laatste kan door een gebruiker verlaagd worden, maar nooit verhoogd. Deze verschillen worden veroorzaakt door de specifieke behandeling van de beperkingen, niet door de implementatie van het aanmeldmogelijkheden framework, dat wil zeggen dat ze niet echt bijzondere aanmeldmogelijkheden zijn. Hieronder worden de meest gebruikte beperkingen op bronnen beschreven. De overige mogelijkheden, samen met alle andere aanmeldmogelijkheden, staat beschreven in &man.login.conf.5;. coredumpsize coredumpsize gebruikers beperken coredumpsize De limiet op de grootte van een corebestand dat wordt gemaakt door een programma is, om verschillende redenen, ondergeschikt aan andere beperkingen op het gebied van schijfgebruik (bijvoorbeeld filesize of schijfquota). Desalniettemin wordt deze instelling vaak gebruikt als een minder zware methode voor het beheersen van het gebruik van schijfruimte. Omdat gebruikers niet hun eigen corebestanden maken en ze vaak niet verwijderen, kan deze instelling helpen te voorkomen dat een schijf vol loopt in het geval een groot programma (bijvoorbeeld emacs) zou crashen. cputime cputime gebruikers beperken processortijd Dit is de maximale hoeveelheid processortijd die een proces van een gebruiker mag gebruiken. Processen die meer bronnen gebruiken worden afgeschoten door de kernel. Dit is een beperking op de CPU tijd die wordt gebruikt, niet op een percentage van de CPU, zoals wordt getoond in sommige velden door &man.top.1; en &man.ps.1;. Een limiet op de laatste is op het moment van schrijven niet mogelijk en zou ook redelijk waardeloos zijn: een compiler – waarschijnlijk een legitieme taak – kan makkelijk gedurende enige tijd bij 100% van een CPU gebruiken. filesize filesize gebruikers beperken filesize Dit is de maximale grootte voor een bestand waar een gebruiker eigenaar van kan zijn. Anders dan bij schijfquota is deze limiet van toepassing op individuele bestanden en niet op alle bestanden samen waarvan een gebruiker eigenaar is. maxproc maxproc gebruikers beperken maxproc Dit is het maximale aantal processen dat een gebruiker mag draaien. Hieronder vallen zowel processen die op de voorgrond draaien als op de achtergrond. Om duidelijke reden kan deze waarde niet groter zijn dan de ingestelde systeemlimiet voor kern.maxproc met &man.sysctl.8;. Het te laag zetten van deze instelling kan de productiviteit van een gebruiker schaden: vaak is het zinvol om meerdere keren aangemeld te zijn of om pipelines uit te voeren. Sommige taken, zoals het compileren van een groot programma, spawnen ook meerdere processen (bijvoorbeeld &man.make.1;, &man.cc.1; en andere tussentijdse preprocessors). memorylocked memorylocked gebruikers beperken memorylocked Dit is de maximale hoeveelheid geheugen die een proces mag claimen om te locken in het hoofdgeheugen (zie bijvoorbeeld &man.mlock.2;). Sommige systeemkritische programma's, zoals &man.amd.8;, locken in het hoofdgeheugen, zodat zij, in het geval het wisselbestand gebruikt moet worden, niet hoeven bij te dragen aan dat proces als het nodig is. memoryuse memoryuse gebruikers beperken memoryuse Dit is de maximale hoeveelheid geheugen die een proces op enig moment mag gebruiken. Hieronder vallen zowel hoofdgeheugen als het gebruik van het wisselbestand. Deze limiet vangt niet al het geheugengebruik af, maar het is een prima begin. openfiles openfiles gebruikers beperken openfiles Dit is het maximale aantal bestanden dat een proces open mag hebben. In &os; representeren bestanden ook sockets en IPC kanalen. Deze limiet mag dus niet te laag gezet worden. De limiet voor het systeem staat ingesteld in kern.maxfiles van &man.sysctl.8;. sbsize sbsize gebruikers beperken sbsize Dit is de limiet op de hoeveelheid netwerkgeheugen, en dus mbufs, die een gebruiker ter beschikking staan. Deze waarde komt voort uit het antwoord op een DoS aanval waarmee veel sockets werden gemaakt, maar het kan in het algemeen gebruikt worden om de hoeveelheid netwerkcommunicatie te limiteren. stacksize stacksize gebruikers beperken stacksize Dit is de maximale grootte voor een stack van een proces. Deze instelling alleen is niet genoeg om de hoeveelheid geheugen die een programma mag gebruiken te beperken. Daarom moet deze limiet samen met andere limieten gebruikt worden. Er zijn nog een aantal dingen belangrijk bij het instellen bronbeperkingen. Hierna worden een aantal algemene tips, suggesties en commentaren gegeven. Processen die bij het opstarten van een systeem gestart worden vanuit /etc/rc worden toegewezen aan de aanmeldklasse daemon. Hoewel de /etc/login.conf die bij een systeem zit een goede bron is voor redelijke waardes voor de meeste limieten, kan alleen de beheerder van een machine de echt juiste waarden kennen. Het te hoog instellen van een limiet kan een systeem kwetsbaar maken voor misbruik, terwijl het te laag instellen van limieten de productiviteit te veel kan hinderen. Gebruikers van het X Window Systeem (X11) horen waarschijnlijk meer bronnen toegewezen te krijgen dan andere gebruikers. X11 gebruikt zelf al meer bronnen, maar het moedigt gebruikers ook aan om meerdere programma's tegelijkertijd te draaien. Het is belangrijk niet te vergeten dat veel limieten betrekking hebben op individuele processen en niet op een hele gebruiker. Het instellen van bijvoorbeeld openfiles op 50, betekent dat ieder proces dat een gebruiker draait 50 open bestanden mag hebben. Het totale aantal bestanden dat een gebruiker dus open kan hebben is het produkt van de waarde van openfiles en de waarde van maxproc. Dit geldt ook voor het gebruik van geheugen. Meer informatie over bronbeperkingen en aanmeldklassen in het algemeen staan in de relevante hulppagina's: &man.cap.mkdb.1;, &man.getrlimit.2;, &man.login.conf.5;. Gebruikers Personaliseren Localisatie betekent dat een omgeving door een beheerder of gebruiker is ingesteld om meerdere talen, karaktersets, datum en tijdstandaarden, enzovoort, te ondersteunen. Dit staat beschreven in het hoofdstuk over localisatie. Groepen groepen /etc/groups accounts groepen Een groep is eenvoudigweg een lijst gebruikers. Groepen kunnen geïdentificeerd worden aan de hand van hun naam en - GID (Groep ID). In &os; (en de meeste andere &unix;-achtige + GID (Groep ID). In &os; (en de meeste andere &unix; achtige systemen), worden besluiten door de kernel over of een proces iets wel of niet mag doen genomen op basis van het bijbehorende gebruikers ID en een lijst van groepen waar dat bij hoort. Anders dan bij een gebruikers ID, heeft een proces een lijst met bijbehorende groepen. Sommige programma's refereren wel eens aan het groep ID van een gebruiker of een proces. Meestal is dit gewoon de eerste groep in de hiervoor genoemde lijst. De vertaling van groep ID naar groepsnaam staat in /etc/group. Dit is een tekstbestand met vier velden die door het karakter : (dubbele punt) worden gescheiden. Het eerste veld is de groepsnaam, het tweede veld is het versleutelde wachtwoord, het derde het groep ID, het vierde een door komma's gescheiden lijst van leden van de groep. Het bestand kan zonder gevaar met de hand aangepast worden (aangenomen dat er geen fouten in de syntaxis worden gemaakt, natuurlijk). Een volledige beschrijving van de syntaxis staat in &man.group.5;. Als het onwenselijk is om /etc/group met de hand aan te passen, dan kan &man.pw.8; gebruikt worden voor het toevoegen en wijzigen van groepen. Om bijvoorbeeld een groep met de naam teamtwo toe te voegen en daarna het bestaan van die groep te bevestigen: Groepen Toevoegen met &man.pw.8; &prompt.root; pw groupadd teamtwo &prompt.root; pw groupshow teamtwo teamtwo:*:1100: Het getal 1100 hierboven is het groep ID van de groep teamtwo. Met de huidige instelling heeft teamtwo geen leden en is die redelijk waardeloos. Dat kan veranderen door jru aan de groep teamtwo toe te voegen. Gebruikers aan Groepen Toevoegen met &man.pw.8; &prompt.root; pw groupmod teamtwo -M jru &prompt.root; pw groupshow teamtwo teamtwo:*:1100:jru Het argument voor de optie is een door komma's gescheiden lijst van gebruikers die lid moeten zijn van de aangegeven groep. In de voorgaande paragrafen is al aangegeven dat het password bestand ook voor iedere gebruiker een groep bevat. Een gebruiker wordt automatisch toegevoegd aan de groepenlijst door een systeem. De gebruiker wordt niet als lid getoond van die groep bij het gebruik van de optie van &man.pw.8;, maar wordt wel getoond als de informatie wordt opgevraagd via &man.id.1; of met een soortgelijk programma. Met andere woorden: &man.pw.8; wijzigt alleen het bestand /etc/group en probeert nooit extra informatie te lezen uit /etc/passwd. &man.id.1; Gebruiken om Groepslidmaatschap te Bepalen &prompt.user; id jru uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo) Hierboven is te zien dat jru lid is van de groepen jru en teamtwo. Meer informatie over &man.pw.8; staat in de hulppagina en meer informatie over de opmaak van /etc/group staat in &man.group.5;. diff --git a/nl_NL.ISO8859-1/books/handbook/vinum/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/vinum/chapter.sgml index 204bb696cc..19ef6b0ea9 100644 --- a/nl_NL.ISO8859-1/books/handbook/vinum/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/vinum/chapter.sgml @@ -1,1568 +1,1566 @@ Greg Lehey Geschreven door Erwin Kooi Vertaald door De VINUM volume manager - Samenvatting + Overzicht Welke harde schijven er ook gebruikt worden, er zijn altijd mogelijke problemen: Ze kunnen te klein zijn Ze kunnen te traag zijn Ze kunnen te onbetrouwbaar zijn. Eén manier waarop gebruikers zich wapenen tegen een aantal van deze problemen is door meerdere en soms ook redundante disks te gebruiken. Naast ondersteuning voor verschillende kaarten en controllers die hardware RAID ondersteunen, bevat het &os; basissysteem ook de Vinum Volume Manager, een block device driver waarmee virtuele disken gemaakt kunnen worden. Vinum biedt meer flexibiliteit, prestaties en betrouwbaarheid dan traditionele diskopslag en er kan RAID-0, RAID-1 en RAID-5 mee gemaakt worden of een combinatie van deze RAID niveau's. In dit hoofdstuk wordt een overzicht gegeven van de mogelijke problemen die traditionele diskopslag met zich meebrengt en de Vinum Volume Manager wordt geïntroduceerd. Schijfgrootte Vinum RAID - Software + software Vinum is een Volume Manager, een virtuele schijfdriver die de drie genoemde problemen op kan lossen. Het probleem wordt in de volgende paragrafen verder uitgediept. Verscheidene oplossingen zijn al voorgesteld en toegepast: De capaciteit van schijven wordt groter, maar ook de vraag naar capaciteit neemt toe. Vaak is het gewenste bestandsysteem groter dan de op dat moment beschikbare schijven. Hoewel dit probleem niet meer zo actueel als het tien jaar geleden was, bestaat het nog steeds. In sommige systemen is dit opgelost door een virtuele harde schijf te maken die de data op meerdere fysieke harde schijven kan opslaan. Snelheid van Toegang Moderne systemen hebben vaak simultaan toegang tot data nodig. FTP en webservers kunnen bijvoorbeeld duizenden simultane sessies onderhouden en hebben vaak meerdere 100 Mbit/s verbindingen met de rest van de wereld. De benodigde datadoorvoer is dan groter dan de meeste schijven kunnen leveren. Huidige schijven kunnen data sequentieel overdragen met ongeveer 70 MB/s, maar deze snelheid heeft geen waarde in een omgeving waar onafhankelijke processen toegang tot de schijf hebben. In zo'n situatie is het interessanter om vanuit het standpunt van de schijfdriver te kijken: de belangrijkste parameter is dan de belasting die een bepaalde data overdracht op de driver plaatst. Met andere woorden: wat is het tijdbeslag van een dataoverdracht op te schijf? Bij elke dataoverdracht moet de schijf eerst zijn kop positioneren, wachten tot de eerste sector onder de kop doorkomt en vervolgens de overdracht starten. Deze acties duren bijzonder kort. Het heeft geen enkele zin om ze te onderbreken. Neem een overdracht van ongeveer 10 kB: de huidige generatie high-performance schijven kan de kop in 3.5 ms plaatsen. De snelste schijven draaien met 15.000 toeren per minuut, dus de gemiddelde rotatie vertraging (een halve omwenteling) bedraagt 2 ms. Met 70 MB/s de overdracht zelf duurt ongeveer 150 μs, bijna niets vergeleken met de tijd die verloren is gegaan aan het positioneren. In zulke gevallen daalt de data overdracht naar iets meer dan 1 MB/s en is dus duidelijk afhankelijk van de grootte van de over te dragen data. De traditionele en logische oplossing voor dit probleem is meer schijven: in plaats van één grote schijf, meerdere kleine schijven met een zelfde totale opslagcapaciteit. Iedere schijf is in staat om onafhankelijk de kop te plaatsen en de data over te dragen, dus de effectieve doorvoer neemt toe met een factor bijna gelijk aan het aantal schijven. De exacte verbetering van de doorvoer is natuurlijk kleiner dan het aantal schijven, want hoewel iedere schijf in staat is om parallel de data over te dragen, er is geen garantie dat de data gelijk over de schijven verdeeld is. De belasting op de ene schijf zal dan ook groter zijn dan op de andere schijf. aaneenschakelen disken aaneenschakelen Vinum aaneenschakelen + RAID + Een gelijke belasting van de schijven is in grote mate afhankelijk van de manier waarop data over de schijven is verdeeld. In het volgende stuk is de opslag van een virtuele schijf voor te stellen als een verzameling sectoren die met een nummer aangesproken kan worden, net als bladzijden in een boek. De meest voor de hand liggende methode om een virtuele schijf te maken is het achter elkaar plakken van de fysieke schijven. Een virtueel boek zou dan opgebouwd zijn uit verschillende achter elkaar zittende fysieke hoofdstukken. Deze methode heet aaneenschakelen (concatenation) en heeft het voordeel dat schijven verschillend van grootte kunnen zijn. Dit werkt prima als toegang tot de data gelijk verdeeld is over de hele dataset. Als die toegang beperkt is tot een klein deel van de dataset, is de snelheidsverbetering een stuk kleiner. laat de manier zien hoe aaneengeschakelde schijven hun data opslaan.
Aaneengeschakeld georganiseerd
verdelen disk striping Vinum verdelen Een andere methode is het verdelen van de totale opslag van de virtuele schijf in kleinere stukjes van gelijke grootte en ze achter elkaar op verschillende fysieke schijven op te slaan. Bijvoorbeeld: de eerste 256 sectoren worden op schijf 1 opgeslagen, de tweede 256 sectoren op schijf 2 enzovoort, tot de laatste schijf is gebuikt, waarna weer bij schijf 1 verder wordt gegaan, net zolang tot de schijven vol zijn. Deze methode heet verdelen (striping) of RAID-0. - - RAID - - RAID staat voor Redundant Array of Inexpensive Disks (Redundante Reeks van Goedkope Disks) en biedt verschillende vormen van fout-tolerantie. Hoewel die laatste term wat misleidend is: het biedt namelijk geen redundantie. . Bij RAID-0 kost het iets meer moeite om de data te vinden en het kan extra I/O belasting met zich meebrengen als data is verdeeld over verschillende fysieke schijven. Het kan echter ook zorgen voor een constantere belasting van die schijven. geeft weer hoe RAID-0 schijven hun data opslaan.
Verdeeld georganiseerd
Betrouwbaarheid van Data Het laatste probleem met de huidige schijven is dat ze onbetrouwbaar zijn. Hoewel de betrouwbaarheid de laatste jaren enorm is toegenomen, blijven schijven het vitale onderdeel van een server dat waarschijnlijk als eerste kapot gaat. Als dat gebeurt kan het catastrofale gevolgen hebben: het vervangen van de schijf en het terugplaatsen van de data kan dagen kosten. spiegelen disken spiegelen Vinum spiegelen RAID-1 De traditionele manier om dit te voorkomen is spiegelen (mirroring): het hebben van een kopie van de data op een andere fysieke schijf. Sinds de uitvinding van RAID niveau's staat dit bekend als RAID-1. Een schrijfactie naar de virtuele schijf gebeurt op beide fysieke schijven. Een leesactie hoeft slechts vanaf één te gebeuren. Op deze manier kan de virtuele schijf dus blijven werken als één van de twee fysieke schijven kapot is. RAID-1 heeft twee problemen: Prijs. Er is twee keer zoveel schijfruimte nodig als bij een niet-redundante schijf. Prestatie. Een schrijfacie moet op twee schijven gebeuren en kost dus twee keer zoveel bandbreedte. Een leesactie hoeft maar op één schijf te gebeuren en heeft hier dus geen last van. RAID-5 Een andere manier is pariteit, uitgevoerd in RAID niveau's 2, 3, 4 en 5. Van deze vier is RAID-5 het meest interessant. In Vinum is het geïmplementeerd als een variant van een verdeelde organisatie waarbij één blok van elk deel is gereserveerd voor de pariteit van de andere blokken. Voor Vinum is een RAID-5 samenstelling (plex) dan ook gelijk aan een verdeelde samenstelling, met als verschil dat het een pariteitblok bevat in ieder deel. Zoals voorgeschreven door RAID-5 wisselt de locatie van dit pariteitblok van het ene deel naar het andere. De nummers in de datablokken geven de relatieve bloknummers aan.
RAID-5 georganiseerd
Vergeleken met spiegelen heeft RAID-5 het voordeel dat er beduidend minder opslagcapaciteit nodig is. Lezen gebeurt op dezelfde manier als bij een verdeelde organisatie, maar schrijven kost beduidend meer tijd, ongeveer 25% van de leesprestaties meer. Als één schijf uitvalt, kan de reeks doorwerken in een verslechterde staat (degraded mode): data van een functionerende schijf kan zonder problemen gelezen worden, maar data van de defecte schijf moet eerst worden samengesteld uit de pariteit van de overeenkomende blokken van de resterende schijven.
Vinum Objecten Om deze problemen op te lossen, hanteert vinum een hiërarchie met vier niveau's van objecten: Het meest zichtbare object is de virtuele schijf. Dit object wordt volume genoemd. Op een paar kleine details na, hebben volumes dezelfde eigenschappen als een &unix; schijf. Het belangrijkste verschil is dat er geen beperking aan de grootte van de schijf is. Volumes zijn opgebouwd uit samenstellingen, die elk de totale opslagcapaciteit van het volume hebben. Dit niveau in de hiërarchie biedt daarom redundantie. Een samenstelling is goed voor te stellen als een individuele schijf in een RAID-1 systeem. Iedere schijf bevat dezelfde data. Omdat Vinum bestaat binnen het &unix; opslagsysteem, moet het mogelijk zijn om &unix; partities te gebruiken als bouwstenen voor samenstellingen die uit meerdere schijven bestaan. Maar het blijkt dat dit te inflexibel is: &unix; schijven hebben een beperkt aantal partities. In plaats daarvan verdeelt Vinum een &unix; partitie (de schijf) in aaneengesloten stukken die subschijven worden genoemd. Deze subschijven worden vervolgens als bouwstenen voor de samenstelling gebruikt. Subschijven bestaan op Vinum drives, op dit moment &unix; partities. Een Vinum drive kan een oneindig aantal subdisks bevatten. Met uitzondering van een klein stukje aan het begin van de schijf, dat wordt gebruikt om informatie over de configuratie en de toestand op te slaan, is de gehele schijf beschikbaar voor de opslag van data. In de volgende paragrafen wordt beschreven hoe deze objecten de functionaliteit van Vinum leveren. Volumegrootte Overwegingen Een samenstelling kan meerdere subschijven bevatten die uitgespreid zijn over alle disks in de Vinum configuratie. Dat houdt in dat de grootte van een individuele schijf geen limiet is voor de samenstelling en dus niet voor het volume. Redundante Dataopslag Vinum implementeert RAID-0 door meerdere samenstellingen aan een volume te koppelen. Elke samenstelling representeert hierbij de data in het volume. Een volume kan tussen de één en acht samenstellingen bevatten. Hoewel een samenstelling de totala data van een volume voorstelt, is het mogelijk dat delen van deze voorstelling missen, door ontwerp (door geen subdisk voor delen van de samenstelling te definiëren) of per ongeluk (door een defecte schijf). Zo lang tenminste één samenstelling de data voor het gehele volume kan leveren, is het volume volledig bruikbaar. Prestaties Vinum implementeert aaneenschakelen en spiegelen op het niveau van de samenstelling: Een aaneengeschakelde samenstelling gebruikt de adresruimte van elke subdisk achter elkaar. Een verdeelde samenstelling spreidt de data over iedere subdisk. De subdisks moeten daarvoor allemaal dezelfde grootte hebben en er moeten tenminste twee subdisks zijn om onderscheid te kunnen maken met een aaneengeschakelde samenstelling. Welke Samenstelling? De versie van Vinum die met &os; &rel.current; wordt meegeleverd, kent twee soorten samenstellingen: Aaneengeschakelde samenstellingen zijn het meest flexibel: ze kunnen een oneindig aantal subdisks bevatten die verschillend van lengte mogen zijn. De samenstelling kan uitgebreid worden door subdisks toe te voegen. Ze kosten minder CPU tijd dan verdeelde samenstellingen, hoewel het verschil van de CPU belasting niet meetbaar is. Aan de andere kant, ze zijn het meest kwetsbaar voor hot-spots, waar één disk heel intensief gebruikt wordt en anderen ongebruikt blijven. Het grootste voordeel van verdeelde samenstellingen (RAID-0) is dat ze geen hot-spots hebben. Door het kiezen van een optimale deelgrootte (veelal 256 kB) kan de belasting op de fysieke schijven gelijk getrokken worden. De nadelen van deze aanpak zijn (minescuul) complexere code en beperkingen aan de subdisks: ze moeten allemaal van gelijke grootte zijn en het uitbreiden van een samenstelling met extra subdisks is zo gecompliceerd, dat de huidige versie van Vinum dit niet ondersteunt. Vinum voegt een extra, triviale, beperking toe: een verdeelde samenstelling moet tenminste twee subdisks hebben, omdat die anders niet onderscheiden kan worden van een aaneengeschakelde samenstelling. In worden de voor- en nadelen van elke samenstelling samengevat. Vinum Samenstellingen Samenstellingtype Min. aantal subdisks Subdisks toevoegen Gelijke grootte Toepassing aaneengeschakeld 1 ja nee Veel dataopslag met maximale flexibiliteit en gemiddelde performance. verdeeld 2 nee ja Hoge prestaties, ook bij veel gelijktijdige toegang.
Voorbeelden Vinum houdt een configuratie database bij waarin beschreven staat welke objecten bekend zijn in het systeem. Bij het instellen vult de gebruiker deze database uit één of meer configuratiebestanden &man.vinum.8;. Vinum bewaart een kopie van de database op iedere slice (die Vinum device noemt) die door Vinum wordt beheerd. Deze database wordt na iedere statuswijziging bijgewerkt, zodat een na een herstart acuraat de toestand van ieder Vinum object wordt weergegeven. Het Configuratiebestand Het configuratiebestand beschijft de individuele vinum objecten. De definitie van een eenvoudig volume kan er zo uitzien: drive a device /dev/da3h volume myvol plex org concat sd length 512m drive a Dit bestand beschrijft vier Vinum objecten: De drive regel beschrijft een partitie (drive) en de relatieve positie ten opzichte van de onderliggende hardware. Het heeft de symbolische naam a. Deze scheiding van de symbolische naam van de schijf maakt het mogelijk om disks te verplaatsen van de ene locatie naar de andere, zonder verwarring te veroorzaken. De volume regel beschrijft een volume. Het enige benodigde attribuut is de naam: myvol. De plex regel beschrijft een samenstelling. Het enige benodigde attribuut is de organisatie, in dit geval concat. Er is geen naam nodig: het systeem genereert automatisch een naam door .px aan de volumenaam toe te voegen, waarbij x het nummer van de samenstelling in het volume is. De naam van deze samenstelling wordt dus myvol.p0. De sd regel beschrijft een subdisk. De minimale specificaties zijn de naam van een schijf waar de subdisk kan worden opgeslagen en de lengte van de subdisk. Net als bij een samenstelling is er geen naam nodig: het systeem genereert automatisch een naam door .sx aan de samenstellingnaam toe te voegen, waarbij x het nummer van de subdisk is. De naam van deze subdisk is dus myvol.p0.s0. Na het verwerken van deze definitie ziet de uitvoer van &man.vinum.8; er als volgt uit: &prompt.root; vinum -> create config1 Configuration summary Drives: 1 (4 configured) Volumes: 1 (4 configured) Plexes: 1 (8 configured) Subdisks: 1 (16 configured) D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%) V myvol State: up Plexes: 1 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB Deze uitvoer geeft de korte uitvoer van &man.vinum.8; weer. Het is grafisch weergegeven in .
Een Eenvoudig Vinum Volume
Deze en de volgende figuren stellen een volume voor dat samenstellingen bevat die weer de subdisks bevatten. In dit triviale voorbeeld bevat het volume een samenstelling en deze samenstelling bevat een subdisk. Dit speciale volume heeft geen voordeel boven een gewone schijf paritie. Het bevat één samenstelling, dus het is niet redundant. De samenstelling bevat één subdisk, dus er is geen verschil in de plaats van de data met een conventionele schijf partitie. In de volgende paragrafen worden meer interesante configuraties getoond.
Verbeterde Betrouwbaarheid: Spiegelen De betrouwbaarheid van een volume wordt vergroot door spiegelen. Bij het opzetten van een gespiegeld volume is het van belang dat subdisks van iedere samenstelling op een andere schijf staan, zodat een defecte schijf niet beide samenstellingen beïnvloedt. De volgende configuratie maakt een gespiegeld volume: drive b device /dev/da4h volume mirror plex org concat sd length 512m drive a plex org concat sd length 512m drive b In dit voorbeeld was het niet nodig om drive a opnieuw te definiëren, omdat Vinum alle objecten bijhoudt in de configuratie database. Na het verwerken van deze definitie, ziet de configuratie er als volgt uit: Drives: 2 (4 configured) Volumes: 2 (4 configured) Plexes: 3 (8 configured) Subdisks: 3 (16 configured) D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%) D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%) V myvol State: up Plexes: 1 Size: 512 MB V mirror State: up Plexes: 2 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB Het is grafisch weergegeven in .
Een gespiegeld Vinum Volume
In dit voorbeeld bevat iedere samenstelling de volledige 512 MB van de opslagcapaciteit. Net als in het vorige voorbeeld bevat iedere samenstelling slechts één subdisk.
Verbeterde Prestatie Het gespiegelde volume in het vorige voorbeeld is beter bestand tegen hardware fouten dan een niet-gespiegeld volume, maar de prestaties zijn lager: iedere schrijfactie naar het volume moet op beide schijven worden uitgevoerd, waardoor een groter deel van de bandbreedte van de schijf nodig is. Als prestaties een belangrijke rol spelen, moet er een andere benadering gekozen worden: in plaats van spiegelen wordt de data verdeeld over zoveel mogelijk schijven. De volgende configuratie laat een volume zien waarbij een samenstelling over vier schijven verdeeld is: drive c device /dev/da5h drive d device /dev/da6h volume stripe plex org striped 512k sd length 128m drive a sd length 128m drive b sd length 128m drive c sd length 128m drive d Zoals eerder al te zien was, is het niet nodig om drives die al bekend zijn bij Vinum opnieuw te definiëren. Na het verwerken van deze definitie, ziet de configuratie er zo uit: Drives: 4 (4 configured) Volumes: 3 (4 configured) Plexes: 4 (8 configured) Subdisks: 7 (16 configured) D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%) D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%) D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%) D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%) V myvol State: up Plexes: 1 Size: 512 MB V mirror State: up Plexes: 2 Size: 512 MB V striped State: up Plexes: 1 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB P striped.p1 State: up Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB S striped.p0.s0 State: up PO: 0 B Size: 128 MB S striped.p0.s1 State: up PO: 512 kB Size: 128 MB S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB
Een verdeeld Vinum Volume
Dit volume wordt weergegeven in . De grijstinten geven de positie binnen de samenstelling aan: de lichtste strepen komen het eerst, de donkerste het laatst.
Betrouwbaarheid en Prestaties Met voldoende hardware is het mogelijk om een volume te bouwen met zowel verbeterde betrouwbaarheid als verbeterde prestaties ten opzichte van een standaard &unix; partitie. De volgende configuratie is een voorbeeld van zo'n volume: volume raid10 plex org striped 512k sd length 102480k drive a sd length 102480k drive b sd length 102480k drive c sd length 102480k drive d sd length 102480k drive e plex org striped 512k sd length 102480k drive c sd length 102480k drive d sd length 102480k drive e sd length 102480k drive a sd length 102480k drive b De subdisks van de tweede samenstelling zijn twee schijven verschoven ten opzichte van die van de eerste samenstelling. Dit zorgt ervoor dat een schrijfactie niet naar dezelfde disks gaat, zelfs niet als die schrijfactie over twee schijven plaatsvindt. laat deze configuratie zien in grafische vorm.
Een gespiegeld en verdeeld Vinum Volume
Objectnamen Zoals eerder in dit hoofstuk beschreven staat, kent Vinum standaardnamen toe aan samenstellingen en subdisks. Er mag echter een andere naam aan gegeven worden. Een andere naamgeving wordt niet aangeraden: ervaring met de VERITAS volume manager, die een willekeurige object benaming toestaat, heeft laten zien dat deze flexibiliteit geen beduidend voordeel heeft, terwijl het de kans op verwarring vergroot. Namen mogen bestaan uit alle karakters, behalve de spatie, maar het wordt aanbevolen om alleen letters, cijfers en het liggende streepje te gebruiken. De namen van de volumes, samenstellingen en subdisks kunnen 64 tekens lang zijn en de namen van drives kunnen 32 tekens lang zijn. Vinum objecten worden device nodes toegekend in de /dev/vinum hiërarchie. Met de configuratie uit de vorige paragraaf creë Vinum de volgende nodes: De controle devices /dev/vinum/control en /dev/vinum/controld, die &man.vinum.8; en de Vinum daemon gebruiken. Blok en karakterdevice instellingen voor elk volume. Dit zijn de primaire devices die door Vinum gebruikt worden. De blokdevicenamen zijn de namen van het volume, terwijl de karakterdevicenamen de BSD benaming volgen door er de letter r voor te zetten. De zou de volgende blokdevices bevatten: /dev/vinum/myvol, /dev/vinum/mirror, /dev/vinum/striped, /dev/vinum/raid5 en /dev/vinum/raid10, en de karakterdevices /dev/vinum/rmyvol, /dev/vinum/rmirror, /dev/vinum/rstriped, /dev/vinum/rraid5 en /dev/vinum/rraid10. Hier zit duidelijk een probleem. Er kunnen twee volumes te zijn die r en rr heten, maar er ontstaat een confict als device node /dev/vinum/rr wordt aangemaakt: is het een karakterdevice voor volume r of een blokdevice voor volume rr? Nu heeft Vinum geen oplossing. Het volume dat het eerst gemaakt wordt, krijgt de naam. Een map /dev/vinum/drive met entries voor elke drive. Deze entries zijn eigenlijk symbolic links naar de bijbehorende schijfnodes. Een map /dev/vinum/volume met entries voor elk volume. Het bevat submappen voor elke samenstelling, die weer submappen voor de subdisks bevatten. De mappen /dev/vinum/plex, /dev/vinum/sd en /dev/vinum/rsd, die blokdevicenodes bevatten voor elke samenstelling en blok- en karakterdevicenodes voor elke subdisk daarvan. Dit is een volgend voorbeeld: drive drive1 device /dev/sd1h drive drive2 device /dev/sd2h drive drive3 device /dev/sd3h drive drive4 device /dev/sd4h volume s64 setupstate plex org striped 64k sd length 100m drive drive1 sd length 100m drive drive2 sd length 100m drive drive3 sd length 100m drive drive4 Na verwerking maakt &man.vinum.8; de volgende structuur aan in /dev/vinum: brwx------ 1 root wheel 25, 0x40000001 Apr 13 16:46 Control brwx------ 1 root wheel 25, 0x40000002 Apr 13 16:46 control brwx------ 1 root wheel 25, 0x40000000 Apr 13 16:46 controld drwxr-xr-x 2 root wheel 512 Apr 13 16:46 drive drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 rs64 drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rsd drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rvol brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64 drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd drwxr-xr-x 3 root wheel 512 Apr 13 16:46 vol /dev/vinum/drive: total 0 lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive1 -> /dev/sd1h lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive2 -> /dev/sd2h lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive3 -> /dev/sd3h lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive4 -> /dev/sd4h /dev/vinum/plex: total 0 brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0 /dev/vinum/rsd: total 0 crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0 crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1 crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2 crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3 /dev/vinum/rvol: total 0 crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64 /dev/vinum/sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1 brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2 brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3 /dev/vinum/vol: total 1 brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64 drwxr-xr-x 3 root wheel 512 Apr 13 16:46 s64.plex /dev/vinum/vol/s64.plex: total 1 brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0 drwxr-xr-x 2 root wheel 512 Apr 13 16:46 s64.p0.sd /dev/vinum/vol/s64.plex/s64.p0.sd: total 0 brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0 brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1 brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2 brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3 Hoewel het wordt aangeraden om samenstellingen en subdisks geen naam mee te geven, moeten Vinum drives een naam hebben. Hierdoor kan een drive naar een andere locatie verplaatst worden terwijl hij nog steeds automatisch herkend wordt. Drive namen mogen maximaal 32 tekens lang zijn. Bestandssystemen Maken Volumes lijken voor het systeem identiek aan schijven, met één uitzondering: in tegenstelling tot &unix; schijven partitioneert Vinum het volume niet en het bevat dus geen partitietabel. Daarom was het nodig een paar disk hulpprogramma's te veranderen, met name &man.newfs.8;, dat voorheen probeerde om de laatste letter van een Vinum volumenaam als een partitie te zien. Bijvoorbeeld: een schijf kan een naam hebben als /dev/ad0a of /dev/da2h. Deze namen stellen respectievelijk de eerste partitie (a) op de eerste (0) IDE schijf (ad) en de achtste partitie (h) op de derde (2) SCSI schijf (da) voor. Een Vinum volume kan daarintegen /dev/vinum/concat heten. Een naam die geen enkele relatie met een partitienaam heeft. Normaliter klaagt &man.newfs.8; als het de naam van de schijf niet kan interpreteren. Bijvoorbeeld: &prompt.root; newfs /dev/vinum/concat newfs: /dev/vinum/concat: can't figure out file system partition Het volgende geldt alleen voor versies van &os; 4.X en lager: Om een bestandsysyteem op dit volume te maken moet de van &man.newfs.8; gebruikt worden: &prompt.root; newfs -v /dev/vinum/concat Vinum Configureren De GENERIC kernel bevat geen Vinum. Het is mogelijk een kernel te bouwen waar Vinum in zit, maar dit wordt niet aangeraden. De standaard manier om Vinum te starten is als kernelmodule (kld). Het is zelfs niet nodig om &man.kldload.8; te gebruiken voor Vinum. Als &man.vinum.8; wordt gestart en de module is niet geladen, dan gebeurt dit alsnog automatisch. Opstarten Vinum slaat de configuratie informatie op op de disk slices in ongeveer dezelfde vorm als de configuratiebestanden. Bij het lezen van de configuratie database herkent Vinum een aantal aleutelwoorden die niet zijn toegestaan in configuratiebestanden. Een diskconfiguratie kan bijvoorbeeld de volgende tekst bevatten: volume myvol state up volume bigraid state down plex name myvol.p0 state up org concat vol myvol plex name myvol.p1 state up org concat vol myvol plex name myvol.p2 state init org striped 512b vol myvol plex name bigraid.p0 state initializing org raid5 512b vol bigraid sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b Duidelijke verschillen zijn de aanwezigheid van explicite locatie informatie en namen (beide zijn toegestaan, maar worden afgeraden) en informatie over de toestand (die niet beschikbaar is voor de gebruiker). Vinum slaat geen informatie over drives op in de configuratie: het vindt de drives door de geconfigureerde schijven te scannen naar partities met een vinum label. Hierdoor kan Vinum zelfs drives detecteren als ze aan een andere &unix; schijf worden toegekend. Automatisch Opstarten Om Vinum automatisch te laten starten als het systeem geboot wordt, moet de volgende regel in het /etc/rc.conf bestand staan: start_vinum="YES" # set to YES to start vinum Als het /etc/rc.conf bestand niet bestaat, moet het gemaakt worden met de bovengenoemde inhoud. Hierdoor laadt het systeem de Vinum kld tijdens het starten en worden de objecten uit de configuratie ook gestart. Dit gebeurt voordat de bestandssystemen gemount worden. &man.fsck.8; kan dus automatisch draaien en bestandssystemen op Vinum volumes kunnen gemount worden. Als Vinum met vinum start wordt gestart, leest Vinum de configuratie database van één van de Vinum drives. Normaal gesproken bevat iedere drive een identieke kopie van de configuratie database. Het maakt dus niet uit welke drive gelezen wordt. Na een crash moet Vinum echter bepalen welke drive het laatst is bijgewerkt en de configuratie van die drive gebruiken. Als het nodig is wordt de configuratie van de oudere drives daarna bijgewerkt, in volgorde van leeftijd. Het Root Bestandssysteem op Vinum Bij een machine die een volledig gespiegeld bestandssysteem heeft, is het wenselijk ook het root bestandssysteem te spiegelen. Het bouwen van zo'n configuratie is niet zo recht-toe-recht-aan als bij een ander bestandssysteem omdat: Het root bestandssysteem al heel snel beschikbaar moet zijn tijdens het opstartproces, dus de Vinum infrastructuur moet dan al beschikbaar zijn. Het volume met het root bestandssysteem bevat ook de bootstrap en de kernel, die gelezen moeten worden door de eigen systeemprogramma's (bijvoorbeeld de BIOS op PC's), die meestal geconfigureerd kunnen worden om Vinum te gebruiken. In de volgende paragrafen wordt de term root volume gebruikt voor het Vinum volume dat het root bestandssysteem bevat. Het is waarschijnlijk een goed idee om de naam root te gebuiken voor dit volume, maar dit is niet technisch noodzakelijk. Alle commandovoorbeelden in de volgende stukken gaan echter uit van deze naam. Vinum op Tijd Starten voor het root Bestandssysteem Om dit te bereiken, moeten een aantal stappen worden doorlopen: Vinum moet beschikbaar zijn voor de kernel tijdens het opstarten. De methode zoals beschreven in is dus niet geschikt en de start_vinum parameter mag zelfs niet aanwezig zijn als de volgende opzet wordt gebruikt. De eerste optie is Vinum statisch in de kernel te compileren, zodat het altijd beschikbaar is. Maar die is vaak niet wenselijk. Er is nog een mogelijkheid door /boot/loader () de Vinum kernel module te laten laden, voordat de kernel gestart wordt. Dit wordt gedaan door de volgende regel in /boot/loader.conf op te nemen: vinum_load="YES" Vinum moet in een vroeg stadium geïnitialiseerd worden om het volume voor het root bestandssysteem te kunnen leveren. De Vinum kernel module gaat niet uit zichzelf op zoek naar drives die mogelijk een Vinum volume kunnen bevatten totdat de administrator (of een van de opstartscripts) een vinum start commando geeft. De volgende paragrafen laten de benodigde stappen zien voor &os; 5.X. De stappen voor &os; 4.X zijn anders, zoals wordt uitgelegd in . Door de ondestaande regel in /boot/loader.conf te zetten, zoekt Vinum automatisch alle drives af naar Vinum informatie als onderdeel van het starten van de kernel: vinum.autostart="YES" Het is dus niet nodig om de kernel te vertellen waar het root bestandssysteem staat. /boot/loader zoekt de naam voor het root device op in /etc/fstab en geeft deze informatie door aan de kernel. Op het moment dat het root bestandssysteem gemount moet worden, haalt de kernel uit de devicenaam welke driver gebuikt moet worden om dit te vertalen naar het interne device ID (major/minor number). Een Vinum Root Volume Beschikbaar Maken voor Bootstrap Omdat de huidige &os; bootstrap maar 7,5 KB code bevat en al belast is met het lezen van bestanden (zoals /boot/loader) van het UFS bestandssysteem, is het bijna onmogelijk om het ook te leren hoe Vinum informatie gelezen moet worden en deze dan te gebruiken om de elementen van het boot volume samen te stellen. Er zijn daarom een paar trucs nodig om de bootstrap code wijs te maken dat er een standaard "a" partitie aanwezig is met het root bestandssysteem. Om dit mogelijk te maken, moet het root volume aan de volgende eisen voldoen: Het root volume mag niet verdeeld of RAID-5 zijn. Het root volume mag niet meer dan één aaneengeschakelde subdisk per samenstelling bevatten. Het is mogelijk en wenselijk om meer dan één samenstelling te hebben, ieder met een replica van het root bestandssysteem. Het bootstrap proces gebruikt wel maar één van deze replica's om de bootstrap en alle andere bestanden te vinden, tot het moment dat de kernel het root bestandssysteem laadt. Iedere subdisk binnen deze samenstellingen heeft dus zijn eigen "a" partitievoorstelling nodig om dit device bootbaar te maken. Het is niet verplicht dat iedere voorgestelde "a" partitie op dezelfde offset is geplaatst binnen het device, vergeleken met andere devices die samenstellingen van het root volume bevatten. Het is wel een goed idee om op die manier Vinum volumes te maken, zodat de resulterende gespiegelde devices symmetrisch zijn. Dit om verwarring te voorkomen. Om deze "a" partities voor ieder device dat een deel van het root volume bevat te maken, moet het volgende worden gedaan: De locatie (offset vanaf het begin van het device) en de grootte van de subdisk die onderdeel is van het root volume moet als volgt bekeken worden: &prompt.root; vinum l -rv root De Vinum offsets en groottes worden aangegeven in bytes. Ze moeten door 512 worden gedeeld om de bloknummers te krijgen die in disklabel moeten worden gebruikt. Voor elk device dat deelneemt aan het root bestandssysteem moet het onderstaande command uitgevoerd worden: &prompt.root; disklabel -e devname devname moet of de naam van een disk (zoals da0) voor schijven zonder slice-tabel zijn (ook wel: fdisk), of de naam van de slice zijn (zoals ad0s1). Als er al een "a" partitie op het device aanwezig is (waarschijnlijk met een pre-Vinum root bestandssysteem), moet die eerst worden hernoemd, zodat het wel toegankelijk blijft (voor de zekerheid), maar niet langer gebruikt wordt om het systeem van op te starten. Actieve paritities (zoals een root bestandssysteem dat op dit moment gemount is) kan geen andere naam gegeven worden. Dit moet dus gebeuren als het systeem vanaf een Fixit medium opgestart is of in twee stappen, waar (in een gespiegelde situatie) de disk waar niet van geboot is als eerste wordt aangepast. Daarna moet de offset van de Vinum partitie op dit device (als het bestaat) opgeteld worden bij de offset van de root volume subdisk op dit device. De resulterende waarde wordt de "offset" waarde voor de nieuwe "a" partitie. De "size" waarde voor deze partitie kan worden gehaald uit bovenstaande berekening. De "fstype" wordt 4.2BSD. De "fsize", "bsize" en "cpg" waardes moeten zo goed mogelijk worden gekozen om een daadwerkelijk bestandssysteem na te bootsen, hoewel ze vrij onbelangrijk zijn in deze context. Op deze manier wordt een nieuwe "a" partitie gemaakt dat de Vinum partitie op dit device overlapt. Het disklabel staat deze overlap alleen toe als de Vinum partitie gemarkeerd is met het fstype "vinum". Dat is het! Er bestaat nu een nep "a" partitie op ieder device dat een replica van het root volume heeft. Het is aan te bevelen om de resultaten nogmaals te verifieren met iets als: &prompt.root; fsck -n /dev/devnaama Alle bestanden die controle informatie bevatten moeten relatief zijn ten opzichte van het root bestandssysteem in het Vinum volume dat, bij het creëren van een Vinum volume, niet overeen hoeft te komen met het root bestandssysteem dat op dit moment in gebruik is. Dit geldt in het bijzonder voor /etc/fstab en /boot/loader.conf. Bij de volgende herstart zou de bootstrap de juiste controle informatie moeten vinden in het nieuwe, op Vinum gebaseerde, root bestandssysteem en moeten starten. Aan het einde van het kernel initialisatie proces, nadat alle devices aangemeld zijn, geeft het volgende bericht aan dat het opzetten gelukt is: Mounting root from ufs:/dev/vinum/root Een op Vinum Gebaseerde Root Setup Nadat het Vinum root volume is opgezet, geeft vinum l -rv root een volgend resultaat: ... Subdisk root.p0.s0: Size: 125829120 bytes (120 MB) State: up Plex root.p0 at offset 0 (0 B) Drive disk0 (/dev/da0h) at offset 135680 (132 kB) Subdisk root.p1.s0: Size: 125829120 bytes (120 MB) State: up Plex root.p1 at offset 0 (0 B) Drive disk1 (/dev/da1h) at offset 135680 (132 kB) De interessante waarden zijn 135680 voor de offset (relatief ten opzichte van de partitie /dev/da0h). Dit vertaalt zich naar 265 512-byte disk blocks in disklabel's termen. Zo is de grootte van dit root volume 245760 512-byte blocks. /dev/da1h, dat de tweede replica van dit root volume bevat, is symmetrische opgezet. Disklabel voor deze devices kan er zo uitzien: ... 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*) c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*) h: 71771672 16 vinum # (Cyl. 0*- 4467*) Hieruit blijkt dat de "size" parameter voor de nep "a" partitie overeenkomt met de waarde als hierboven beschreven en dat de "offset" parameter de som is van de offset binnen de Vinum partitie "h" en de offset van deze partitie binnen het device (of de slice). Dit is een normale opzet om problemen te voorkomen zoals in beschreven is. Verder blijkt dat de hele "a" partitie volledig binnen de "h" partitie valt die alle Vinum data voor dit device bevat. In het bovenstaande voorbeeld is de volledige schijf voor Vinum gereserveerd en er is geen restant van de pre-Vinum root partitie, omdat dit een nieuwe schijf is die vanaf het begin af aan bedoeld was als onderdeel van een Vinum configuratie. Problemen Oplossen Als er iets fout gaat moet er een manier zijn om dat te herstellen. De volgende lijst bevat een paar bekende valkuilen en oplossingen. Systeem Bootstrap Laadt, Maar Systeem Start Niet Door Als om wat voor reden dan ook het systeem niet doorgaat met opstarten, kan de bootstrap worden onderbroken door de spatie toets in te drukken tijdens de 10 seconden waarschuwing. Dan kunnen de loader variabelen (zoals vinum.autostart) bekeken worden met behulp van show en aangepast worden met set of unset. Als het enige probleem was dat de Vinum kernel module nog niet in de lijst van modules staat die automatisch geladen wordt, dan moet load vinum voldoende zijn. Als alles in orde is, kan het bootproces doorgestart worden met boot -as. De opties geven de kernel aan om het root bestandssysteem te vragen (), en het boot proces te stoppen in single-user mode (), waarbij het root bestandssysteem als read-only gemount wordt. Op die manier is er geen risico op data inconsistentie tussen de samenstellingen, zelfs niet als er maar één samenstelling van een multi-samenstellingen volume gemount is. Op de prompt, waar om het root bestandssysteem gevraagd wordt, kan ieder device dat een valide root bestandssysteem bevat worden opgegeven. Als /etc/fstab goed is opgezet, is iets als ufs:/dev/vinum/root te zien. Een andere keuze kan ufs:da0d zijn, dat een hypothetische partitie is die het pre-Vinum root bestandssysteem bevat. Als één van de alias "a" partities ingevuld wordt die eigenlijk een referentie naar de subdisk van het Vinum root device zijn, dan wordt in een gespiegelde setup maar éé kant van het gespiegelde volume gemount. Als dit bestandssysteem later als read-write gemount wordt, moet(en) de andere samenstelling(en) van het root volume verwijderd worden, omdat deze samenstellingen anders inconsistente data bevatten. Alleen Primaire Bootstrap Laadt Als /boot/loader niet start, maar de primaire bootstrap laadt wel (zichtbaar door een enkel minnetje in de linker bovenhoek van het scherm, direct na de start van het boot proces), kan worden geprobeerd het primaire boot proces te onderbreken door op de spatie toets te drukken. Dit zorgt ervoor dat het boot proces stopt bij de tweede fase (zie ook ). Hier kan worden geprobeerd vanaf een andere partitie te starten, bijvoorbeeld van de partitie waar het vorige root bestandssysteem op stond, dat nu van de "a" verplaatst is. Niets start, Paniek van Bootstrap Dit gebeurt als de bootstrap is vernietigd door de Vinum installatie. Helaas laat Vinum op dit moment slechts 4 KB vrij aan het begin van zijn paritie voordat de Vinum volume identificatie geschreven wordt. De stage 1 en 2 bootstraps en de disklabel informatie hebben ongeveer 8 KB nodig. Dus als de Vinum partitie op offset 0 van de slice van de schijf begint die als bootbaar was bedoeld, zal deze Vinum informatie de bootstrap vernielen. Als bovenstaande situatie is omzeild, bijvoorbeeld door te starten vanaf een Fixit medium, en de bootstrap opnieuw is aangemaakt met disklabel -B zoals beschreven in , overschrijft de nieuwe bootstrap de Vinum identificatie en kan Vinum de Vinum disks niet langer vinden. Hoewel geen Vinum configuratie data of data in de Vinum volumes overschreven wordt en alle data hersteld kan worden door precies dezelfde Vinum configuratie data opnieuw in te vullen, is dit een lastige situatie om te herstellen. Het zou nodig zijn om de complete Vinum parititie tenminste 4 KB te verplaatsen, om te voorkomen dat de Vinum identificatie en de bootstrap met elkaar botsen. Verschillen met &os; 4.X In &os; 4.X missen sommige interne functies die nodig zijn om Vinum automatisch alle disks te laten scannen en de code die het interne ID van de root device achterhaalt is niet slim genoeg om met een naam als /dev/vinum/root om te gaan. Daarom zijn er een paar verschillen ten opzichte van &os; 5.X. Vinum moet expliciet verteld worden welke disks bekeken moeten worden door iets als het volgende in /boot/loader.conf: vinum.drives="/dev/da0 /dev/da1" Het is belangrijk dat alle schijven die Vinum data kunnen bevatten genoemd worden. Het maakt niet uit of er meer schijven genoemd worden en het is ook niet nodig om iedere slice en/of partitie expliciet op te geven, omdat Vinum alle slices en paritities van de genoemde schijven afgaat voor valide Vinum identificatie informatie. Omdat de routines die de naam van het root bestandssysteem verwerken en daar het device ID (major/minor nummers) uit halen alleen maar met de klassieke devicenamen als /dev/ad0s1a overweg kunnen, kunnen ze niets maken van een root volume naam als /dev/vinum/root. Daarom moet Vinum zelf de interne kernel parameter dat het ID van het root volume bevat aanpassen tijdens zijn eigen initialisatie. Dit gaat door de naam van het root volume op te geven in de loader variable vinum.root. Dit ziet er in /boot/loader.conf zo uit: vinum.root="root" Als de kernel initialisatie probeert uit te vinden welk root device gemount moet worden, ziet het dat sommige kernelmodules al parameters gezet hebben. In dat geval en als het device dat het root device claimt hetzelfde major nummer heeft als de driver die gevonden is uit de naam van het root device (Vinum in dit geval), dan gebruikt het het van te voren gedefinieerde device ID, in plaats van het zelf proberen uit te vinden. Zo kan het normale automatische boot process doorgaan met het mounten van het Vinum root volume voor het root bestandssysteem. Maar als boot -a is gegeven om de naam van het root device te vragen, kan het nog steeds niet overweg met een naam die refereert aan een Vinum volume. Als er een devicenaam is gegeven die niet refereert aan een Vinum device, dan zorgt het verschil tussen de major nummers van de van te voren ingestelde root parameter en de driver zoals die uit de gegeven naam wordt afgeleid ervoor dat deze routine zijn eigen afgeleide naam gebruikt. Invoer als ufs:da0d werkt zoals verwacht. Als dit mislukt, is het niet meer mogelijk om nogmaals iets als ufs:vinum/root in te voeren, omdat het niet een tweede keer verwerkt kan worden. De enige uitweg is het systeem opnieuw te starten en opnieuw te beginnen. Op de askroot prompt kan /dev/ altijd achterwege gelaten worden.
diff --git a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml index f06af66dea..b931d09c2b 100644 --- a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml @@ -1,1924 +1,1926 @@ Ken Tom Geupdate voor X.Org's X11 server door Marc Fonvieille Erik Radder Vertaald door Het X Window Systeem - Samenvatting + Overzicht &os; gebruikt X11 om gebruikers een krachtige grafische gebruikersschil te bieden. X11 is een open-source implementatie van het X Window System dat zowel &xorg; als &xfree86; bevat. &os; versies tot en met &os; 4.10-RELEASE en &os; 5.2.1-RELEASE hebben &xfree86; als standaard, de X11 server die is uitgebracht door The &xfree86; Project, Inc. Vanaf &os; 5.3-RELEASE is de officiële standaardversie van X11 gewijzigd naar &xorg;, de X11 server die is ontwikkeld door de X.Org Foundation. In dit hoofdstuk wordt de installatie en instelling van X11 behandeld met de nadruk op &xorg;. Meer informatie over de videohardware die X11 ondersteunt kan gevonden worden op &xorg; of &xfree86; websites. Na het lezen van dit hoofdstuk weet de lezer: Wat de componenten van het X Window systeem zijn en hoe zij samenwerken. Hoe X11 geïnstalleerd en ingesteld kan worden. Hoe verschillende window managers geïnstalleerd en gebruikt kunnen worden. Hoe &truetype; lettertypen in X11 te gebruiken. Hoe het systeem ingesteld moet worden voor grafisch aanmelden (XDM). Aangeraden voorkennis: Hoe extra software van derden te installeren (). In dit hoofdstuk wordt het installeren en instellen van de &xorg; en &xfree86; X11 servers behandeld. De bestanden met instellingen, commando's en syntaxis is overwegend hetzelfde. Waar dat anders is wordt het aangegeven. X Begrijpen X voor de eerste keer gebruiken kan een hele schok zijn voor mensen die gewend zijn aan andere grafische omgevingen, zoals µsoft.windows; of &macos;. Het is niet noodzakelijk om alle details te kennen over de X componenten en hoe zij samenwerken, maar enige basiskennis draagt wel bij aan krachtiger gebruik kunnen maken van X. Waarom X? X is niet het eerste windows systeem dat geschreven is voor &unix;, maar wel het meest populaire. Het oorspronkelijke X ontwikkelteam werkte eerst aan een ander window systeem. De naam van dat systeem was W (van Window). X was gewoon de volgende letter in het alfabet. X kan gewoon X, X Window Systeem, X11 of nog anders genoemd worden. X11 X Windows noemen kan door sommigen als een belediging opgevat worden. &man.X.7; kan hierover wat licht laten schijnen. Het X Client/Server Model X is vanaf het begin aan ontworpen om netwerk-centraal te zijn en gebruikt een client-server model. In het X model, draait de X server op de computer waar het toetsenbord, beeldscherm en muis aan vast zit. De server is verantwoordelijk voor het regelen van beeldinformatie, verwerken van invoer van toetsenbord en muis, enzovoort. Iedere X applicatie (zoals XTerm, of &netscape;) is een client. Een client stuurt berichten naar de server zoals teken een venster op deze coördinaten en de server stuurt berichten terug zoals de gebruiker heeft op de OK knop gedrukt. - Thuis of in kleine bedrijven is draaien zowel de X server - als de X clients op dezelfde machine. Het is heel goed mogelijk + Thuis of in kleine bedrijven draaien zowel de X server als + de X clients op dezelfde machine. Het is heel goed mogelijk dat de X server op een minder krachtige desktop computer draait en de X applicaties (de clients) op een, zeg maar, dure krachtige machine van het bedrijf. Hier vindt de communicatie tussen de X client en server plaats over het netwerk. Dit verwart sommige mensen, omdat de X terminologie geheel omgekeerd is aan wat ze verwachten. Dat is namelijk dat de X server de grote krachtige machine aan het eind van de gang is en de X client de machine op hun bureau is. De X server is de machine met het beeldscherm en het toetsenbord en de X clients zijn de programma's die de vensters tonen. Het protocol vereist niet dat de clients en servers hetzelfde besturingssysteem moeten draaien of hetzelfde soort computer moeten zijn. Het is heel goed mogelijk om X server op een µsoft.windows; of Apple's &macos; te draaien en er zijn verschillende gratis en commerciële applicaties die dat doen. &xorg;, zit vanaf &os; 5.3-RELEASE als standaard X server bij &os; en is gratis onder een gelijksoortig licentie als de &os; licentie. Er zijn ook commerciële X servers voor &os; verkrijgbaar. De Window Manager De filosofie van het X ontwerp lijkt veel op die van &unix;: gereedschappen, geen beleid. Dit houdt in dat X niet bepaalt hoe een taak volbracht moet worden. In plaats daarvan worden gereedschappen geleverd aan de gebruiker die verantwoordelijk is voor het juiste gebruik hiervan. Deze filosofie verbreedt zich door X niet te laten bepalen hoe vensters er moeten uitzien op het scherm, hoe ze verplaatst moeten worden met de muis, welke toetsaanslagen gebruikt moeten worden om te schakelen tussen vensters (bijvoorbeeld AltTab in het geval van µsoft.windows;), hoe de titelbalken eruit moeten zien, of ze wel of niet sluitknoppen moeten hebben, enzovoort. In plaats daarvan delegeert X deze verantwoordelijkheid aan een applicatie die Window Manager heet. Er zijn tientallen window managers voor X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker en vele anderen. Elk van deze window managers heeft een eigen voorkomen en werking. Er zijn window managers met virtual desktops of met eigen toetscombinaties om de desktop te beheren; of hebben een Start knop of iets gelijksoortigs. Sommige gebruiken thema's die uiterlijk en beleving compleet veranderen door een nieuw thema te kiezen. Window managers zijn te vinden in de categorie x11-wm van de Portscollectie. De KDE en GNOME desktop omgevingen hebben hun eigen window managers die in het bureaublad zijn geïntegreerd. Iedere windows manager heeft zijn eigen manier van instellen. Sommige werken met handgetypte bestanden, anderen beschikken over grafische gereedschappen voor de meeste instellingen. Er is er minstens één (Sawfish) waarvan het instellingenbestand is geschreven in een dialect van de taal Lisp. Focusbeleid De window manager is ook verantwoordelijk voor het focusbeleid van de muis. Ieder window geörienteerd systeem heeft een manier nodig om te bepalen welk venster actief is, toetsaanslagen ontvangt en daarbij zichtbaar aangeeft welk venster actief is. Een bekend focus beleid heet click-to-focus. Dit model wordt gebruikt door µsoft.windows;, waarbij een venster actief wordt door er met de muis op te klikken. X ondersteunt geen specifiek focusbeleid. In plaats daarvan bepaalt de window manager op welk venster, op welk moment, de focus ligt. Een aantal window managers ondersteunen verschillende focusmethoden. Ze ondersteunen allemaal click to focus en de meerderheid ondersteunt ook nog andere. De meest populaire zijn: focus-volgt-muis (focus-follows-mouse) Het venster dat onder de muis zit is het venster waarop de focus ligt. Dit hoeft niet het venster te zijn dat bovenop alle andere vensters ligt. De focus verandert door te wijzen naar een ander venster. Het is niet nodig om er ook nog eens op te klikken. slordige-focus (sloppy-focus) Dit beleid is een kleine uitbreiding op focus-follows-mouse. Indien bij focus-follows-mouse de muis over het root venster (of de achtergrond) gaat, ligt op geen enkel venster de focus en gaan alle toetsaanslagen verloren. Bij sloppy-focus, verandert de focus alleen als de muis in een nieuw venster komt en niet als het huidige venster wordt verlaten. klik-voor-focus (click-to-focus) Het actieve venster wordt geselecteerd door erop te klikken. Het venster wordt dan opgetild en verschijnt dan voor alle andere vensters. Alle toetsaanslagen worden nu naar dit venster gestuurd, zelfs als de cursor naar een ander scherm wordt verplaatst. Veel window managers ondersteunen andere soorten of variaties op de bovenstaande typen muisbeleid. Hierover staat meestal meer in de documentatie van de betreffende window manager. Widgets De X aanpak door gereedschappen te leveren en niets af te dwingen breidt zich uit naar de widgets die in elk applicatievenster te zien zijn. Widget is een term voor alle dingen van de gebruikersinterface waarop geklikt kan worden of een andere actie mee uitgevoerd kan worden: knoppen, vinkvakjes, iconen, lijsten en ga zo maar door. µsoft.windows; noemt ze controls. µsoft.windows; en Apple's &macos; hebben beide een erg strikt widgetbeleid. Van de applicatieontwikkelaars wordt verwacht dat hun applicaties eenduidig zijn wat betreft uiterlijk en beleving. Bij X is ervoor gekozen geen grafische stijl of widgets te verplichten. X applicaties hebben dus niet allemaal hetzelfde uiterlijk. Er zijn populaire widgetsets en variaties, inclusief de originele Athena widgetset van MIT, &motif; (waarvan de widgetset van µsoft.windows; is afgeleid: schuine randen en drie gradaties grijs), OpenLook en anderen. De meeste nieuwe X applicaties gebruiken een modern uitziende widgetset: Qt, gebruikt door KDE, of GTK+ van het GNOME project. Vanuit dit oogpunt lijkt het enigzins op de &unix; desktop, wat het makkelijker maakt voor de beginnende gebruiker. X11 Installeren Zowel &xorg; als &xfree86; kan op &os; geïnstalleerd worden. Vanaf &os; 5.3-RELEASE is &xorg; de standaard X11 implementatie voor &os;. &xorg; is - de X11 server van de X11R6.7 distributie die is uitgebracht door - X.Org Foundation. X11R6.7 is gebaseerd op de code van + de X11 server van de open source implementatie die is uitgebracht + door de X.Org Foundation. &xorg; is + gebaseerd op de code van &xfree86 4.4RC2 en X11R6.6. De X.Org Foundation heeft X11R6.7 uitgebracht in april - 2004. + 2004 en X11R6.8.1 in september 2004. De laatstgenoemde versie + is beschikbaar via de &os; portscollectie. Om &xorg; vanuit de portscollectie te bouwen en te installeren: &prompt.root; cd /usr/ports/x11/xorg &prompt.root; make install clean Om &xorg; compleet te bouwen is tenminste 4 GB vrije schijfruimte nodig. Om &xfree86; vanuit de portscollectie te bouwen en te installeren: &prompt.root; cd /usr/ports/x11/XFree86-4 &prompt.root; make install clean X11 kan ook als package geïnstalleerd worden doordat er binaire packages beschikbaar zijn voor &man.pkg.add.1;. Als hiervoor de optie remote fetching van &man.pkg.add.1; wordt gebruikt, dan moet het versienummer verwijderd worden. &man.pkg.add.1; haalt automatisch de laatste versie van het programma op. Om het package voor &xorg; op te halen en te installeren: &prompt.root; pkg_add -r xorg Het &xfree86; 4.X package kan geïnstalleerd worden met: - &prompt.root; pkg-add -r XFree86 + &prompt.root; pkg_add -r XFree86 Het voorbeeld hierboven installeert de complete X11 distributie inclusief de servers, clients, lettertypen enz. Er zijn ook afzondelijke packages en ports beschikbaar voor verschillende delen van X11. De rest van dit hoofdstuk licht toe hoe X11 wordt ingesteld en hoe een productieve desktopomgeving gebouwd kan worden. Van <application>&xfree86;</application> naar <application>&xorg;</application> Zoals voor iedere port, moet /usr/ports/UPDATING bekeken worden voor de wijzigingen. In dit bestand staan instructies die nodig zijn om een systeem te migreren van &xfree86; naar &xorg;. CVSup kan gebruikt worden om de ports tree bij te werken voordat er wordt begonnen met een migratie. Naast deze maatregel moet ook sysutils/portupgrade geïnstalleerd worden voor de migratie van een X11 systeem. In /etc/make.conf kan de variabele X_WINDOW_SYSTEM=xorg ingesteld worden. Hierdoor is het zeker dat een systeem weet welke X11 er wordt gebruikt. De oude variabele XFREE86_VERSION is komen te vervallen en vervangen door de variabele X_WINDOW_SYSTEM. Dan kunnen de volgende commando's uitgevoerd worden: &prompt.root; pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-* &prompt.root; cd /usr/ports/x11/xorg &prompt.root; make install clean &prompt.root; pkgdb -F &man.pkgdb.1; is onderdeel van de portupgrade software en kan packages inclusief afhankelijkheden bijwerken. Om &xorg; compleet te bouwen is tenminste 4 GB vrije schijfruimte nodig. Christopher Shumway Bijgedragen door X11 Instellen &xfree86; 4.X &xfree86; &xorg; X11 Voorbereiding Voordat er wordt begonnen met het instellen van X11 is de volgende informatie van de te installeren machine nodig: Monitor specificaties Chipset van de videokaart Geheugen van de videokaart horizontale scansnelheid verticale scansnelheid De specificaties van de monitor worden door X11 gebruikt om de resolutie en ververssnelheid te bepalen. Deze specificaties kunnen normaal gesproken verkregen worden uit de bij de monitor geleverde documentatie of van de website van de leverancier. Er zijn twee nummerreeksen nodig: de horizontale scansnelheid (scan rate) en de vertikale syncronisatiesnelheid (vertical synchronization). De chipset van de videokaart bepaalt welke driver X11 gebruikt om de grafische hardware aan te spreken. Bij de meeste chipsets kan dit automatisch bepaald worden, maar het is altijd handig om dit te weten voor het geval de automatische detectie niet correct werkt. Het geheugen op de videokaart bepaalt de resolutie en kleurdiepte waarmee het systeem kan werken. Dit is belangrijk omdat de gebruiker zo de grenzen van zijn systeem kent. X11 Instellen Het instellen van X11 bestaat uit meerdere stappen. De eerste stap is het bouwen van een instellingenbestand. Dit kan met: &prompt.root; Xorg -configure In het geval van &xfree86; is dat: &prompt.root; XFree86 -configure Dit genereert een kaal X11 instellingbestand in de map /root met de naam xorg.conf.new. Feitelijk wordt bepaald waar de map staat door hoe er superuser rechten zijn verkregen. $HOME is anders bij gebruik van &man.su.1; of bij direct aanmelden. Het X11 programma probeert dan de grafische hardware te detecteren en schrijft een instellingenbestand dat de juiste drivers laadt voor de gevonden hardware van het systeem. De volgende stap is het testen van de bestaande configuratie om te controleren of &xorg; met de grafische kaart van het doelsysteem kan werken. Dit kan met: &prompt.root; Xorg -config xorg.conf.new Voor &xfree86; gebruikers: &prompt.root; XFree86 -xf86config XF86Config.new Als er een zwart/grijs rooster en een X muis cursor verschijnen was de configuration successvol. Om de test te stoppen dient gelijktijdig op CtrlAlt Backspace gedrukt te worden. Als de muis niet werkt, dan moet deze eerst ingesteld worden. Zie in het &os; installatie hoofdstuk. - X11 Optimaliseren + X11 optimaliseren Nu moet xorg.conf.new (of XF86Config.new als &xfree86; wordt gebruikt) worden aangepast aan de smaak van de gebruiker. Hiervoor moet het bestand in een teksteditor zoals &man.emacs.1; of &man.ee.1; worden geladen. Eerst moeten de frequenties van de monitor toegevoegd worden. Die zijn meestal weergegeven als horizontale en vertikale synchronisatiesnelheid. Deze waarden worden toegevoegd aan xorg.conf.new in het onderdeel "Monitor": Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" HorizSync 30-107 VertRefresh 48-120 EndSection In het instellingenbestand kunnen de sleutelwoorden HorizSync en VertRefresh missen. Als ze er niet staan, moeten ze toegevoegd worden met de juiste horizontale synchronisatiesnelheid achter het HorizSync sleutelwoord en de vertikale synchronisatiesnelheid achter het VertRefresh sleutelwoord. In het bovenstaande voorbeeld werden de gegevens van de monitor ingevoerd. X kan DPMS (Energy Star) eigenschappen gebruiken bij monitoren die dit ondersteunen. &man.xset.1; regelt de time-outs en kan de statussen standby, suspend of uit forceren. Om DPMS eigenschappen voor een monitor te activeren, moet de volgende regel toegevoegd worden aan de monitor sectie: Option "DPMS" xorg.conf XF86Config Als het instellingenbestand xorg.conf.new (of XF86Config.new) toch open staat in de editor dan kan ook meteen de gewenste standaardresolutie en kleurdiepte gekozen worden. Dit staat in het onderdeel "Screen": Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" EndSubSection EndSection Het sleutelwoord DefaultDepth beschrijft de kleurdiepte die standaard wordt gebruikt. Met de commandoregeloptie van &man.Xorg.1; (of &man.XFree86.1;) kan dit overschreven worden. Het sleutelwoord Modes beschrijft de resolutie waarmee gewerkt wordt bij de opgegeven kleurdiepte. Alleen VESA standaarden die door de grafische kaart van het systeem worden gedefinieerd worden ondersteund. In het voorbeeld hierboven is de standaardkleurdiepte 24 bits per pixel. Bij deze kleurdiepte is de toegestane resolutie 1024 bij 768 pixels. Bij het oplossen van problemen zijn de logboekbestanden van X11 vaak een goede hulp. Ze bevatten informatie voor ieder apparaat waar de X11 server verbinding mee maakt. Namen van &xorg; logboekbestanden hebben de vorm /var/log/Xorg.0.log (namen van &xfree86; logboekbestanden hebben de vorm XFree86.0.log). De precieze naam van een logboekbestand van variëren van Xorg.0.log tot Xorg.8.log enzovoort. Als alles is ingesteld, moet het instellingenbestand op een plaats gezet worden waar &man.Xorg.1; (of &man.XFree86.1;) het kan vinden. Dit is meestal /etc/X11/xorg.conf of /usr/X11R6/etc/X11/xorg.conf (voor &xfree86; heet het /etc/X11/XF86Config of /usr/X11R6/etc/X11/XF86Config): &prompt.root; cp xorg.conf.new /etc/X11/xorg.conf Voor &xfree86;: &prompt.root; cp XF86Config.new /etc/X11/XF86Config Het instellen van X11 is nu gereed. Om &xfree86; 4.X te kunnen starten met &man.startx.1; dient de x11/wrapper port geïnstalleert te worden. &xorg; heeft wrappercode en heeft geen extra wrapper nodig. De X11 server kan ook gestart worden met &man.xdm.1;. Er zit ook een grafisch instellingenprogramma bij de X11 distributie: &man.xorgcfg.1; (man.xf86cfg.1; voor &xfree86;). Hiermee kunnen de instellingen en drivers interactief gekozen worden. Dit kan ook op het console gebruikt worden: xorgcfg -textmode. Meer details zijn te vinden in &man.xorgcfg.1; en &man.xf86cfg.1;. Er is ook nog het hulpprogramma &man.xorgconfig.1; (&man.xf86config.1; voor &xfree86;). Dit programma is op het console te gebruiken en is veel minder gebruikersvriendelijk, maar het zou wel kunnen werken in gevallen waarin andere hulpprogramma's dat niet doen. Bijzondere Instellingen Instellen met de &intel; i810 Graphics Chipsets Intel i810 graphic chipset Instellen met &intel; i810 integrated chipsets vereist de agpgart AGP programmeringsinterface voor X11 om de kaart aan te sturen. De &man.agp.4; driver zit in de GENERIC kernel sinds 4.8-RELEASE en 5.0-RELEASE. Bij eerdere versies dient het volgende toegevoegd te worden aan het bestand met kernelinstellingen: device agp Hierna dient een nieuwe kernel gebouwd te worden. In plaats hiervan, kan de kernelmodule agp.ko automatisch geladen worden met &man.loader.8; tijdens het opstarten. Hiervoor moet het volgende in /boot/loader.conf staan: agp_load="YES" Als gebruik wordt gemaakt van &os; 4.X of recenter, dan moet een apparaatnode gemaakt worden voor de programmainterface. Om deze AGP apparaatnode te maken, dient &man.MAKEDEV.8; gestart te worden in de map /dev: &prompt.root; cd /dev &prompt.root; sh MAKEDEV agpgart &os; 5.X of later gebruikt &man.devfs.5; om apparaatnodes transparant te verwerken, dan is de stap met &man.MAKEDEV.8; niet meer nodig. Hierdoor wordt het configureren van de hardware net als ieder andere grafische kaart. Bij systemen die zonder &man.agp.4; driver gecompileerd zijn slaagt het laden van module met &man.kldload.8; niet. De driver moet in de kernel geladen zijn tijdens het opstarten door te compileren of door /boot/loader.conf te gebruiken. Als &xfree86; 4.1.0 (of later) gebruikt wordt en er verschijnen berichten over unresolved symbols zoals fbPictureInit, dan kan het toevoegen van de regel aan het &xfree86; instellingenbestand na Driver "i810" de oplossing zijn: Option "NoDDC" Murray Stokely Bijgedragen door Lettertypen Gebruiken in X11 Type1 Lettertypen De standaard lettertypen van X11 zijn allerminst ideaal voor het typische bureaubladprogramma. Grote presentatielettertypen zien er hoekig en onprofessioneel uit en kleine lettertypen in &netscape; zijn bijna onleesbaar. Er zijn diverse gratis, kwalitatief goede Type1 (&postscript;) lettertypen die meteen gebruikt kunnen worden met X11. De URW lettertypecollectie (x11-fonts/urwfonts) heeft bijvoorbeeld hoge kwaliteit versies van standaard Type1 lettertypen (Times Roman, Helvetica, Palatino en anderen). De Freefonts collectie (x11-fonts/freefonts) heeft nog meer lettertypen, maar de meesten ervan zijn bedoeld om in grafische software als Gimp gebruikt te worden en zijn niet compleet genoeg om als schermlettertypen te gebruiken. Daarbij kan X11 zonder veel moeite ingesteld worden worden om &truetype; lettertypen te gebruiken. Meer informatie staat in &man.X.7; of de paragraaf over &truetype; Lettertypen. Om de bovenstaande Type1 lettertypecollectie van de portscollectie te installeren: &prompt.root; cd /usr/ports/x11-fonts/urwfonts &prompt.root; make install clean Dat geldt ook voor de freefont en andere collecties. Om de X server te vertellen dat deze lettertypen bestaan, dient de volgende regel toegevoegd te worden in XF86Config (in /etc/ voor &xfree86; versie 3 of in /etc/X11/ voor versie 4): FontPath "/usr/X11R6/lib/X11/fonts/URW/" Ook kan op de commando regel in de X sessie het volgende gestart worden: &prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/URW &prompt.user; xset fp rehash Dit werkt wel, maar zodra de X sessie wordt afgesloten is het weer verdwenen tenzij het is toegevoegd aan het opstartbestand (~/.xinitrc voor een normale startx sessie of ~/.xsession als er wordt aangemeld met een grafische aanmeldmanager als XDM). Een derde manier is het gebruik van het nieuwe bestand /usr/X11R6/etc/fonts/local.conf: zie hiervoor de paragraaf over over Anti-aliasing. &truetype; Lettertypen TrueType lettertypen lettertypen TrueType &xfree86; 4.X en &xorg; hebben ingebouwde ondersteuning voor het renderen van &truetype; lettertypen. Er zijn twee verschillende modules die deze functionaliteit activeren. In dit voorbeeld wordt de freetype module gebruikt omdat deze beter werkt met de andere lettertypen die back-ends renderen. Om de freetype module te activeren dient de volgende regel toegevoegd te worden aan het onderdeel "Module" van /etc/X11/xorg.conf of /etc/X11/XF86Config. Load "freetype" Voor &xfree86; 3.3.X is een aparte &truetype; lettertypeserver nodig. Meestal wordt Xfstt gebruikt. Om Xfstt te installeren hoeft alleen de port x11-servers/Xfstt geïnstalleerd te worden. Hierna dient een map voor de &truetype; lettertypen gemaakt te worden (bijvoorbeeld /usr/X11R6/lib/X11/fonts/TrueType) en alle &truetype; lettertypen moeten naar deze map gekopieerd worden. &truetype; lettertypen kunnen niet direct van een &macintosh; gehaald worden. Ze moeten in een &unix;/&ms-dos;/&windows; formaat zijn voor X11. Zodra de bestanden naar deze map zijn gekopieerd, kan ttmkfdir gestart worden om een fonts.dir bestand te maken zodat de X lettertyperenderer weet waar deze nieuwe bestanden zijn geïnstalleerd. ttmkfdir zit in de &os; portscollectie als x11-fonts/ttmkfdir. &prompt.root; cd /usr/X11R6/lib/X11/fonts/TrueType &prompt.root; ttmkfdir > fonts.dir Nu moet de &truetype; map toe aan het lettertypepad toegevoegd worden. Dit gebeurt op dezelde wijze als boven is beschreven voor Type1 lettertypen: &prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/TrueType &prompt.user; xset fp rehash of door een FontPath regel toe te voegen aan xorg.conf (of XF86Config). Dat is alles. Nu herkennen &netscape;, Gimp, &staroffice; en alle andere X applicaties de geïnstalleerde &truetype; lettertypen. Extreem kleine lettertypen (zoals hoge resolutie tekst op een webpagina) en extreme grote lettertypen (in &staroffice;) zien er nu veel beter uit. Joe Marcus Clarke Bijgewerkt door Anti-alias Lettertypen anti-alias lettertypen lettertypen anti-alias Anti-aliasing wordt door X11 sinds ondersteund sinds &xfree86; versie 4.0.2. Maar instellingen voor lettertypen waren bewerkelijk voordat &xfree86; 4.3.0 geïntroduceerd werd. Vanaf &xfree86; 4.3.0 zijn alle lettertypen die X11 in de mappen /usr/X11R6/lib/X11/fonts/ en ~/.fonts/ aantreft automatisch beschikbaar voor anti-aliasing in applicaties die Xft ondersteunen. Niet alle applicaties ondersteunen Xft. Voorbeelden van applicaties met Xft ondersteuning zijn Qt 2.3 en hoger (de hulpprogramma's voor het KDE bureaublad), GTK+ 2.0 en hoger (de hulpprogramma's voor het GNOME bureaublad) en Mozilla 1.2 en hoger. Om te kunnen regelen welke lettertypen gebruik maken van anti-alias of om de eigenschappen van anti-aliasing in te stellen kan /usr/X11R6/etc/fonts/local.conf gemaakt of gewijzigd worden. In dit bestand kunnen speciale eigenschappen van het Xft lettertypesysteem aangepast worden. Deze paragraaf beschijft wat eenvoudige mogelijkheden. Meer details staan in &man.fonts-conf.5;. XML Dit bestand moet in het XML formaat opgemaakt worden. Hoofdletters en kleine letters worden onderscheiden en alle tags moeten netjes worden afgesloten. Het bestand begint met de gewone XML header gevolgd door een DOCTYPE definitie en daarna de <fontconfig> tag: <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> Zoals al eerder is vermeld zijn alle lettertypen in /usr/X11R6/lib/X11/fonts/ en in ~/.fonts/ al geschikt gemaakt voor Xft applicaties. Als naast deze twee mappen nog een andere lettertypen moeten kunnen bevatten, dan dient een soortgelijke regel als de onderstaande aan /usr/X11R6/etc/fonts/local.conf toegevoegd te worden: <dir>/path/to/my/fonts</dir> Na het toevoegen van nieuwe lettertypen en zeker nieuwe lettertypemappen dienen de lettertypecaches opnieuw opgebouwd worden met: &prompt.root; fc-cache -f Anti-aliasing maakt randen een beetje wazig wat kleine teksten beter leesbaar maakt en voorkomt trapvorming van grote letters. Maar het kan oogkramp veroorzaken als het op normale tekst wordt toegepast. Om lettertypen kleiner dan 14 punten uit te sluiten van anti-aliasing moeten de volgende regels toegevoegd worden: <match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match> lettertypen spacing Spatiëring voor sommige enkel gespatieerde lettertypen kan ook ongepast zijn bij anti-aliasing. Dit lijkt vooral een probleem te zijn bij KDE. Een mogelijke oplossing hiervoor is het vergroten van de spatiëring van die lettertypen naar 100: <match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> Het bovenstaande hernoemt de standaardnamen van lettertypen naar "mono"). Voeg daarna het volgende toe: <match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match> Bepaalde lettertypen, zoals Helvetica, kunnen problemen hebben met anti-aliasing. Dit uit zich meestal in een lettertype dat vertikaal door midden lijkt gesneden. Op zijn ergst kan het applicaties zoals Mozilla laten crashen. Om dit te voorkomen kan overwogen worden om ook de volgende regels toe te voegen aan local.conf: <match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match> Als de wijzigingen in local.conf zijn gemaakt dient niet vergeten te worden het bestand te eindigen met de tag </fontconfig> tag. Als dit niet gedaan wordt, dan worden de wijzigingen niet gezien. De standaard lettertypeset die geleverd wordt bij X11 is niet erg geschikt als het aankomt op anti-aliasing. Een veel betere set standaardlettertypen is de x11-fonts/bitstream-vera port. Deze port maakt /usr/X11R6/etc/fonts/local.conf aan als het nog niet bestaat. Als het al wel bestaat maakt de port /usr/X11R6/etc/fonts/local.conf-vera aan. De inhoud van dit bestand dient in /usr/X11R6/etc/fonts/local.conf geplaatst te worden en dan vervangen de Bitstream lettertypen automatisch de standaard X11 Serif, Sans Serif en Monospaced lettertypen. Als laatste kunnen gebruikers hun eigen instellingen aan een persoonlijk .fonts.conf bestand toevoegen. Om dit te doen moet iedere gebruiker het bestand ~/.fonts.conf maken. Ook dit bestand moet in het XML formaat zijn. LCD screen lettertypen LCD screen Nog een laatste punt: bij een LCD scherm kan sub-pixel sampling prettig zijn. Eigenlijk zorgt dit er voor dat de (horizontaal gesplitste) rode, groene en blauwe componenten gewijzigd worden om de horizontale resolutie te verbeteren. Het resultaat is geweldig. Voeg hiervoor de volgende regels ergens aan local.conf toe: <match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match> Afhankelijk van het soort beeldscherm kan rgb veranderd moeten worden in bgr, vrgb of vbgr. Experimenteren levert de beste instelling op. Mozilla web browsers Mozilla Mozilla Anti-aliasing moet werken zodra de X server opnieuw gestart is. Programma's dienen echter wel te weten hoe ze er mee moeten werken. Op dit moment geldt dat voor de Qt toolkit en de hele KDE omgeving kan met anti-alias omgaan (zie over KDE). GTK+ en GNOME anti-aliasing gebruiken via de Font capplet (zie ). Mozilla 1.2 en hoger gebruiken automatisch anti-aliasing. Om dit uit te zetten moet Mozilla opnieuw gebouwd worden met de optie -DWITHOUT_XFT. Seth Kingsley Bijgedragen door De X Display Manager Overzicht X Beeldschermmanager De X Beeldschermmanager (XDM) is een optioneel onderdeel van het X Window Systeem dat gebruikt wordt voor beheer van aanmeldsessies. Dit is vaak erg handig bij bijvoorbeeld X Terminals, desktops en grote netwerk beeldschermservers. Omdat het X Window Systeem netwerk- en protocolonafhankelijk is, zijn er veel mogelijkheden om X clients en servers op verschillende machines in een netwerk te verbinden. XDM levert een grafische interface waarmee er gekozen kan worden welke beeldschermserver gebruikt moet worden en handelt authorisatie informatie (gebruikersnaam en wachtwoord) af. XDM levert de gebruiker dezelfde funtionaliteit levert als &man.getty.8; (zie ). Dus het regelt de systeemaanmeldingen voor de schermen waaraan verbonden moet worden en start dan een sessie manager namens de gebruiker (meestal een X window manager). XDM wacht dan tot het programma stopt en geeft aan dat de gebruiker klaar is en afgemeld kan worden. Hierna kan XDM het aanmeldscherm weer tonen zodat de volgende gebruiker kan aanmelden. XDM Gebruiken De XDM daemon staat in /usr/X11R6/bin/xdm. Dit programma kan als root altijd gestart worden en regelt dan het X weergavegedeelte van de lokale machine. Als XDM iedere keer bij het opstarten moet starten is het handig om een regel toe te voegen aan /etc/ttys. Meer informatie over het gebruik van dit bestand staat in . In de standaardversie van /etc/ttys staat een regel om de applicatie deamon XDM op een virtuele terminal te draaien: ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure Standaard staat deze regel uit. Om hem aan te zetten moet veld 5 van off naar on gewijzigd worden en moet met &man.init.8; herstart worden met gebruikmaking van de aanwijzingen in . Het eerste veld, de naam van de terminal die het programma aanstuurt, is ttyv8. Dit houdt in dat XDM op de negende virtuele terminal begint te draaien. XDM Instellen De map met instellingen voor XDM is /usr/X11R6/lib/X11/xdm. In deze map staan diverse bestanden die gebruikt kunnen worden om het gedrag en uiterlijk van XDM te veranderen. Meestal zijn dit de volgende bestanden: - + Bestand Omschrijving Xaccess Regels voor client authorisatie. Xresources Standaard waarden voor X bronnen. Xservers Lijst met op afstand en lokaal te beheren schermen. Xsession Standaard sessie script voor logins. Xsetup_* Script die applicaties start voordat de login interface start. xdm-config Algehele configuratie voor alle schermen op deze machine. xdm-errors Errors die gegenereerd zijn door het server programma. xdm-pid Het proces ID van de draaiende XDM. Tevens staan in deze map een aantal scripts en programma's om het bureaublad in te stellen als XDM draait. Het doel van elk van deze bestanden wordt kort omschreven. De juiste syntaxis en het gebruik van deze bestanden staat in &man.xdm.1;. De standaardinstelling regelt een eenvoudig rechthoekig aanmeldvenster met bovenin de hostnaam van de machine in een groot lettertype met een Login: en Password: prompt eronder. Dit is een goed beginpunt om het uiterlijk en werking van het XDM venster te veranderen. Xaccess Om een verbinding te maken met XDM gestuurde schermen wordt het protocol X Display Manager Connection Protocol (XDMCP) gebruikt. Het bestand is een set regels die XDMCP verbindingen met andere machines bestuurt. Standaard mag iedere client een verbinding maken. Zolang xdm-config niet is aangepast om verbindingen te accepteren is dat geen probleem. Xresources Dit is een bestand met standaarden voor de schermkiezer en de aanmeldschermen. Hier kan het uiterlijk van het aanmeldprogramma gewijzigd worden. De indeling is hetzelfde als bij het app-defaults bestand en is beschreven in de X11 documentatie. Xservers Dit is een lijst met netwerkschermen waaruit gekozen kan worden. Xsession Dit is het standaard sessiescript voor XDM dat start nadat de gebruiker is aangemeld. Normaal heeft iedere gebruiker een eigen sessiescript in ~/.xsession dat dit script overheerst. Xsetup_* Deze starten automatisch voordat de kiezers of aanmeldschermen getoond worden. Er is een script voor ieder gebruikt scherm met de naam Xsetup_ gevolgd door het lokale schermnummer (bijvoorbeeld Xsetup_0). Normaal draaien deze scripts éé of twee programma's in de achtergrond zoals xconsole. xdm-config Dit bevat de instellingen die toegepast worden op ieder scherm die deze installatie aanstuurt. De indeling is hetzelfde als van app-defaults. xdm-errors Hierin staan de meldingen die de X servers geven als XDM ze probeert te starten. Als een scherm dat gestart is door XDM om onduidelijke reden hangt, is dit een goede plaats om te zoeken naar foutmeldingen. Deze meldingen worden ook per sessie naar het ~/.xsession-errors van de gebruiker gestuurd. Een Netwerk Beeldschermserver Gebruiken Om gebruikers een verbinding te laten maken met een X server moeten de toegangsregels gewijzigd worden en de connectielistener moet aangezet worden. Deze hebben standaard wat terughoudende waarden. Om XDM te laten luisteren naar verbindingen moet als eerste een regel uitgecommentarieerd worden in xdm-config: ! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with XDM DisplayManager.requestPort: 0 Hierna moet XDM herstart worden. Afwijkend in dit bestand is dat commentaar in app-defaults bestanden begint met het karakter ! en niet met het karakter #. Het kan wenselijk zijn om de toegangcontrole aan te scherpen. Hiervoor staan voorbeeldregels in Xaccess en &man.xdm.1;. Alternatieven voor XDM Er bestaan diverse alternatieven voor XDM programma. kdm (wordt geleverd bij KDE) wordt later in dit hoofstuk behandeld. De kdm beeldschermmanager biedt vele grafische verbeteringen en cosmetische franje en de mogelijkheid om de gebruiker de kans te geven een window manager te laten kiezen bij het aanmelden. Valentino Vaschetto Bijgedragen door Bureaubladomgevingen Deze sectie beschrijft de verschillende bureaubladomgevingen voor X op &os;. Een bureaubladomgeving kan van alles inhouden: van een simpele window manager tot een complete suite van bureaubladapplicaties zoals KDE of GNOME. GNOME Over GNOME GNOME GNOME is een gebruikersvriendelijke bureaubladomgeving die de gebruiker de mogelijkheid geeft om gemakkelijk de computer te gebruiken en in te stellen. GNOME heeft een paneel (voor het starten en tonen van statusinformatie van applicaties), een bureaublad (waar data en applicaties geplaatst kunnen worden), een set standaard bureaubladapplicaties en een regels die het makkelijker maakt voor applicaties om eenduidig met elkaar samen te werken. Gebruikers van andere besturingssystemen of omgevingen voelen zich meestal meteen thuis bij het gebruik van de krachtige grafisch gestuurde omgeving die GNOME biedt. Meer informatie over GNOME op &os; staat op de &os; GNOME Project website. GNOME Installeren De makkelijkste manier om GNOME te installeren is door middel van het Desktop Configuration menu tijdens de &os; installatie zoals beschreven in . Het kan ook makkelijk geïnstalleerd worden van een package of uit de portscollectie: Om het GNOME package te installeren: &prompt.root; pkg_add -r gnome2 Om GNOME vanuit de portscollectie te installeren: &prompt.root; cd /usr/ports/x11/gnome2 &prompt.root; make install clean Zodra GNOME geïnstalleerd is, moet de X server verteld worden dat in plaats van de standaard window manager GNOME gebruikt moet worden. Als er al een .xinitrc is, dan hoeft alleen de regel die de huidige windows manager start veranderd te worden in een regel die /usr/X11R6/bin/gnome-session start. Als er niets speciaals met dit instellingenbestand is gedaan: &prompt.user; echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc Nu kan met startx de GNOME bureaubladomgeving gestart worden. Als een beeldschermmanager als XDM gebruikt wordt werkt het bovenstaande niet. In plaats daarvan moet een uitvoerbaar .xsession gemaakt worden met hetzelfde commando erin. Hiervoor moet het bestand aangepast worden door het bestaande window manager commando te vervangen door /usr/X11R6/bin/gnome-session: &prompt.user; echo "#!/bin/sh" > ~/.xsession &prompt.user; echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession &prompt.user; chmod +x ~/.xsession Het is ook mogelijk de beeldschermanager zo in te stellen dat de window manager gekozen kan worden tijdens het aanmelden. In de paragraaf Meer KDE Details wordt uitgelegd hoe dit gedaan moet worden voor de kdm beeldschermmanager van KDE. Anti-alias Lettertypen in GNOME GNOME anti-alias lettertypen X11 ondersteunt anti-aliasing via de RENDER uitbreiding. GTK+ 2.0 en hoger (de toolkit die gebruikt wordt bij GNOME) kunnen dit gebruiken. Het instellen van anti-aliasing is beschreven in . Dus met up-to-date software is anti-aliasing in de GNOME bureaublagomgeving mogelijk. In ApplicationsDesktop PreferencesFont kan gekozen wordne voor Best shapes, Best contrast of Subpixel smoothing (LCDs). Bij een GTK+ applicatie die geen onderdeel is van het GNOME bureaublad moet de omgevingsvariabele GDK_USE_XFT op 1 gezet worden voordat het programma wordt gestart. KDE KDE Over KDE KDE is een bureaubladomgeving die eigentijds is en makkelijk in gebruik. KDE biedt de gebruiker: Een schitterende eigentijdse desktop; Een desktop die volledig netwerktransparant is; Een geïntegreerd hulpsysteem dat eenvoudig bruikbare informatie geeft over het gebruik van het KDE bureaublad en de applicaties; Alle KDE applicaties werken op dezelfde manier en zien er hetzelfde uit; Gestandaardiseerde menu's en werkbalken, keybindings, kleurschema's, enzovoort; Internationalisatie: KDE is beschikbaar in meer dan 40 talen; Gecentraliseerde vraag en antwoord gestuurde bureaubladinstelling; Een grote hoeveelheid bruikbare KDE applicaties; KDE heeft een office applicatie suite die gebaseerd is op KDE's KParts technologie en bestaat uit een spread-sheet, een presentatieprogramma, een organizer, een nieuwsclient en meer. KDE heeft ook de webbrowser Konqueror die niet onder doet voor de andere bestaande webbrowsers op &unix; systemen. Meer informatie over KDE staat op de KDE website. Voor &os; specifieke informatie en bronnen over KDE is er de &os;-KDE team website. KDE Installeren Net als bij GNOME of iedere andere bureaubladomgeving is de makkelijkste manier om KDE te installeren door middel van het Desktop Configuration menu in het &os; installatie proces. Dat wordt beschreven in . Ook nu geldt weer dat de software eenvoudig geïnstalleerd met een package of uit de portscollectie: Om KDE van een package te installeren: &prompt.root; pkg_add -r kde &man.pkg.add.1; haalt automatisch de laatste versie van de applicatie op. Om KDE vanuit de portscollectie te bouwen en te installeren: &prompt.root; cd /usr/ports/x11/kde3 &prompt.root; make install clean Nadat KDE geïnstalleerd is, moet de X server verteld worden dat déze applicatie gestart moet worden in plaats van de standaard window manager. Hiervoor kan .xinitrc aangepast worden: &prompt.user; echo "exec startkde" > ~/.xinitrc Als het X Window System wordt gestart met startx is KDE het bureaublad. Als er een beeldschermmanager als XDM gebruikt wordt, is de instelling anders. Dan moet .xsession gewijzigd worden. Instructies voor kdm worden later in dit hoofdstuk beschreven. Meer KDE details Nadat KDE geïnstalleerd is op een systeem, kunnen de meeste dingen uitgezocht worden via de hulppagina's of door de verschillende menu's aan te wijzen en erop te klikken. &windows; en &mac; gebruikers voelen zich meestal helemaal thuis. Het beste naslagwerk voor KDE is de on-line documentatie. KDE heeft zijn eigen web browser, Konqueror, tientallen handige applicatie's en uitgebreide documentatie. De volgende paragrafen beschrijven de technische zaken die moeilijk proefondervindelijk te achterhalen zijn. De KDE Beeldschermmanager KDE beeldschermmanager Een beheerder van een multi-user systeem die een grafisch aanmeldscherm willen hebben voor zijn gebruikers kan hiervoor XDM gebruiken, zoals eerder beschreven. KDE biedt kdm als alternatief. Dat is ontworpen met een beter uiterlijk en heeft meer aanmeldopties. Gebruikers kunnen via een menu kiezen welke bureaubladomgeving (KDE, GNOME of een andere) zij na het aanmelden willen gebruiken. Om te beginnen dient het KDE beheerpaneel kcontrol door root uitgevoerd te worden. Er wordt in het algemeen vanuit gegaan dat het niet veilig is om als root de X omgeving te gebruiken. In plaats daarvan wordt de window manager als normale gebruiker gestart en in een terminalvenster (zoals xterm of KDE's konsole) wordt root met su aangemeld. De gebruiker moet hiervoor wel in de groep wheel in /etc/group staan). In het terminalvenster kan dan kcontrol ingegeven worden. Eerst dient geklikt te worden op het linker icoon System, daarna op Login manager. Rechts staan nu verschillende opties om in te stellen die de KDE handleiding uitgebreid behandelt. Klik op sessions aan de rechterzijde. Klik New type om de verschillende window managers en bureaubladomgevingen toe te voegen. Dit zijn alleen de labels, hierop staat dan KDE en GNOME in plaats van startkde of gnome-session. Er dient ook nog een label failsafe gemaakt te worden. Er wordt aangeraden ook met de andere menu's te spelen. Die zijn hoofdzakeklijk voor cosmetische zaken en spreken voor zich. Als de instellingen gemaakt zijn kan onderaan op Apply geklikt worden en kan het beheerprogramma verlaten worden. Om te zorgen kdm begrijpt wat de labels (KDE en GNOME etc) betekenen, dienen de bestanden die XDM gebruikt gewijzigd te worden. In KDE 2.2 is dit veranderd: kdm gebruikt nu zijn eigen instellingenbestanden. In de KDE 2.2 documentatie staan meer details. Als root, in een terminal venster, dient /usr/X11R6/lib/X11/xdm/Xsession gewijzigd te worden. In het midden van het bestand is een onderdeel dat er als volgt uitziet: case $# in 1) case $1 in failsafe) exec xterm -geometry 80x24-0-0 ;; esac esac Er moeten een aantal regels toegevoegd worden aan dit onderdeel. Aangenomen dat de gebruikte labels KDE en GNOME waren, dient dat het volgende de worden: case $# in 1) case $1 in kde) exec /usr/local/bin/startkde ;; GNOME) exec /usr/X11R6/bin/gnome-session ;; failsafe) exec xterm -geometry 80x24-0-0 ;; esac esac Om bij het aanmelden de KDE bureaubladachtergrond hetzelfde te laten zijn als na het aanmelden, dient de volgende regel toegevoegd worden aan /usr/X11R6/lib/X11/xdm/Xsetup_0: /usr/local/bin/kdmdesktop Nu moet kdm voorkomen in /etc/ttys en starten bij de volgende herstart. Om dit te doen kunnen de instructies uit XDM gebruikt worden en kan /usr/X11R6/bin/xdm vervangen worden in /usr/local/bin/kdm. Anti-alias Lettertypen KDE anti-alias lettertypen X11 ondersteunt anti-aliasing door de toevoeging de RENDER toevoeging en vanaf Qt versie 2.3 ondersteunt Qt (de toolkit die bij KDE zit) deze toevoeging. Het instellen hiervan is beschreven in over anti-aliasing X11 lettertypen. Dus met up-to-date software is anti-aliasing mogelijk op een KDE bureaublad. In het KDE menu moet in PreferencesLook and FeelFonts het vinkvakje Gebruik Anti-aliasing voor Lettertypen en Iconen aangevinkt worden. Voor Qt applicaties die geen onderdeel zijn van KDE moet de omgevingsvariabele QT_XFT op true gezet worden voordat het programma wordt gestart. XFce Over XFce XFce is een bureaubladomgeving die gebaseerd is op de GTK+ toolkit die gebruikt wordt bij GNOME, maar is eenvoudiger en bedoeld voor gebruikers die een simpel en efficient bureaublad willen dat toch eenvoudig en makkelijk in te stellen is. Het ziet er bijna hetzelfde uit als CDE dat bij commerciële &unix; systemen zit. Een aantal XFce functies zijn: Een eenvoudige, makkelijk te bedienen desktop; Geheel in te stellen met de muis, met klikken en slepen, enzovoort; Hoofdpaneel hetzelfde als CDE met menu's, applets en applicaties Geïntegreerde window manager, bestandsmanager, geluidsmanager, GNOME compliance module en andere zaken; Thema's (sinds het gebruik van GTK+); Snel, licht en efficient: ideaal voor de oudere of langzamere machines of machines met beperkte hoeveelheid geheugen; Meer informatie over XFce staat op de XFce website. Installeren van XFce XFce is met een package te installeren: &prompt.root; pkg_add -r xfce4 Of vanuit de portscollectie: &prompt.root; cd /usr/ports/x11-wm/xfce4 &prompt.root; make install clean Nu moet de X server weten dat XFce gestart moet worden als X de volgende keer start: &prompt.user; echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrc De volgende keer dat X start is XFce het bureaublad. Wederom: als een beeldschermmanager als XDM gebruikt wordt, moet .xsession gemaakt worden zoals beschreven in de paragraaf over GNOME. Nu moet echter het command /usr/X11R6/bin/startxfce4 gebruikt. Het is ook mogelijk de beeldschermmanager in te stellen om bureaublad te kiezen bij het aanmelden, zoals is uitgelegd in de paragraaf over kdm.