diff --git a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml index 1c69663241..613dd7f299 100644 --- a/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -1,2027 +1,2033 @@ Jim Mock Geherstructureerd, gereorganiseerd en delen bijgewerkt door Jordan Hubbard Origineel door Poul-Henning Kamp John Polstra Nik Clayton Remko Lodder Vertaald door Siebrand Mazeland Het scherp van de snede Overzicht &os; wordt ontwikkeld tussen de verschillende versies in. Voor mensen die het nieuwste van het nieuwste willen hebben zijn er verschillende makkelijke mechanismes om een systeem gesynchroniseerd te houden met de laatste ontwikkelingen. Wees gewaarschuwd: het nieuwste van het nieuwste is niet voor iedereen geschikt! Dit hoofdstuk helpt om een keuze te maken of het wenselijk is het ontwikkelsysteem te volgen of één van de uitgegeven versies. Na het lezen van dit hoofdstuk weet de lezer: De verschillen tussen de ontwikkeltakken &os.stable; en &os.current;; Hoe een systeem bijgewerkt kan worden met CVSup, CVS of CTM; Hoe een basissysteem opnieuw te compileren en te herinstalleren met make buildworld, enzovoort. Veronderstelde criteria: Een juist ingesteld netwerk (); Weten hoe software van derden te installeren (). &os.current; vs. &os.stable; -CURRENT -STABLE Er zijn twee ontwikkeltakken voor &os;: &os.current; en &os.stable;. Deze sectie licht beiden toe en beschrijft hoe een systeem bijgewerkt te houden met elke tak. &os.current; wordt eerst behandeld, daarna &os.stable;. Bijblijven met &os; Bedenk dat &os.current; het nieuwste van het nieuwste is van &os; ontwikkeling. Van &os.current; gebruikers wordt verwacht dat ze veel technische kennis hebben en capabel zijn om zelfstandig lastige systeemproblemen op te lossen. Nieuwe gebruikers van &os; kunnen het beste twee keer nadenken alvorens het te installeren. Wat is &os.current;? momentopname &os.current; is de laatste werkende set broncode voor &os;. Dit bevat werk in uitvoering, experimentele wijzigingen en overgangsmechanismes die mogelijk wel of niet meegenomen worden in de volgende officiële uitgave van het besturingssysteem. Alhoewel veel &os;-ontwikkelaars de broncode van &os.current; dagelijks compileren, zijn er periodes dat de broncode niet compileerbaar is. Deze problemen worden zo snel mogelijk gerepareerd, maar het is mogelijk dat &os.current; een ramp veroorzaakt in plaats van dat het de gewenste functionaliteit levert. Dit ligt geheel aan het moment waarop de broncode is opgehaald. Wie heeft &os.current; nodig? &os.current; is beschikbaar voor drie primaire aandachtsgroepen: Leden van de &os;-gemeenschap die actief werken aan een deel van de broncode voor wie current een echte eis is. Leden van de &os;-gemeenschap die actief testen en tijd hebben om problemen op te lossen om zeker te stellen dat &os.current; zo gezond als mogelijk is. Er zijn ook mensen die actuele suggesties maken over wijzigingen en de algemene richting van &os; en die patches opsturen om deze te implementeren. Diegenen die alleen een oogje in het zeil willen houden of de huidige bronnen gebruiken ter referentie (bijvoorbeeld voor het lezen en niet het draaien). Deze mensen geven ook regelmatig commentaar of dragen bij in de code. Wat is &os.current; <emphasis>niet</emphasis>? Een snelle manier om pre-release versies te krijgen omdat bekend is dat er een aantal leuke nieuwe mogelijkheden in zitten en het leuk is deze als eerste te gebruiken. Het als eerste gebruiken van nieuwe mogelijkheden betekent ook de eerste zijn die nieuwe bugs ontdekt. Een snelle manier om bugfixes te krijgen. Elke willekeurige versie van &os.current; heeft waarschijnlijk net zoveel nieuwe bugs als dat er bugs opgelost zijn. Op welke manier dan ook officieel ondersteund. We doen onze best om mensen echt te helpen in één van de drie legitieme &os.current; groepen maar er is simpelweg niet genoeg tijd om technische ondersteuning te leveren. Dit is niet omdat we gemene en vervelende mensen zijn die anderen niet willen helpen (we zouden niet eens aan &os; werken als we dat durfden). De ontwikkelaars kunnen simpelweg geen honderd berichten per dag beantwoorden én aan &os; werken. Bij de keuze tussen het verbeteren van &os; en vragen beantwoorden over experimentele code, kiezen ontwikkelaars voor het eerste. &os.current; gebruiken -CURRENT gebruiken Neem een abonnement op de mailinglijsten &a.current.name; en &a.cvsall.name;. Dit is niet alleen een goed idee, het is essentieel. Geen berichten ontvangen van de lijst &a.current.name; betekent geen commentaar zien dat mensen maken over de huidige staat van het systeem en dus waarschijnlijk struikelen over problemen die anderen al gevonden en opgelost hebben. Nog belangrijker is het missen van belangrijke informatie die kritisch kan zijn voor een systeem. De lijst &a.cvsall.name; biedt de mogelijkheid de wijzigingsboodschap te zien voor elke wijziging die gemaakt wordt samen met relevante informatie over mogelijke bijwerkingen. Ga om op deze lijsten of één van de andere beschikbare lijsten te abonneren naar &a.mailman.lists.link; en klik op de gewenste lijst. Instructies over de rest van de procedure zijn daar beschikbaar. Haal de broncode van een &os; mirrorsite. Dit kan op de volgende twee manieren: cvsup cron -CURRENT Synchroniseren met CVSup Gebruik het programma cvsup met de supfile genaamd standard-supfile uit /usr/share/examples/cvsup. Dit is de geadviseerde methode, omdat de gehele collectie in één keer wordt binnengehaald en daarna alleen hetgeen wat gewijzigd is. Veel mensen draaien cvsup vanuit de cron en houden daarmee hun broncode automatisch bijgewerkt. De voorbeeld supfile dient aangepast te worden om cvsup in te stellen voor een omgeving. -CURRENT Synchroniseren met CTM Gebruik de CTM faciliteit. Bij een slechte verbinding, dure connecties of alleen e-mail toegang, is CTM een optie. Het werkt echter lastig en geeft mogelijk corrupte bestanden. Dit zorgt ervoor dat het zelden gebruikt wordt, dat de kans verhoogt dat het niet werkt voor redelijk lange periodes. Het advies is CVSup te gebruiken. Als de broncode wordt opgehaald om te draaien en niet alleen om naar te kijken, haal dan alles op van &os.current; en niet alleen geselecteerde delen. De reden hiervoor is dat verschillende delen van de code afhangen van updates op andere plekken en het compileren van een onderdeel gegarandeerd problemen oplevert. -CURRENT compileren Voordat &os.current; gecompileerd wordt is het raadzaam om de Makefile in /usr/src aandachtig te bekijken. Het is handig om de eerste keer op zijn minst de kernel en de wereld opnieuw te bouwen als onderdeel van het updateproces. Via de &a.current; en /usr/src/UPDATING is het mogelijk op de hoogte te blijven van mogelijke wijzigingen in de opstartprocedures die soms nodig zijn tussen verschillende versies. Wees actief! Ervaringen van &os.current;-gebruikers zijn belangrijk, zeker als het gaat om suggesties voor verbeteringen of bugfixes. Suggesties met bijbehorende code worden enthousiast ontvangen! &os; stabiel houden Wat is &os.stable;? -STABLE &os.stable; is de ontwikkeltak waaruit grote releases gemaakt worden. Wijzigingen in deze tak gaan in een ander tempo en met de algemene aanname dat ze eerst in &os.current; worden ingebracht ter test. Dit is nog steeds een ontwikkeltak, echter dit betekent dat op elk gegeven moment de code voor &os.stable; wel of niet geschikt is voor een speciaal doel. Het is simpelweg een andere ontwikkelomgeving en geen bron voor eindgebruikers. Wie heeft &os.stable; nodig? Bij interesse in het bijhouden van of bijdragen aan het &os;-ontwikkelproces, speciaal als het gerelateerd is aan de volgende versie van &os;, is het volgen van &os.stable; het overwegen waard. Ondanks dat security fixes ook in de &os.stable;-tak komen, hoeft dit niet per se. In elke beveiligingswaarschuwing voor &os; wordt uitgelegd uit hoe het probleem opgelost kan worden voor de release die het betreft. Dit is niet helemaal waar. Oude releases van &os; kunnen niet eeuwig ondersteund worden, ook al duurt ondersteuning vele jaren. Een volledige beschrijving van het huidige beveiligingsbeleid voor oudere releases van &os; staat op http://www.FreeBSD.org/security/. Het volgen van de volledige ontwikkeltak alleen om veiligheidsredenen levert ongetwijfeld ongewenste wijzigingen op. Ondanks het voornemen ervoor te zorgen dat de &os.stable;-tak compileert en altijd draait, wordt dit niet gegarandeerd. Terwijl code ontwikkeld wordt in &os.current; voordat die in &os.stable; verwerkt wordt, draaien meer mensen &os.stable; dan &os.current;, dus het is onontkoombaar dat bugs en randgevallen soms in &os.stable; gevonden worden die niet in &os.current; bekend waren. Om deze redenen wordt niet aangeraden &os.stable; blindelings te volgen en het is extra belangrijk geen productieservers bij te werken naar &os.stable; zonder de code te testen in een testomgeving. Als de mogelijkheden om dit te doen niet beschikbaar zijn, dan is het advies de meest recente release van &os; te draaien en dan de binaire update methode te hanteren om bij te werken tussen verschillende releases. &os.stable; gebruiken &os.stable; gebruiken Neem een abonnement op de lijst &a.stable.name;. Deze biedt informatie over onderdelen van de build die mogelijk verschijnen in &os.stable; of eventuele andere kwesties die speciale aandacht vereisen. Ontwikkelaars kondigen in deze mailinglijst ook aan wanneer ze overwegen om een controversiële fix of aanpassing willen maken, waardoor de gebruikers een kans hebben om te reageren als ze goede redenen hebben tegen de voorgestelde wijziging. De lijst &a.cvsall.name; biedt informatie over de commitlogregels voor elke wijziging zoals deze gemaakt is tezamen met relevante informatie over mogelijke bijwerkingen. Ga om te abonneren op deze lijsten, of één van de andere beschikbare lijsten naar &a.mailman.lists.link; en klik op de lijst waarop een abonnement gewenst is. Instructies over de rest van de procedure zijn daar beschikbaar. Bij installatie van een nieuw systeem dat zo stabiel mogelijk moet zijn kan simpelweg de laatst gedateerde snapshot gehaald worden van en deze kan geïinstalleerd worden zoals elke andere release. Ook kan de meest recente &os.stable; release geïnstalleerd worden van de mirrorsites en kunnen de onderstaande instructies gevolgd worden om een systeem bij te werken naar de meest recente &os.stable; broncode. Als al een vorige release van &os; draait en bijgewerkt moet worden via de broncodes dan kan dat via de &os; mirrorsites. Dit kan op één van de twee volgende manieren: cvsup cron &os.stable; synchroniseren met CVSup Gebruik het programma cvsup met de supfile stable-supfile uit de map /usr/share/examples/cvsup. Dit is de aanbevolen methode omdat het hiermee mogelijk is de volledige collectie te downloaden en daarna alleen hetgeen wat veranderd is. Veel mensen draaien cvsup vanuit de cron om de broncodes automatisch bij te werken. Het voorbeeld van de supfile dient aangepast en ingesteld te worden voor de omgeving waarin het instellingenbestand gebruikt wordt. &os.stable; synchroniseren met CTM Gebruik CTM als er geen snelle, goedkope verbinding is met internet. Dan is dit de methode om te gebruiken. Als er snelle on-demand toegang nodig is tot de broncode en bandbreedte is geen overweging, gebruik dan cvsup of ftp. Gebruik anders CTM. &os.stable; compileren Lees alvorens &os.stable; te compileren goed de Makefile in /usr/src. Het is handig om de eerste keer op zijn minst de kernel en de wereld opnieuw te bouwen als onderdeel van het updateproces. Via de &a.stable; en /usr/src/UPDATING is het mogelijk op de hoogte te blijven van mogelijke wijzigingen in de opstartprocedures die soms nodig zijn tussen verschillende releases. Broncode synchroniseren Er zijn verschillende manieren om een internet (of e-mail) verbinding te gebruiken om bij te blijven met elk onderdeel van de &os; projectbronnen of alle onderdelen, afhankelijk van het interessegebied. De primaire diensten zijn Anonieme CVS en CTM. Ondanks dat het mogelijk is om alleen delen van de broncode bij te werken, is de enige ondersteunde methode de totale broncode bijwerken en zowel userland (alle programma's die in gebruikersruimte draaien, zoals programma's in /bin en /sbin) als de kernel opnieuw compileren. Als alleen delen van de broncode worden bijgewerkt, alleen de kernel of alleen het userland, resulteert dat vaak in problemen. Deze problemen kunnen verschillen van compileerfouten tot kernel panics of corruptie van gegevens. CVS anoniem Anonieme CVS en CVSup gebruiken het pull model om broncode bij te werken. In het geval van CVSup start de gebruiker (of een cron script) het programma cvsup waarbij het communiceert met een cvsupd server om bestanden bij te werken. De ontvangen updates zijn op de minuut nauwkeurig en ze komen alleen wanneer dat is ingesteld. Updates kunnen eenvoudig beperkt worden tot specifieke bestanden of mappen uit een interessegebied. Updates worden automatisch gegenereerd door een server, aan de hand van wat is ingesteld. Anonieme CVS is veel eenvoudiger dan CVSup omdat dat alleen een uitbreiding is van CVS die de mogelijkheid biedt om wijzigingen direct van een CVS repository op afstand te halen. CVSup kan dit veel efficiënter doen, maar anonieme CVS is makkelijker in het gebruik. CTM CTM aan de andere kant maakt geen vergelijking tussen de aanwezige bronnen en die op de master server. In plaats daarvan wordt een script uitgevoerd dat wijzigingen in bestanden ziet sinds de vorige keer dat is bijgewerkt en die meerdere keren per dag worden uitgevoerd op de master CTM machine. Elke ontdekte wijziging wordt gecomprimeerd, krijgt een volgnummer toegekend en wordt gecodeerd voor verzending via e-mail (in leesbare ASCII). Deze CTM delta's kunnen dan aangeleverd worden aan &man.ctm.rmail.1; die ze automatisch decodeert, controleert en toepast in de gebruikerskopie van de bronnen. Dit proces is veel efficiënter dan CVSup en claimt minder systeembronnen omdat het model push in plaats van pull is. Er zijn andere nadelen. Als per ongeluk een deel van het archief wordt verwijderd, kan CVSup dat detecteren en het beschadigde deel repareren. CTM doet dit niet en als een deel van de broncode wordt verwijderd (en er geen backup is), dan moet er opnieuw begonnen worden (vanaf de meest recente CVS base delta en moet alles opnieuw opgebouwd worden met CTM. Met Anonymous CVS kan simpelweg het slechte deel verwijderd worden alvorens weer te synchroniseren. De <quote>wereld</quote> opnieuw bouwen world opnieuw bouwen Zodra de lokale broncode gesynchroniseerd is met een bepaalde versie van &os; (&os.stable;, &os.current;, enzovoort) kan de broncode gebruikt worden om een systeem te herbouwen. Maak een backup Het kan niet vaak genoeg verteld worden hoe belangrijk het is om een backup te maken van een systeem vóór deze taak uit te voeren. Ook al is het opnieuw bouwen van de wereld vrij simpel (als deze instructies gevolgd worden), er worden ongetwijfeld ooit fouten gemaakt, misschien zelfs in de broncode, die het onmogelijk maken om een systeem op te starten. Wees ervan verzekerd dat er een backup gemaakt is en dat er een reparatiediskette of cd-rom bij de hand is. Deze wordt waarschijnlijk nooit gebruikt maar better safe than sorry. Abonneer op de juiste mailinglijsten mailinglijst De &os.stable; en &os.current; takken zijn van nature in ontwikkeling. Mensen die bijdragen aan &os; zijn menselijk en foutjes ontstaan regelmatig. Soms zijn deze foutjes onschadelijk, ze geven dan hooguit een nieuwe diagnostische waarschuwing weer. Maar de wijziging kan ook catastrofaal zijn en ervoor zorgen dat een systeem niet meer opstart of bestandssystemen vernietigt (of erger). Als problemen zoals deze voorkomen wordt er een heads up naar de juiste mailinglijst gestuurd, waarin uitgelegd wordt wat het probleem is en welke systemen het raakt. Er wordt een all clear bericht gestuurd als het probleem is opgelost. &os.stable; of &os.current; volgen zonder de &a.stable; of &a.current; te volgen is vragen om problemen. Gebruik geen <command>make world</command> Veel oudere documentatie raadt aan om make world te gebruiken. In dat geval worden er belangrijke stappen overgeslagen en gebruik het commando alleen als er voldoende kennis over aanwezig is. In bijna alle omstandigheden is make world verkeerd en de procedure die hier beschreven is hoort in plaats daarvan gebruikt te worden. De universele wijze om een systeem bij te werken Een systeem bijwerken kan met de volgende procedure, nadat /usr/src/UPDATING is geraadpleegd om te controleren of er voor buildworld voor de gebruikte versie van de broncode nog acties zijn uit te voeren: &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; reboot Er zijn een aantal zeldzame gevallen waarin mergemaster -p nog een keer moet draaien voor de stap met buildworld. Deze staan beschreven in UPDATING. In het algemeen kan deze stap echter zonder risico worden overgeslagen als er niet tussen een of meer hoofdversies wordt bijgewerkt. Nadat installkernel succesvol is afgerond, dient er in single-user modus opgestart te worden (met boot -s vanaf de loaderprompt). Draai dan: &prompt.root; mergemaster -p &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; reboot Lees verdere uitleg De hierboven beschreven volgorde is alleen een korte samenvatting. Ook de volgende secties lezen geeft een beter beeld van elke stap, met name als er een op maat gemaakte kernelinstelling wordt gebruikt. <filename>/usr/src/UPDATING</filename> lezen Lees voor verder te gaan /usr/src/UPDATING (of het gelijknamige bestand waar de kopie van de broncode ook staat). Dit bestand kan belangrijke informatie bevatten over mogelijke problemen of specificeert de volgorde waarin bepaalde commando's gestart moeten worden. Als UPDATING tegenstrijdig is met wat hier wordt beschreven, heeft UPDATING voorrang. UPDATING lezen is geen acceptabele vervanging voor het abonneren op de correcte mailinglijst zoals eerder beschreven. De twee vullen elkaar aan en zijn niet exclusief. <filename>/etc/make.conf</filename> controleren make.conf Controleer /usr/share/examples/etc/make.conf (/etc/defaults/make.conf in &os; 4.X) en /etc/make.conf. Het eerste bestand bevat standaard definities, waarvan de meeste uitgecommentarieerd zijn. Om hiervan gebruik te maken als het systeem opnieuw opgebouwd wordt vanuit de broncode, moeten ze toegevoegd worden aan /etc/make.conf. Bedenk dat alles wat toegevoegd wordt aan /etc/make.conf ook gebruikt wordt bij elk make commando. Het is dus verstandig om daar redelijke waardes in te vullen voor een systeem. Een typische gebruiker wil waarschijnlijk de regels - CFLAGS en NOPROFILE - uit /usr/share/examples/etc/make.conf + CFLAGS en NO_PROFILE (of + NOPROFILE in &os; 5.X en ouder) uit + /usr/share/examples/etc/make.conf (/etc/defaults/make.conf in &os; 4.X) kopieren naar /etc/make.conf en het commentaar verwijderen. Bekijk de andere definities (COPTFLAGS, NOPORTDOCS, enzovoort) en bepaal of deze relevant zijn. <filename>/etc</filename> bijwerken De map /etc bevat een groot deel van de systeeminstellingen en scripts die gestart worden tijdens de systeemstart. Sommige van deze scripts verschillen van versie tot versie in &os;. Sommige van de instellingenbestanden worden dagelijks gebruikt voor het draaien van een systeem. In het bijzonder /etc/group. Er zijn gevallen geweest waarbij het installatiegedeelte van make installworld een aantal gebruikersnamen of groepen verwachtte. Als er een upgrade wordt uitgevoerd is het waarschijnlijk dat deze gebruikers of groepen niet bestaan. Dit levert problemen op bij upgraden. In sommige gevallen controleert make buildworld of deze gebruikers of groepen bestaan. Een voorbeeld hiervan is het toevoegen van de gebruiker smmsp. Gebruikers hadden een falend installatieproces toen &man.mtree.8; probeerde om /var/spool/clientmqueue te creëren. De oplossing is om /usr/src/etc/group te controleren en de lijst met groepen te vergelijken met die van het bij te werken systeem. Als daar groepen bestaan die nog niet op een systeem staan, moeten deze worden gekopieerd. Hetzelfde geldt voor het hernoemen van groepen in /etc/group die hetzelfde GID hebben maar een andere naam dan in /usr/src/etc/group. &man.mergemaster.8; kan in voorbereidende modus gedraaid worden als de optie wordt meegegeven. Dan worden alleen de bestanden vergeleken die essentieel zijn voor het succes van buildworld of installworld: &prompt.root; cd /usr/src/usr.sbin/mergemaster &prompt.root; ./mergemaster.sh -p In paranoide beheerdersmodus kan er gecontroleerd worden welke bestanden op een systeem eigendom zijn van de groep die wordt hernoemd of verwijderd: &prompt.root; find / -group GID -print Dit commando toont alle bestanden die eigendom zijn van de groep GID (een groepsnaam of een numeriek groeps-ID). Systeem naar single-user modus brengen single-user modus Het kan zijn dat een systeem in single-user modus gecompileerd moet worden. Buiten het duidelijke voordeel dat de operatie iets sneller verloopt, is het voordeel dat bij een herinstallatie van een systeem een aantal belangrijke systeembestanden waaronder binaire systeembestanden, bibliotheken, include bestanden, enzovoort, worden aangepast, iets wat op een actief systeem vragen om problemen is (zeker als er actieve gebruikers op een systeem aanwezig zijn). multi-user modus Een andere methode is het systeem compileren in multi-user modus en daarna naar single-user modus gaan voor de installatie. Bij deze methode moeten de volgende stappen gevolgd worden. Het overschakelen naar single-user modus kan uitgesteld worden tot en met installkernel of installworld. Een supergebruiker kan als volgt een draaiend systeem naar single-user modus overgeschakelen: &prompt.root; shutdown now Als alternatief kan tijdens het opstarten de optie worden meegegeven. Het systeem start dan in single-user modus. Op de shell prompt moet dan worden ingegeven: &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a Hierdoor worden de bestandssystemen gecontroleerd, / met lees en schrijf rechten opnieuw gemount, worden alle andere UFS bestandssystemen die in /etc/fstab staan gemount en wordt swap ingeschakeld. Als de CMOS-klok ingesteld is naar de lokale tijd en niet naar GMT (dit is waar als het resultaat van &man.date.1; niet de correcte tijd en zone weergeeft), dan is het misschien handig om het volgende commando te starten: &prompt.root; adjkerntz -i Dit zorgt ervoor dat de lokale tijdzoneinstellingen correct ingesteld worden. Zonder deze instelling kunnen er later problemen ontstaan. <filename>/usr/obj</filename> verwijderen Als delen van een systeem opnieuw gebouwd worden, worden ze standaard geplaatst in mappen onder /usr/obj. Deze mappen schaduwen de mappen onder /usr/src. Het proces make buildworld kan versneld worden en problemen met afhankelijkheden kunnen voorkomen worden als deze map wordt verwijderd. Sommige bestanden onder /usr/obj hebben mogelijk de optie niet aanpassen ingesteld (zie &man.chflags.1;) die eerst verwijderd moet worden: &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * Broncode hercompileren Uitvoer bewaren Het is een goed idee om de uitvoer van &man.make.1; te bewaren in een ander bestand. Als er iets misgaat is er een kopie van de foutmelding aanwezig. Hoewel dit misschien niet helpt in de diagnose van wat er fout is gegaan, kan het anderen helpen als het probleem wordt aangegeven in een &os; mailinglijst. De makkelijkste manier om dit te doen is door het commando &man.script.1; te gebruiken, met een parameter die de naam specificeert waar de uitvoer naartoe moet. Dit moet direct gedaan worden vóór het herbouwen van de wereld, zodat het proces klaar is moet exit worden ingegeven: &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … compile, compile, compile … &prompt.root; exit Script done, … Bewaar de uitvoer in deze stap niet in /tmp. Deze map wordt mogelijk opgeschoond tijdens de volgende herstart. Een betere plaats om dit bestand te bewaren is de map /var/tmp (zoals in het vorige voorbeeld) of in de thuismap van root. Basissysteem compileren Ga naar de map /usr/src, tenzij de broncode ergens anders staat, in welk geval naar die map gegaan moet worden: &prompt.root; cd /usr/src make Om de wereld opnieuw te bouwen moet het commando &man.make.1; gebruikt worden. Dit commando leest zijn instructies uit het bestand Makefile, dat beschrijft hoe de programma's die samen &os; vormen moeten worden gebouwd, in welke volgorde ze gebouwd moeten worden, enzovoort. Het algemene formaat van de commandoregel die gebruikt moet worden is als volgt: &prompt.root; make -x -DVARIABELE doel In dit voorbeeld is de optie een optie die wordt meegegeven aan &man.make.1;. In de hulppagina voor &man.make.1; staat een voorbeeld van de opties die meegegeven kunnen worden. geeft een variabele door aan Makefile. Het gedrag van Makefile wordt beïnvloed door deze variabele. Dit zijn dezelfde variabelen die ingesteld worden in /etc/make.conf. Deze optie biedt een alternatief om deze opties in te stellen. - &prompt.root; make -DNOPROFILE doel + &prompt.root; make -DNO_PROFILE doel Het bovenstaande commando is een andere manier om aan te geven dat geprofileerde bibliotheken niet gebouwd moeten worden en correspondeert met de onderstaande regel in /etc/make.conf: - NOPROFILE= true # Avoid compiling profiled libraries + NO_PROFILE= true # Avoid compiling profiled libraries doel geeft &man.make.1; aan wat er gedaan moet worden. Elke Makefile definieert een aantal van verschillende doelen en het gekozen doel bepaalt wat er gebeurt. Sommige doelen staan vermeld in het bestand Makefile, maar zijn niet geschikt om direct te starten. Integendeel, deze worden gebruikt door het bouwproces om de benodigde stappen onder te verdelen. In veel gevallen hoeven er geen parameters te worden meegegeven aan &man.make.1; en dus ziet de commando regel er als volgt uit: &prompt.root; make doel Het world doel is opgesplitst in twee delen: buildworld en installworld. Vanaf versie 5.3 van &os; verandert world dusdanig dat het helemaal niet meer werkt omdat het gevaarlijk is voor de meeste gebruikers. Zoals de namen impliceren bouwt buildworld een compleet nieuwe boom onder /usr/obj en installworld installeert deze boom op de huidige machine. Dit is erg handig om twee redenen. Als eerste biedt het de mogelijkheid om de bouw veilig te doen met de wetenschap dat geen enkel draaiend onderdeel van een systeem geraakt wordt. De bouw is zelf ondersteunend. Hierdoor kan veilig in multi-user modus buildworld gedraaid worden. Het wordt echter nog steeds aangeraden om installworld in single-user modus te starten. Ten tweede geeft het de mogelijkheid om NFS-mounts te gebruiken om meerdere machines in het netwerk bij te werken. Als er drie machines zijn, A, B en C, die bijgewerkt moeten worden, dan kunnen make buildworld en make installworld gedraaid worden op A waarna B en C een NFS-mount kunnen opzetten naar /usr/src en /usr/obj op machine A waarna make installworld gedraaid kan worden op B en C om de resultaten de installeren. Alhoewel het doel world nog wel bestaat wordt het gebruik ervan sterk afgeraden. Voer het volgende commando uit: &prompt.root; make buildworld Het is nu mogelijk om de optie mee te geven aan make, wat resulteert in meerdere processen die tegelijkertijd draaien. Dit heeft het meeste effect op machines met meerdere processoren. Echter, omdat het compilatieproces meer IO-gericht is dan processorgericht, kan het ook nuttig zijn op systemen met één processor. Start als volgt op een systeem met één processor: &prompt.root; make -j4 buildworld &man.make.1; draait dan maximaal 4 processen tegelijkertijd. In het algemeen blijkt uit de mailinglijsten dat dit de beste resultaten geeft. Als er meerdere processoren in een systeem zitten en gebruik gemaakt wordt van een SMP kernel, probeer dan waardes tussen de 6 en 10 en bekijk hoe het systeem reageert. Deze mogelijkheid is nog steeds fragiel en commits in de broncode verbreken deze mogelijkheid vaak. Als het opnieuw bouwen van de wereld mislukt, probeer dan nogmaals te compileren zonder deze opties alvorens een probleemrapport aan te maken. Doorlooptijd world opnieuw bouwen doorlooptijd De doorlooptijd wordt door veel factoren beïnvloed. Een 500 MHz &pentium; III met 128 MB ram doet er ongeveer 2 uur over om de &os.stable; boom te bouwen zonder extra trucjes. Een &os.current; boom kan wat langer duren. Nieuwe kernel compileren en installeren kernel compileren Om volledig gebruik te maken van het nieuwe systeem moet de kernel opnieuw gecompileerd worden. Dit is bijna altijd nodig omdat sommige geheugenstructuren mogelijkerwijs veranderd zijn en programma's als &man.ps.1; en &man.top.1; niet werken totdat de kernel en de broncode dezelfde versie hebben. De simpelste en makkelijkste manier om dit te doen is om een kernel te maken die gebaseerd is op GENERIC. Ondanks dat GENERIC mogelijk niet alle benodigde apparaten heeft voor een systeem, hoort het alles te bevatten dat nodig is om een systeem te starten in single-user modus. Dit is een goede test op de correcte werking van een nieuw systeem. Na het opstarten van GENERIC en een systeemcontrole kan erna een nieuwe kernel gebouwd worden gebaseerd op een aangepast kernelinstellingenbestand. Op moderne versies van &os; is het belangrijk om de wereld opnieuw te bouwen voordat een nieuwe kernel gebouwd wordt. Als een aangepaste kernel gemaakt moet worden en er reeds een instellingenbestand aanwezig is, gebruik dan KERNCONF=MYKERNEL als volgt: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MYKERNEL &prompt.root; make installkernel KERNCONF=MYKERNEL Let op dat als kern.securelevel een waarde hoger dan 1 heeft of noschg of gelijksoortige opties geplaatst zijn op het binaire kernelbestand, is het misschien nodig om terug te gaan naar single-user modus om installkernel uit te voeren. In andere gevallen moet het mogelijk zijn om deze commando's zonder problemen uit te voeren in multi-user modus. Zie &man.init.8; voor meer informatie over kern.securelevel en &man.chflags.1; voor informatie over diverse bestandsopties. Opnieuw opstarten in single-user modus single-user modus Start met de instructies in in single-user modus op om te testen of de nieuwe kernel werkt. Nieuwe binaire systeembestanden installeren Na het draaien van make buildworld kan nu installworld gebruikt worden om de nieuwe binaire systeembestanden te installeren. Voer de volgende commando's uit: &prompt.root; cd /usr/src &prompt.root; make installworld Als er variabelen gespecificeerd zijn op de commandoregel van make buildworld moeten dezelfde variabelen gebruikt worden op de commandoregel van make installworld. Dit is niet per se waar voor opties zoals , die nooit gebruikt mogen worden met installworld. Als bijvoorbeeld het volgende commando is uitgevoerd: - &prompt.root; make -DNOPROFILE buildworld + &prompt.root; make -DNO_PROFILE buildworld Dan moet het resultaat geïnstalleerd worden met: - &prompt.root; make -DNOPROFILE installworld + &prompt.root; make -DNO_PROFILE installworld Anders wordt geprobeerd geprofileerde bibliotheken te installeren die niet gebouwd zijn tijdens de fase make buildworld. Bestanden bijwerken die niet bijgewerkt zijn door <command>make installworld</command> Het herbouwen van de wereld werkt bepaalde mappen niet bij (in het bijzonder /etc, /var en /usr) met nieuwe of gewijzigde instellingenbestanden. De simpelste manier om deze bestanden bij te werken is door &man.mergemaster.8; te gebruiken, maar het is ook mogelijk dit handmatig te doen. Welke manier er ook gekozen wordt, zorg er altijd voor dat een backup van /etc beschikbaar is voor het geval er iets misgaat. Tom Rhodes Bijgedragen door <command>mergemaster</command> mergemaster Het hulpprogramma &man.mergemaster.8; is een Bourne script dat helpt bij het bepalen van de verschillen tussen de instellingenbestanden in /etc en de instellingenbestanden in de broncodeboom /usr/src/etc. Deze methode wordt aangeraden om instellingenbestanden van een systeem bijgewerkt te houden met de bestanden die in de broncodeboom staan. Het programma wordt gestart met mergemaster op de commandoregel en geeft dan resultaten weer. mergemaster bouwt dan een tijdelijke root omgeving vanaf / en vult deze met diverse instellingenbestanden voor een systeem. Deze bestanden worden vergeleken met de bestanden die geïnstalleerd zijn op een systeem. Op dit punt worden de bestanden getoond die verschillen in het &man.diff.1;-formaat, met een voor toegevoegde of gewijzigde regels en een voor regels die verwijderd of vervangen zijn. In de hulppagina voor &man.diff.1; staat meer informatie over de syntaxis van &man.diff.1; en hoe bestandsverschillen getoond worden. &man.mergemaster.8; toont dan elk bestand dat verschilt en op dit moment is er de mogelijkheid om of het nieuwe bestand te verwijderen (ofwel het tijdelijke bestand), het tijdelijke bestand te installeren zonder enige wijzigingen, het verwerken van het oude bestand in het nieuwe bestand of de resultaten van &man.diff.1; nogmaals te tonen. Als gekozen wordt om het tijdelijke bestand te verwijderen, geeft dit &man.mergemaster.8; aan dat het huidige bestand niet gewijzigd dient te worden en de nieuwe versie verwijderd kan worden. Deze optie wordt niet aangeraden, behalve als er geen reden is om het huidige bestand aan te passen. Op ieder moment kunnen hulpteksten getoond worden door ? in te geven op de prompt van &man.mergemaster.8;. Als een bestand wordt overgeslagen, dan wordt het weer getoond als alle overige bestanden verwerkt zijn. Bij de keuze om het ongewijzigde tijdelijke bestand te installeren wordt het huidige bestand vervangen door het nieuwe. Voor de meeste ongewijzigde bestanden is dit de beste optie. Als ervoor gekozen wordt om de wijzigingen te verwerken wordt er een tekstverwerker gestart die de inhoud van beide bestanden toont. D verschillen kunnen verwerkt worden terwijl beide bestanden naast elkaar op het scherm staan. Hier kunnen delen gekozen worden die gezamenlijk een nieuw bestand opleveren. Als de bestanden zij aan zij vergeleken worden, wordt met de toets l de inhoud links geselecteerd en met de toets r de inhoud rechts geselecteerd. Het eindresultaat bestaat uit delen van beide bestanden die erna geinstalleerd kunnen worden. Deze optie wordt voornamelijk gebruikt voor bestanden die gewijzigd zijn door de beheerder. Als ervoor gekozen wordt om de &man.diff.1; resultaten nog een keer te tonen, worden dezelfde verschillen getoond zoals &man.mergemaster.8; deed voordat een optie gevraagd werd. Zodra &man.mergemaster.8; klaar is met de systeembestanden worden er andere opties getoond. &man.mergemaster.8; kan vragen of het wachtwoordbestand opnieuw gebouwd moet worden en/of &man.MAKEDEV.8; gestart moet worden als er een versie van &os; voor 5.0 draait. Als laatste wordt een optie getoond om alle overgebleven tijdelijke bestanden te verwijderen. Handmatig bijwerken Bij handmatig bijwerken kunnen de bestanden van /usr/src/etc niet zomaar naar /etc gekopieerd worden om een werkend systeem te krijgen. Sommige van deze bestanden moeten eerst geïnstalleerd worden. Dit omdat de map /usr/src/etc geen kopie is van /etc. Daarnaast staan er in /etc bestanden die niet in /usr/src/etc staan. Als &man.mergemaster.8; gebruikt wordt (zoals aangeraden), kan doorgegaan worden met het volgende onderdeel. De simpelste manier om met de hand bij te werken, is de bestanden in een nieuwe map installeren en daarna naar verschillen tussen de bestanden te zoeken. Backup maken van <filename>/etc</filename> Ondanks dat, in theorie, niets in deze map automatisch wordt aangepast, is het altijd beter om daar zeker van te zijn. Dus kopieer de bestaande /etc naar een veilige locatie. Zoals bijvoorbeeld met het volgende commando: &prompt.root; cp -Rp /etc /etc.old maakt een recursieve kopie, bewaart tijden, eigenaarschap, enzovoort op bestanden. Er moet een dummyset van mappen gemaakt worden om de nieuwe /etc en andere bestanden in te installeren. /var/tmp/root is een redelijke keuze en er zijn hier een aantal benodigde submappen aanwezig: &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution Dit maakt de benodigde mappenstructuur en installeert de bestanden. Een groot deel van de submappen die gemaakt zijn in /var/tmp/root zijn leeg en moeten verwijderd worden. De simpelste manier om dit te doen is: &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null Dit verwijderd alle lege mappen. De standaardfout wordt omgeleid naar /dev/null om waarschuwingen te voorkomen over mappen die niet leeg zijn. /var/tmp/root bevat nu alle bestanden die geplaatst zouden moeten worden op de juiste locaties in /. Er moet nu in de bestanden gekeken worden om te bepalen of deze verschillen met de huidige betanden. Let op dat sommige van de bestanden die geïnstalleerd zijn in /var/tmp/root beginnen met een .. Op het moment van schrijven hebben alleen shell opstartscripts in /var/tmp/root en /var/tmp/root/root dit, maar er kunnen ook andere zijn. Zorg ervoor dat ls -a gebruikt wordt om deze bestanden te zien. De simpelste manier om twee bestanden te vergelijken is &man.diff.1; gebruiken: &prompt.root; diff /etc/shells /var/tmp/root/etc/shells Dit toont de verschillen tussen de huidige /etc/shells en de nieuwe /var/tmp/root/etc/shells. Gebruik dit om te bepalen of de wijzigingen gemigreerd moeten worden of dat het oude bestand gekopieërd moet worden. Voeg aan de naam van de nieuwe rootmap (<filename>/var/tmp/root</filename>) een tijdsindicatie toe zodat makkelijk verschillen tussen versies bepaald kunnen worden Als de wereld regelmatig wordt herbouwd moeten bestanden in /etc ook regelmatig bijgewerkt moeten worden, wat een vervelend werkje kan zijn. Dit proces kan versneld worden door een kopie te bewaren van de bestanden die gemigreerd zijn naar /etc. De volgende procedure geeft een idee over hoe dit gedaan kan worden. Maak de wereld zoals normaal. Als /etc en de andere mappen bijgewerkt moeten worden, geef dan de doelmap een naam gebaseerd op de huidige datum. Op 14 februari 1998 wordt dat als volgt gedaan: &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution Migreer de wijzigingen van deze map zoals hierboven beschreven. Verwijder de map /var/tmp/root-19980214 niet na afronden. Als de laatste versie van de broncode gedownload en opnieuw gemaakt is, volg stap 1. Dit geeft een nieuwe map die wellicht /var/tmp/root-19980221 heet (als er een week zit tussen het bijwerken). De verschillen die gemaakt zijn in de tussenliggende week kunnen nu getoond worden door met &man.diff.1; een recursieve diff te maken tussen de twee mappen: &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 Vaak is dit een kleinere set aan verschillen dan tussen /var/tmp/root-19980221/etc en /etc. Omdat de set verschillen kleiner is, is het makkelijker om deze te migreren naar de map /etc. De oudste van de twee /var/tmp/root-*-mappen kan nu verwijderd worden: &prompt.root; rm -rf /var/tmp/root-19980214 Herhaal dit proces elke keer als er wijzigingen gemigreerd moeten worden naar /etc. Met &man.date.1; kan het maken van de mappen geautomatiseerd worden: &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` <filename>/dev</filename> bijwerken DEVFS Als &os; 5.0 of later wordt gebruikt kan deze sectie veilig overgeslagen worden. Deze versies gebruiken &man.devfs.5; om apparaatnodes transparant aan te maken voor gebruikers. In veel gevallen herkent &man.mergemaster.8; dat het nodig is om apparaatnodes bij te werken en aan te bieden en doet dat automatisch. Hieronder wordt beschreven hoe apparaatnodes handmatig bijgewerkt kunnen worden. Om veiligheidsredenen bestaat dit proces uit meerdere stappen. Kopieer /var/tmp/root/dev/MAKEDEV naar /dev: &prompt.root; cp /var/tmp/root/dev/MAKEDEV /dev MAKEDEV Als &man.mergemaster.8; is gebruikt om /etc bij te werken is het script MAKEDEV al aangepast. Het kan echter geen kwaad om dit te controleren (met &man.diff.1;) en het script indien nodig handmatig te kopieren. Maak een afdruk van de huidige /dev. Deze snapshot moet de permissies, eigenaarschappen, grote en kleine nummers van ieder bestand bevatten, maar niet de timestamps. De makkelijkste manier om dit te doen is door &man.awk.1; te gebruiken om er informatie uit te halen: &prompt.root; cd /dev &prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out Creeër alle apparaatnodes opnieuw: &prompt.root; sh MAKEDEV all Maak een tweede afdruk van de map, deze keer naar /var/tmp/dev2.out. Bekijk nu door de twee bestanden te vergelijken of er apparaatnodes niet zijn aangemaakt. Dit hoort niet voor te komen, maar het kan maar beter gecontroleerd zijn. &prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.out Als er verschillen zijn is het waarschijnlijk dat deze in diskslices zitten. Om deze apparaatnodes opnieuw aan te maken kan iets als het onderstaande commando gebruikt worden: &prompt.root; sh MAKEDEV sd0s1 De precieze afwijkingen kunnen variëren. <filename>/stand</filename> bijwerken Deze stap is opgenomen om het proces compleet te maken. Hij kan zonder problemen overgeslagen worden. Als &os; 5.2 of later wordt gebruikt, wordt de map /rescue automatisch bijgewerkt met de nieuwste, statisch gecompileerde binaire bestanden tijdens make installworld, waardoor het overbodig wordt om /stand bij te werken (bestaat helemaal niet in &os; 6.0 en later). Volledigheidshalve is het misschien wenselijk de bestanden in de map /stand bij te werken. Deze bestanden bestaan uit harde links naar het binaire bestand /stand/sysinstall. Dit bestand moet statisch gelinkt zijn zodat het zonder tussenkomst van andere bestandssystemen kan werken (in het bijzonder /usr). &prompt.root; cd /usr/src/release/sysinstall &prompt.root; make all install Herstarten Dit was het. Na een controle of alles op de juiste plaats staat kan het systeem herstart worden. Dan kan met een simpele &man.shutdown.8;: &prompt.root; shutdown -r now Klaar Het &os; systeem is nu succesvol bijgewerkt. Gefeliciteerd! Als er dingen misgingen is het makkelijk om een deel van het systeem opnieuw te bouwen. Als bijvoorbeeld per ongeluk /etc/magic verwijderd is als onderdeel van de upgrade of door een merge van /etc, dan werkt &man.file.1; niet meer. Dat kan als volgt opgelost worden: &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install Vragen Moet de wereld opnieuw gemaakt worden voor elke wijziging? Op deze vraag bestaat geen eenvoudig antwoord, omdat dit afhangt van de aard van de wijziging. Als bijvoorbeeld net CVSup is gedraaid en de onderstaande bestanden zijn bijgewerkt, dan is het waarschijnlijk niet de moeite waard om de volledige wereld te herbouwen: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk Dan is het handiger om naar de juiste submappen te gaan, daar make all install uit te voeren en dat is het zo'n beetje. Maar als er iets wezenlijks is veranderd, bijvoorbeeld src/lib/libc/stdlib, dan dient ofwel de wereld herbouwd te worden of tenminste die delen die statisch gelinkt zijn (en ook al het andere dat statisch gelinkt is en onderdeel is van een systeem). Uiteindelijk beslist een beheerder zelf. Misschien vindt die het prettig iedere twee weken de wereld te herbouwen terwijl de wijzigingen in die twee weken binnenkomen. Een andere beheerder herbouwt alleen die onderdelen die veranderd zijn en vertrouwt erop dat hij alle afhankelijkheden in de gaten heeft. Natuurlijk hangt het ook af van de keuze hoe vaak het wenselijk is bij te werken en of &os.stable; of &os.current; wordt bijgehouden. Het compileren gaat fout met veel meldingen van signal 11 (of andere signalnummers). Wat is er aan de hand? signal 11 Dit wijst meestal op hardwareproblemen. Het (her)bouwen van de wereld is een prima manier om een stresstest op hardware uit te voeren en hierdoor komen vaak geheugenproblemen bovendrijven. Die resulteren vaak in een compiler die op mysterieuze wijze overlijdt na het ontvangen van vreemde signalen. Dit probleem is nog duidelijker als na het herstarten van de make het proces opnieuw stopt op een ander punt. Hier biedt niets anders uitkomst dan componenten in een systeem wisselen om uit te zoeken welk component er faalt. Kan /usr/obj verwijderd worden na afloop? Het korte antwoord is ja. /usr/obj bevat alle objectbestanden die tijdens het compileren zijn gemaakt. Normaliter is een van de eerste stappen in het make buildworld proces deze map verwijderen en een verse start maken. In dit geval heeft het behouden van /usr/obj na het afronden weinig zin en geeft het ook nogal wat extra vrije schijfruimte (ongeveer 340 MB). Als er veel kennis aanwezig is bij een beheerder, dan kan make buildworld aangegeven worden deze stap over te slaan. Hierdoor draaien volgende builds veel sneller, omdat veel broncode niet opnieuw gecompileerd hoeft te worden. De andere kant van de medaille is dat er subtiele afhankelijkheidsproblemen kunnen ontstaan, waardoor een build op bijzondere wijze kan falen. Hierdoor onstaat regelmatig ruis op &os; mailinglijsten als er iemand klaagt dat zijn build faalt, terwijl hij zich niet realiseert dat dit komt doordat hij zijn updateproces niet volgens het boekje heeft uitgevoerd. Kunnen onderbroken builds gecontinueerd worden? Dit hangt af van hoever een systeem was voordat een probleem gevonden werd. Normaal gesproken (en dit is geen vaste regel) maakt het proces make buildworld nieuwe kopieën van essentiele hulpprogramma's (zoals &man.gcc.1; en &man.make.1;) en de systeembibliotheken. Deze hulpprogramma's en bibliotheken worden daarna geïnstalleerd. De nieuwe hulpprogramma's en bibliotheken worden daarna gebruikt om zichzelf opnieuw op te bouwen en wederom te installeren. Het complete systeem (nu met gewone programma's zoals &man.ls.1; en &man.grep.1;) wordt daarna opnieuw gebouwd met de nieuwe systeembestanden. Als een systeem in de laatste fase zit (wat uit de uitvoer blijkt) kan dit redelijk veilig gedaan worden: … fix the problem … &prompt.root; cd /usr/src -&prompt.root; make -DNOCLEAN all +&prompt.root; make -DNO_CLEAN all + + + Gebruik in &os; 5.X en ouder + -DNOCLEAN. + Dit maakt het werk van de vorige make buildworld niet ongedaan. Als het onderstaande bericht in de uitvoer van make buildworld staat, dan is het redelijk veilig om het te doen: -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- Als dat bericht er niet is, of er is onzekerheid over, dan is het altijd beter om de build opnieuw te starten vanaf het begin. Kan kan de wereld bouwen versneld worden? Draai in single-user modus; Zet de mappen /usr/src en /usr/obj op aparte bestandssystemen die op aparte schijven staan. Hang deze schijven als mogelijk aan aparte schijfcontrollers; Nog beter, verspreid de bestandssystemen over meerdere schijven via het apparaat &man.ccd.4; (concatenated disk driver); Zet profiling uit (voeg - NOPROFILE=true toe aan + NO_PROFILE=true toe aan /etc/make.conf). Het is zeer waarschijnlijk niet nodig; Voer ook CFLAGS toe aan /etc/make.conf met iets als . De optimalisatie is veel langzamer en het optimalisatieverschil tussen en is meestal verwaarloosbaar. laat de compiler gebruik maken van pipes in plaats van tijdelijke bestanden voor communicatie, wat schijfacties scheelt (ten koste van geheugengebruik); Geef de optie mee aan &man.make.1; om meerdere processen parallel te laten lopen. Dit helpt in de meeste gevallen, onafhankelijk of er gewerkt wordt op een systeem met één of meerdere processoren; Het bestandssysteem dat /usr/src bevat, kan (opnieuw) gemount worden met de optie . Dit voorkomt dat het bestandssysteem de toegangsmomenten registreert. Deze informatie is waarschijnlijk toch niet nodig. &prompt.root; mount -u -o noatime /usr/src In dit voorbeeld wordt aangenomen dat /usr/src op zijn eigen bestandssysteem staat. Als dit niet het geval is (bijvoorbeeld als het onderdeel is van /usr), dan moet het mountpunt voor dat bestandssysteem gebruikt moeten worden en niet /usr/src; Het bestandssysteem dat /usr/obj gevat kan (opnieuw) worden gemount met de optie . Dit zorgt ervoor dat schrijfacties naar een schijf asynchroon plaatsvinden. In andere woorden: de schrijfactie wordt direct uitgevoerd en de gegevens worden later naar de schijf geschreven. Dit stelt het systeem in staat om data geclusterd weg te schrijven, wat een grote prestatieverbetering kan opleveren. Houd er rekening mee dat deze optie het bestandssysteem kwetsbaarder maakt. Met deze optie is er een vergrote kans dat, indien er een stroomstoring optreed, het bestandssysteem in een niet meer te herstellen staat komt als de machine herstart. Als op dit bestandssysteem alleen /usr/obj staat, is dit geen probleem. Als er andere belangrijke gegevens op hetzelfde bestandssysteem staan, zorg er dan voor dat er verse backups zijn voordat deze optie aangezet wordt. &prompt.root; mount -u -o async /usr/obj Zorg ervoor, zoals al eerder is aangegeven, dat als /usr/obj niet op een eigen bestandssysteem staat, het juiste mountpunt wordt gebruikt. Wat te doen als er iets mis gaat? Zorg ervoor dat het systeem geen rommel meer bevat van eerdere builds. Het volgende helpt daarbij: &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir Inderdaad, make cleandir moet twee keer gedraaid worden. Herstart daarna het complete proces vanaf make buildworld. Als er nog steeds problemen zijn, stuur dan de foutmelding en de uitvoer van uname -a naar de &a.questions;. Wees bereid aanvullende vragen over het systeem te beantwoorden! Mike Meyer Bijgedragen door Meerdere machines bijwerken NFS meerdere machines installeren Als er meerdere machines zijn die dezelfde broncode bijhouden, lijkt het downloaden van alle broncode en alles overal opnieuw bouwen zonde van de bronnen: harde schijfruimte, netwerk bandbreedte, en processorbelasting. Dit klopt en de oplossing is om alles op één machine te doen terwijl de overige machines het uitgevoerde werk benaderen via NFS. Nu wordt een methode beschreven waarmee dit gedaan kan worden. Benodigdheden Als eerste moet er een groep van machines gekozen worden die dezelfde set aan binaire bestanden zal draaien, hier een bouwgroep. Elke machine kan een eigen afwijkende kernel hebben maar moet dezelfde binaire gebruikersbestanden draaien. Uit die groep moet een machine gekozen worden die de bouwmachine wordt. Dit wordt de machine waar de wereld en kernel op gebouwd worden. In het meest ideale geval is dit een snelle machine die genoeg processorkracht vrij heeft om make buildworld en make buildkernel te draaien. Er moet ook een machine gekozen worden die de testmachine wordt waarop alle bijgewerkte software wordt test voordat die in productie wordt genomen. Dit moet een machine zijn die voor langere tijd down mag zijn. Dit kan de bouwmachine zijn maar dat hoeft niet per se. Alle machines in deze bouwgroep moeten ingesteld worden om /usr/obj en /usr/src vanaf dezelfde machine te mounten op hetzelfde punt. In het meest ideale geval zijn dit twee verschillende schijven op de bouwmachine, maar ze kunnen ook door middel van NFS op die machine gemount zijn. Als er meerdere bouwgroepen zijn, dan moet /usr/src op één bouwmachine staan en door middel van NFS gemount worden op de overige machines. Zorg er als laatste voor dat /etc/make.conf op alle machines in de bouwgroep het eens zijn met de bouwmachine. Dat betekent dat de bouwmachine alle delen van het basissysteem moet bouwen die elke machine in de bouwgroep installeert. Ook heeft elke bouwmachine zijn kernelnaam ingesteld met KERNCONF in /etc/make.conf en de bouwmachine moet ze allemaal hebben in KERNCONF, zijn eigen kernel eerst. De bouwmachine moet de instellingenbestanden voor elke machine in /usr/src/sys/arch/conf hebben als deze machine de kernels voor de overige machines gaat bouwen. Basissysteem Nu kan één systeem alles bouwen. Bouw de kernel en wereld zoals beschreven in op de bouwmachine, maar installeer niets. Zodra de bouw klaar is, moet op de testmachine de kernel geïnstalleerd en getest worden. Als deze machine /usr/src en /usr/obj mount via NFS, moet na een herstart in single-user modus het netwerk ingeschakeld worden zodat de mounts opnieuw gemaakt kunnen worden. De makkelijkste manier om dit te doen is om te starten in multi-user modus en daar shutdown now starten om in single-user modus te komen. Eenmaal daar aangekomen kunnen de nieuwe kernel en de wereld geïnstalleerd worden en kan daarna normaal mergemaster gestart worden. Zodra dit klaar is, kan de machine opnieuw gestart worden om naar multi-user modus terug te keren. Nadat zeker is dat alles op de testmachine correct werkt, kan dezelfde procedure gebruikt worden om de nieuwe software op elke machine te installeren in de bouwgroep. Ports Dezelfde ideeën kunnen gebruikt worden voor de ports. De eerste kritieke stap is om /usr/ports te mounten op alle machines in de bouwgroep. Daarna kan /etc/make.conf correct ingesteld worden om de distfiles te delen. De variabele DISTDIR moet wijzen naar een gedeelde map waarin geschreven kan worden door de gebruiker waar root naar wijst in de NFS mounts. Op elke machine moet WRKDIRPREFIX naar een lokale bouwmap wijzen. Als er pakketten gebouwd en gedistribueerd worden moet PACKAGES naar een map wijzen gelijkvormig aan de instelling voor DISTDIR. diff --git a/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml index 322864c1c9..afb2ff9b41 100644 --- a/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/desktop/chapter.sgml @@ -1,1224 +1,1221 @@ Chrisptophe Juliet Bijgedragen door René Ladan Vertaald door Bureaubladapplicaties Overzicht &os; kan een groot aantal bureaubladapplicaties draaien, zoals browsers en tekstverwerkers. De meeste hiervan zijn beschikbaar als packages of kunnen automatisch vanuit de Portscollectie gebouwd worden. Veel nieuwe gebruikers verwachten dit soort applicaties op hun bureaublad. Dit hoofdstuk laat zien hoe populaire bureaubladapplicaties moeiteloos geïnstalleerd kunnen worden vanuit een package of vanuit de Portscollectie. Als programma's vanuit ports geïnstalleerd worden, wordt hun broncode gecompileerd. Dit kan erg lang duren, afhankelijk van wat er gecompileerd wordt en de rekenkracht van een machine. Als compileren vanuit broncode te veel tijd kost, kunnen de meeste programma's van de Portscollectie als een voorafgebouwd package geïnstalleerd worden. Omdat &os; compatibel is met &linux;, zijn veel applicaties die voor &linux; zijn ontwikkeld beschikbaar een &os; bureaublad. Het wordt sterk aanbevolen om te lezen voordat &linux; applicaties geïnstalleerd worden. Veel ports die gebruik maken van &linux; compatibiliteit beginnen met linux-. Dit is handig om te onthouden wanneer er naar een port gezocht wordt met bijvoorbeeld &man.whereis.1;. In dit hoofdstuk wordt aangenomen dat &linux; binaire compatibiliteit is ingeschakeld voordat &linux; applicaties worden geïnstalleerd. In dit hoofdstuk worden de volgende categoriën behandeld: Browsers (zoals Mozilla, Opera, Firefox, Konqueror) Productiviteit (zoals KOffice, AbiWord, The GIMP, OpenOffice.org) Documentviewers (zoals &acrobat.reader;, gv, Xpdf, GQview) Financieel (zoals GnuCash, Gnumeric, Abacus) Er wordt aangenomen dat de lezer van dit hoofdstuk: Weet hoe aanvullende software van derde partijen geïnstalleerd wordt (). Weet hoe aanvullende &linux; software geïnstalleerd wordt (). Meer informatie over een multimedia-omgeving staat in . Installatie van e-mail staat beschreven in . Browsers browsers web &os; wordt zonder een voor-geïnstalleerde browser geleverd. In plaats hiervan bevat de www map van de Portscollectie browsers om te installeren. Het is ook mogelijk voor de meeste ports een package te installeren als compileren niet gewenst is. Compileren kan soms lang duren. KDE en GNOME bevatten reeds HTML-browsers. In staat meer informatie over de installatie van deze complete bureaubladen. Lichtgewicht browsers uit de Portscollectie zijn onder andere www/dillo, www/links of www/w3m. Dit gedeelte behandelt deze applicaties: Applicatie Bronnen Ports Afhankelijkheden Mozilla veel zwaar Gtk+ Opera weinig licht &os; en &linux; versies beschikbaar. De &linux; versie is afhankelijk van de &linux; binaire compatibiliteit en linux-openmotif. Firefox gemiddeld zwaar Gtk+ Konqueror gemiddeld zwaar KDE bibliotheken Mozilla Mozilla Mozilla is misschien wel de meest geschikte browser voor &os;. De browser is modern, stabiel en volledig geschikt naar &os;. De HTML-weergave engine voldoet in grote mate aan de standaarden. Er worden een mail- en nieuwslezer bijleverd en het pakket bevat zelfs een HTML-bewerker voor het maken van webpagina's. Mozilla heeft dezelfde broncodebasis met &netscape; Communicator. Op langzame machines, met een CPU-snelheid van 233MHz of minder dan 64MB aan RAM, kan Mozilla te veeleisend zijn om volledig bruikbaar te zijn. In dat geval is Opera browser een mogelijke vervanger. Als het niet wenselijk of mogelijk is om Mozilla te compileren, dan is dit al door het &os; GNOME team gedaan. Het package kan geïnstalleerd worden met: &prompt.root; pkg_add -r mozilla Als het package niet beschikbaar is en er genoeg tijd en schijfruimte schikbaar zijn, kan de broncode van Mozilla gedownload, gecompileerd en geïnstalleerd worden. Dit gaat met: &prompt.root; cd /usr/ports/www/mozilla &prompt.root; make install clean De Mozilla port zorgt voor een correcte installatie door de chrome registry setup met root rechten te draaien. Als echter ook toevoegingen zoals muisgebaren geïnstalleerd moeten worden, dan moet Mozilla als root gedraaid worden om dat op de juiste wijze geïnstalleerd te krijgen. Als de installatie van Mozilla eenmaal voltooid is, is root zijn niet langer nodig. Mozilla kan als browser gestart worden met: &prompt.user; mozilla Het kan direct als mailprogramma of nieuwslezer gestart worden met: &prompt.user; mozilla -mail Tom Rhodes Bijgedragen door Mozilla en &java; plugin Mozilla installeren is eenvoudig, maar helaas neemt Mozilla installeren met ondersteuning voor add-ons zoals &java; en ¯omedia; &flash; zowel tijd als schijfruimte in beslag. Als eerste moeten de bestanden gedownload worden die gebruikt worden met Mozilla. Op kan een account aangemaakt worden. De gebruikersnaam en het wachtwoord moeten bewaard worden omdat ze in de toekomst nog nodig kunnen zijn. Download daarna de bestanden jdk-1_5_0-bin-scsl.zip (JDK 5.0 SCSL Binaries) en jdk-1_5_0-src-scsl.zip (JDK 5.0 SCSL Source) en plaats ze in /usr/ports/distfiles omdat de port ze niet automatisch download. Dit heeft te maken met beperkingen in de licentie. Ook kan meteen de java environment vanaf gedownload worden. De bestandsnaam is j2sdk-1_4_2_08-linux-i586.bin. Ook dit bestand dient in /usr/ports/distfiles/ te worden geplaatst. Download ook de java patchkit van en plaats deze in /usr/ports/distfiles/. Installeer tenslotte de port java/jdk15 met het standaardcommando make install clean. Start Mozilla ga naar de optie About Plug-ins in het menu Help. Daar hoort nu de &java; plugin in de lijst te staan. Mozilla en ¯omedia; &flash; plugin ¯omedia; &flash; plugin is niet beschikbaar voor &os;. Er is echter wel een softwarelaag (wrapper) om de &linux;-versie van de plugin te draaien. Deze wrapper ondersteunt ook &adobe; &acrobat; plugin, RealPlayer plugin en meer. Installeer de port www/linuxpluginwrapper. Deze is afhankelijk van emulators/linux_base wat een grote port is. Volg de instructies die door de port worden weergegeven om /etc/libmap.conf juist in te stellen! Voorbeeldinstellingen worden geïnstalleerd in de map /usr/local/share/examples/linuxpluginwrapper/. Installeer de www/mozilla port als Mozilla niet al is geïnstalleerd. Mozilla kan gestart worden met: &prompt.user; mozilla & Ga naar de optie About Plug-ins van het menu Help. Er verschijnt een lijst met alle beschikbare plugins. De linuxpluginwrapper werkt alleen op de &i386; systeemarchitectuur. Opera Opera Opera is een zeer snelle, complete browser en voldoet aan standaarden. Hij komt in twee smaken: een &os; versie en een versie die draait onder &linux; - emulatie. Voor elk besturingssysteem is er een gratis versie - van de browser (adware) en een reclameloze versie die gekocht - kan worden op de Opera website. + emulatie. De &os; package versie van Opera wordt zo geïnstalleerd: &prompt.root; pkg_add -r opera Sommige FTP-sites hebben niet alle packages, maar hetzelfde resultaat kan worden behaald met de Portscollectie door te typen: &prompt.root; cd /usr/ports/www/opera &prompt.root; make install clean De &linux; versie van Opera kan geïnstlleerd worden door bij de bovenstaande voorbeelden linux-opera te gebruiken in plaats van opera. De &linux; versie is nuttig in situaties waarin plugins nodig zijn die alleen voor &linux; beschikbaar zijn, zoals Adobe &acrobat.reader;. In alle andere opzichten lijken de &os; en &linux; versies identiek. Firefox Firefox Firefox is de browser voor de volgende generatie, gebaseerd op de codebase van Mozilla. Mozilla is een volledig pakket van applicaties, zoals een browser, een mailclient, een chatclient en nog veel meer. Firefox is gewoon een browser wat het kleiner en sneller maakt. Het package is te installeren met: &prompt.root; pkg_add -r firefox Via de Portscollectie kan ook de broncode gecompileerd worden: &prompt.root; cd /usr/ports/www/firefox &prompt.root; make install clean Konqueror Konqueror Konqueror is deel van KDE, maar kan ook buiten KDE gebruikt worden door x11/kdebase3 te installeren. Konqueror is meer dan een browser. Het is ook een bestandsbeheerder en multimedia-viewer. Konqueror wordt ook met een verzameling plugins geleverd, beschikbaar in misc/konq-plugins. Konqueror ondersteunt ook &flash;. Daarover is meer informatie beschikbaar op . Productiviteit Als het op productiviteit aankomt, zoeken nieuwe gebruikers vaak een goed kantoorpakket of een vriendelijke tekstverwerker. Hoewel sommige bureaubladomgevingen zoals KDE reeds een kantoorpakket verschaffen, is er geen standaardapplicatie. &os; verschaft alles wat nodig is, ongeacht de bureaubladomgeving. In dit gedeelte worden de onderstaande applicaties beschreven: Applicatie Bronnen Ports Afhankelijkheden KOffice weinig zwaar KDE AbiWord weinig licht Gtk+ of GNOME The GIMP weinig licht Gtk+ OpenOffice.org veel erg zwaar &jdk; 1.4, Mozilla KOffice KOffice kantoorpakket KOffice De KDE-gemeenschap heeft zijn bureaubladomgeving met een kantoorpakket geleverd dat buiten KDE gebruikt kan worden. Het bevat de vier standaardcomponenten uit andere kantoorpakketten. KWord is de tekstverwerker, KSpread is het spreadsheetprogramma, KPresenter beheert diapresentaties en Kontour voorziet in grafische mogelijkheden. Voordat de nieuwste KOffice wordt geïnstalleert, moet er een recente versie van KDE geïnstalleerd zijn. KOffice als package installeren gaat met het volgende commando: &prompt.root; pkg_add -r koffice Als het package niet beschikbaar is, kan de Portscollectie gebruiken worden. Om KOffice voor KDE3 te installeren: &prompt.root; cd /usr/ports/editors/koffice-kde3 &prompt.root; make install clean AbiWord AbiWord AbiWord is een vrij tekstverwerkingsprogramma, ongeveer gelijk aandoet als µsoft; Word. Het is geschikt om verslagen, brieven, rapporten, memo's, enzovoort mee te typen. Het programma is snel, bevat veel mogelijkheden en is gebruikersvriendelijk. AbiWord kan veel bestandsformaten importeren en exporteren, waaronder enkele gesloten formaten, zoals µsoft; .doc. AbiWord is beschikbaar als package en te installeren met: &prompt.root; pkg_add -r abiword Als het package niet beschikbaar is, kan het worden gecompileerd vanuit de Portscollectie. De Portscollectie is meer recent. Dat kan als volgt: &prompt.root; cd /usr/ports/editors/abiword &prompt.root; make install clean The GIMP The GIMP Voor het bewerken of retoucheren van afbeeldingen is The GIMP een zeer geavanceerd afbeeldingenmanipulatieprogramma. Het kan als eenvoudig tekenprogramma worden gebruikt of als kwalititeitspakket voor het retoucheren van foto's. Het ondersteunt een groot aantal plugins en bevat een scripting interface. The GIMP kan een groot aantal bestandsformaten lezen en schrijven. Het ondersteunt interfaces met scanners en tabletten. Het pakket is te installeren als package met: &prompt.root; pkg_add -r gimp Als een FTP-site dit package niet heeft, kan de Portscollectie gebruikt worden. De graphics map van de Portscollectie bevat ook The GIMP Manual. Die kan zo geïnstalleerd worden: &prompt.root; cd /usr/ports/graphics/gimp &prompt.root; make install clean &prompt.root; cd /usr/ports/graphics/gimp-manual-pdf &prompt.root; make install clean De graphics map van de Portscollectie bevat de ontwikkelversie van The GIMP in graphics/gimp-devel. Een HTML versie van The GIMP Manual staan in graphics/gimp-manual-html. OpenOffice.org OpenOffice.org kantoorpakket OpenOffice.org OpenOffice.org bevat alle noodzakelijke applicaties in een compleet kantoorproductiviteitspakket: een tekstverwerker, een spreadsheet, een presentatiebeheerder en een tekenprogramma. De gebruikersinterface is vrijwel gelijk aan die van andere kantoorpakketten en het kan veel populaire bestandsformaten in- en uitvoeren. Het is beschikbaar in een aantal verschillende talen met interfaces, spellingcontrole en woordenboeken. De tekstverwerker van OpenOffice.org gebruikt een eigen XML-bestandsformaat voor overdraagbaarheid en flexibiliteit. Het spreadsheetprogramma bevat een macrotaal en kan gekoppeld worden aan externe databases. OpenOffice.org is stabiel en draait zonder aanpassingen op &windows;, &solaris;, &linux;, &os; en &macos; X. Meer informatie over OpenOffice.org staat op de OpenOffice.org website. Voor specifieke &os; informatie en om direct packages te downloaden is er de website van het &os; OpenOffice.org Porting Team. Om OpenOffice.org te installeren: &prompt.root; pkg_add -r openoffice Dit hoort te werken als er een -RELEASE versie van &os; wordt gedraaid. In andere gevallen is het verstandig om te kijken op de website van het &os; OpenOffice.org Porting Team en het juiste package met &man.pkg.add.1;te downloaden en te installeren. Zowel de huidige release als de ontwikkelversie kunnen op die locatie gedownload worden. Als het package geïnstalleerd is, start dan met het volgende commando OpenOffice.org: &prompt.user; openoffice.org Tijdens de eerste keer starten worden er een aantal vragen gesteld en wordt de map .openoffice.org2 in de thuismap van de aangemelde gebruiker gemaakt Als de OpenOffice.org packages niet beschikbaar zijn, kan het uit de ports gecompileerd worden. Hiervoer is veel schijfruimte en tijd nodig: &prompt.root; cd /usr/ports/editors/openoffice.org-2.0 &prompt.root; make install clean Vervang om een gelocaliseerde versie te bouwen de voorgaande commandoregel door de volgende: &prompt.root; make LOCALIZED_LANG=your_language install clean Vervang taal door de juiste ISO-taalcode. Een lijst met ondersteunde taalcodes is beschikbaar in het bestand files/Makefile.localized in de map van de port. Start hierna OpenOffice.org met: &prompt.user; openoffice.org Documentviewers Het kan zijn dat de standaardviewers voor een aantal populaire bestandsformaten niet in het basissysteem zitten. In dit gedeelte wordt aangegeven hoe die geïnstalleerd kunnen worden. Dit gedeelte behandelt de onderstaande applicaties: Applicatie Bronnen Ports Afhankelijkheden &acrobat.reader; weinig licht &linux; binaire compatibiliteit gv weinig licht Xaw3d Xpdf weinig licht FreeType GQview weinig licht Gtk+ of GNOME &acrobat.reader; &acrobat.reader; PDF bekijken Documenten worden vaak als PDF-bestanden, Portable Document Format, verspreid. Een van de aanbevolen viewers voor dit bestandstype is &acrobat.reader; dat Adobe voor &linux; heeft uitgegeven. Omdat &os; &linux; binaries kan draaien, is het ook beschikbaar voor &os;. Om &acrobat.reader; 5 te installeren uit de Portscollectie: &prompt.root; cd /usr/ports/print/acroread7 &prompt.root; make install clean Vanwege de licentie is een package niet beschikbaar. gv gv PDF bekijken &postscript; bekijken gv is een &postscript; en PDF viewer. Het is gebaseerd op ghostview maar heeft een vriendelijker uiterlijk dankzij de Xaw3d bibliotheek. Het is snel en heeft mogelijkheden als oriëntatie, papiergrootte, schalen en anti-aliassen. Bijna elke bewerking kan met het toetsenbord of de muis worden gedaan. gv is als package te installeren: &prompt.root; pkg_add -r gv Of uit de Portscollectie: &prompt.root; cd /usr/ports/print/gv &prompt.root; make install clean Xpdf Xpdf PDF bekijken Xpdf een efficiënte lichtgewicht PDF-viewer voor &os;. Het heeft erg weinig bronnen nodig en is zeer stabiel. Het gebruikt de standaard X-fonts en is niet afhankelijk van &motif; of andere X-toolkits. Xpdf is als package te installeren: &prompt.root; pkg_add -r xpdf Of uit de Portscollectie: &prompt.root; cd /usr/ports/graphics/xpdf &prompt.root; make install clean Als de installatie voltooid is, kan Xpdf gestart worden en het menu kan met de rechtermuisknop geactiveerd worden. GQview GQview GQview is een afbeeldingenbeheerder. Een bestand kan met één klik bekeken worden, er kan een externe editor opgestart worden er kunnen thumbnail-voorbeelden gemaakt worden en nog veel meer. Het bevat ook een diapresentatie-modus en enkele standaard bestandsoperaties. Er kunnen afbeeldingsverzamelingen beheerd worden en eenvoudig duplicaten gevonden worden. GQview kan het complete scherm gebruiken en ondersteunt meerdere talen. GQview is als package te installeren: &prompt.root; pkg_add -r gqview Of vanuit de Portscollectie: &prompt.root; cd /usr/ports/graphics/gqview &prompt.root; make install clean Financiën Om financiën via het &os; bureaublad te beheren zijn er krachtige en gemakkelijk te gebruiken applicaties om te installeren. Sommige zijn compatibel met wijdverbreide bestandsformaten zoals Quicken of Excel documenten. Dit gedeelte behandelt deze applicaties: Applicatie Bronnen Ports Afhankelijkheden GnuCash weinig zwaar GNOME Gnumeric weinig zwaar GNOME Abacus weinig licht Tcl/Tk GnuCash GnuCash GnuCash is onderdeel van GNOME dat gebruikersvriendelijke en krachtige applicaties aan eindgebruikers wil leveren. Met GnuCash kunnen inkomsten en uitgaven, bankrekeningen en voorraden bijgehouden worden. Het bevat een intuïtieve interface terwijl het erg professioneel blijft. GnuCash levert een slim kasboek, een hiërarchisch systeem van rekeningen, veel toetsenbordversnellers en auto-invul mogelijkheden. Het een transactie splitsen in meer gedetailleerde stukken. GnuCash kan Quicken QIF-bestanden invoeren en samenvoegen. Het kan ook met de meeste internationale datum- en valutaformaten omgaan. GnuCash is als package te installeren: &prompt.root; pkg_add -r gnucash Of uit de Portscollectie: &prompt.root; cd /usr/ports/finance/gnucash &prompt.root; make install clean Gnumeric Gnumeric spreadsheet Gnumeric Gnumeric is een spreadsheet uit de GNOME bureaubladomgeving. Het maakt gebruikt van auto-invullen afhankelijk van het celformaat. Het kan bestanden in een aantal populaire formaten zoals Excel, Lotus 1-2-3 en Quattro Pro inlezen. Gnumeric ondersteunt grafieken door middel van het grafiekprogramma math/guppi. Het heeft een groot aantal ingebouwde functies en kent gebruikelijke celformaten als nummer, valuta, datum, tijd en veel meer. Gnumeric is als package te installeren: &prompt.root; pkg_add -r gnumeric Of uit de Portscollectie: &prompt.root; cd /usr/ports/math/gnumeric &prompt.root; make install clean Abacus Abacus spreadsheet Abacus Abacus is een kleine en gemakkelijk te gebruiken spreadsheet en bevat veel ingebouwde functies die nuttig zijn in verschillende domeinen zoals statistiek, financiën, en wiskunde. Het kan Excelbestanden lezen en schrijven. Abacus kan &postscript; uitvoer produceren. Abacus is als package te installeren: &prompt.root; pkg_add -r abacus Of uit de Portscollectie: &prompt.root; cd /usr/ports/deskutils/abacus &prompt.root; make install clean Samenvatting Hoewel &os; populair is bij ISP's om zijn prestaties en stabiliteit, is het behoorlijk klaar voor dagelijks gebruik als een bureaublad. Met enkele duizenden applicaties als packages of ports, is een perfect bureaublad te bouwen dat aan alle noden voldoet. Als een bureaublad is geïnstalleerd is het mogelijk een stap verder te gaan met misc/instant-workstation. Met deze meta-port kan een verzameling ports gebouwd worden die aangepast kan worden door /usr/ports/misc/instant-workstation/Makefile te bewerken en de gebruikte syntaxis voor de standaardverzameling om ports toe te voegen of te verwijderen te gebruiken. Het bouwen gaat volgens de gebruikelijke procedure. Uiteindelijk is het zo mogelijk één groot package te creëren voldoet aan de persoonlijke eisen van een gebruiker dat te installeren is op alle gebruikte werkstations! Nu volgt nog een overzicht van alle bureaubladapplicaties die in dit hoofdstuk zijn behandeld: Applicatie Package Port Mozilla mozilla www/mozilla Opera linux-opera www/linux-opera Firefox firefox www/firefox KOffice koffice-kde3 editors/koffice-kde3 AbiWord abiword editors/abiword The GIMP gimp graphics/gimp OpenOffice.org openoffice editors/openoffice-1.1 &acrobat.reader; acroread5 print/acroread7 gv gv print/gv Xpdf xpdf graphics/xpdf GQview gqview graphics/gqview GnuCash gnucash finance/gnucash Gnumeric gnumeric math/gnumeric Abacus abacus deskutils/abacus diff --git a/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml index 0882ba0004..ae57598dc5 100644 --- a/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/disks/chapter.sgml @@ -1,4311 +1,4414 @@ René Ladan Vertaald door Opslag Overzicht Dit hoofdstuk behandelt het gebruik van schijven in &os;. Dit omvat geheugenschijven, schijven die met het netwerk verbonden zijn, SCSI/IDE-opslagapparaten en apparaten die gebruik maken van de USB-interface. Na het lezen van dit hoofdstuk weet de lezer: Welke terminologie &os; gebruikt om de gegevensindeling op een fysieke schijf te beschrijven (partities en slices); Hoe aanvullende harde schijven aan een systeem toe te voegen; Hoe &os; in te stellen om het gebruik te laten maken van USB-opslagapparaten; Hoe virtuële bestandssystemen, zoals geheugenschijven, aan te maken; Hoe quota te gebruiken om het schijfgebruik te beperken; Hoe schijven te versleutelen om ze tegen inbrekers te beschermen; Hoe vanuit &os; CD's en DVD's aan te maken en te branden; Wat de verschillende mogelijkheden zijn voor opslagmedia voor back-ups; Hoe back-upprogramma's te gebruiken die beschikbaar zijn in &os;; Hoe een back-up naar diskettes te maken; Wat snapshots zijn en hoe ze efficiënt te gebruiken. Aangeraden voorkennis: Hoe een nieuwe &os;-kernel in te stellen en te installeren (). Apparaatnamen De volgende lijst noemt de fysieke opslagapparaten die in &os; ondersteund worden, samen met de bijhorende namen. Naamconventies voor fysieke Schijven Type medium Apparaatnaam medium IDE harde schijven ad IDE CD-ROM-stations acd SCSI harde schijven en USB-apparaten voor massa-opslag da SCSI CD-ROM-schijven cd Overige niet-standaard-CD-ROM-stations mcd voor Mitsumi CD-ROM, scd voor Sony CD-ROM, matcd voor Matsushita/Panasonic CD-ROM Het stuurprogramma voor &man.matcd.4; is sinds 2002 uit de &os; 4.X-tak verwijderd en bestaat niet in &os; versies 5.0 en latere versies. Diskettestations fd SCSI bandstations sa IDE bandstations ast Flashdrives fla voor &diskonchip; flashapparaten RAID-schijven aacd voor &adaptec; AdvancedRAID, mlxd en mlyd voor &mylex;, amrd voor AMI &megaraid;, idad voor Compaq Smart RAID, twed voor &tm.3ware; RAID.
David O'Brien Origineel bijgedragen door Schijven toevoegen schijven toevoegen Stel dat het gewenst is om een nieuwe SCSI-schijf aan een machine toe te voegen die slechts een enkele drive heeft. Ten eerste dient de computer uitgeschakeld te worden en dient de schijf volgens de instructies van de computer, controller en schijffabrikant geïnstalleerd te worden. Wegens de grote variéteiten om dit soort procedures uit te voeren, vallen de details buiten het bereik van dit document. Er dient als gebruiker root ingelogd te worden. Nadat de schijf is toegevoegd, dient /var/run/dmesg.boot bekeken te worden om er zeker van te zijn dat de nieuwe schijf is gevonden. Volgens het voorbeeld heet de nieuw toegevoegde schijf da1 en die wordt gemount op /1 (als er een IDE-schijf wordt toegevoegd, is de apparaatnaam wd1 op systemen voorafgaand aan 4.0, en ad1 in 4.X- en 5.X-systemen). partities slices fdisk &os; draait op IBM-PC-compatibele computers. Daarom moet het rekening houden met de PC-BIOS-partities. Deze wijken af van de traditionele BSD-partities. Een PC-schijf bevat tot vier ingangen voor BIOS-partities. Indien de schijf geheel aan &os; wordt gewijd, kan de toegewijde-modus gebruikt worden. In het andere geval moet &os; binnen één van de vier PC-BIOS-partities draaien. De PC-BIOS-partities worden door &os; slices genoemd om ze niet met de traditionele BSD-partities te verwarren. Slices kunnen ook op een schijf worden gebruikt die toegewijd is aan &os;, maar in een computer zit die ook andere besturingssystemen heeft geïnstalleerd. Dit is een goede manier om verwarring met het programma fdisk van andere, niet-&os; besturingssystemen te voorkomen. Als er met slices gewerkt wordt, wordt de schijf toegevoegd als /dev/da1s1e. Dit moet worden gelezen als: SCSI-schijf, eenheid 1 (tweede SCSI-schijf), slice 1 (PC-BIOS-partitie 1) en BSD-partitie e. Als de schijf toegewijd is, wordt deze simpelweg als /dev/da1e toegevoegd. Omdat 32-bit-integers worden gebruikt om het aantal sectoren op te slaan, is &man.bsdlabel.8; (&man.disklabel.8; op &os; 4.X) beperkt tot 2^32-1 sectoren per schijf, wat meestal neerkomt op 2 TB. Het programma &man.fdisk.8; staat geen hogere startsector toe dan 2^32-1 en geen grotere lengte dan 2^32-1, meestal worden hiermee partities tot 2 TB begrensd en schijven tot 4 TB. Het formaat van &man.sunlabel.8; is beperkt tot 2^32-1 sectoren per partitie en 8 partities per schijf, in totaal dus 16 TB. Voor grotere schijven kan &man.gpt.8; worden gebruikt. &man.sysinstall.8; gebruiken sysinstall schijven toevoegen su Navigeren door <application>sysinstall</application> sysinstall (/stand/sysinstall in versies van &os; ouder dan 5.2) kan gebruikt worden om een nieuwe schijf te partitioneren en te labelen met eenvoudig te gebruiken menu's. Hiervoor dient òfwel als gebruiker root ingelogd te zijn, òfwel gebruik te worden gemaakt van su. Draai sysinstall en ga naar het menu Configure. Scroll binnen het &os; Configuration Menu naar beneden en kies de optie Fdisk. <application>fdisk</application> partitie-bewerker Eenmaal binnen fdisk kan a ingetypt worden om de gehele schijf voor &os; te gebruiken. Wanneer gevraagd wordt of het systeem compatibel dient te blijven met mogelijk toekomstige besturingssystemen, dient met YES geantwoord te worden. Met W kunnen de veranderingen naar de schijf worden geschreven. Nu dient de FDISK-bewerker verlaten te worden door het intypen van q. Vervolgens wordt er een vraag gesteld over het Master Boot Record. Omdat er een schijf aan een reeds draaiend systeem wordt toegevoegd, dient hier None gekozen te worden. Schijflabelbewerker BSD-partities Vervolgens dient sysinstall verlaten en opnieuw gestart te worden. Volg bovenstaande aanwijzingen, maar kies deze keer voor de optie Label. Dit geeft toegang tot de Disk Label Editor. Hier worden de traditionele BSD-partities aangemaakt. Een schijf kan tot acht partities bevatten, gelabeld a-h. Enkele partitielabels hebben een speciale functie. De partitie a wordt gebruikt voor de rootpartitie (/). Alleen de systeemschijf (bijvoorbeeld de schijf van waaruit opgestart wordt) moet een partitie a hebben. De partitie b wordt voor swappartities gebruikt, en het is mogelijk om vele schijven met swappartities te hebben. De partitie c adresseert de gehele schijf in toegewijde modus, of de gehele &os;-slice in slice-modus. De andere partities zijn voor algemeen gebruik. sysinstall's Labelbewerker heeft een voorkeur voor de partitie e voor niet-root-niet-swap-partities. Binnen de Labelbewerker dient een enkel bestandssysteem te worden aangemaakt door C in te typen. Kies FS wanneer gevraagd wordt of dit een FS (file system) of swap wordt, en geef een mountpunt in (bijvoorbeeld /mnt). Wanneer een schijf in post-installatie-modus wordt toegevoegd, maakt sysinstall geen ingangen aan in /etc/fstab, dus dan is het opgegeven mountpunt niet van belang. Nu kan het nieuwe label naar de schijf worden geschreven en er een bestandssysteem op aangemaakt worden. Dit kan gedaan worden door W in te typen. Fouten van sysinstall dat de nieuwe partitie niet gemount kon worden kunnen genegeerd worden. De Labelbewerker en sysinstall kunnen nu volledig verlaten worden. Afronden De laatste stap bestaat uit het bewerken van /etc/fstab om hier een regel voor de nieuwe schijf aan toe te voegen. Het gebruik van opdrachtregelgereedschappen Het gebruik van slices Deze installatie zorgt ervoor dat de schijf correct samenwerkt met andere besturingssystemen die eventueel op de computer zijn geïnstalleerd en dat de fdisk-gereedschappen van andere besturingssystemen niet verward raken. Het wordt aangeraden om deze methode te gebruiken voor de installatie van nieuwe schijven. Gebruik de toegewijde modus alleen als hier een goede reden voor bestaat! &prompt.root; dd if=/dev/zero of/dev/da1 bs=1k count=1 &prompt.root; fdisk -BI da1 # Initialiseer de nieuwe schijf. &prompt.root; disklabel -B -w -r da1s1 auto # Label de schijf. &prompt.root; disklabel -e da1s1 # Bewerk de zojuist aangemaakte schijflabel en voeg partities toe. &prompt.root; mkdir -p /1 &prompt.root; newfs /dev/da1s1e # Herhaal dit voor alle aangemaakte partities. &prompt.root; mount /dev/da1s1e /1 # Mount de partitie(s). &prompt.root; vi /etc/fstab # Voeg de juiste regel(s) aan /etc/fstab toe. Vervang voor een IDE-schijf da door ad. Op systemen voor 4.X dient wd gebruikt te worden. Toegewijd OS/2 Indien de nieuwe schijf niet met een ander besturingssysteem gedeeld wordt, kan de toegewijde modus gebruikt worden. Denk eraan dat deze modus besturingssystemen van Microsoft kan verwarren. Ze richten echter geen schade aan. IBM's &os2; fatsoeneert echter partities die het niet begrijpt. &prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1 &prompt.root; disklabel -Brw da1 auto &prompt.root; disklabel -e da1 # Maak de `e'-partitie aan. &prompt.root; newfs -d0 /dev/da1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # Voeg een regel voor /dev/da1e toe. &prompt.root; mount /1 Een alternatieve methode is: &prompt.root; dd if=/dev/zero of=/dev/da1 count=2 &prompt.root; disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin &prompt.root; newfs /dev/da1e &prompt.root; mkdir -p /1 # Voeg een regel voor /dev/da1e toe. &prompt.root; mount /1 Sinds &os; 5.1-RELEASE is het oude programma &man.disklabel.8; vervangen door &man.bsdlabel.8;. In &man.bsdlabel.8; zijn een aantal overbodige opties en parameters verwijderd. In de bovenstaande voorbeelden dient de optie met &man.bsdlabel.8; weggelaten te worden. Meer informatie staat in de hulppagina van &man.bsdlabel.8;. RAID Software RAID Christopher Shumway Origineel werk van Jim Brown Herzien door RAID softwarematig RAID CCD Concatenated Disk Driver (CCD) instellingen Bij het kiezen van een medium voor massa-opslag zijn de belangrijkste afwegingen snelheid, betrouwbaarheid en kosten. Het komt zelden voor dat alle drie in balans zijn. Normaalgesproken is een snel, betrouwbaar apparaat voor massa-opslag duur en kosten sparen gaat ten koste van òfwel snelheid òfwel betrouwbaarheid. Bij het ontwerpen van het onderstaande systeem werd primair op de kosten gelet, gevolgd door snelheid en als laatste betrouwbaarheid. De overdrachtsnelheid van gegevens wordt voor dit systeem uiteindelijk beperkt door het netwerk. En hoewel betrouwbaarheid erg belangrijk is, wordt onderstaande CCD-schijf gebruikt voor het serven van on-line gegevens die reeds volledig op CD-R's zijn geback-upt en eenvoudig vervangen kunnen worden. De eerste stap in het kiezen van een massa-opslagoplossing is het bepalen van de eigen benodigdheden. Indien snelheid belangrijker is dan betrouwbaarheid of kosten, wijkt de oplossing af van het systeem dat in deze sectie wordt beschreven. Hardware installeren Als aanvulling op de IDE systeemschijf zijn drie Western Digital IDE-schijven van 30 GB, 5400 RPM vanuit de kern van de onderstaande CCD-schijf aanwezig, die ongeveer 90 GB aan on-line opslag bieden. Ideaal gezien heeft iedere IDE-schijf een eigen IDE-controller en kabel, maar om de kosten te minimaliseren zijn geen aanvullende IDE-kabels gebruikt. In plaats hiervan zijn de schijven zodanig met jumpers ingesteld dat elke IDE-controller één master en één slave heeft. Tijdens het opnieuw opstarten werd het systeem-BIOS zodanig ingesteld dat het automatisch de aangekoppelde schijven detecteerde. Het was belangrijker dat &os; ze tijdens het opnieuw opstarten herkende: ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33 Indien &os; niet alle schijven detecteert, moet gecontroleerd worden of de jumpers juist zijn ingesteld. De meeste IDE-schijven hebben ook een jumper voor Cable Select. Dit is niet de jumper voor de master/slave-instelling. Voor hulp met het identificeren van de juiste jumper dient de documentatie van de schijf geraadpleegd te worden. Vervolgens dient besloten te worden hoe ze deel gaan uitmaken van het bestandssysteem. Hiervoor dienen &man.vinum.8; () en &man.ccd.4; bestudeerd te worden. Voor deze instellingen werd voor &man.ccd.4; gekozen. CCD installeren Het stuurprogramma &man.ccd.4; biedt de mogelijkheid om meerdere identieke schijven aaneen te rijgen tot één logisch bestandssysteem. Om gebruik te kunnen maken van &man.ccd.4; is een kernel met ingebouwde ondersteuning voor &man.ccd.4; nodig. De volgende regel dient toegevoegd te worden aan het kernelinstellingenbestand en de kernel dient opnieuw gebouwd en geïnstalleerd te worden: pseudo-device ccd 4 Op 5.X-systemen dient de volgende regel gebruikt te worden: device ccd In &os; 5.X is het niet nodig om het aantal &man.ccd.4;-apparaten op te geven aangezien het &man.ccd.4;-apparaat nu zelfklonend is. Nieuwe instanties van het apparaat worden automatisch op verzoek aangemaakt. De ondersteuning voor &man.ccd.4; kan ook als kernelmodule geladen worden in &os; 3.0 en hoger. Om &man.ccd.4; te installeren dient eerst &man.disklabel.8; gebruikt te worden om de schijven te labelen: disklabel -r -w -ad1 auto disklabel -r -w ad2 auto disklabel -r -w ad3 auto Bovenstaande maakt een schijflabel aan voor ad1c, ad2c en ad3c die de gehele schijf beslaat. Sinds &os; 5.1-RELEASE is het oude programma &man.disklabel.8; vervangen door &man.bsdlabel.8;. In &man.bsdlabel.8; zijn een aantal overbodige opties en parameters verwijderd. In de bovenstaande voorbeelden dient de optie met &man.bsdlabel.8; weggelaten te worden. Meer informatie staat in de hulppagina van &man.bsdlabel.8;. Vervolgens dient het labeltype van de schijf veranderd te worden. Voor het bewerken van de schijven kan &man.disklabel.8; gebruikt worden: disklabel -e ad1 disklabel -e ad2 disklabel -e ad3 Dit zorgt ervoor dat het huidige schijflabel van elke schijf met de tekstverwerker wordt geopend die door de omgevingsvariabele EDITOR wordt gespecificeerd, vaak &man.vi.1;. Een ongewijzigd schijflabel ziet er ongeveer als volgt uit: 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) Er dient een nieuwe partitie e toegevoegd te worden die door &man.ccd.4; gebruikt kan worden. Deze kan gewoonlijk van partitie c overgenomen worden, maar het moet 4.2BSD zijn. Het schijflabel ziet er nu ongeveer als volgt uit: 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597) Bestandssysteem aanmaken Het kan zijn dat de apparaatnode voor ccd0c nog niet bestaat. Om deze aan te maken dienen de volgende commando's uitgevoerd te worden: cd /dev sh MAKEDEV ccd0 In &os; 5.0 beheert &man.devfs.5; automatisch apparaatnodes in /dev, dus is het niet nodig om MAKEDEV te gebruiken. Nu alle schijven gelabeld zijn, moet de &man.ccd.4; gebouwd worden. Om dit te doen, dient &man.ccdconfig.8; gebruikt te worden met opties die ongeveer gelijk zijn aan de volgende: ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e Hieronder staat het gebruik en de betekenis van elke optie: Het eerste argument is het in te stellen apparaat, in dit geval /dev/ccd0c. Het gedeelte /dev/ is optioneel. De interleave voor het bestandssysteem. De interleave definiëert de grootte van een stripe in schijfblokken, elk schijfblok is normaalgesproken 512 bytes groot. Een interleave van 32 is dus 16.384 bytes groot. Vlaggen voor &man.ccdconfig.8;. Indien het gewenst is om schijfspiegeling aan te zetten, kan er hier een vlag voor gespecificeerd worden. Deze opstelling biedt geen spiegeling voor &man.ccd.4;, dus is die op 0 (nul) ingesteld. De laatste argumenten voor &man.ccdconfig.8; zijn de apparaten die in de rij geplaatst dienen te worden. Voor elk apparaat dient de complete padnaam gebruikt te worden. Nadat &man.ccdconfig.8; gedraaid is, is de &man.ccd.4; ingesteld. Er kan een bestandssysteem worden geïnstalleerd. Er kan in &man.newfs.8; worden gekeken voor opties, of het draaien van het onderstaande commando is ook toereikend: newfs /dev/ccd0c Alles automatisch maken In het algemeen is het wenselijk om de &man.ccd.4; telkens te mouten wanneer er opnieuw opgestart wordt. Dit dient eerst ingesteld te worden. Met het volgende commando worden de huidige instellingen naar /etc/ccd.conf geschreven: ccdconfig -g > /etc/ccd.conf Tijdens het opstarten draait het script /etc/rc ccdconfig -C indien /etc/ccd.conf bestaat. Dit stelt automatisch de &man.ccd.4; in, zodat die kan worden gemount. Indien er in enkele-gebruiker-modus wordt opgestart, dient het volgende commando te worden uitgevoerd om de rij in te stellen voordat de &man.ccd.4; gemount kan worden: ccdconfig -C Om de &man.ccd.4; automatisch te mounten, kan er een regel voor de &man.ccd.4; in /etc/fstab geplaatst worden, zodat die tijdens het opstarten gemount wordt: /dev/ccd0c /media ufs rw 2 2 Volumebeheerder Vinum RAID software RAID Vinum De volumebeheerder Vinum is een blokstuurprogramma dat virtuele schijven implementeert. Het isoleert schijfhardware van de blokapparaat-interface en projecteert gegevens op een manier die de flexibiliteit, prestatie en betrouwbaarheid verhoogt in vergelijking met de traditionele slice-blik op schijfopslag. &man.vinum.8; implementeert de modellen RAID-0, RAID-1 en RAID-5, zowel individueel als als combinatie. In staat meer informatie over &man.vinum.8;. Hardwarematige RAID RAID hardwarematig &os; ondersteunt ook een verscheidenheid aan hardwarematige RAID-stuurprogramma's. Deze apparaten besturen een RAID-deelsysteem zonder dat er &os;-specifieke software nodig is om de rij te beheren. Door gebruik te maken van een BIOS die op de kaart aanwezig is, beheert de kaart de meeste schijfbewerkingen zelf. Nu volgt een korte beschrijving van een opzet waarbij een Promise IDE-stuurprogramma is gebruikt. Wanneer deze kaart geïnstalleerd en het systeem opgestart is, beeldt het een prompt af waarbij om informatie wordt gevraagd. De instructies dienen opgevolgd te worden om bij het instelscherm van de kaart te komen. Van hieruit kunnen alle aangekoppelde schijven gecombineerd worden. Nadat dit gedaan is, zien de schijven er voor &os; als één enkele schijf uit. Andere RAID-niveaus kunnen overeenkomstig ingesteld worden. ATA RAID1-rijen opnieuw bouwen Met &os; is het mogelijk om een defecte schijf in een rij te vervangen terwijl de computer aanstaat (hot replace). Hiervoor dient de schijf vóór het opnieuw opstarten vervangen te zijn. Waarschijnlijk is zoiets als het volgende in /var/log/messages of in de uitvoer van &man.dmesg.8; te zien: ad6 on monster1 suffered a hard error. ad6: READ command timeout tag=0 serv=0 - resetting ad6: trying fallback to PIO mode ata3: resetting devices .. done ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\ status=59 error=40 ar0: WARNING - mirror lost Meer informatie kan met behulp van &man.atacontrol.8; gezocht worden: &prompt.root; atacontrol list ATA channel 0: Master: no device present Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present ATA channel 3: Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present &prompt.root; atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED Ontkoppel schijf van de rij zodat deze veilig kan worden verwijderd: &prompt.root; atacontrol detach 3 Vervang de schijf. Koppel de schijf als een reserveschijf aan: &prompt.root; atacontrol attach 3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present De rij dient nu opnieuw opgebouwd te worden: &prompt.root; atacontrol rebuild ar0 Het rebuild-commando blijft hangen totdat het voltooid is. Het is echter wel mogelijk om een andere terminal te openen (door middel van AltFn) en de voortgang te controleren door middel van: &prompt.root; dmesg | tail -10 [uitvoer verwijderd] ad6: removed from configuration ad6: deleted from ar0 disk1 ad6: inserted into ar0 disk1 as spare &prompt.root; atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed Nu moet er gewacht worden tot de bewerking voltooid is. Marc Fonvieille Bijgedragen door USB-opslagapparaten USB schijven Veel externe opslagoplossingen gebruiken tegenwoordig de Universele Seriële Bus (USB): harde schijven, USB-duimdrives, CD-R-branders, etc. &os; biedt voor al dit soort apparaten ondersteuning. Instellen Het stuurprogramma &man.umass.4; biedt de ondersteuning voor USB-opslagapparaten. Indien de kernel GENERIC wordt gebruikt, hoeft er niets aan de instellingen gewijzigd te worden. Als er een eigen kernel wordt gebruikt, dienen de volgende regels in het kernelinstellingenbestand aanwezig zijn: device scbus device da device pass device uhci device ohci device usb device umass Het stuurprogramma &man.umass.4; gebruikt het subsysteem SCSI om toegang te krijgen tot de USB-opslagapparaten. Het USB-apparaat wordt door het systeem als een SCSI-apparaat gezien. Afhankelijk van de chipset op het moederbord is slechts òf device uhci òf device ohci nodig. Het kan echter geen kwaad om ze beiden in het kernelinstellingenbestand te hebben. Indien er regels zijn toegevoegd dient de kernel opnieuw gecompileerd en geïnstalleerd te worden. Indien het USB-apparaat een CD-R- of DVD-brander is, dient het SCSI CD-ROM-stuurprogramma &man.cd.4; met de volgende regel aan de kernel toegevoegd te worden: device cd Aangezien de brander als een SCSI-schijf gezien wordt, dient het stuurprogramma &man.atapicam.4; niet in de kernelinstellingen gebruikt te worden. Ondersteuning voor controllers voor USB 2.0 is aanwezig in &os; 5.X en in de 4.X-tak sinds &os; 4.10-RELEASE. Het volgende dient toegevoegd te worden aan het kernelinstellingenbestand voor ondersteuning voor USB 2.0: device ehci De stuurprogramma's &man.uhci.4; en &man.ohci.4; zijn nog steeds nodig voor USB 1.X-ondersteuning. Op &os; 4.X dient de USB-daemon (&man.usbd.8;) te draaien om sommige USB-apparaten te kunnen zien. Om die aan te zetten dient usbd_enable="YES" aan het bestand /etc/rc.conf toegevoegd te worden en de machine opnieuw gestart te worden. Instellingen testen De instellingen zijn klaar om getest te worden: het USB-apparaat dient aangesloten te worden en in de buffer voor systeemmeldingen (&man.dmesg.8;) dient het stuurprogramma ongeveer als volgt te verschijnen: umass0: USB Solid state disk, rev 1.10/1.00, addr 2 GEOM: create disk da0 dp=0xc2d74850 da0 at umass-sim0 bus 0 target 0 lun 0 da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device da0: 1.000MB/s transfers da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C) Uiteraard kunnen het merk, de apparaatnode (da0) en andere details verschillen naar gelang de instelling. Aangezien het USB-apparaat als een SCSI-apparaat gezien wordt, kan het commando camcontrol gebruikt worden om de USB-opslagapparaten weer te geven die aan het systeem gekoppeld zijn: &prompt.root; camcontrol devlist <Generic Traveling Disk 1.11> at scbus0 target 0 lun 0 (da0,pass0) Indien er een bestandssysteem op de schijf aanwezig is, kan dat gemount worden. biedt indien nodig hulp bij het formatteren en aanmaken van partities op de USB-drive. Indien het apparaat losgekoppeld wordt (nadat de schijf gedismount is), dient in de buffer voor systeemmeldingen iets als het volgende te zien te zijn: umass0: at uhub0 port 1 (addr2) disconnected (da0:umass-sim0:0:0:0): lost device (da0:umass-sim0:0:0:0): removing device entry GEOM: destroy disk da0 dp=0xc2d74850 umass0: detached Referenties Naast de onderdelen Schijven toevoegen en Bestandssystemen mounten en unmounten, kunnen de volgende hulppagina's ook nuttig zijn: &man.umass.4;, &man.camcontrol.8; en &man.usbdevs.8;. Mike Meyer Bijgedragen door Optische media (CD's) aanmaken en gebruiken CD-ROM's aanmaken Inleiding CD's hebben een aantal eigenschappen waardoor ze verschillen van conventionele schijven. Initieel zijn ze door de gebruiker niet beschrijfbaar. Ze zijn zó ontworpen dat ze continu, zonder vertragingen van het verplaatsen van de kop tussen tracks, gelezen kunnen worden. Ze zijn ook veel gemakkelijker tussen twee systemen te verplaatsen dan gelijksoortige media in hun tijd waren. CD's hebben tracks, maar die verwijzen naar secties van gegevens die continu gelezen dienen te worden en niet naar fysieke eigenschappen van de schijf. Om een CD op &os; te produceren, dienen de gegevensbestanden waaruit de tracks op de CD gaan bestaan te worden voorbereid, waarna de tracks op de CD worden geschreven. ISO 9660 bestandssystemen ISO 9660 Het bestandssysteem ISO 9660 is ontworpen om met deze verschillen om te gaan. Helaas codeert het bestandssysteemgrenzen die destijds gebruikelijk waren. Gelukkig biedt het een uitbreidingsmechanisme dat correct geschreven CD's toestaat om deze grenzen te overschrijden en nog steeds te werken met systemen die deze uitbreidingen niet ondersteunen. sysutils/cdrtools De port sysutils/cdrtools bevat &man.mkisofs.8;, een programma dat gebruikt kan worden om een gegevensbestand aan te maken dat een ISO 9660-bestandssysteem bevat. Het bevat opties die verschillende uitbreidingen ondersteunen en wordt hieronder beschreven. CD-brander ATAPI Het gereedschap om de CD te branden hangt af van het feit of de CD-brander ATAPI of iets anders is. ATAPI CD-branders gebruiken het programma burncd dat deel uitmaakt van het basissysteem. SCSI en USB CD-branders dienen cdrecord van de port sysutils/cdrtools te gebruiken. burncd ondersteunt een beperkt aantal stations. Om erachter te komen of een station ondersteund is, dient de lijst CD-R/RW ondersteunde stations te worden geraadpleegd. CD-brander ATAPI/CAM-stuurprogramma Indien &os; 5.X of &os; 4.8-RELEASE of hoger gedraaid wordt, is het mogelijk om cdrecord en andere gereedschappen voor SCSI-drives op ATAPI-hardware te gebruiken door middel van de module ATAPI/CAM. Indien CD-brandsoftware met een grafische gebruikersinterface gewenst is, is X-CD-Roast of K3b een mogelijkheid. Deze gereedschappen zijn beschikbaar als package of vanuit de ports sysutils/xcdroast en sysutils/k3b. X-CD-Roast en K3b hebben de module ATAPI/CAM met ATAPI-hardware nodig. mkisofs Het programma &man.mkisofs.8;, dat deel uitmaakt van de port sysutils/cdrtools, maakt een ISO 9660-bestandssysteem aan dat een beeld is van een boomstructuur in de &unix; bestandssysteem-namespace. De eenvoudigste gebruiksvorm is: &prompt.root; mkisofs -o beeldbestand.iso /pad/naar/boomstructuur bestandssystemen ISO 9660 Dit commando maakt een beeldbestand.iso aan dat een ISO 9660-bestandssysteem bevat dat een kopie is van de boomstructuur in /pad/naar/boomstructuur. Tijdens het proces beeldt het bestandsnamen af op namen die aan de beperkingen van het standaard ISO 9660-bestandssysteem voldoen en sluit het bestanden uit die namen hebben die niet karakteristiek zijn voor ISO-bestandssystemen. bestandssystemen HFS bestandssystemen Joliet Er is een aantal opties beschikbaar om over deze beperkingen heen te komen. In het bijzonder zet de Rock Ridge-uitbreidingen aan die gangbaar zijn voor &unix; systemen, zet de Rock Ridge-uitbreidingen aan die gebruikt worden op Microsoft-systemen en kan gebruikt worden om HFS-bestandssystemen aan te maken die door &macos; gebruikt worden. Voor CD's die alleen op &os;-systemen gebruikt gaan worden, kan gebruikt worden om alle restricties op bestandsnamen uit te zetten. Indien het met gebruikt wordt, maakt het een bestandssysteembeeld aan dat identiek is aan de &os;-boomstructuur van waaruit begonnen is, alhoewel het mogelijk is dat het zich op aantal manieren niet aan de ISO 9660-standaard houdt. CD-ROM's opstartbaar maken De laatste optie voor algemeen gebruik is . Deze wordt gebruikt om de plaats van het opstartbeeld aan te geven om een El Torito opstartbare CD te maken. Deze optie heeft een argument nodig, namelijk het pad naar een opstartbeeld dat het begin van de boomstructuur die naar de CD geschreven wordt voorstelt. Gewoonlijk maakt &man.mkisofs.8; een ISO-beeld aan in de zogenaamde diskette-emulatie-modus en verwacht het dus dat het beeldbestand exact 1200, 1440 of 2880 KB groot is. Sommige bootloaders, zoals degene die door de distributieschijven van &os; wordt gebruikt, gebruiken de emulatiemodus niet. In dat geval dient de optie gebruikt te worden. Dus indien /tmp/myboot een opstartbaar &os;-systeem met het beeldbestand in /tmp/myboot/boot/cdboot bevat, kan het beeld van een ISO 9660-bestandssysteem als volgt in /tmp/bootable.iso aangemaakt worden: &prompt.root; mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot Als dit gedaan is en vn ( &os; 4.X) of md (&os; 5.X) in de kernel is ingesteld, kan het bestandssysteem gemount worden voor &os; 4.X met: &prompt.root; vnconfig -e vn0c /tmp/bootable.iso &prompt.root; mount -t cd9660 /dev/vn0c /mnt Voor &os; 5.X met: &prompt.root; mdconfig -a -t vnode -f /tmp/bootable.iso -u 0 &prompt.root; mount -t cd9660 /dev/md0 /mnt Nu kan gecontroleerd worden of /mnt en /tmp/myboot identiek zijn. Er zijn vele andere opties die met &man.mkisofs.8; gebruikt kunnen worden om het gedrag af te stemmen. In het bijzonder wijzigingen aan een ISO 9660-structuur en het aanmaken van Joliet- en HFS-schijven. Details staan in &man.mkisofs.8;. burncd CD-ROM's branden Indien er een ATAPI CD-brander aanwezig is, kan het commando burncd gebruikt worden om een ISO-beeld naar een CD te branden. burncd maakt deel uit van het basissysteem en is geïnstalleerd als /usr/sbin/burncd. Het gebruik is erg eenvoudig, aangezien het weinig opties heeft. &prompt.root; burncd -f cd-apparaat gegevens beeldbestand.iso fixate Het bovenstaande commando brandt een kopie van beeldbestand.iso naar cd-apparaat. Het standaardapparaat is /dev/acd0 (of /dev/acd0c op &os; 4.X). Opties om de schrijfsnelheid in te stellen, de CD na het branden uit te werpen en geluidsgegevens te schrijven staan in &man.burncd.8;. cdrecord Indien er geen ATAPI CD-brander aanwezig is, dient cdrecord gebruikt te worden om CD's te branden. cdrecord maakt geen deel uit van het basissysteem. Het dient òfwel vanuit de port in sysutils/cdrtools òfwel als package geïnstalleerd te worden. Veranderingen in het basissysteem kunnen ervoor zorgen dat binaire versies van dit programma falen, wat mogelijk tot een coaster leidt. Daarom dient òfwel de port bijgewerkt te worden als het systeem wordt bijgewerkt, òwel, als -STABLE gevolgd wordt, dient de port bijgewerkt te worden wanneer er een nieuwe versie beschikbaar komt. Hoewel cdrecord vele opties heeft, is het gebruik voor gewone situaties nog eenvoudiger dan dat van burncd. Een ISO 9660-beeld kan gebrand worden met: &prompt.root; cdrecord dev=device beeldbestand.iso Het lastige gedeelte in het gebruik van cdrecord is het vinden van de juiste . Om de juiste instelling te vinden, kan de vlag van cdrecord gebruikt worden, wat resultaten zoals de onderstaande kan geven: CD-ROM's branden &prompt.root; cdrecord -scanbus Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) * Dit geeft de gepaste -waarden voor de apparaten in de lijst. De CD-brander dient gezocht te worden, waarna de drie getallen gescheiden door komma's gebruikt kunnen worden als de waarde voor . In dit geval is het CD-RW-apparaat 1,5,0, dus is de juiste invoer . Er zijn eenvoudigere manieren om deze waarde te specificeren. In &man.cdrecord.1; staan meer details. Hier staat ook informatie over geluidstracks, de snelheid instellen en meer. Audio-CD's dupliceren Een audio-CD kan gedupliceerd worden door de geluidsgegevens van de CD naar een serie bestanden te schrijven en deze bestanden daarna naar een lege CD te schrijven. Het proces verschilt licht tussen ATAPI- en SCSI-drives. SCSI-drives Onttrek cdda2wav de audio: &prompt.user; cdda2wav -v255 -D2,0 -B -Owav Schrijf met cdrecord de .wav-bestanden: &prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wav Controleer of 2,0 juist is opgegeven, zoals beschreven in . ATAPI-drives Het ATAPI CD-stuurprogramma maakt elke track beschikbaar als /dev/acddtnn, waarin d het stationsnummer is en nn het tracknummer is in twee decimale cijfers, dat indien nodig vooraf wordt gegaan door een nul. Dus is de eerste track op de eerste schijf /dev/acd0t01, de tweede /dev/acd0t02, de derde /dev/acd0t03, enzovoort. Controleer of de juiste bestanden in /dev bestaan. &prompt.root; cd /dev &prompt.root; sh MAKEDEV acd0t99 In &os; 5.0 maakt &man.devfs.5; automatisch ingangen in /dev aan en beheert deze, dus is het niet nodig om MAKEDEV te gebruiken. De track kan met &man.dd.1; onttrokken worden. Bij het onttrekken van de bestanden dient een specifieke blokgrootte gebruikt te worden. &prompt.root; dd if=/dev/acd0t01 of=track1.cdr bs=2352 &prompt.root;dd if=/dev/acd0t02 of=track2.cdr bs=2352 ... Brand de onttrokken bestanden met burncd. Er dient opgegeven te worden dat het geluidsbestanden zijn en dat burncd de schijf moet fixeren wanneer na afronding van het proces. &prompt.root; burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixate Gegevens-CD's dupliceren Een gegevens-CD kan gekopieerd worden naar een beeldbestand dat functioneel gelijk is aan het beeldbestand dat met &man.mkisofs.8; gemaakt is en het kan gebruikt worden om elke gegevens-CD te dupliceren. Het hier gegeven voorbeeld neemt aan dat het CD-ROM-apparaat acd0 is. Voor &os; 4.X wordt een c toegevoegd aan het einde van de apparaatnaam om de volledige partitie, of in het geval van CD-ROM's, de volledige schijf aan te duiden. &prompt.root; dd if=/dev/acd0 of=bestand.iso bs=2048 Nu het beeld beschikbaar is, kan het naar CD geschreven worden zoals hierboven beschreven. Gegevens-CD's gebruiken Nu er een standaard gegevens-CD-ROM is aangemaakt moet deze waarschijnlijk gemount worden om de gegevens die er op staan te lezen. Normaalgesproken neemt &man.mount.8; aan dat een bestandssysteem van het soort ufs is. Als zoiets als onderstaande geprobeerd wordt komt er een klacht over Incorrect super block en geen mount: &prompt.root; mount /dev/cd0 /mnt De CD-ROM bevat geen UFS-bestandssysteem, dus pogingen om zo te mounten mislukken. Er dient aan &man.mount.8; verteld te worden dat het bestandssysteem van het soort ISO9660 is en dan werkt alles. Dit kan door de optie van &man.mount.8; op te geven. Het CD-ROM-apparaat /dev/cd0 onder /mnt mounten kan zo: &prompt.root; mount -t cd9660 /dev/cd0 /mnt De apparaatnaam (in dit voorbeeld /dev/cd0) kan afwijken, afhankelijk van de interface die de CD-ROM gebruikt. Verder voert de optie gewoon &man.mount.cd9660.8; uit. Bovenstaand voorbeeld kan verkort worden tot: &prompt.root; mount_cd9660 /dev/cd0 /mnt Het is in het algemeen mogelijk om gegevens-CD-ROMs van elke fabrikant op deze manier te gebruiken. Schijven met bepaalde uitbreidingen op ISO 9660 kunnen zich echter vreemd gedragen. Joliet-schijven bijvoorbeeld, slaan alle bestandsnamen op in twee-byte Unicode-karakters. De &os;-kernel spreekt (nog!) geen Unicode, dus verschijnen niet-Engelse karakters als vraagtekens. Als &os; 4.3 of later gedraaid wordt, bevat het CD9660-stuurprogramma haken om tijdens het draaien een geschikte Unicode-omzettabel te laden. Modules voor enkele veelgebruikte coderingen zijn beschikbaar via de port sysutils/cd9660_unicode.) Zo nu en dan kan Device not configured verschijnen als geprobeerd wordt om een CD-ROM te mounten. Dit betekent meestal dat het CD-ROM-station denkt dat er geen schijf in de lade ligt of dat het station niet zichtbaar is op de bus. Omdat het enkele seconden kan duren voordat een CD-ROM-station doorheeft dat er een CD-ROM in ligt, is geduld geboden. Soms wordt een SCSI CD-ROM gemist omdat het station niet genoeg tijd had om antwoord te geven op de busreset. Indien er een SCSI CD-ROM aanwezig is, dient de volgende optie aan de kernelinstellingen toegevoegd te worden en de kernel opnieuw gebouwd te worden. options SCSI_DELAY=15000 Dit zorgt ervoor dat de SCSI-bus 15 seconden pauzeert tijdens het opstarten opdat het CD-ROM-station elke gelegenheid krijgt om de busreset te beantwoorden. Rauwe gegevens-CD's branden Een bestand kan direct naar CD geschreven worden zonder een ISO 9660-bestandssysteem aan te maken. Sommige mensen doen dit voor back-updoeleinden. Dit gaat sneller dan een standaard-CD branden: &prompt.root; burncd -f /dev/acd1 -s 12 gegevens archief.tar.gz fixate Om de gegevens terug te halen die op zo'n CD gebrand zijn, is het noodzakelijk om gegevens van de rauwe apparaatnode te lezen: &prompt.root; tar xzvf /dev/acd1 Het is niet mogelijk om deze schijf te mounten zoals dat voor een normale CD-ROM gedaan wordt. Zo'n CD-ROM kan onder geen enkel besturingssysteem, behalve &os;, gelezen worden. Om de CD te kunnen mounten of gegevens te delen met een ander besturingssysteem, dient &man.mkisofs.8; gebruikt te worden, zoals boven beschreven is. Marc Fonvieille Bijgedragen door CD-brander ATAPI/CAM-stuurprogramma Het ATAPI/CAM-stuurprogramma gebruiken Dit stuurprogramma stelt ATAPI-apparaten (CD-ROM, CD-RW, DVD-stations, enzovoort) in staat om vanuit het SCSI-subsysteem benaderd te worden en maakt daarmee het gebruik van applicaties zoals sysutils/cdrdao of &man.cdrecord.1; mogelijk. Om dit stuurprogramma te gebruiken, is het noodzakelijk om de volgende regel aan het kernelinstellingenbestand toe te voegen: device atapicam Ook zijn de volgende regels in het kernelinstellingenbestand nodig, die meestal wel aanwezig zijn: device ata device scbus device cd device pass Hierna dient de nieuwe kernel opnieuw gebouwd en geïnstalleerd te worden en dient de machine opnieuw gestart te worden. Tijdens het opstartproces dient de brander als volgt te verschijnen: acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CD-RW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed Het station is nu toegankelijk via de apparaatnaam /dev/cd0. Om bijvoorbeeld een CD-ROM op /mnt te mounten: &prompt.root; mount -t cd9660 /dev/cd0 /mnt Als root kan het volgende commando gegeven worden om het SCSI-adres van de brander te verkrijgen: &prompt.root; camcontrol devlist <MATSHITA CD-RW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0) Dus 1,0,0 is het SCSI-adres dat met &man.cdrecord.1; en andere SCSI-toepassingen gebruikt dient te worden. Meer informatie over het ATAPI/CAM en het SCSI-systeem staat in de hulppagina's van &man.atapicam.4; en &man.cam.4;. Marc Fonvieille Bijgedragen door Andy Polyakov Met toevoegingen van Optische media (DVD's) aanmaken en gebruiken DVD branden Inleiding Vergeleken met de CD behoort de DVD de tot de volgende generatie van optische media-opslagtechnologie. De DVD kan meer gegevens bevatten dan enige CD en is tegenwoordig de standaard voor videopublicatie. Er kunnen vijf fysieke opneembare formaten gedefinieerd worden die opneembare DVD heten: DVD-R: dit was het eerst beschikbare opneembare DVD-formaat. De DVD-R-standaard is gedefinieerd door het DVD Forum. Dit formaat is voor eenmalig schrijven. DVD-RW: dit is de herschrijfbare versie van de DVD-R-standaard. Een DVD-RW kan tot ongeveer 1.000 maal herschreven worden. DVD-RAM: dit is ook een herschrijfbaar formaat dat door het DVD Forum ondersteund wordt. Een DVD-RAM kan gezien worden als een verwisselbare harde schijf. Dit medium is echter niet uitwisselbaar met de meeste DVD-ROM-stations en DVD-Video-spelers. Slechts enkele DVD-schrijvers ondersteunen het DVD-RAM-formaat. DVD+RW: dit is het herschrijfbare formaat dat is gedefinieerd door de DVD+RW Alliance. Een DVD+RW kan tot ongeveer 1.000 maal herschreven worden. DVD+R: dit formaat is de eenmalig beschrijfbare versie van het DVD+RW-formaat. Een enkellaags opneembare DVD kan maximaal 4.700.000.000 bytes bevatten, wat eigenlijk 4,38 GB of 4.485 MB is (1 kB is 1024 bytes). Er dient onderscheid gemaakt te worden tussen het fysieke medium en de toepassing. Een DVD-Video bijvoorbeeld is een specifiek bestandsschema dat op elk fysiek opneembaar DVD-medium geschreven kan worden: DVD-R, DVD+R, DVD-RW, enzovoort. Voordat het mediumtype gekozen wordt, dient het zeker te zijn dat zowel de brander als de DVD-Video-speler (een onafhankelijke speler of een DVD-ROM-station in een computer) overweg kunnen met het overwogen medium. Instellingen Het programma &man.growisofs.1; wordt gebruikt om DVD's op te nemen. Dit commando is deel van de dvd+rw-tools gereedschappen (sysutils/dvd+rw-tools>). dvd+rw-tools ondersteunt alle types DVD-media. Deze gereedschappen gebruiken het SCSI-subsysteem om toegang tot de apparaten te krijgen, daarvoor moet ondersteuning voor ATAPI/CAM aan de kernel toegevoegd worden. Indien de brander de USB-interface gebruikt, is deze toevoeging nutteloos en dient gelezen te worden voor meer details over het instellen van USB-apparaten. De DMA-toegang voor ATAPI-apparaten dient ook aangezet te worden door de volgende regel aan het bestand /boot/loader.conf toe te voegen: hw.ata.atapi_dma="1" Voordat de dvd+rw-tools gebruikt kunnen worden, dienen de dvd+rw-tools' hardware compatibility notes geraadpleegd te worden voor enige informatie die betrekking heeft op de DVD-brander. Indien een grafische gebruikersinterface gewenst is, is K3b (sysutils/k3b), die een gebruikersvriendelijke interface biedt voor &man.growisofs.1; en vele andere brandprogramma's, het bekijken waard. Gegevens-DVD's branden Het commando &man.growisofs.1; is een frontend voor mkisofs. Het roept &man.mkisofs.8; aan om het bestandssysteemoverzicht aan te maken en het schrijft naar de DVD. Hierdoor is het niet nodig om een beeld van de gegevens aan te maken voordat met branden begonnen wordt. Om de gegevens uit de map /pad/naar/gegevens op een DVD+R of een DVD-R te branden: &prompt.root; growisofs -dvd-compat -Z /dev/cd0 -J -R /pad/naar/gegevens De opties worden doorgegeven aan &man.mkisofs.8; voor het aanmaken van het bestandssysteem (in dit geval een ISO 9660-bestandssysteem met Joliet en Rock Ridge uitbreidingen). Meer details staan in de hulppagina &man.mkisofs.8;. De optie wordt gebruikt voor het opnemen van de eerste sessie, ook bij meerdere sessies. Het DVD-apparaat, /dev/cd0, dient aan de hand van de instellingen aangepast te worden. De parameter sluit de schijf zodat er niets aan de opname toegevoegd kan worden. Dit zou als tegenprestatie betere uitwisselbaarheid met DVD-ROM-stations moeten geven. Het is ook mogelijk om een vooraf gemastered beeld te branden, om bijvoorbeeld het beeld beeldbestand.iso te branden: &prompt.root; growisofs -dvd-compat -Z /dev/cd0=beeldbestand.iso De schrijfsnelheid moet automatisch gedetecteerd en ingesteld worden, afhankelijk van het medium en het gebruikte station. Om de schrijfsnelheid te forceren, dient de parameter gebruikt te worden. Meer informatie staat in de hulppagina &man.growisofs.1;. DVD DVD-Video DVD-Video branden Een DVD-Video is een specifiek bestandsschema dat gebaseerd is op de ISO 9660 en de micro-UDF (M-UDF) specificaties. DVD-Video heeft ook een specifieke hiërarchie voor de gegevensstructuur, de reden waarom een speciaal programma zoals multimedia/dvdauthor nodig is om de DVD te schrijven. Indien er reeds een beeld van het bestandssysteem van de DVD-Video beschikbaar is, kan het zoals elk ander beeld gebrand worden. In de vorige sectie staat een voorbeeld. Als het resultaat voor de inhoud voor de DVD bijvoorbeeld in de map /pad/naar/video staat, kan de DVD-Video als volgt gebrand worden: &prompt.root; growisofs -Z /dev/cd0 -dvd-video /pad/naar/video De optie wordt doorgegeven aan &man.mkisofs.8; en geeft het opdracht om een bestandssysteemschema voor een DVD-Video aan te maken. Verder impliceert de optie de optie van &man.growisofs.1;. DVD DVD+RW DVD+RW gebruiken In tegenstelling tot een CD-RW dient een nieuwe DVD+RW voor het eerste gebruik geformatteerd te worden. Het programma &man.growisofs.1; regelt dit automatisch als nodig. Dit is de aanbevolen manier. Het is ook mogelijk om dvd+rw-format te gebruiken om een DVD+RW te formatteren: &prompt.root; dvd+rw-format /dev/cd0 Deze operatie hoeft slechts één maal uitgevoerd te worden. Onthoud dat alleen nieuwe DVD+RW-media geformatteerd dienen te worden. Daarna is het mogelijk om de DVD+RW op dezelfde manier te branden zoals in bovenstaande secties staat vermeldt. Om nieuwe gegevens op een DVD+RW te branden (een geheel nieuw bestandssysteem branden, niet wat gegevens toevoegen), is het niet nodig om deze te wissen. Het is voldoende om de vorige opname te overschrijven (tijdens het aanmaken van een initiële sessie), zoals hieronder: &prompt.root; growisofs -Z /dev/cd0 -J -R /pad/naar/nieuwe gegevens Het DVD+RW-formaat biedt de mogelijkheid om eenvoudig nieuwe gegevens aan een vorige opname toe te voegen. De operatie bestaat uit het samenvoegen van een nieuwe sessie en de bestaande. Het is geen multisessie-schrijven. &man.growisofs.1; laat het ISO 9660-bestandssysteem dat aanwezig is op het medium groeien. Om gegevens aan de vorige DVD+RW toe te voegen: &prompt.root; growisofs -M /dev/cd0 -J -R /pad/naar/volgende gegevens Dezelfde opties van &man.mkisofs.8; die gebruikt werden om de initiële sessie te branden, dienen gebruikt te worden tijdens schrijfsessies. De optie kan gebruikt worden als betere uitwisselbaarheid met DVD-ROM-stations gewenst is. In het geval van een DVD+RW verhindert dit het toevoegen van gegevens niet. Om het medium te wissen: &prompt.root; growisofs -Z /dev/cd0=/dev/zero DVD DVD-RW DVD-RW gebruiken Een DVD-RW accepteert twee schijfformaten: de incrementele sequentiële en beperkt overschrijven. Standaard zijn DVD-RW-schijven in het sequentiële formaat. Een nieuwe DVD-RW kan direct beschreven worden zonder deze te formatteren. Een gebruikte DVD-RW in sequentieel formaat dient echter gewist te worden voordat het mogelijk is om een nieuwe initiële sessie te schrijven. Om een DVD-RW in sequentiële toestand te wissen, dient het volgende gedaan te worden: &prompt.root; dvd+rw-format -blank=full /dev/cd0 Volledig wissen () neemt ongeveer één uur in beslag op een 1x-medium. Het is mogelijk om snel te wissen door gebruik te maken van de optie als de DVD-RW in Disk-At-Once-modus (DAO) wordt opgenomen. Om de DVD-RW in DAO-modus te branden: &prompt.root; growisofs -use-the-force-luke=dao -Z /dev/cd0=beeldbestand.iso De optie is niet nodig aangezien &man.growisofs.1; probeert om minimale (snel gewiste) media te detecteren en gebruik te maken van DAO-schrijven. Eigenlijk moet beperkt overschrijven gebruikt worden met elke DVD-RW. Dit formaat is flexibeler dan het standaard incrementeel sequentiële. Om gegevens op een sequentiële DVD-RW te schrijven, worden dezelfde instructies gebruikt als voor de andere DVD-formaten: &prompt.root; growisofs -Z /dev/cd0 -J -R /pad/naar/gegevens Om wat gegevens aan de vorige opname toe te voegen, dient de optie van &man.growisofs.1; gebruikt te worden. Als echter gegevens aan een DVD-RW in incrementeel sequentiële modus worden toegevoegd, wordt een nieuwe sessie op de schijf aangemaakt wat resulteert in een multisessie schijf. Een DVD-RW in het beperkt overschrijven formaat hoeft niet gewist te worden vóór een nieuwe initiële sessie. Het is voldoende om de schijf te overschrijven met de optie , wat analoog is aan het geval van de DVD+RW. Het is ook mogelijk om een bestaand ISO 9660-bestandssysteem te laten groeien op soortgelijke wijze als voor een DVD+RW met de optie . Het resultaat is een enkelsessie DVD. Om een DVD-RW in het beperkt overschrijven-formaat te zetten: &prompt.root; dvd+rw-format /dev/cd0 Om terug te gaan naar het sequentiële formaat: &prompt.root; dvd+rw-format -blank=full /dev/cd0 Multisessie Multisessie DVD's worden door zeer weinig DVD-ROM-stations geaccepteerd en meestal lezen ze hopelijk tenminste de eerste sessie. DVD+R, DVD-R en DVD-RW kunnen in het sequentiële formaat meerdere sessies accepteren. Het idee van meerdere sessies bestaat niet voor de formaten DVD+RW en DVD-RW in beperkt overschrijven. Om een nieuwe sessie achter een initiële (niet-gesloten) sessie op een DVD+R, DVD-R of DVD-RW in sequentieel formaat toe te voegen: &prompt.root; growisofs -M /dev/cd0 -J -R /pad/naar/volgende gegevens Het gebruik van dit commando met een DVD+RW of een DVD-RW in beperkt overschrijven-formaat voegt gegevens toe door de nieuwe sessie samen te voegen met de bestaande. Dit leidt tot een enkelsessie schijf. Deze manier kan gebruikt worden om gegevens achter een initiële sessie aan deze media toe te voegen. Op deze media wordt wat ruimte gebruikt tussen elke sessie om het einde en begin van de sessies aan te geven. Daarom dienen sessies met grote hoeveelheden gegevens toegevoegd te worden om de mediaruimte te optimaliseren. Het aantal sessies is beperkt tot 154 voor een DVD+R, ongeveer 2000 voor een DVD-R en 127 voor een dubbellaags DVD+R. Meer informatie Om meer informatie over een DVD te verkrijgen kan het commando dvd+rw-mediainfo /dev/cd0 met de schijf in het station gebruikt worden. Meer informatie over dvd+rw-tools staat in de hulppagina &man.growisofs.1;, op de dvd+rw-tools website en in de archieven van de cdwrite mailing list. De uitvoer van dvd+rw-mediainfo met betrekking tot de resulterende opname of het medium met problemen is verplicht voor elk probleemrapport. Zonder deze uitvoer volgt geen hulp. Julio Merino Origineel werk door Martin Karlsson Herschreven door Diskettes aanmaken en gebruiken Soms is het opslaan van gegevens op een diskette nuttig, bijvoorbeeld als er geen andere verwijderbare opslagmedia beschikbaar zijn of als kleine hoeveelheden gegevens naar een andere computer moeten worden overgedragen. In deze sectie wordt beschreven hoe diskettes in &os; gebruikt dienen te worden. Hier worden hoofdzakelijk het formatteren en gebruik van 3,5 inch DOS-diskettes behandeld, maar de concepten zijn vergelijkbaar voor andere disketteformaten. Diskettes formatteren Het apparaat Diskettes worden benaderd door ingangen in /dev, net zoals andere apparaten. Om de rauwe diskette in 4.X en eerdere versies te benaderen, dient /dev/fdN, waar N voor het stationsnummer staat, gewoonlijk 0, of /dev/fdNX, waar X voor een letter staat, gebruikt te worden. In 5.0 en nieuwere versies dient simpelweg /dev/fdN gebruikt te worden. Schijfgrootte in 4.X en eerdere versies Er zijn ook apparaten /dev/fdN.grootte waar grootte een diskettegrootte in kB is. Deze ingangen worden tijdens het formatteren op laag niveau gebruikt om de schijfgrootte te bepalen. In de volgende voorbeelden wordt 1440 kB als grootte gebruikt. Soms is het nodig om de ingangen in /dev (opnieuw) aan te maken: &prompt.root; cd /dev && ./MAKEDEV "fd*" Schijfgrootte in 5.0 en latere versies In 5.0 beheert &man.devfs.5; automatisch de apparaatnodes in /dev, dus is het niet nodig om MAKEDEV te gebruiken. De gewenste schijfgrootte wordt met de vlag doorgegeven aan &man.fdformat.1;. De ondersteunde groottes staan vermeld in &man.fdcontrol.8;, maar 1440kB werkt het beste. Formatteren Een diskette dient op laag niveau geformatteerd te worden voordat deze kan worden gebruikt. Dit wordt meestal door de fabrikant gedaan, maar formatteren is een goede manier om de integriteit van het medium te controleren. Hoewel het mogelijk is om grotere (of kleinere) schijfgroottes te forceren, zijn de meeste diskettes ontworpen voor 1440kB. Een diskette kan op laag niveau geformatteerd worden met &man.fdformat.1;. Dit gereedschap verwacht de apparaatnaam als parameter. Op basis van eventuele foutmeldingen kan bepaald worden of een schijf goed of slecht is. Formatteren in 4.X en eerdere versies Voor het formatteren van een diskette dienen de apparaten /dev/fdN.grootte gebruikt te worden. Nadat een 3,5 inch diskette in het station is gestoken: &prompt.root; /usr/sbin/fdformat /dev/fd0.1440 Formatteren in 5.0 en latere versies Voor het formatteren van de diskette dienen de apparaten /dev/fdN gebruikt te worden. Nadat een 3,5 inch diskette in het station is gestoken: &prompt.root; /usr/sbin/fdformat -f 1440 /dev/fd0 Schijflabels Nadat de diskette op laag niveau is geformatteerd, dient er schijflabel aan gekoppeld te worden. Dit schijflabel wordt later vernietigd, maar het systeem heeft het nodig om later de grootte en de geometrie van de schijf te bepalen. Het nieuwe schijflabel neemt de gehele schijf over en bevat alle benodigde informatie over de geometrie van de diskette. De geometriewaarden van het schijflabel staan vermeld in /etc/disktab. Nu kan &man.disklabel.8; als volgt gedraaid worden: &prompt.root; /sbin/disklabel -B -r -w /dev/fd0 fd1440 Sinds &os; 5.1-RELEASE is het oude programma &man.disklabel.8; vervangen door &man.bsdlabel.8;. In &man.bsdlabel.8; zijn een aantal overbodige opties en parameters verwijderd. In de bovenstaande voorbeelden dient de optie met &man.bsdlabel.8; weggelaten te worden. Meer informatie staat in de hulppagina van &man.bsdlabel.8;. Bestandssystemen Nu is de diskette klaar om op hoog niveau geformatteerd te worden. Hiermee wordt een nieuw bestandssysteem opgezet, wat &os; in staat stelt om naar de schijf te lezen en te schrijven. Nadat het nieuwe bestandssysteem is aangemaakt, wordt het schijflabel vernietigd, dus om de schijf te herformatteren is het noodzakelijk om het schijflabel opnieuw aan te maken. Het bestandssysteem voor diskettes kan zowel UFS als FAT zijn. FAT is over het algemeen een betere keuze voor diskettes. Om een nieuw bestandssysteem op de diskettes te zetten: &prompt.root; /sbin/newfs_msdos /dev/fd0 De schijf is nu klaar voor gebruik. Diskettes gebruiken Om de diskette te gebruiken kan &man.mount.msdos.8; (in 4.X en eerdere versies) of &man.mount.msdosfs.8; (in 5.0 en nieuwere versies) gebruikt worden om het medium te mounten. Ook kan emulators/mtools uit de Portscollectie worden gebruikt. Gegevensbanden aanmaken en gebruiken bandmedia De belangrijkste bandmedia zijn de 4mm, 8mm, QIC, mini-cartridge en DLT. 4mm (DDS: Digital Data Storage) bandmedia DDS (4mm) banden bandmedia QIC banden 4mm-banden vervangen steeds vaker QIC-banden als back-upmedium voor werkstations. Deze trend werd versneld toen Connor Archive, een toonaangevende fabrikant van QIC-stations, overnam en daarna de productie van QIC-stations stopte. 4mm-stations zijn klein en stil maar genieten niet de betrouwbaarheidsreputatie van 8mm-stations. De cartridges zijn minder duur en kleiner (3 x 2 x 0,5 inch, 76 x 51 x 12 mm) dan 8mm-cartridges. Net zoals bij 8mm hebben de koppen bij 4mm een vergelijkbaar kort leven, omdat beiden gebruik maken van een helische scan. De gegevensdoorvoer op deze stations begint bij ongeveer 150 kB/s, met pieken van 500 kB/s. De opslagcapaciteit begint bij 1,3 GB en eindigt bij 2,0 GB. Hardwarecompressie, die voor de meeste stations beschikbaar is, zorgt voor ongeveer een verdubbeling van de capaciteit. Bibliotheekeenheden van multi-station bandbiliotheken kunnen 6 stations in een enkel kabinet bevatten met automatische wisseling van de banden. De capaciteit van een bibliotheek loopt op tot 240 GB. Door de DDS-3-standaard worden bandcapaciteiten van 12 GB (of 24 GB met compressie) ondersteund. Net als 8mm-drives gebruiken 4mm-drives helische scan. Alle voor- en nadelen van helische scan gelden voor zowel 4mm- als 8mm-stations. Banden dienen na 2.000 maal of 100 volledige back-ups afgedankt te worden. 8mm (Exabyte) bandmedia Exabyte (8mm) banden 8mm-banden zijn de meest gebruikte SCSI-banden. Ze vormen de beste keuze met betrekking tot het uitwisselen van banden. Bijna elk bedrijf heeft een Exabyte 2 GB 8mm-bandstation. 8mm-stations zijn betrouwbaar, gemakkelijk en stil. Cartridges zijn niet duur en klein (4,8 x 3,3 x 0,6 inch; 122 x 84 x 15 mm). Een nadeel van 8mm-banden is de relatief korte levensduur van de kop en band vanwege de hoge mate van relatieve beweging tussen de band en de koppen. De gegevensdoorvoer varieert van ~250 kB/s tot ~500 kB/s. De gegevensomvang begint bij 300 MB en kan oplopen tot 7 GB. Hardwarecompressie, waarmee de meeste stations van deze soort zijn uitgerust, zorgt voor ongeveer een verdubbeling van de capaciteit. Deze stations zijn los of als multi-station bandbiliotheken met 6 stations en 120 banden in een enkele kast beschikbaar. In het laatste geval worden banden automatisch per stuk verwisseld. De capaciteit van een bibliotheek kan oplopen tot meer dan 840 GB. Het model Mammoth van Exabyte ondersteunt een een capaciteit van 12 GB (24 GB met compressie) per band en kost ongeveer twee maal zoveel als een gewoon bandstation. Gegevens worden door middel van helische scan op de band gezet en de koppen zijn onder een hoek (ongeveer 6 graden) op het medium gepositioneerd. De band wordt 270 graden om de spoel gewikkeld die de koppen vasthoudt. Dit resulteert in een hoge gegevensdichtheid en dicht bij elkaar staande sporen die een hoek van de ene naar de andere kant van de band maken. QIC bandmedia QIC-150 De banden en stations voor de QIC-150 zijn misschien de meest voorkomende bandstations en bandmedia. QIC-bandstations zijn de minst dure serieuze back-upstations. Het nadeel is de prijs van de media. QIC-banden zijn duur in vergelijking met 8mm- of 4mm-banden. De prijs per GB opslagruimte kan tot 5 maal zo hoog zijn. Indien een half dozijn banden toereikend is, zijn QIC-banden waarschijnlijk de juiste keuze. QIC is het meest voorkomende bandstation. Elk bedrijf heeft QIC-stations met een bepaalde capaciteit. QIC heeft namelijk een groot aantal capaciteiten per type band, die fysiek vergelijkbaar (soms identiek) zijn. QIC-banden zijn niet stil. Deze stations maken een hoorbaar geluid tijdens het zoeken voordat ze beginnen met het opnemen van gegevens en zijn duidelijk hoorbaar tijdens het lezen, schrijven en zoeken. QIC-banden zijn 6 x 4 x 0,7 inch of 152 x 102 x 17 mm groot. De gegevensdoorvoer varieert van ~150 kB/s tot ~500 kB/s. Hardwarecompressie is mogelijk met veel van de nieuwere bandstations. QIC-stations worden steeds minder vaak geïnstalleerd. Ze worden vervangen door DAT-stations. Gegevens worden in sporen op de band gezet. De sporen lopen parallel aan de lange as van het bandmedium van het ene naar het andere einde. Het aantal sporen, en daarmee de breedte van een spoor, varieert met de capaciteit van de band. De meeste, zo niet alle, nieuwe stations bieden achterwaartse leescompatibiliteit (en vaak ook achterwaartse schrijfcompabiliteit). QIC heeft een goede reputatie op het gebied van gegevensveiligheid (de mechanismen zijn eenvoudiger en robuuster dan die van helische scan-stations). Banden dienen na 5.000 back-ups afgedankt te worden. DLT bandmedia DLT DLT-banden hebben de snelste gegevensdoorvoer van alle hiergenoemde bandstations. De band van 1/2 inch (12,5 mm) zit in een cartridge (4 x 4 x 1 inch; 100 x 100 x 25 mm) op één enkele haspel. De cartridge heeft een opklapbare opening aan één gehele kant van de cartridge. Het mechanisme van het station opent deze opening om de bandleider eruit te halen. De bandleider heeft een ovaal gat dat door het station gebruikt wordt om de band vast te zetten. De haspel die de band aanpakt is in het bandstation gesitueerd. Bij alle andere bandcartridges die hier genoemd zijn (9-sporige banden zijn de enige uitzondering) zitten zowel de haspel die de band levert als de haspel die de band aanpakt in de bandcartridge zelf. De gegevensdoorvoer bedraagt ongeveer 1.5 MB/s, drie maal de doorvoer van 4mm-, 8mm-, en QIC-bandstations. De gegevenscapaciteit varieert van 10 GB tot 20 GB per stations. Stations zijn als meerdere-bandwisselaars en als bibliotheken van meerdere banden en meerdere stations beschikbaar, die 5 tot 900 banden bevatten verspreid over 1 tot 20 stations, waardoor een opslagcapaciteit van 50 GB tot 9 TB geleverd wordt. Met compressie levert het formaat DLT Type IV tot 70 GB aan capaciteit. Gegevens worden in sporen die parallel aan de looprichting lopen op de band gezet (net als met QIC-banden). Er worden twee sporen per keer geschreven. De levensduur van de lees- en schrijfkoppen is relatief lang. Als de band eenmaal stilstaat, is er geen relatieve beweging tussen de koppen en de band. AIT bandmedia AIT AIT is een nieuw formaat van Sony dat (met compressie) tot 50 GB gegevens per band kan bevatten. De band bevat geheugenchips die een index van de inhoud van de band bevatten. Deze index kan snel door het bandstation gelezen worden voor het bepalen van de positie van bestanden op de band, in plaats van de enkele minuten die nodig zijn voor andere banden. Software als SAMS:Alexandria kan meer dan veertig AIT-bandbibliotheken beheren, waarbij het direct met de geheugenchip van de band communiceert om de inhoud op het scherm te tonen, om te bepalen welke bestanden naar welke band zijn geback-upped en om de correcte band te vinden, laden en de gegevens ervan terug te zetten. Dit soort bibliotheken kosten rond de $ 20.000, waardoor ze enigszins boven het budget van de hobbyist liggen. Eerste gebruik van een nieuwe band Als de eerste keer van een nieuwe, geheel lege band wordt gelezen of ernaar wordt geschreven, mislukt dit. Het bericht op de console zier er analoog aan het volgende uit: sa0(ncr1:4:0): NOT READY asc:4,1 sa0(ncr1:4:0): Logical unit is in process of becoming ready De band bevat geen Identifier Block (bloknummer 0). Alle QIC-bandstations sinds de adoptie van de standaard QIC-525 schrijven een Identifier Block naar de band. Er zijn twee oplossingen: mt fsf 1 zorgt ervoor dat het bandstation een Identifier Block naar de band schrijft. De knop aan de voorkant van het paneel dient gebruikt te worden om de band uit te werpen. De band dient opnieuw in het station gestoken te worden en met dump worden gegevens naar de band gedumpt. dump geeft DUMP: End of tape detected en de console laat het volgende zien:HARDWARE FAILURE info:280 asc:80,96. De band kan met mt rewind teruggespoeld te worden. Hierna zijn alle bandbewerkingen succesvol. Naar diskettes back-uppen Kunnen diskettes gebruikt worden om gegevens te back-uppen? back-updiskettes diskettes Diskettes zijn niet bepaald een geschikt medium om back-ups mee te maken, omdat: Het medium onbetrouwbaar is, in het bijzonder op de langere termijn; Het back-uppen en terugzetten erg traag is; Diskettes een zeer beperkte capaciteit hebben. De tijden dat een hele harde schijf naar een tiental diskettes kon worden geback-upped zijn allang verstreken. Maar als er geen andere manier beschikbaar is om de gegevens te back-uppen, is een back-up naar diskettes beter dan helemaal geen back-up. Gebruikte diskettes moet van goede kwaliteit zijn. Diskettes die al jaren op kantoor rondgeslingerd hebben, zijn een slechte keuze. In het ideale geval dienen nieuwe diskettes van een reputabele fabrikant gebruikt te worden. Hoe de gegevens naar diskettes back-uppen? Het beste kan naar diskettes worden geback-upped door gebruik te maken van &man.tar.1; met de optie (meerdere volumes), die back-ups over meerdere diskettes ondersteunt. Om alle bestanden in de huidige map en de submappen te back-uppen (als root): &prompt.root; tar Mcvf /dev/fd0 * Als de eerste diskette vol is, vraagt &man.tar.1; om het volgende volume. Omdat &man.tar.1; media-onafhankelijk is, refereert het aan volumes, in deze context diskettes. Prepare volume #2 for /dev/fd0 and hit return: Dit wordt herhaald (met oplopend volumenummer) totdat alle gespecificeerde bestanden zijn geback-upped. Kunnen back-ups gecomprimeerd worden? tar gzip compressie Helaas staat &man.tar.1; het gebruik van de optie niet toe voor archieven over meerdere volumes. Het is uiteraard mogelijk om alle bestanden met &man.gzip.1; te comprimeren, ze met &man.tar.1; op diskettes te zetten en ze daarna met &man.gunzip.1; weer te decomprimeren! Hoe worden de back-ups teruggezet? Om een volledige archief terug te zetten: &prompt.root; tar Mxvf /dev/fd0 Er zijn twee manieren om alleen specifieke bestanden terug te zetten. Ten eerste kan met de eerste diskette begonnen worden: &prompt.root; tar Mxvf /dev/fd0 bestandsnaam Het programma &man.tar.1; vraagt om de vervolgdiskettes totdat het benodigde bestand is gevonden. Als alternatief kan, als bekend is op welke diskette het bestand staat, de betreffende diskette worden ingestoken en bovenstaand commando gebruikt worden. Als het eerste bestand op de diskette een vervolg is van de vorige diskette, waarschuwt &man.tar.1; dat het bestand niet teruggezet kan worden, zelfs als hier niet om gevraagd is! + + + + + Lowell + Gilbert + Oorspronkelijk werk van + + + + + + Back-up strategieën + + Het eerste wat nodig is voor het ontwepken van een + back-upplan, is er voor te zorgen dat de volgende mogelijke + problemen worden ondervangen: + + + + Schijffalen + + + + Per ongeluk verwijderde bestanden + + + + Willekeurige bestandscorruptie + + + + Complete machinevernietiging (door bijvoorbeeld brand), + inclusief de vernietiging van lokaal beschikbare + back-ups. + + + + Het is goed mogelijk dat een aantal systemen het best + geholpen zijn door voor al deze problemen een andere techniek te + gebruiken. Behalve voor volledig persoonlijke systemen met + niet echt belangrijke gegevens, is het zelfs onwaarschijnlijk dat + één techniek alle mogelijke problemen kan + afvangen. + + Een aantal technieken in de gereedschapskist zijn: + + + + Archiveren van een heel systeem op een back-up die niet + lokaal wordt bewaard. Dit biedt bescherming tegen alle + hierboven beschreven problemen, maar het is langzaam en + onhandig om er een restore van te maken. Het is mogelijk om + lokaal een kopie aan te houden en/of online, maar dan zijn er + nog steeds onhandigheden, in het bijzonder voor restores voor + gebruikers met beperkte rechten. + + + + Snapshots van bestandssystemen. Dit werkt eigenlijk + alleen in het geval bestanden per ongelijk verwijderd worden, + maar het kan in dat geval erg handig + zijn en het werkt snel en eenvoudig. + + + + Een kopie maken van hele bestandssystemen en/of schijven + (bijvoorbeeld een periodieke rsync van een hele machine). + Dit is in het algemeen het meest bruikbaar in netwerken met + specifieke eisen. Voor algemene bescherming tegen het falen + van een schijf, is het meestal minder geschikt dan + RAID. Voor het herstellen van per ongeluk + verwijderde bestanden is het vergelijkbaar aan + UFS snapshots, maar dat hangt af van + persoonlijke voorkeuren. + + + + RAID. Minimaliseert of voorkomt + downtijd als een schijf faalt. Dit ten koste van het vaker + hebben van schijven die falen (omdat er meer van zijn), maar + wel met een veel lagere urgentie. + + + + Controleren van fingerprints van bestanden. Het + hulpprogramma &man.mtree.8; kan hier bij helpen. Hoewel dit + geen back-uptechniek is, zorgt het er wel voor dat kan worden + opgemerkt wanneer back-ups geraadpleegd moeten worden. Dit + is in het bijzonder belangrijk voor offline back-ups en de + fingerprints horen periodiek gecontroleerd te worden. + + + + Het is makkelijk om met nog meer technieken op de proppen te + komen, waaronder veel variaties op de bovengenoemde. Bijzondere + eisen leiden vaak tot bijzondere oplossingen. Het back-uppen van + een draaiende database vereist bijvoorbeeld een methode die + toegespitst is op de gebruikte database software als tussenstap. + Het is van groot belang om te onderkennen tegen welke gevaren er + bescherming dient te zijn en hoe daarmee om te gaan. + + Back-upbeginselen De drie grote back-upprogramma's zijn &man.dump.8;, &man.tar.1; en &man.cpio.1;. Dump en Restore back-upsoftware dump / restore dump restore De traditionele back-upprogramma's voor &unix; zijn dump en restore. Deze zien het station als een verzameling van schijfblokken, onder de abstracties van bestanden, koppelingen en mappen die door de bestandssystemen worden aangemaakt. dump verzorgt een back-up van een compleet bestandssysteem op een apparaat. Het is niet in staat om slechts een gedeelte van een bestandssysteem of een mapstructuur die meer dan één bestandssysteem in beslag neemt te back-uppen. dump schrijft geen bestanden en mappen naar band, maar de rauwe gegevensblokken waaruit de bestanden en mappen bestaan. Indien dump op een hoofdmap wordt gebruikt, wordt er geen back-up gemaakt van /home , /usr of van de vele andere mappen, aangezien dit typisch mountpunten voor andere bestandssystemen of symbolische koppelingen binnen deze bestandssystemen zijn. dump bevat eigenaardigheden die uit de begintijd in Versie 6 van AT&T &unix; (circa 1975) zijn overgebleven. De standaardparameters zijn geschikt voor banden met 9 sporen (6.250 bpi), niet voor de media met hoge dichtheid die vandaag beschikbaar zijn (tot 62.182 ftpi). Deze standaardwaarden dienen op de opdrachtregel overschreven te worden om de capaciteit van de huidige bandstations te benutten. .rhosts Het is ook mogelijk om gegevens met rdump en rrestore over een netwerk naar een bandstation dat aan een andere computer gekoppeld is te back-uppen. Beide programma's maken gebruik van &man.rcmd.3; en &man.ruserok.3; om toegang tot het bandstation op afstand te krijgen. De gebruiker die de back-up uitvoert moet vermeld staat in het bestand .rhosts op de computer op afstand. De argumenten die aan rdump en rrestore gegeven worden dienen geschikt te zijn voor gebruik op de computer op afstand. Als rdump gebruikt wordt om een dump te maken van een &os; computer naar een Exabyte-bandstation dat met een Sun-computer genaamd komodo verbonden is: &prompt.root; /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1 Let op: er kleven veiligheidsbezwaren aan het toestaan van authenticatie met .rhosts. De situatie dient goed geëvalueerd te worden. Het is ook mogelijk om dump en restore op een veiligere manier via ssh te gebruiken. Het gebruik van <command>dump</command> via <application>ssh</application> &prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ doelgebruiker@doelmachine.voorbeeld.com dd of=/mijngrotebestanden/dump-usr-10.gz Ook kan de ingebouwde manier van dump gebruikt worden, door de omgevingsvariabele RSH in te stellen: Het gebruik van <command>dump</command> via <application>ssh</application> met ingestelde <envar>RSH</envar> &prompt.root; RSH=/usr/bin/ssh /sbin/dump -0uan -f doelgebruiker@doelmachine.voorbeeld.com:/dev/sa0 /usr <command>tar</command> back-upsoftware tar &man.tar.1; stamt ook uit de tijd van Versie 6 van AT&T &unix; (circa 1975). Het werkt samen met het bestandssysteem. tar schrijft bestanden en mappen naar band en ondersteunt niet het volledige scala aan opties dat beschikbaar is met &man.cpio.1;, maar tar heeft niet de ongebruikelijke opdrachtpijplijn nodig die cpio gebruikt. tar Op &os; 5.3 en later zijn zowel GNU tar als de standaard bsdtar beschikbaar. De GNU-versie kan aangeroepen worden met gtar. Het ondersteunt apparaten op afstand waarbij gebruik wordt gemaakt van dezelfde syntaxis als die van rdump. Om tar toe te passen op een Exabyte-bandstation die met een Sun genaamd komodo verbonden is: &prompt.root; /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1 Hetzelfde kan bereikt worden met bsdtar door gebruik te maken van een pijplijn en rsh om gegevens naar een bandstation op afstand te zenden: &prompt.root; tar cf - . | rsh hostnaam dd of=bandapparaat obs=20b Indien de veiligheid van back-uppen over een netwerk een punt is, dient gebruik te worden gemaakt van het commando ssh en niet van rsh. <command>cpio</command> back-upsoftware cpio &man.cpio.1; is het originele &unix; bandprogramma voor magnetische media om bestanden uit te wisselen. cpio heeft opties (naast vele anderen) om byte-swapping uit te voeren, een aantal verschillende archiefformaten te schrijven en de gegevens over een pijplijn naar andere programma's te voeren. Deze laatste optie maakt cpio een uitstekende keuze voor installatiemedia. cpio weet niet hoe het door een mapstructuur moet lopen. Er dient een lijst met bestanden door stdin aangeleverd te worden. cpio cpio biedt geen ondersteuning voor back-ups over het netwerk. Er kan gebruik worden gemaakt van een pijplijn en rsh om de gegevens naar een banddrive op afstand te sturen. &prompt.root; for f in maplijst; do find $f >> back-up.lijst done &prompt.root; cpio -v -o --format=newc < back-up.lijst | ssh gebruiker@host "cat > back-upapparaat" Hier is maplijst een lijst van de mappen waarvan een back-up gemaakt dient te worden, gebruiker@host de gebruiker/hostnaam-combinatie die de back-ups uitvoert, en back-upapparaat het apparaat waar de back-ups naar toe geschreven te worden (bijvoorbeeld /dev/nsa0). <command>pax</command> back-upsoftware pax pax POSIX IEEE &man.pax.1; is het antwoord van IEEE en &posix; op tar en cpio. In de loop der jaren zijn de verscheidene versies van tar en cpio licht incompatibel geworden. Dus in plaats van dit uit te vechten en ze volledig te standaardiseren, heeft &posix; een nieuw archiveringsprogramma gemaakt. pax poogt om veel van de verscheidene formaten van cpio en tar te lezen en te schrijven, met daarbij nog nieuwe, eigen formaten. De commandoverzameling lijkt meer op die van cpio dan op die van tar. <application>Amanda</application> back-upsoftware Amanda Amanda Amanda (Advanced Maryland Network Disk Archiver) is een client/server-back-upsysteem, in plaats van een enkel programma. Een Amanda server back-upt elk aantal computers dat een Amanda client en een netwerkverbinding met de Amanda server heeft naar een enkel bandstation. Een veelvoorkomend probleem bij bedrijven met een groot aantal schijven is dat de tijd die nodig is om de gegevens direct naar band te back-uppen langer is dan de tijd die voor de taak gereserveerd is. Amanda lost dit probleem op. Amanda kan gebruik maken van een tussenschijf om verschillende bestandssystemen tegelijkertijd te back-uppen. Amanda maakt archiefverzamelingen aan, een groep banden die gedurende een tijd gebruikt wordt om volledige back-ups te maken van alle bestandssystemen die in het instellingenbestand van Amanda vermeld staan. De archiefverzameling bevat ook incrementele (of differentiële) back-ups van alle bestandssystemen. Voor het herstellen van een beschadigd bestandssysteem zijn de meest recente volledige back-up en de incrementele back-ups nodig. Het instellingenbestand biedt verfijnde controle over de back-ups en het netwerkverkeer door Amanda. Amanda kan elk bovenstaand back-upprogramma gebruiken om de gegevens naar de band te schijven. Amanda is òf als port òf als package beschikbaar. Nietsdoen Nietsdoen is geen computerprogramma, maar de de meest gebruikte back-upstrategie. Er zijn geen initiële kosten. Er is geen back-upschema om te volgen. Zeg gewoon nee. Als er iets met gegevens gebeurt, lach erom en leef ermee! Als tijd en gegevens weinig tot niets waard zijn, is Nietsdoen het meest geschikte back-upprogramma. Maar wees bedacht, &unix; is een nuttig stuk gereedschap en er is zo maar binnen zes maanden een verzameling bestanden die wèl van waarde is. Nietsdoen is de juiste back-upmethode voor /usr/obj en andere mapstructuren die zo opnieuw aangemaakt kunnen worden. Een voorbeeld zijn de bestanden waaruit de HTML- of &postscript; versie van dit Handboek bestaan. Deze documentformaten zijn vanuit SGML-invoerbestanden aangemaakt. Het back-uppen van de HTML- of &postscript; bestanden is niet nodig. Van de SGML-bestanden dient regelmatig een back-up gemaakt te worden. Welk back-upprogramma is het beste? LISA &man.dump.8;. Punt uit.. Elizabeth D. Zwicky heeft stresstesten op alle hierboven besproken back-upprogramma's uitgevoerd. De heldere keuze voor het behouden van alle gegevens en alle eigenaardigheden van &unix; bestandssystemen is dump. Elizabeth heeft bestandssystemen aangemaakt met een grote verscheidenheid aan ongewone omstandigheden (en enkele minder ongebruikelijke) en heeft elk programma getest door een back-up van die bestandssystemen uit te voeren en ze te herstellen. De eigenaardigheden omvatten bestanden met gaten, bestanden met gaten en een blok nullen, bestanden met vreemde tekens in hun namen, onleesbare en onschrijfbare bestanden, apparaten, bestanden waarvan de grootte verandert tijdens het back-uppen, bestanden die aangemaakt/verwijderd worden tijdens het back-uppen en meer. Ze presenteerde de resultaten op LISA V in oktober 1991. Zie torture-testing Backup and Archive Programs. Noodterugzetprocedure Vóór de ramp Er zijn slechts vier stappen om te volgen bij het voorbereiden op elke ramp die voor kan komen. disklabel Het schijflabel van elke schijf dient afgedrukt te worden (bijvoorbeeld met disklabel da0 | lpr), de bestandssysteemtabel (/etc/fstab) en alle opstartboodschappen, alles in tweevoud. fix-it diskettes De opstart- en fixit-diskettes (boot.flp en fixit.flp) moeten alle gewenste apparaten bevatten. De gemakkelijkste manier om dit te controleren is om de machine opnieuw op te starten met de opstartdiskette in het diskettestation en de opstartmeldingen te controleren. Als alle apparaten gemeld en functioneel zijn, kan stap drie uitgevoerd worden. In het andere geval dienen twee eigen opstartbare diskettes aangemaakt te worden die een kernel bevatten die alle gewenste schijven kan mounten en toegang heeft tot het bandstation. Deze diskettes dienen het volgende te bevatten: fdisk, newfs, mount en het gebruikte back-upprogramma. Deze programma's dienen statisch gelinkt te worden. Als dump gebruikt wordt, moet de diskette restore bevatten. Ten derde dienen regelmatig back-upbanden aangemaakt te worden. Alle veranderingen die na de laatste back-up zijn gemaakt kunnen onherroepelijk verloren zijn gegaan. De back-upbanden dienen beveiligd te worden tegen overschrijven. Ten vierde dienen de diskettes (òfwel boot.flp en fixit.flp, òfwel de twee eigen diskettes die in stap twee zijn aangemaakt) en de back-upbanden getest te worden. Van de handelingen dienen aantekeningen gemaakt te worden. De aantekeningen, de opstartbare diskette, de afdrukken en de back-upbanden moeten gezamenlijk bewaard te worden. Tijdens het herstellen kunnen de notities ervoor zorgen dat de back-upbanden vernietigd worden. Hoe? In plaats van tar xvf /dev/sa0 kan per ongeluk tar cvf /dev/sa0 worden ingetypt, waardoor de back-upband overschreven wordt. Als extra veiligheidsmaatregel dienen opstartbare diskettes en telkens twee back-upbanden gemaakt te worden. Eén van deze banden dient op een plaats op afstand bewaard te worden. Zo'n plaats is NIET de kelder van het zelfde kantoorgebouw. Een aantal bedrijven in het World Trade Center heeft deze les op de harde manier geleerd. Zo'n plaats dient fysiek gescheiden te zijn van de computers en de schijven door een significante afstand. Script voor het aanmaken van de opstartdiskette /mnt/sbin/init gzip -c -best /sbin/fsck > /mnt/sbin/fsck gzip -c -best /sbin/mount > /mnt/sbin/mount gzip -c -best /sbin/halt > /mnt/sbin/halt gzip -c -best /sbin/restore > /mnt/sbin/restore gzip -c -best /bin/sh > /mnt/bin/sh gzip -c -best /bin/sync > /mnt/bin/sync cp /root/.profile /mnt/root cp -f /dev/MAKEDEV /mnt/dev chmod 755 /mnt/dev/MAKEDEV chmod 500 /mnt/sbin/init chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt chmod 555 /mnt/bin/sh /mnt/bin/sync chmod 6555 /mnt/sbin/restore # # maak de apparaatnodes aan # cd /mnt/dev ./MAKEDEV std ./MAKEDEV da0 ./MAKEDEV da1 ./MAKEDEV da2 ./MAKEDEV sa0 ./MAKEDEV pty0 cd / # # maak een minimale bestandssysteemtabel aan # cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd < Na de ramp De hamvraag is: heeft de hardware het overleefd? Er zijn regelmatig back-ups gemaakt, dus zorgen over de software zijn niet nodig. Indien hardware beschadigd is, dienen kapotte onderdelen vervangen te worden voordat gepoogd wordt om een computer te gebruiken. Indien de hardware in orde is, dienen de diskettes gecontroleerd te worden. Als een eigen opstartdiskette gebruikt wordt, start in enkele-gebruiker-modus op (type op de opstartprompt boot: -s in). Sla dan de volgende paragraaf over. Lees verder als de diskettes boot.flp en fixit.flp gebruikt worden. Steek de diskette boot.flp als eerste in het diskettestation en start de computer op. Het originele installatiemenu wordt op het scherm getoond. Kies de optie Fixit--Repair mode with CDROM or floppy. Steek de diskette fixit.flp in als erom gevraagd wordt. restore en de andere benodigde programma's staan in /mnt2/rescue (/mnt/stand voor &os; ouder dan versie 5.2). Herstel elk bestandssysteem apart. mount rootpartitie disklabel newfs Probeer de rootpartitie van de eerste schijf te mounten (bijvoorbeeld mount /dev/da0a /mnt). Als het schijflabel beschadigd is, gebruik dan disklabel om de schijf opnieuw te partitioneren en te labelen zodat deze overeenkomt met het afgedrukte en bewaarde label. Gebruik voor het opnieuw aanmaken van de bestandssystemen newfs. Hermount de rootpartitie van de diskette voor lezen en schrijven (mount -u -o rw /mnt). Gebruik voor het herstellen van de gegevens van dit bestandssysteem het back-upprogramma en de back-upbanden (bijvoorbeeld restore vrf /dev/sa0). Dismount nu het bestandssysteem (bijvoorbeeld umount /mnt). Herhaal dit voor elk beschadigd bestandssysteem. Back-up de gegevens naar nieuwe banden als het systeem weer draait. De omstandigheden die verantwoordelijk waren voor de crash of het gegevensverlies kunnen weer voorkomen. Nu een extra uur investeren, kan later grote zorgen besparen. * Er zijn geen voorbereidingen voor de ramp getroffen, wat nu? ]]> Marc Fonvieille Geherstructureerd en verbeterd door Netwerk-, geheugen-, en bestandsgebaseerde bestandssystemen virtuele schijven schijven virtueel Naast de schijven die fysiek in de computer zitten, diskettes, CD's, harde schijven, enzovoort, worden er ook andere vormen van schijven door &os; begrepen: de virtuele schijven. NFS Coda schijven geheugen Dit omvat netwerkbestandssystemen zoals het Network File System en Coda, geheugengebaseerde bestandssystemen en bestandsgebaseerde bestandssystemen. Nagelang de gebruikte versie van &os;, zijn er andere gereedschappen voor het aanmaken en gebruiken van bestandsgebaseerde en geheugengebaseerde bestandssystemen. Gebruikers van &os; 4.X kunnen &man.MAKEDEV.8; gebruiken om de benodigde apparaten aan te maken. &os; 5.0 en nieuwer kennen &man.devfs.8; om de apparaatnodes transparant voor de gebruiker toe te wijzen. Bestandsgebaseerd bestandssysteem onder &os; 4.X schijven bestandsgebaseerd (4.X) Het commando &man.vnconfig.8; stelt vnode pseudo-schijf-apparaten in en zet ze aan. Een vnode is een representatie van een bestand en is de focus van bestandsactiviteit. Dit betekent dat &man.vnconfig.8; bestanden gebruikt om een bestandssysteem aan te maken en te bewerken. Een mogelijk gebruik is het mounten van een beeld van een diskette of een CD dat in een bestand bewaard wordt. Om &man.vnconfig.8; te gebruiken, is ondersteuning voor &man.vn.4; nodig in het kernelinstellingenbestand: pseudo-device vn Om een bestaand beeld van een bestandssysteem te mounten: <command>vnconfig</command> gebruiken om een bestaand beeld van een bestandssysteem te mounten onder &os; 4.X &prompt.root; vnconfig vn0 schijfbeeld &prompt.root; mount /dev/vn0c /mnt Om een nieuw beeld van een bestandssysteem aan te maken met &man.vnconfig.8;: Een nieuwe bestandsgebaseerde schijf aanmaken met <command>vnconfig</command> &prompt.root; dd if=/dev/zero of=nieuwbeeld bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; vnconfig -s labels -c vn0 nieuwbeeld &prompt.root; disklabel -r -w vn0 auto &prompt.root; newfs vn0c Warning: 2048 sector(s) in last cylinder unallocated /dev/vn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors 5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g) super-block backups (for fsck -b #) at: 32 &prompt.root; mount /dev/vn0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/vn0c 4927 1 4532 0% /mnt Bestandsgebaseerd bestandssysteem onder &os; 5.X schijven bestandsgebaseerd (5.X) Met &man.mdconfig.8; kunnen geheugenschijven, &man.md.4;, ingesteld worden en aangezet worden onder &os; 5.X. Om &man.mdconfig.8; te gebruiken, moet de module &man.md.4; geladen worden of ondersteuning aan het kernelinstellingenbestand toegevoegd worden: device md Het commando &man.mdconfig.8; ondersteunt drie types geheugen-gebaseerde virtuele schijven: geheugenschijven die met &man.malloc.9; toegewezen zijn, geheugenschijven die een bestand als basis gebruiken en geheugenschijven die swapruimte als basis gebruiken. Een mogelijk gebruik is het mounten van een beeld van een diskette of CD dat in een bestand bewaard wordt. Om een bestaand beeld van een bestandssysteem te mounten: <command>mdconfig</command> gebruiken om een bestaand beeld van een bestandssysteem te mounten onder &os; 5.X &prompt.root; mdconfig -a -t vnode -f schijfbeeld -u 0 &prompt.root; mount /dev/md0 /mnt Om een nieuw beeld van een bestandssysteem aan te maken met &man.mdconfig.8;: Nieuwe bestandsgebaseerde schijf aanmaken met <command>mdconfig</command> &prompt.root; dd if=/dev/zero of=nieuwbeeld bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; mdconfig -a -t vnode -f nieuwbeeld -u 0 &prompt.root; disklabel -r -w md0 auto &prompt.root; newfs md0c /dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes. super-block backups (for fsck -b #) at: 32, 2624, 5216, 7808 &prompt.root; mount /dev/md0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4846 2 4458 0% /mnt Indien het eenheidsnummer niet met de optie gespecificeerd wordt, gebruikt &man.mdconfig.8; de automatische toewijzing van &man.md.4; om een ongebruikt apparaat te selecteren. De naam van het toegewezen apparaat wordt op stdout weergegeven als md4. Meer details staan in de hulppagina van &man.mdconfig.8;. Sinds &os; 5.1-RELEASE is het oude programma &man.disklabel.8; vervangen door &man.bsdlabel.8;. In &man.bsdlabel.8; zijn een aantal overbodige opties en parameters verwijderd. In de bovenstaande voorbeelden dient de optie met &man.bsdlabel.8; weggelaten te worden. Meer informatie staat in de hulppagina van &man.bsdlabel.8;. Het commando &man.mdconfig.8; is erg nuttig, hoewel het veel opdrachten vergt om een bestandsgebaseerd bestandssysteem aan te maken. &os; 5.0 wordt met een gereedschap &man.mdmfs.8; geleverd. Dit programma stelt een &man.md.4;-schijf in door gebruik te maken van &man.mdconfig.8;, zet er een bestandssysteem op door gebruik te maken van &man.newfs.8; en mount het door gebruik te maken van &man.mount.8;. Om hetzelfde bestandssysteembeeld als hierboven aan te maken en te mounten: Instellen en mounten van een bestandsgebaseerde schijf met <command>mdmfs</command> &prompt.root; dd if=/dev/zero of=nieuwbeeld bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; mdmfs -F nieuwbeeld -s 5m md0 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0 4846 2 4458 0% /mnt Als de optie zonder eenheidsnummer gebruikt wordt, gebruikt &man.mdmfs.8; de automatische toewijzing van &man.md.4; om automatisch een ongebruikt apparaat te selecteren. Meer details staan in de hulppagina van &man.mdmfs.8;. Geheugengebaseerde bestandssystemen onder &os; 4.X schijven geheugenbestandssysteem (4.X) Het stuurprogramma &man.md.4; is een eenvoudig, efficiënt middel om geheugenbestandssystemen aan te maken onder &os; 4.X. &man.malloc.9; wordt gebruikt om het geheugen toe te wijzen. Om het te gebruiken, dient met een bestandssysteem dat met &man.vnconfig.8; voorbereid is het volgende gedaan te worden: md geheugenschijf onder &os; 4.X &prompt.root; dd if=nieuwbeeld of=/dev/md0 5120+0 records in 5120+0 records out &prompt.root; mount /dev/md0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4927 1 4532 0% /mnt Meer details staan in de hulppagina van &man.md.4;. Geheugengebaseerd bestandssysteem onder &os; 5.X schijven geheugenbestandssysteem (5.X) Voor geheugengebaseerde en bestandsgebaseerde bestandssystemen worden dezelfde gereedschappen gebruikt: &man.mdconfig.8; of &man.mdmfs.8;. De opslagruimte voor geheugengebaseerde bestandssystemen wordt met &man.malloc.9; toegewezen. Nieuwe geheugengebaseerde schijf aanmaken met <command>mdconfig</command> &prompt.root; mdconfig -a -t malloc -s 5m -u 1 &prompt.root; newfs -U md1 /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes. with soft updates super-block backups (for fsck -b #) at: 32, 2624, 5216, 7808 &prompt.root; mount /dev/md1 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md1 4846 2 4458 0% /mnt Nieuwe geheugengebaseerde schijf aanmaken met <command>mdmfs</command> &prompt.root; mdmfs -M -s 5m md2 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md2 4846 2 4458 0% /mnt In plaats van een bestandssysteem dat gebaseerd is op &man.malloc.9;, is het ook mogelijk om swap te gebruiken. Hiervoor dient in de opdrachtregel van &man.mdconfig.8; door vervangen te worden. &man.mdmfs.8; maakt standaard (zonder een swap-gebaseerde schijf aan. Meer details staan in de hulppagina's voor &man.mdconfig.8; en &man.mdmfs.8;. Geheugenschijf van het systeem afkoppelen schijven geheugenschijf afkoppelen Als een geheugen- of bestandsgebaseerd bestandssysteem niet gebruikt wordt, dienen alle bronnen aan het systeem vrijgegeven te worden. Dismount als eerste het bestandssysteem, gebruikt daarna &man.mdconfig.8; om de schijf van een systeem los te koppelen en de bronnen vrij te geven. Om bijvoorbeeld alle bronnen die door /dev/md4 gebruikt worden los te koppelen en vrij te geven: &prompt.root; mdconfig -d -u 4 Het is mogelijk om de informatie over ingestelde &man.md.4; apparaten weer te geven door gebruik te maken van mdconfig -l. Met &os; 4.X wordt &man.vnconfig.8; gebruikt om het apparaat los te koppelen. Om bijvoorbeeld alle bronnen die door /dev/vn4 gebruikt worden los te koppelen en vrij te geven: &prompt.root; vnconfig -u vn4 Tom Rhodes Bijgedragen door Snapshots van bestandssystemen bestandssystemen snapshots &os; 5.0 biedt een nieuwe mogelijkheid samen met Soft Updates: snapshots van bestandssystemen. Snapshots bieden de mogelijkheid om beelden van een gespecificeerd bestandssysteem te maken en ze als bestand te behandelen. Snapshotbestanden moeten aangemaakt worden in het bestandssysteem waarop de handeling wordt uitgevoerd en er mogen niet meer dan 20 snapshots per bestandssysteem worden aangemaakt. Actieve snapshots worden opgeslagen in het superblok zodat ze persistent zijn met dismount- en hermountbewerkingen en met het opnieuw opstarten van het systeem. Als een snapshot niet langer nodig is, kan het met het standaardcommando &man.rm.1; worden verwijderd. Snapshots kunnen in elke volgorde verwijderd worden, alhoewel misschien niet alle gebruikte ruimte teruggewonnen wordt omdat sommige vrijgegeven blokken mogelijk door een ander snapshot geclaimd worden. De onveranderlijke bestandsvlag wordt door &man.mksnap.ffs.8; ingesteld nadat het snapshotbestand initieel is aangemaakt. Het commando &man.unlink.1; maakt een uitzondering voor snapshotbestanden aangezien het toestaat dat ze verwijderd worden. Snapshotbestanden worden aangemaakt met &man.mount.8;. Om een snapshot van /var in het bestand /var/snapshot/snap te plaatsen: &prompt.root; mount -o -o snapshot /var/snapshot/snap /var Als alternatief kan &man.mksnap.ffs.8; gebruikt worden om een snapshot aan te maken: &prompt.root; mksnap_ffs /var /var/snapshot/snap Snapshotbestanden kunnen gezocht worden op een bestandssysteem (bijvoorbeeld /var) door gebruik te maken van het commando &man.find.1;: &prompt.root; find /var -flags snapshot Nadat een snapshot is aangemaakt, kan het voor een aantal dingen gebruikt worden: Sommige systeembeheerders gebruiken een snapshotbestand voor back-updoeleinden, omdat het snapshot naar CD's of band overgezet kan worden; Bestandsintegriteit. op het snapshot kan &man.fsck.8; gedraaid worden. Ervan uitgaande dat het bestandssysteem schoon was toen het werd gemount, zou dit altijd een schoon (en onveranderlijk) resultaat moeten opleveren. Dit is in principe wat het &man.fsck.8;-achtergrondsproces doet; Het commando &man.dump.8; draaien op het snapshot. Er wordt een dump teruggegeven die consistent is met het bestandssysteem en tijdsstempel van het snapshot. &man.dump.8; kan ook in één commando een snapshot maken, een dumpbeeld aanmaken en daarna het snapshot verwijderen door gebruik te maken van de vlag ; Het snapshot kan met &man.mount.8; als bevroren beeld van het bestandssysteem worden gemount. Om het snapshot /var/snapshot/snap te mounten: &prompt.root; mdconfig -a -t vnode -f /var/snapshot/snap -u 4 &prompt.root; mount -r /dev/md4 /mnt Het is nu mogelijk om door de structuur van het bevroren bestandssysteem /var te lopen dat gemount is op /mnt. Alles zal initieel in dezelfde toestand verkeren als op het moment dat het snapshot werd aangemaakt. De enige uitzondering hierop is dat eerdere snapshots als bestanden met lengte nul verschijnen. Als een snapshot niet meer nodig is, kan het als volgt gedismount worden: &prompt.root; umount /mnt &prompt.root; mdconfig -d -u 4 Meer informatie over en snapshots van bestandssystemen, inclusief technische documenten, staat op de website van Marshall Kirk McKusick op . Bestandssysteemquota accounten schijfruimte schijfquota Quota zijn een optionele mogelijkheid van het besturingssysteem om de hoeveelheid schijfruimte en/of het aantal bestanden dat gebruikers of leden van een groep per bestandssysteem mogen gebruiken te beperken. Dit wordt het meeste gebruikt op timesharing-systemen waar het wenselijk is om het aantal bronnen dat elke gebruiker of groep van gebruikers mag gebruiken te beperken. Dit voorkomt dat één gebruiker of groep van gebruikers alle beschikbare schijfruimte in beslag neemt. Schijfquota inschakelen Controleer alvorens te proberen om schijfquota te gebruiken of quota ingesteld zijn in de kernel. Dit gebeurt door het toevoegen van de volgende regel aan het kernelinstellingenbestand: options QUOTA De standaardkernel GENERIC heeft deze optie niet aanstaan, dus is het nodig om een eigen kernel in te stellen, te bouwen en te installeren om gebruik te kunnen maken van schijfquota. Meer informatie over het instellen van de kernel staat in . Vervolgens dienen schijfquota aangezet te worden in /etc/rc.conf: enable_quotas="YES" schijfquota controleren Voor fijnere controle over de opstartquota zijn extra instellingsvariabelen beschikbaar. Normaalgesproken wordt de integriteit van de quota van elk bestandssysteem tijdens het opstarten door &man.quotacheck.8; gecontroleerd. &man.quotacheck.8; verzekert dat de gegevens in de quotadatabase een juiste afspiegeling vormen van de gegevens op het bestandssysteem. Dit proces neemt erg veel tijd in beslag en beïnvloedt de tijd die een systeem nodig heeft om op te starten significant. Om deze stap over te slaan, bestaat een variabele in /etc/rc.conf: check_quotas="NO" Als laatste dient /etc/fstab bewerkt te worden om schijfquota per bestandssysteem aan te zetten. Hier kunnen gebruiker- of groepquota of beide worden aangezet voor alle bestandssystemen. Om quota per gebruiker op een bestandssysteem aan te zetten, dient de optie aan het optieveld toegevoegd te worden aan de regel in /etc/fstab voor het bestandssysteem waar quota worden aangezet. Bijvoorbeeld: /dev/da1s2g /home ufs rw,userquota 1 2 Analoog, om groepquota aan te zetten, dient de optie in plaats van gebruikt te worden. Om zowel gebruikers- als groepsquota aan te zetten, dient de regel als volgt veranderd te worden: /dev/da1s2g /home ufs rw,userquota,groupquota 1 2 Standaard worden de quotabestanden opgeslagen in de hoofdmap van het bestandssysteem onder de namen quota.user en quota.group voor respectievelijk gebruikers- en groepsquota. Meer informatie staat in &man.fstab.5;. Alhoewel de hulppagina &man.fstab.5; vermeld dat een alternatieve plaats voor de quotabestanden gespecificeerd kan worden, wordt dit niet aangeraden omdat de verschillende quotagereedschappen dit niet juist schijnen af te handelen. Hier aangekomen dient het systeem opnieuw opgestart te worden met de nieuwe kernel. /etc/rc voert automatisch de juiste commando's uit om de initiële quotabestanden aan te maken voor alle quota die in /etc/fstab zijn aangezet. Het is dus niet nodig om handmatig quotabestanden met lengte nul aan te maken. Tijdens normale bewerkingen moet het niet nodig zijn om de commando's &man.quotacheck.8;, &man.quotaon.8; of &man.quotaoff.8; handmatig te draaien. Lees wel de betreffende hulppagina's om bekend te raken met de werking ervan. Quotalimieten instellen schijfquota limieten Indien het systeem ingesteld voor gebruik van quota, controleer dan of ze echt aanstaan. Een eenvoudige manier om dit te doen is de volgende: &prompt.root; quota -v Er hoort een eenregelige samenvatting te verschijnen over het schijfgebruik en de huidige quotalimieten voor elk bestandssysteem waarop quota aanstaan. Nu kunnen quotalimieten toegewezen worden met &man.edquota.8;. Er zijn verschillende opties om grenzen te stellen aan de hoeveelheid schijfruimte die een gebruiker of groep mag toewijzen en het aantal bestanden dat ze mogen aanmaken. Toewijzingen kunnen begrensd worden met betrekking tot schijfruimte (blokquota) of het aantal bestanden (inode-quota) of een combinatie van beide. Elk van deze limieten is op zijn beurt weer opgesplitst in twee categoriën: harde en zachte limieten. harde limiet Een harde limiet mag niet overschreden worden. Indien een gebruiker de harde limiet bereikt, mag deze geen verdere toewijzingen maken op het betreffende bestandssysteem. Indien een gebruiker bijvoorbeeld een harde limiet heeft van 500 kB op een bestandssysteem en er 490 kB van gebruikt, kan deze nog slechts 10 kB toewijzen. Een poging om 11 kB toe te wijzen zal mislukken. zachte limiet Zachte limieten kunnen voor een beperkte tijd overschreden worden. Deze periode staat bekend als de gratieperiode, die standaard een week bedraagt. Als een gebruiker de zachte limiet langer dan de gratieperiode overschrijdt, verandert de zachte limiet in een harde limiet en zijn er geen verdere toewijzingen toegestaan. Als de gebruiker onder de zachte limiet komt, wordt de gratieperiode opnieuw ingesteld. Het volgende is een voorbeeld van een mogelijk gebruik van &man.edquota.8;. Als het commando &man.edquota.8; gestart wordt, wordt de tekstverwerker opgestart die door de omgevingsvariabele EDITOR gespecificeerd is, of de tekstverwerker vi als de variabele EDITOR niet is ingesteld. Nu kunnen de quotalimieten bewerkt worden. &prompt.root; edquota -u test Quotas for user test: /usr: kbytes in use: 65, limits (soft = 50, hard = 75) inodes in use: 7, limits (soft = 50, hard = 60) /usr/var: kbytes in use: 0, limits (soft = 50, hard = 75) inodes in use: 0, limits (soft = 50, hard = 60) Normaalgesproken worden er twee regels weergegeven voor elk bestandssysteem waarvoor quota gelden: één regel voor de bloklimieten, en één voor de inode-limieten. Om de quotalimieten te veranderen dient de waarde ervan veranderd te worden. Om bijvoorbeeld de bloklimiet van een gebruiker te veranderen van een zachte limiet van 50 en een harde limiet van 75 in een zachte limiet van 500 en een harde limiet van 600, dient het volgende veranderd te worden: /usr: kbytes in use: 65, limits (soft = 50, hard = 75) In: /usr: kbytes in use: 65, limits (soft = 500, hard = 600) De nieuwe quotalimieten gelden zodra de tekstverwerker verlaten wordt. Soms is het gewenst om quotalimieten in te stellen op een aantal UID's. Dit kan gedaan worden door de optie van &man.edquota.8; te gebruiken. Wijs eerst de gewenste quotalimiet aan een gebruiker toe en draai daarna edquota -p protogebruiker beginuid-einduid. Indien bijvoorbeeld gebruiker test de gewenste quotalimieten heeft, kan het volgende commando gebruikt worden om deze quotalimieten te dupliceren voor UID's 10.000 tot en met 19.999: &prompt.root; edquota -p test 10000-19999 Meer informatie staat in de hulppagina voor &man.edquota.8;. Quotalimieten en schijfgebruik controleren schijfquota controleren Zowel &man.quota.1; als &man.repquota.8; kunnen gebruikt worden om de quotalimieten en het schijfgebruik te controleren. Het commando &man.quota.1; kan gebruikt worden om de quota van zowel individuele gebruikers als groepen en het schijfgebruik te controleren. Een gebruiker mag alleen de eigen quota en de quota van een groep waarvan deze lid is controleren. Alleen de beheerder mag alle gebruikers- en groepsquota bekijken. Het commando &man.repquota.8; kan gebruikt worden om een overzicht te krijgen van alle quota en gebruik van bestandssystemen waarvan quota aanstaan. Het volgende is een mogelijke uitvoer van het commando quota -v voor een gebruiker die quotalimieten heeft op twee bestandssystemen. Disk quotas for user test (uid 1002): Filesystem usage quota limit grace files quota limit grace /usr 65* 50 75 5days 7 50 60 /usr/var 0 50 75 0 50 60 gratieperiode Voor het bestandssysteem /usr in bovenstaand voorbeeld overschrijdt deze gebruiker de zachte limiet van 50 kB momenteel met 15 kB en heeft deze 5 dagen van de gratieperiode over. De asterisk, * geeft aan dat de gebruiker momenteel de quotalimiet overschrijdt. Normaalgesproken worden bestandssystemen waarvan de gebruiker geen schijfruimte gebruikt niet weergegeven in de uitvoer van &man.quota.1;, zelfs niet als er de gebruiker een quotalimiet heeft voor dat bestandssysteem. De optie geeft deze bestandssystemen weer, zoals het bestandssysteem /usr/var in bovenstaand voorbeeld. Quota over NFS NFS Quota worden afgedwongen door het quota-subsysteem op de NFS-server. De daemon &man.rpc.rquotad.8; stelt quota-informatie beschikbaar aan het commando &man.quota.1; op de NFS-cliënts, wat de gebruikers op deze machines in staat stelt hun quota-statistieken in te zien. rpc.rquotad dient als volgt in /etc/inetd.conf aangezet te worden: rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad Vervolgens dient inetd opnieuw gestart te worden: &prompt.root; kill -HUP `cat /var/run/inetd.pid` Lucky Green Bijgedragen door
shamrock@cypherpunks.to
Schijfpartities versleutelen schijven versleutelen &os; biedt uitstekende on-line bescherming tegen onbevoegde gegevenstoegang. Bestandsrechten en Mandatory Access Control (MAC) (zie ) helpen voorkomen dat onbevoegde derde partijen toegang tot de gegevens krijgen als het besturingssysteem actief is en de computer aanstaat. De door het besturingssysteem afgedwongen rechten zijn echter niet relevant als een aanvaller fysieke toegang tot een computer heeft en deze de harde schijf van de computer in een ander systeem kan plaatsen om de gevoelige gegevens te kopiëren en te analyseren. Afgezien van hoe een aanvaller in het bezit van een harde schijf of een uitgezette computer gekomen is, kan GEOM Based Disk Encryption (gbde) de gegevens op het bestandssysteem van de computer zelfs tegen hooggemotiveerde aanvallers met aanzienlijke middelen beschermen. In tegenstelling tot lastige versleutelmethoden die alleen losse bestanden versleutelen, versleutelt gbde gehele bestandssystemen op een transparante manier. De harde schijf komt nooit in aanraking met klare tekst. gbde in de kernel aanzetten Word <username>root</username> Het instellen van gbde vereist beheerdersrechten. &prompt.user; su - Password: Controleer de versie van het besturingssysteem Voor &man.gbde.4; is &os; 5.0 of hoger nodig. &prompt.root; uname -r 5.0-RELEASE Voeg ondersteuning voor &man.gbde.4; aan het kernelinstellingenbestand toe Voeg de volgende regel aan het kernelinstellingenbestand toe: options GEOM_BDE Compileer en installeer de &os; kernel opnieuw. Dit proces wordt beschreven in . Start op met de nieuwe kernel. Versleutelde harde schijf voorbereiden In het volgende voorbeeld wordt aangenomen dat er een nieuwe harde schijf aan het systeem wordt toegevoegd die een enkele versleutelde partitie zal bevatten. Deze partitie wordt gemount als /private. gbde kan ook gebruikt worden om /home en /var/mail te versleutelen, maar daarvoor zijn complexere instructies nodig die buiten het bereik van deze inleiding vallen. Voeg een nieuwe harde schijf toe Voeg de nieuwe harde schijf toe zoals beschreven in . In dit voorbeeld is een nieuwe harde schijfpartitie toegevoegd als /dev/ad4s1c. De apparaten /dev/ad0s1* stellen bestaande standaard &os; partities van het voorbeeldsysteem voor. &prompt.root; ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4 Maak een map aan voor gbde lockbestanden &prompt.root; mkdir /etc/gbde Het lockbestand voor gbde bevat informatie die gbde nodig heeft om toegang te krijgen tot versleutelde partities. Zonder toegang tot de lockbestand is gbde niet in staat om de gegevens die op de versleutelde partitie staan te ontsleutelen zonder aanzienlijke handmatige tussenkomst die niet door de software ondersteund wordt. Elke versleutelde partitie gebruikt een ander lockbestand. Initialiseer de gbde-partitie Een gbde-partitie dient geïnitialiseerd te worden voordat deze kan worden gebruikt. Deze initialisatie dient slechts eenmalig uitgevoerd te worden: &prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c &man.gbde.8; opent een tekstverwerker om verschillende instellingen in een sjabloon te kunnen instellen. Stel de sector_size in op 2048 als UFS of UFS2 wordt gebruikt: $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $ # # Sector size is the smallest unit of data which can be read or written. # Making it too small decreases performance and decreases available space. # Making it too large may prevent filesystems from working. 512 is the # minimum and always safe. For UFS, use the fragment size # sector_size = 2048 [...] &man.gbde.8; vraagt twee keer om de wachtwoordzin voor het beveiligen van de gegevens. De wachtwoordzin dient beide keren hetzelfde te zijn. De mogelijkheid van gbde om de gegevens te beveiligen is geheel afhankelijk de gekozen wachtwoordzin. Tips met betrekking tot het kiezen van veilige wachtwoordzinnen die gemakkelijk te onthouden zijn staan op de website Diceware Passphrase. Het commando gbde init maakt een lockbestand aan voor de gbde-partitie die in dit voorbeeld is opgeslagen als /etc/gbde/ad4s1c. gbde lockbestanden moeten samen met de inhoud van versleutelde partities geback-upped worden. Hoewel het verwijderen van een lockbestand op zich een gedreven aanvaller er niet van weerhoudt een gbde partitie te ontsleutelen, is de wettige eigenaar zonder het lockbestand niet in staat om de gegevens op de versleutelde partitie te benaderen zonder een aanzienlijke hoeveelheid werk die in het geheel niet ondersteund wordt door &man.gbde.8; of de ontwerper ervan. Koppel de versleutelde partitie aan de kernel &prompt.root gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c Er wordt om de wachtwoordzin gevraagd die gekozen is tijdens de initialisatie van de versleutelde partitie. Het nieuwe versleutelde apparaat verschijnt in /dev als /dev/apparaatnaam.bde: &prompt.root; ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde Maak een bestandssysteem op het versleutelde apparaat Nu het versleutelde apparaat aan de kernel gekoppeld is, kan een bestandssysteem op het apparaat aangemaakt worden. Met &man.newfs.8; kan een bestandssysteem op het versleutelde apparaat aangemaakt wordne. Aangezien het veel sneller is om een nieuw UFS2 bestandssysteem te initialiseren dan om een oud UFS1 bestandssysteem te initialiseren, is het aan te raden om &man.newfs.8; met de optie te gebruiken. De optie is de standaard in &os; 5.1-RELEASE en nieuwer. &prompt.root; newfs -U -O2 /dev/ad4s1c.bde Voer &man.newfs.8; uit op een aangekoppelde gbde-partitie die geïndificeerd wordt door de uitbreiding *.bde op de apparaatnaam. Mount de versleutelde partitie Maak een mountpunt voor het versleutelde bestandssysteem aan: &prompt.root; mkdir /private Mount het versleutelde bestandssysteem: &prompt.root; mount /dev/ad4s1c.bde /private Controleer of het versleutelde bestandssysteem beschikbaar is Het versleutelde bestandssysteem is nu zichtbaar met &man.df.1; en gebruiksklaar: &prompt.user; df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 1037M 72M 883M 8% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 8.1G 55K 7.5G 0% /home /dev/ad0s1e 1037M 1.1M 953M 0% /tmp /dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr /dev/ad4s1c.bde 150G 4.1K 138G 0% /private Bestaande versleutelde bestandssystemen mounten Elke keer nadat het systeem is opgestart dient elk versleuteld bestandssysteem opnieuw aan de kernel gekoppeld te worden, op fouten gecontroleerd te worden, en aangekoppeld te worden voordat de bestandssystemen gebruikt kunnen worden. De benodigde commando's dienen als de gebruiker root uitgevoerd te worden. Koppel de gbde-partitie aan de kernel &prompt.root gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c Er wordt om de wachtwoordzin gevraagd die gekozen is tijdens de initialisatie van de versleutelde gbde-partitie. Controleer het bestandssysteem op fouten Aangezien het nog niet mogelijk is om versleutelde bestandssystemen op te nemen in /etc/fstab voor automatische controle, dienen de bestandssystemen voordat ze gemount worden handmatig op fouten gecontroleerd te worden door &man.fsck.8; uit te voeren: &prompt.root; fsck -p -t ffs /dev/ad4s1c.bde Mount het versleutelde bestandssysteem &prompt.root; mount /dev/ad4s1c.bde /private Het versleutelde bestandssysteem is nu klaar voor gebruik. Versleutelde partities automatisch mounten Het is mogelijk om een script aan te maken om automatisch een versleutelde partitie aan te koppelen, op fouten te controleren en te mounten, maar vanwege veiligheidsredenen dient het script niet het wachtwoord voor &man.gbde.8; te bevatten. In plaats hiervan wordt het aangeraden om zulke scripts handmatig uit te voeren en het wachtwoord via de console of &man.ssh.1; te geven. Door gbde gebruikte cryptografische beschermingen &man.gbde.8; versleutelt de sectorlading door gebruik te maken van 128-bit AES in CBC-modus. Elke sector op de schijf wordt met een andere AES-sleutel versleuteld. Meer informatie over het cryptografische ontwerp van gbde, inclusief de methode die gebruikt wordt om de sectorsleutels van de door de gebruiker gegeven wachtwoordzin af te leiden, staan in &man.gbde.4;. Compatibiliteitspunten &man.sysinstall.8; is niet compatibel met apparaten die met gbde versleuteld zijn. Alle *.bde apparaten moeten van de kernel ontkoppeld worden voordat &man.sysinstall.8; gebruikt wordt om te voorkomen dat het crasht tijdens het initiële zoeken naar apparaten. Om het versleutelde apparaat dat in dit voorbeeld gebruikt wordt te ontkoppelen: &prompt.root; gbde detach /dev/ad4s1c gbde kan niet met vinum volumes gebruikt worden, omdat &man.vinum.4; geen gebruik maakt van het subsysteem &man.geom.4;.
diff --git a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml index 69dc391d42..606265d0ca 100644 --- a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml @@ -1,457 +1,457 @@ Tom Rhodes Geschreven door Siebrand Mazeland Vertaald door GEOM: Modulair schijftransformatie framework Overzicht GEOM GEOM schijf framework GEOM Dit hoofdstuk beschrijft het gebruik van schijven in het GEOM framework in &os;. Hieronder vallen de belangrijkste RAID besturingsprogramma's die het framework gebruikt voor instellingen. In dit hoofdstuk wordt niet diepgaand beschreven hoe GEOM omgaat met I/O, het onderliggende subsysteem of code. Die informatie staat in het hulppagina voor &man.geom.4; en de verscheidene SEE ALSO referenties. Dit hoofdstuk is ook geen definitief stuk over het instellen van RAID. Alleen de door GEOM ondersteunde RAID-classificaties worden beschreven. Na het lezen van dit hoofdstuk weet de lezer: Welk type RAID-ondersteuning via GEOM beschikbaar is; Hoe de basisgereedschappen te gebruiken om de verschillende RAID-niveau's in te stellen, te onderhouden en te wijzigen; Hoe schijfapparaten via GEOM te spiegelen, aaneen te schakelen, te versleutelen en vanaf afstand schijven aan te sluiten; Hoe problemen op te lossen met schijven die via het GEOM framework zijn aangesloten. Veronderstelde voorkennis: Begrijpen hoe &os; omgaat met schijfapparaten (); Weten hoe een nieuwe &os; kernel in te stellen en te installeren (). GEOM inleiding GEOM staat toegang en controle toe op klassen, Master Boot Records, BSD labels, enzovoort, door gebruik te maken van diensten of de speciale bestanden in /dev. GEOM ondersteunt verschillende software RAID instellingen en biedt transparante toegang tot het besturingssysteem en de hulpprogramma's. Tom Rhodes Geschreven door Murray Stokely RAID0 - aaneengeschakeld GEOM aaneengeschakeld Aaneenschakelen is een methode die gebruikt wordt om meerdere schijven te combineren tot een enkele volume. In veel gevallen wordt dit gedaan met hardware controllers. Het GEOM subsysteem biedt softwareondersteuning voor RAID0, ook wel bekend als aaneenschakelen (disk striping). In een RAID0-systeem worden gegevens opgedeeld in blokken die verdeeld worden over de schijven in een reeks. In plaats van te hoeven wachten tot een systeem 256k naar één schijf heeft geschreven, kan een RAID0-systeem tegelijkertijd 64k naar vier verschillende schijven schrijven, waardoor superieure I/O prestaties worden bereikt. Deze prestaties kunnen nog verbeterd worden door meerdere schijfcontrollers te gebruiken. Iedere schijf in een RAID0-aaneenschakeling moet van dezelfde grootte zijn, omdat I/O-verzoeken altijd zijn opgebouwd uit precies gelijk over de schijven verdeelde verzoeken tot lezen of schrijven. Illustratie aaneengeschakelde schijven Ongeformatteerde ATA-schijven aaneenschakelen Laad de module geom_stripe: &prompt.root; kldload geom_stripe.ko Zorg ervoor dat er een mountpunt beschikbaar is. Als dit volume een rootpartitie wordt, gebruikt dan tijdelijk een ander mountpunt zoals /mnt. + role="directory">/mnt: &prompt.root; mkdir /mnt Stel de apparaatnamen voor de schijven vast die aaneen worden geschakeld en maak het nieuwe apparaat aan. Het volgende commando kan bijvoorbeeld gebruikt worden om twee ongebruikte, ongepartitioneerde ATA schijven aaneen te schakelen (/dev/ad2 en /dev/ad3). &prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3 Als dit volume wordt gebruikt als rootapparaat voor het opstarten van een systeem, dan dient het volgende commando gegeven te worden voordat het bestandssysteem wordt gemaakt: &prompt.root; fdisk -vBI /dev/stripe/st0 Er moet een partitietabel gemaakt worden op het nieuwe volume: &prompt.root; bsdlabel -wB /dev/stripe/st0 Dit proces hoort twee nieuwe apparaten gemaakt te hebben in de map /dev/stripe naast het apparaat st0, te weten st0a en st0c. Nu kan er een bestandssysteem gemaakt worden op het apparaat st0a met newfs: &prompt.root; newfs -U /dev/stripe/st0a Na het uitvoeren van het bovenstaande commando rollen er veel getallen over het scherm en na een aantal seconden is het proces afgerond. Het volume is gereed en klaar om gemount te worden. Met het volgende commando kan een nieuw gemaakte aaneengeschakelde schijf handmatig gemount worden: &prompt.root; mount /dev/stripe/st0a /mnt Om dit aaneengeschakelde bestandssysteem automatisch te mounten bij het opstarten kan de volume-informatie in /etc/fstab gezet worden: &prompt.root; echo "/dev/stripe/st0a /mnt ufs rw 2 2" \ >> /etc/fstab De GEOM module dient ook automatisch geladen te worden bij het initialiseren van een systeem door de volgende regel toe te voegen aan /boot/loader.conf: &prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.conf RAID1 - spiegelen GEOM schijf spiegelen Spiegelen (mirroring) is een technologie die door veel bedrijven en thuisgebruikers wordt ingezet om gegevens te back-uppen zonder onderbrekingen. Als er een spiegel bestaat, betekent dat eenvoudigweg dat schijfB een kopie is van schijfA, of misschien zijn schijvenC+D een kopie van schijvenA+B. Los van de schijfinstellingen is het belangrijkste aspect dat de gegevens van de ene schijf of partitie worden gerepliceerd naar de andere. Later kunnen die gegevens eenvoudiger worden hersteld of geback-upped zonder dat dit leidt tot onderbrekingen in dienstverlening of toegang tot gegevens en schijven kunnen zelfs fysiek worden opgeslagen in een kluis. Begin met een systeem dat twee schijven heeft van gelijke grootte. Deze oefening stelt dat het directe toegang (&man.da.4;) SCSI-schijven zijn. Begin door &os; te installeren op de eerste schijf met twee partities. Een van de twee moet een swap-partitie zijn die twee keer de grootte van het RAM-geheugen is en de rest van de ruimte moet toegewezen worden aan het root bestandssysteem (/). Er zouden eigen partities gemaakt kunnen worden voor andere mountpunten, maar hierdoor wordt de moeilijkheidsgraad wel tien keer hoger doordat de instellingen voor &man.bsdlabel.8; and &man.fdisk.8; handmatig gewijzigd moeten worden. Herstart en wacht tot het systeem volledig is geïnitialiseerd. Meld daarna aan als gebruiker root. Maak het apparaat /dev/mirror/gm en link het aan /dev/da1: &prompt.root; gmirror label -vnb round-robin gm0 /dev/da1 Het systeem hoort te antwoorden met: Metadata value stored on /dev/da1. Done. Initialiseer GEOM, waardoor de kernelmodule /boot/kernel/geom_mirror.ko wordt geladen: &prompt.root; gmirror load Dit commando hoort de apparaatnodes gm0, gm0s1, gm0s1a en gm0s1c gemaakt te hebben onder de map /dev/mirror. Installeer het algemene fdisk label en de bootcode op het nieuw aangemaakte apparaat gm0: &prompt.root; fdisk -vBI /dev/mirror/gm0 Installeer nu de algemene bsdlabel informatie: &prompt.root; bsdlabel -wB /dev/mirror/gm0s1 Als meerdere slices en partities bestaan, dienen de vlaggen voor de vorige twee commando's anders te zijn. Ze moeten gelijk zijn aan de groottes van de slice en partitie van de andere schijf. Gebruik &man.newfs.8; om een standaard bestandssysteem te maken op de apparaatnode gm0s1a: &prompt.root; newfs -U /dev/mirror/gm0s1a Door het bovenstaande commando spuugt een systeem wat informatie uit en wat getalletjes. Dat is goed. Bekijk de uitvoer op het voorkomen van foutmeldingen en mount het apparaat op het mountpunt /mnt: - &prompt.root mount /dev/mirror/gm0s1a /mnt + &prompt.root; mount /dev/mirror/gm0s1a /mnt Verplaats nu alle gegevens van de bootschijf naar dit nieuwe bestandssysteem. In dit voorbeeld worden &man.dump.8; en &man.restore.8; gebruikt, maar &man.dd.1; werkt ook in dit scenario. Hier wordt &man.tar.1; òmzeild, omdat &man.tar.1; de bootcode niet kan kopiëren, iets dat een foute afloop garandeert. &prompt.root; dump -L -0 -f- / |(cd /mnt && restore -r -v -f-) Dit dient voor ieder bestandssysteem uitgevoerd te worden. Plaats eenvoudigweg het juiste bestandssysteem op de juiste plaats bij het uitvoeren van het voorgaande commando. Wijzig nu het gerepliceerde bestand /mnt/etc/fstab en verwijder het swapbestand of plaats er een commentaarteken voor. Het uitcommentariëren van de regel voor het swapbestand in fstab zorgt er waarschijnlijk voor dat het beschikbaar maken van swapruimte op een andere manier bewerkstelligd moet worden. In staat daarover meer informatie. Wijzig de informatie voor de andere bestandssystemen zodat ze de nieuwe schijf gebruiken. Zie het volgende voorbeeld: # Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1 Maak nu een bestand boot.conf op zowel de huidige als de nieuwe rootpartitie. Dit bestand helpt het BIOS van een systeem op te starten van de juiste schijf: &prompt.root; echo "1:da(1,a)/boot/loader" > /boot.config &prompt.root; echo "1:da(1,a)/boot/loader" > /mnt/boot.config Dit bestand dient op beide rootpartities te staan om zeker te stellen dat een systeem goed opstart. Als een systeem om welke reden dan ook niet kan lezen van de nieuwe rootpartitie, dan is een achtervang beschikbaar. Voeg de volgende regel toe aan de nieuwe - /boot/loader.conf: + /boot/loader.conf: &prompt.root; echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf Hiermee wordt aan &man.loader.8; aangegeven dat deze geom_mirror.ko dient te laden tijdens de initialisatie van een systeem. Herstart het systeem: &prompt.root; shutdown -r now Als alles goed is gegaan, hoort het systeem gestart te zijn vanaf het apparaat gm0s1a en er moet een login prompt staan te wachten. Als er iets mis is gegaan, kijk dan in de volgende sectie voor het oplossen van problemen. Voeg nu de schijf da0 toe aan het apparaat gm0: &prompt.root; gmirror configure -a gm0 &prompt.root; gmirror insert gm0 /dev/da0 De vlag geeft &man.gmirror.8; aan dat automatische synchronisatie gebruikt moet worden, ofwel dat schrijfbewerkingen naar schijf automatisch gespiegeld moeten worden. In de hulppagina wordt beschreven hoe schijven herbouwd en vervangen kunnen worden, hoewel daar data wordt gebruikt in plaats van gm0. Problemen oplossen Systeem weigert op te starten Als een systeem opstart in een prompt dat op het volgende lijkt: ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot> Herstart te machine met de aan/uit-schakelaar of met de resetknop. Selecteer in het bootmenu optie zes (6). Hierdoor komt een systeem in een &man.loader.8; prompt. Laad de kernelmodules handmatig: OK? load geom_mirror.ko OK? boot Als dit werkt werd de module om welke reden dan ook niet juist geladen. Zet de onderstaande regel in het bestand met kernelinstellingen en herbouw en installeer de kernel. options GEOM_MIRROR Hiermee moet het probleem opgelost zijn. diff --git a/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml index a6a4749ca6..d93a934d5c 100644 --- a/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/mirrors/chapter.sgml @@ -1,3319 +1,3325 @@ &os; verkrijgen Cd-rom en DVD uitgevers Winkelproducten in doos &os; is beschikbaar in een doos (&os; cd-roms, additionele software en gedrukte documentatie) bij verschillende verkopers:
CompUSA WWW:
Frys Electronics WWW:
Cd-roms en DVD's &os; cd-roms en DVD's zijn te koop bij veel online winkels:
Daemon News Mall PO Box 161 Nauvoo, IL 62354 Verenigde Staten Telefoon: +1 866 273-6255 Fax: +1 217 453-9956 E–mail: sales@bsdmall.com WWW:
BSD-Systems E–mail: info@bsd-systems.co.uk WWW:
fastdiscs.com 6 Eltham Close Leeds, LS6 2TY Verenigd Koninkrijk Telefoon: +44 870 1995 171 E–mail: sales@fastdiscs.com WWW:
&os; Mall, Inc. 3623 Sanford Street Concord, CA 94520-1405 Verenigde Staten Telefoon: +1 925 674-0783 Fax: +1 925 674-0821 E–mail: info@freebsdmall.com WWW:
Hinner EDV St. Augustinus-Str. 10 D-81825 München Duitsland Telefoon: (089) 428 419 WWW:
Ikarios 22-24 rue Voltaire 92000 Nanterre Frankrijk WWW:
JMC Software Ierland Telefoon: 353 1 6291282 WWW:
Linux CD Mall Private Bag MBE N348 Auckland 1030 Nieuw Zeeland Telefoon: +64 21 866529 WWW:
The Linux Emporium Hilliard House, Lester Way Wallingford OX10 9TA Verenigd Koninkrijk Telefoon: +44 1491 837010 Fax: +44 1491 837016 WWW:
Linux+ DVD Magazine Lewartowskiego 6 Warsaw 00-190 Polen Telefoon: +48 22 860 18 18 E–mail: editors@lpmagazine.org WWW:
Linux System Labs Australia 21 Ray Drive Balwyn North VIC - 3104 Australië Telefoon: +61 3 9857 5918 Fax: +61 3 9857 8974 WWW:
LinuxCenter.Ru Galernaya Street, 55 Saint-Petersburg 190000 Rusland Telefoon: +7-812-3125208 E–mail: info@linuxcenter.ru WWW:
Distributeurs Wederverkopers die &os; cd-rom producten willen verkopen kunnen contact opnemen met een distributeur:
Cylogistics 809B Cuesta Dr., #2149 Mountain View, CA 94040 Verenigde Staten Telefoon: +1 650 694-4949 Fax: +1 650 694-4953 E–mail: sales@cylogistics.com WWW:
Ingram Micro 1600 E. St. Andrew Place Santa Ana, CA 92705-4926 Verenigde Staten Telefoon: 1 (800) 456-8000 WWW:
Kudzu, LLC 7375 Washington Ave. S. Edina, MN 55439 Verenigde Staten Telefoon: +1 952 947-0822 Fax: +1 952 947-0876 E–mail: sales@kudzuenterprises.com
LinuxCenter.Ru Galernaya Street, 55 Saint-Petersburg 190000 Rusland Telefoon: +7-812-3125208 E–mail: info@linuxcenter.ru WWW:
Navarre Corp 7400 49th Ave South New Hope, MN 55428 Verenigde Staten Telefoon: +1 763 535-8333 Fax: +1 763 535-0341 WWW:
FTP sites De officië broncode voor &os; is beschikbaar via anoniem toegankelijke FTP in de hele wereld via vele mirrorsites. De site heeft een goede verbinding en staat veel verbindingen toe, maar het is waarschijnlijk beter om een mirrorsite te zoeken die dichterbij is (zeker als het doel is ook een soort mirrorsite op te zetten). De &os; mirrorsites database is beter bijgewerkt dan die in het Handboek omdat die lijst uit DNS komt in plaats van een met de hand ingevoerde lijst. &os; is beschikbaar via de onderstaande anonieme FTP mirror sites. Bij het kiezen van anonieme FTP voor het verkrijgen van &os; wordt aangeraden een site die dichtbij ligt te kiezen. De mirrorsites die in de lijst staan als Primaire Mirrorsites hebben meestal het complete &os; archief (alle beschikbare versies voor alle architecturen) maar downloads zijn waarschijnlijk sneller van een site die in het land of de regio van de gebruiker staat. De regionale sites hebben de meeste recente versies voor de meest populaire architecturen, maar hebben wellicht niet het complete archief. Alle sites geven toegang via anonieme FTP, maar een aantal sites hebben ook andere toegangsmogelijkheden. De toegangsmogelijkheden voor iedere site staan tussen haakjes achter de hostnaam. De rest van deze paragraaf wordt automatisch samengesteld en is niet vertaald. &chap.mirrors.ftp.inc; Anonieme CVS <anchor id="anoncvs-intro">Inleiding CVS anoniem Anonieme CVS (of ook wel bekend als anoncvs) is een functie die beschikbaar is met de hulpprogramma's die bij &os; zitten om te synchroniseren met een elders aanwezig CVS depot. Het staat gebruikers van &os; onder andere toe om zonder bijzondere rechten alleen-lezen operaties uit te voeren op een van de officiële anoncvs servers van het &os; project. Om het te kunnen gebruiken dient de omgevingsvariabele CVSROOT zo ingesteld te worden dat hij wijst naar de gewenste anoncvs server, dient het bekende wachtwoord anoncvs bij het commando cvs login opgegeven te worden en kan daarna &man.cvs.1; gebruikt worden om het te benaderen als ieder lokaal aanwezig depot. Het commando cvs login slaat de wachtwoorden die voor aanmelden bij de CVS server op in een bestand met de naam .cvspass in de map HOME. Als dit bestand niet bestaat, is het mogelijk dat er een foutmelding wordt gegeven als cvs login de eerste keer wordt gebruikt. Dat kan opgelost worden door een leeg bestand .cvspass te maken en dan opnieuw aan te melden. Hoewel de diensten CVSup en anoncvs beiden vrijwel dezelfde functie invullen, zijn er redenen die de keuze voor de synchronisatiemethode beïnvloeden. In een notendop is CVSup veel efficiënter in het gebruik van netwerkbronnen en is het de meest geavanceerde van de twee, maar daar staat iets tegenover. Voor het gebruik van CVSup moet eerst een speciale client geïnstalleerd en ingesteld worden voordat er bits kunnen gaan stromen en dat kan dan alleen in de redelijk grote brokken die in CVSup collections heten. Anoncvs kan daarentegen gebruikt worden om alles te bekijken van een individueel bestand tot aan een specifiek programma (als ls of grep) door aan de naam van de CVS module te refereren. Ook anoncvs is alleen geschikt voor alleen-lezen operaties op het CVS depot, dus als het de bedoeling is om lokaal ontwikkelwerk en hetzelfde depot met delen uit het &os; project te combineren, dan biedt alleen CVSup daar een oplossing voor. <anchor id="anoncvs-usage">Anonieme CVS gebruiken Het instellen van &man.cvs.1; om gebruik te maken van een Anoniem CVS depot is een kwestie van het instellen van de omgevingsvariabele CVSROOT op een van de anoncvs servers van het &os; project. Op het moment van schrijven zijn de volgende servers beschikbaar: Oostenrijk: :pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs Gebruikt cvs login en gebruik een willekeurig wachtwoord. Frankrijk: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver (wachtwoord anoncvs), ssh (geen wachtwoord) Duitsland: :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs Gebruik cvs login en gebruik als wachtwoord anoncvs Duitsland: :pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs (rsh, pserver, ssh, ssh/2022) Japan: :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs Gebruik cvs login en gebruik als wachtwoord anoncvs Zweden: freebsdanoncvs@anoncvs.se.FreeBSD.org:/home/ncvs (alleen ssh - geen wachtwoord) SSH HostKey: 1024 a7:34:15:ee:0e:c6:65:cf:40:78:2d:f3:cd:87:bd:a6 root@apelsin.fruitsalad.org SSH2 HostKey: 1024 21:df:04:03:c7:26:3e:e8:36:1a:50:2d:c7:ae:b8:5f ssh_host_dsa_key.pub VS: freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs (alleen ssh - geen wachtwoord) SSH HostKey: 1024 a1:e7:46:de:fb:56:ef:05:bc:73:aa:91:09:da:f7:f4 root@sanmateo.ecn.purdue.edu SSH2 HostKey: 1024 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65 ssh_host_dsa_key.pub VS: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (alleen ssh - geen wachtwoord) SSH HostKey: 1024 4b:83:b6:c5:70:75:6c:5b:18:8e:3a:7a:88:a0:43:bb root@ender.liquidneon.com SSH2 HostKey: 1024 80:a7:87:fa:61:d9:25:5c:33:d5:48:51:aa:8f:b6:12 ssh_host_dsa_key.pub Omdat met CVS vrijwel iedere versie die ooit beschikbaar is geweest uitgecheckt kan worden, is het van belang op de hoogte te zijn van de &man.cvs.1; vlag voor revisie () en welke waarden zie zoal kan aannemen in het &os; Project depot. Er zijn twee soorten labels (tags): revisielabels en taklabels (branch). Een revisielabel refereert aan een specifieke revisie. De betekenis blijft van dag tot dag gelijk. Aan de andere kant refereert een taklabel aan de laatste revisie in een bepaalde ontwikkellijn op een bepaald moment. Omdat een taklabel niet refereert aan een specifieke revisie, kan die morgen anders zijn dan vandaag. bevat revisielabels waar gebruikers in geïnteresseerd kunnen zijn. Nogmaals: deze zijn allemaal niet geldig voor de Portscollectie omdat de Portscollectie geen meerdere revisies kent. Als een specifiek taklabel wordt aangegeven, worden als alles goed gaat, de laatste revisies uit een bepaalde ontwikkellijn ontvangen. Als er een oudere versie opgehaald moet worden, kan dat door met de vlag een datum aan te geven. In &man.cvs.1; staan meer details. Voorbeelden Hoewel het sterk wordt aangeraden eerst de hulppagina's voor &man.cvs.1; grondig door te lezen, volgen hier een aantal snelle voorbeelden die feitelijk aangeven hoe Anonieme CVS gebruikt kan worden. SSH gebruiken om de <filename>src/</filename> tree uit te checken: &prompt.user; cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be established. DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts. - Iets uitchecken uit -CURRENT (&man.ls.1;) en dat weer - verwijderen: + Iets uitchecken uit -CURRENT (&man.ls.1;): - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. -&prompt.user; cvs co ls -&prompt.user; cvs release -d ls -&prompt.user; cvs logout +&prompt.user; cvs co ls SSH gebruiken om de <filename>src/</filename> structuur uit te checken: &prompt.user; cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be established. DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts. - De versie van &man.ls.1; in de 3.X-STABLE tak + <title>De versie van &man.ls.1; in de 6-STABLE tak uitchecken: - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. -&prompt.user; cvs co -rRELENG_3 ls -&prompt.user; cvs release -d ls -&prompt.user; cvs logout +&prompt.user; cvs co -rRELENG_6 ls Een lijst wijzigingen maken (als unified diffs) voor &man.ls.1; - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. -&prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls -&prompt.user; cvs logout +&prompt.user; cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls Uitzoeken welke modulenamen gebruikt kunnen worden: - &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs + &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs &prompt.user; cvs login At the prompt, enter the password anoncvs. &prompt.user; cvs co modules -&prompt.user; more modules/modules -&prompt.user; cvs release -d modules -&prompt.user; cvs logout +&prompt.user; more modules/modules Andere bronnen De volgende bronnen kunnen bijdragen aan een beter begrip van CVS: CVS Tutorial van Cal Poly. CVS Home, de CVS gemeenschap voor ontwikkeling en ondersteuning. CVSweb is de &os; Project webinterface voor CVS. CTM gebruiken CTM CTM is een methode om een map elders gesynchroniseerd te houden met een centrale. Het is ontwikkeld voor gebruik met de &os; broncode, hoewel sommigen het ook voor andere doeleinden handig vinden. Er bestaat op dit moment weinig tot geen documentatie over het proces van het maken van delta's. Voor informatie over het gebruik van CTM kan het beste contact gezocht worden met de &a.ctm-users.name; mailinglijst. Waarom <application>CTM</application> gebruiken? CTM geeft een lokale kopie van de &os; broncode. Die is in een aantal smaken beschikbaar. Of het gaat om slechts één tak of de complete CVS structuur, CTM kan het bieden. CTM is gewoon gemaakt voor actieve ontwikkelaars die met &os; werken, maar geen of een slechte internetverbinding hebben of gewoon automatisch de laatste wijzigingen willen ontvangen. De meest actieve takken kennen op z'n hoogst drie delta's per dag. Het is het overwegen waard om ze per automatische mail te laten sturen. De grootte van de updates wordt altijd zo klein mogelijk gehouden. Meestal kleiner dan 5 K en soms (in tien procent van de gevallen) is het 10–50 K. In uitzonderlijke gevallen komt het voor dat een mail van 100 K of meer wordt gestuurd. Het is wel van belang op de hoogte te zijn van de valkuilen die een rol spelen bij het direct werken met broncode in plaats van met een voorverpakte release. Dit geldt nog meer als wordt gewerkt met de current code. Het lezen van Bijblijven met &os; wordt sterk aangeraden. Wat is er nodig om <application>CTM</application> te gebruiken? Voor het gebruik van CTM zijn twee dingen nodig: het CTM programma en de initiële delta's om de applicatie te voeden en naar een current niveau te komen. CTM is al onderdeel van &os; sinds versie 2.0 is uitgebracht en is te vinden in /usr/src/usr.sbin/ctm, als de broncode aanwezig is. De delta's voor CTM kunnen op twee manieren komen: met FTP of per e-mail. De volgende FTP sites bieden ondersteuning voor CTM: Er staan er nog meer in de paragraaf mirrors. FTP de relevante map en download het bestand README vanaf daar. Voor delta's via e-mail: Er dient een abonnement genomen te worden op een van de CTM distributielijsten. &a.ctm-cvs-cur.name; ondersteunt de complete CVS structuur. &a.ctm-src-cur.name; ondersteunt het hoofd van de ontwikkeltak. &a.ctm-src-4.name; ondersteunt de 4.X release tak, enzovoort. Om te abonneren kan geklikt worden op de bovenstaande links of via &a.mailman.lists.link; kan in een lijst geklikt worden op de lijst waarvoor waarvoor een abonnement gewenst is. De lijstpagina bevat instructies over hoe te abonneren. Na het ontvangen van CTM updates per mail, kan ctm_rmail gebruikt worden voor het uitpakken en verwerken. ctm_rmail kan zelfs direct vanuit /etc/aliases gebruikt worden om het proces volledig automatisch te laten verlopen. In de hulppagina van ctm_rmail staan meer details. Welke methode ook gebruikt wordt voor de CTM delta's, het is belangrijk een abonnement te nemen op de &a.ctm-announce.name; mailinglijst. In de toekomst worden alleen op die lijst aankondigingen gedaan over het CTM systeem. Abonneren kan door op de link hierboven te klikken en de instructies te volgen. <application>CTM</application> de eerste keer gebruiken Voordat de CTM delta's gebruikt kunnen worden, moet er een startpunt voor bepaald worden. Eerst moet bepaald worden wat er al is. Het is mogelijk te beginnen vanuit een lege map. Dan moet een initiële Empty delta gebruikt worden om een door CTM ondersteunde structuur te starten. Het is de bedoeling dat deze start delta's ooit voor het gemak op de cd-rom komen te staan, maar dit is nog niet het geval. Omdat de structuren tientallen megabytes groot zijn, heeft het de voorkeur om al met iets te beginnen. Als er een -RELEASE cd-rom beschikbaar is, kan de initiële broncode gekopieerd of uitgepakt worden. Dit bespaart nogal wat dataverkeer. De start delta's kunnen herkend worden aan de X die aan het nummer is toegevoegd (bijvoorbeeld src-cur.3210XEmpty.gz). De nummering achter de X komt overeen met de oorsprong van het initiële zaad. Empty is een lege map. Er wordt in het algemeen iedere honderd delta's een basistransitie voor Empty gemaakt. Die zijn trouwens groot: 70 tot 80 Megabytes gzip data is normaal voor de XEmpty delta's. Als er een delta als startpunt is gekozen, zijn ook alle delta's met hogere volgnummers nodig. <application>CTM</application> in het dagelijks leven gebruiken Om de delta's toe te passen: &prompt.root; cd /where/ever/you/want/the/stuff &prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.* CTM begrijpt delta's in gzip formaat, dus het niet nodig om eerst gunzip te gebruiken. Dat spaart diskruimte. Tenzij het zeker is van de veiligheid van het proces, doet CTM niets met de structuur. Om een delta te verifiëren kan ook de vlag gebruikt worden en dan komt CTM ook niet aan een structuur. Dan wordt alleen de integriteit van de delta gecontroleerd en of die zonder problemen op de huidige structuur kan worden toegepast. CTM kent nog meer opties die in de hulppagina's worden besproken. Meer is er niet. Iedere keer dat er een delta wordt ontvangen, moet die door CTM gehaald worden om de broncode bijgewerkt te houden. Delta's kunnen het beste niet verwijderd worden als het lastig is ze opnieuw te downloaden. Dan kunnen ze het beste bewaard worden voor het geval er eens iets gebeurt. Zelfs als er alleen floppy's beschikbaar zijn, is het wellicht verstandig die te gebruiken met fdwrite. Lokale wijzigingen behouden Een ontwikkelaar wil graag experimenteren met bestanden in de structuur en die bestanden veranderen. CTM ondersteunt lokale wijzigingen in beperkte mate: alvorens te kijken of bestand foo bestaat, zoekt het eerst naar foo.ctm. Als dat bestand bestaat, past CTM de wijzigigen daarop toe in plaats van op foo. Dit gedrag biedt een eenvoudige mogelijkheid om lokale wijzigingen bij te houden. Dat kan dus door bestanden die gewijzigd gaan worden te kopiëren naar een bestand met dezelfde naam met de toevoeging .ctm. Dan kan er vrijelijk gespeeld worden met de code, terwijl CTM het bestand .ctm bijwerkt. Andere interessante mogelijkheden van <application>CTM</application> Uitvinden wat precies wordt veranderd met bijwerken Het is mogelijk een lijst met wijzigingen te maken die CTM zou maken op het broncodedepot met de optie . Dit is nuttig als het gewenst is om een logboek bij te houden van de wijzigingen, de te wijzigen bestanden voor- of na te bewerken op welke manier dan ook, of als de gebruiker gewoon een beetje paranoïde is. Back-ups maken vóór bijwerken Soms kan het wenselijk zijn om een back-up te maken van alle bestanden die gewijzigd gaan worden door een CTM update. Met back-upt CTM alle bestanden die gewijzigd gaan worden door een CTM delta naar back–upbestand. Te wijzigen bestanden door bijwerken beperken Soms is het wenselijk de reikwijdte voor een CTM update te beperken of kan het wenselijk zijn om maar een paar bestanden bij te werken uit een aantal delta's. Een lijst met bestanden die CTM mag bewerken kan aangegeven worden met de opties en en het opgeven van regular expressions. Om bijvoorbeeld een bijgewerkte kopie van lib/libc/Makefile te maken uit de verzameling met opgeslagen CTM delta's, kan het volgende commando uitgevoerd worden: &prompt.root; cd /where/ever/you/want/to/extract/it/ &prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* Voor ieder te wijzigen bestand in een CTM delta worden de opties en toegepast in de volgorde waarin ze op de commandoregel staan. Het bestand wordt alleen door CTM verwerkt als het passend is bevonden na het toepassen van alle parameters in en . Toekomstige plannen voor <application>CTM</application> Die zijn er: Een of andere vorm van authenticatie in het CTM systeem bouwen zodat vervalste CTM updates afgevangen kunnen worden; De opties voor CTM opruimen omdat ze verwarrend zijn geworden. Nog meer Er zijn ook delta's voor de portscollectie, maar daar is nog niet zo veel belangstelling voor. CTM mirrors CTM/&os; is op de volgende mirrorsites via anonieme FTP beschikbaar. Als voor CTM anonieme FTP wordt gebruikt, heeft het de voorkeur een site die in geografische zin dichtbij is te gebruiken. Bij problemen kan contact gezocht worden met de &a.ctm-users.name; mailinglijst. Californië, Bay Area, officiële bron Zuid-Afrika, back-upserver voor oude delta's Taiwan/R.O.C. Als er geen mirror dichtbij is of als die incompleet is, kan een zoekmachine als alltheweb gebruikt worden. CVSup gebruiken Inleiding CVSup is een softwarepakket voor het verspreiden en bijwerken van broncodestructueren vanaf een master CVS depot op een andere server. De &os; broncode wordt beheerd in een broncode depot op een centrale ontwikkelmachine in Californië. Met CVSup kunnen &os; gebruikers op eenvoudige wijze hun broncode bijwerken. CVSup gebruikt een zogenaamd pull model voor het bijwerken. In het pull-model vraagt iedere client de server om updates als die nodig zijn. De server wacht passief op een verzoek om updates van zijn clients. Alle updates worden dus op initiatief van de client gedaan. De server stuurt nooit ongevraagde updates. Gebruikers moeten de CVSup client handmatig draaien om te updaten of een cron taak instellen om op regelmatige basis bij te werken. De term CVSup, op de gegeven wijze geschreven, doelt op het complete softwarepakket. De belangrijkste componenten zijn de client cvsup, die op de machine van een gebruiker draait, en de server cvsupd, die op alle &os; mirrorsites draait. In de &os; documentatie en op de mailinglijsten zijn referenties aan sup te vinden. Sup was de voorloper van CVSup en diende hetzelfde doel. CVSup wordt op dezelfde manier gebruikt als sup en gebruikt zelfs bestanden met instellingen die ook te gebruiken zijn met sup. Sup wordt niet langer gebruikt in het &os; project omdat CVSup sneller en flexibeler is. Installatie De meest eenvoudige wijze van installatie van CVSup is met het voorgecompileerde package net/cvsup uit de &os; packagescollectie. Als het gewenst is, kan CVSup ook uit de broncode gebouwd worden in net/cvsup. De net/cvsup port is afhankelijk van het Modula-3 systeem en dat kan wel even duren en er is ook nogal wat schijfruimte voor nodig om het te downloaden en te bouwen. Als CVSup gebruikt gaat worden op een machine waarop geen &xfree86; of &xorg; staat, zoals een server, dan dient de port waar geen CVSup GUI bij zit geïnstalleerd te worden: net/cvsup-without-gui. CVSup instellingen De werking van CVSup wordt gestuurd door een bestand met instellingen met de naam supfile. Er staan een aantal supfiles als voorbeeld in de map /usr/share/examples/cvsup/. De informatie in een supfile beantwoordt de volgende vragen voor CVSup: Welke bestanden moeten ontvangen worden? Welke versies daarvan moeten ontvangen worden? Waar moeten ze vandaan komen? Waar moeten ze komen te staan? Waar moet cvsup zijn statusbestanden bijhouden? In de volgende paragrafen wordt een supfile bestand opgebouwd door achtereenvolgens alle gestelde vragen te beantwoorden. Als eerste wordt de algemene structuur van een supfile beschreven. Een supfile is een tekstbestand. Commentaar begint met een # en loopt tot het einde van de regel. Lege regels en regels die alleen commentaar bevatten worden genegeerd. Iedere regel die overblijft slaat op een groep bestanden die ontvangen moet worden. De regel begint met de naam van een collectie, een logische groep bestanden op de server. De naam van de collectie geeft de server aan welke bestanden er gestuurd moeten worden. Na de naam van de collectie komen er geen of meer velden die gescheiden worden door witruimte. Die velden beantwoorden de hierboven gestelde vragen. Er zijn twee soorten velden: vlagvelden en waardevelden. Een vlagveld bestaat uit een alleenstaand sleutelwoord, bijvoorbeeld delete of compress. Een waardeveld begint ook met een sleutelwoord, maar het sleutelwoord wordt direct (zonder witruimte) gevolgd door = en een tweede woord. release=cvs is bijvoorbeeld een waardeveld. In een supfile wordt meestal aangegeven dat er meerdere collecties ontvangen moeten worden. Het is mogelijk om een supfile te structureren door expliciet alle relevante velden aan te geven voor iedere collectie, maar dat maakt de regels in de supfile nogal lang en het is onhandig omdat de meeste velden hetzelfde zijn voor alle collecties in een supfile. CVSup biedt een systeem met standaardinstellingen om dit probleem te omzeilen. Regels die beginnen met de speciale pseuso-collectienaam *default kunnen gebruikt worden om standaarden in te stellen voor de collecties die er in de supfile achteraan komen. Een standaardwaarde kan voor individuele collecties overschreven worden door een andere waarde in de collectie zelf aan te geven. Standaarden kunnen ook middenin het bestand gewijzigd of aangevuld worden met extra *default regels. Na deze achtergronden wordt er nu een supfile samengesteld voor het ontvangen en bijwerken van de hoofd broncodestructuur van &os;-CURRENT. Welke bestanden moeten ontvangen worden? De bestanden die via CVSup beschikbaar zijn, zijn beschikbaar in groepen die collecties heten. De beschikbare collecties staan beschreven in de volgende paragraaf. In dit voorbeeld is het de bedoeling dat de hele hoofd broncodestructuur voor &os; wordt ontvangen. Daar is één grote collectie voor: src-all. De eerste stap in het maken van een supfile is het opsommen van de gewenste collecties, één per regel (in dit geval maar één regel): src-all Welke versies daarvan moeten ontvangen worden? Met CVSup kan vrijwel iedere versie van de broncode die ooit heeft bestaan opgehaald worden. Dat kan omdat de cvsupd server direct vanaf het CVS depot werkt, dat alle versies bevat. Er kan aangegeven welke ontvangen moeten worden met de waardevelden tag= en . Voorzichtigheid is geboden bij het correct aangeven van velden met tag=. Sommige labels zijn alleen geldig voor bepaalde collecties of bestanden. Als ze incorrect worden aangeven of als er een spelfout wordt gemaakt in een label, verwijdert CVSup bestanden waarvan dat waarschijnlijk niet de bedoeling is. Het label tag=. dient eigenlijk alleen gebruikt te worden voor de ports-* collecties. Het veld tag= benoemt een symbolisch label in het depot. Er zijn twee soorten labels: revisielabels en taklabels. Een revisielabel refereert aan een specifieke revisie. De betekenis blijft altijd hetzelfde. Een taklabel refereert echter aan de laatste revisie van een gegeven ontwikkellijn op een gegeven moment. Omdat een taklabel niet refereert aan een specifieke revisie, kan het morgen iets anders betekenen dan vandaag. beschrijft de meest interessante taklabels. Als er in het instellingenbestand van CVSup een label wordt aangegeven, moet dat vooraf gegaan worden door tag= (RELENG_4 zal tag=RELENG_4 worden). Voor de Portscollectie is alleen tag=. relevant. Labels dienen exact zo ingegeven te worden als ze staan beschreven. CVSup kan geen onderscheid maken tussen geldige en ongeldige labels. Als er een spelfout in een label wordt gemaakt, doet CVSup alsof er een geldig label is ingegeven dat aan geen enkel bestand refereert. Dan zal CVSup de bestaande broncode wissen. Bij het aangeven van een taklabel wordt meestal de laatste versie van de bestanden voor een bepaalde ontwikkellijn ontvangen. Om een oudere versie te ontvangen kan in het veld een datum opgegeven worden. In &man.cvsup.1; staat hoe dat werkt. Om bijvoorbeeld &os;-CURRENT te ontvangen dient het volgende aan het begin van supfile toegevoegd te worden: *default tag=. Er ontstaat een belangrijk speciaal geval als er geen velden met tag= of date= worden aangegeven. In dat geval worden de eigenlijke RCS bestanden direct uit het CVS depot van de server ontvangen in plaats van dat een bepaalde versie wordt ontvangen. Ontwikkelaars geven in het algemeen de voorkeur aan deze optie. Door zelf een kopie van de broncode op hun systeem te hebben, krijgen ze de mogelijkheid om zelf door eerdere versies van bestanden te bladeren en de geschiedenis ervan te bekijken. Dit voordeel kost wel veel schijfruimte. Waar moeten ze vandaan komen? Het veld host= wordt gebruikt om cvsup aan te geven waar de updates vandaan moeten komen. Dat kan van elke CVSup mirrorsite, hoewel er wordt aangeraden een site die geografisch dichtbij ligt te kiezen. In dit voorbeeld wordt een fictieve &os; distributiesite gebruikt, cvsup99.FreeBSD.org: *default host=cvsup99.FreeBSD.org In een werkelijke situatie dient de hostnaam gewijzigd te worden in een host die echt bestaat voordat CVSup gaat draaien. Iedere keer dat cvsup wordt gestart, kan er een andere host op de commandoregel opgegeven worden met de optie . Waar moeten ze komen te staan? Het veld prefix= geeft cvsup aan waar de ontvangen bestanden terecht moeten komen. In dit voorbeeld worden de bestanden direct in de hoofd broncodestructuur /usr/src geplaatst. De map src is al impliciet in de gekozen collecties, vandaar dat het onderstaande de juiste instelling is: *default prefix=/usr Waar moet cvsup zijn statusbestanden bijhouden? De CVSup client houdt statusbestanden bij in een map die base wordt genoemd. Die bestanden helpen CVSup efficiënter te werken door bij te houden welke updates al eerder zijn ontvangen. Hier wordt de standaard basemap gebruikt, /var/db: *default base=/var/db De bovenstaande instelling wordt standaard gebruikt als die niet wordt aangegeven in de supfile, dus hij is eigenlijk niet nodig. Als de basemap niet al bestaat, moet die gemaakt worden. De cvsup client weigert te draaien als de basemap niet bestaat. Allerlei supfile instellingen: Er is nog een regel die in een supfile moet staan: *default release=cvs delete use-rel-suffix compress release=cvs geeft de server aan dat de informatie uit het &os; hoofd CVS depot moet komen. Dat is eigenlijk altijd het geval, maar er zijn mogelijkheden die buiten het bereik van dit handboek vallen. delete geeft CVSup het recht om bestanden te verwijderen. Dit moet altijd aangegeven worden zodat CVSup de broncode altijd kan bijwerken. CVSup gaat voorzichtig om met het verwijderen van bestanden waar het verantwoordelijk voor is. Extra bestanden in de structuur worden met rust gelaten. use-rel-suffix is nogal geheimzinnig. Voor de nieuwsgierigen staat er meer over in &man.cvsup.1;. Anders kan het gewoon ingesteld worden zonder erover na te denken. compress schakelt het gebruikt van gzip compressie in voor het communicatiekanaal. Als de verbinding een E1 of sneller is, hoeft er geen compressie gebruikt te worden. Anders helpt het aanzienlijk. Alles combinerend: Hieronder staat de hele supfile uit het voorbeeld: *default tag=. *default host=cvsup99.FreeBSD.org *default prefix=/usr *default base=/var/db *default release=cvs delete use-rel-suffix compress src-all Het bestand <filename>refuse</filename> Zoals hierboven al is aangegeven, gebruikt CVSup een pull methode. Dat betekent eigenlijk dat er een verbinding wordt gemaakt met de CVSup server en die zegt dan: Dit kan er van mij gedownload worden..., en dan antwoordt de client met: Oké, ik wil dit en dat en zus en zo. Met de standaardinstellingen haalt de CVSup client alle bestanden die bij een collectie en het label horen dat in het bestand met de instellingen is opgegeven. Maar dat is niet altijd wenselijk, in het bijzonder als de doc, ports of www structuren worden gesynchroniseerd. De meeste mensen kunnen geen vier of vijf talen lezen en die hebben de taalspecifieke bestanden dus niet nodig. Als de Portscollectie met CVSup wordt opgehaald, is het mogelijk om iedere collectie apart aan te geven (bijvoorbeeld ports-astrology, ports-biology, enzovoort, in plaats van eenvoudigweg ports-all). Maar omdat de doc en www structuren geen taalspecifieke collecties hebben, moet er gebruik gemaakt worden van een van de vele mooie mogelijkheden van CVSup: het bestand refuse. Het bestand refuse geeft CVSup in feite aan dat niet ieder bestand uit een collectie opgehaald moet worden. Het geeft dus aan dat de client bepaalde bestanden van de server moet weigeren. Het bestand refuse staat in (of kan gemaakt worden in) base/sup/. base staat ingesteld in supfile. De standaardlocatie voor base is /var/db. De standaardplaats voor refuse is dus /var/db/sup/refuse. Het bestand refuse heeft een erg eenvoudige opmaak. Het bevat de namen van de bestanden die niet gedownload mogen worden. Als een gebruiker bijvoorbeeld geen andere talen spreekt dan Engels en Nederlands, maar de Nederlandse vertaling van de documentatie hoeft niet binnengehaald te worden, dan kan het volgende in het bestand refuse gezet worden: doc/bn_* doc/da_* doc/de_* doc/el_* doc/es_* doc/fr_* doc/it_* doc/ja_* doc/nl_* doc/no_* doc/pl_* doc/pt_* doc/ru_* doc/sr_* doc/tr_* doc/zh_* Dit gaat zo door voor de andere talen. De volledige lijst staat in het &os; CVS depot. Met deze handige eigenschap kunnen gebruikers met langzamere verbindingen of zij die per minuut voor hun internetverbinding betalen waardevolle tijd besparen omdat er geen bestanden meer gedownload worden die nooit gebruikt worden. Meer informatie over refuse bestanden en andere leuke mogelijkheden van CVSup staat in de handleiding. <application>CVSup</application> draaien Nu kan het bijwerken beginnen. Het commando is best wel eenvoudig: &prompt.root; cvsup supfile De supfile is de naam van het supfile bestand dat gebruikt moet worden. Aangenomen dat er X11 draait op een machine, toont cvsup een GUI venster met wat knoppen om de bekende acties uit te voeren. Het proces start na het klikken op de knop go. Omdat in dit voorbeeld de werkelijke structuur in /usr/src wordt bijgewerkt, moet het programma als root uitgevoerd worden, zodat cvsup de rechten heeft die het nodig heeft om de bestanden bij te werken. Het is voorstelbaar dat de benodigde rechten, het net gemaakte bestand met instellingen en het voor de eerste keer draaien van een programma zorgt voor wat onrust. Daarom is het mogelijk proef te draaien zonder dat er bestanden gewijzigd worden. Dat kan door ergens een lege map te maken en een extra argument mee te geven op de commandoregel: &prompt.root; mkdir /var/tmp/dest &prompt.root; cvsup supfile /var/tmp/dest De opgegeven map is de bestemming voor alle bestandsupdates. CVSup bekijkt wel de bestanden in /usr/src, maar wijzigt ze niet. Alle updates belanden in /var/tmp/dest/usr/src. CVSup werkt ook de statusbestanden niet bij als het op deze wijze wordt uitgevoerd. De nieuwe versies van de bestanden worden naar de aangegeven map geschreven. Als er maar leestoegang is tot /usr/src, hoeft een gebruiker zelfs geen root te zijn bij het uitvoeren van dit experiment. Als er geen X11 draait of als het niet wenselijk is een GUI te gebruiken, dan kunnen daarvoor opties op de commandoregel meegegeven worden bij het draaien van cvsup: &prompt.root; cvsup -g -L 2 supfile De optie geeft CVSup aan dat de GUI niet gebruikt hoeft te worden. Dit gebeurt automatisch als X11 niet draait, maar anders moet het aangegeven worden. De optie geeft CVSup aan dat details getoond moeten worden over alle bestanden die bijgewerkt worden. Er zijn drie niveau's van uitvoerigheid, van tot . Standaard is het 0, wat betekent dat er geen enkel bericht wordt getoond, met uitzondering van foutmeldingen. Er zijn nog veel andere opties beschikbaar. Met cvsup -H wordt een lijst met korte uitleg getoond. Beschrijvingen met meer details staan in de handleiding. Als het bijwerken op de gewenste manier loopt, kan het regulier draaien van CVSup met &man.cron.8; ingesteld worden. Natuurlijk hoort CVSup zonder GUI te draaien als het programma vanuit de &man.cron.8; draait. <application>CVSup</application> bestandscollecties De via CVSup beschikbare bestandscollecties zijn hiërarchisch georganiseerd. Er zijn een paar grote collecties en die zijn opgedeeld in kleinere sub-collecties. Het ontvangen van een collectie is hetzelfde als het ontvangen van alle sub-collecties. De hiërarchische relatie tussen de collecties wordt hieronder aangegeven door het niveau van inspringen. De meest gebruikte collecties zijn src-all en ports-all. De andere collecties worden door kleine groepen mensen gebruikt voor bijzondere doeleinden en sommige mirrorsites hebben ze niet allemaal. cvs-all release=cvs Het &os; CVS hoofddepot, inclusief de cryptografische code. distrib release=cvs Bestanden die betrekking hebben op het verspreiden en spiegelen van &os;. doc-all release=cvs Broncode voor het &os; Handboek en andere documentatie, zonder de bestanden voor de &os; website. ports-all release=cvs De &os; Portscollectie. Als ports-all (het complete portssysteem) niet bijgewerkt hoeft te worden, maar enkele van de onderstaande sub-collecties, dan moet altijd ook de ports-base sub-collectie bijgewerkt worden! Als er iets wijzigt in de infrastructuur van de ports waar ports–base voor staat, is het vrijwel zeker dat die wijzigingen heel snel door echte ports gebruikt gaan worden. Dus als alleen de echte ports bijgewerkt worden en als die gebruik maken van nieuwe mogelijkheden, dan is de kans groot dat het bouwen daarvan foutloopt met een vage foutmelding. Het eerste dat gedaan moeten worden is ervoor zorgen dat de ports-base sub-collectie is bijgewerkt. Bij het zelf bouwen van een lokale kopie van ports/INDEX mOEt ports-all geaccepteerd worden (de hele port structuur). Het bouwen van ports/INDEX met een gedeeltelijke structuur wordt niet ondersteund. Zie ook de FAQ. ports-accessibility release=cvs Software voor minder valide gebruikers. ports-arabic release=cvs Ondersteuning voor de Arabische taal. ports-archivers release=cvs Archiveringshulpmiddelen. ports-astro release=cvs Astronomie ports. ports-audio release=cvs Geluidsondersteuning. ports-base release=cvs De infrastructuur van de Portscollectie. Bestanden uit de mappen Mk/ en Tools/ van /usr/ports. Zie ook de belangrijke waarschuwing hierboven: deze sub-collectie dient altijd bijgewerkt te worden als er een onderdeel van de &os; Portscollectie wordt bijgewerkt! ports-benchmarks release=cvs Benchmarks. ports-biology release=cvs Biologie. ports-cad release=cvs Computer aided design programma's. ports-chinese release=cvs Ondersteuning voor de Chinese taal. ports-comms release=cvs Communicatiesoftware. ports-converters release=cvs Karaktercode omzetters. ports-databases release=cvs Databases. ports-deskutils release=cvs Dingen die op een bureaublad stonden voordat computers waren uitgevonden. ports-devel release=cvs Ontwikkelhulpmiddelen. ports-dns release=cvs DNS gerelateerde software. ports-editors release=cvs Editors. ports-emulators release=cvs Emulatoren voor besturingssystemen. ports-finance release=cvs Monetaire, financiële en gerelateerde applicaties. ports-ftp release=cvs FTP client en server programma's. ports-games release=cvs Spelletjes. ports-german release=cvs Ondersteuning voor de Duitse taal. ports-graphics release=cvs Grafische programma's. ports-hebrew release=cvs Ondersteuning voor de Hebreeuwse taal. ports-hungarian release=cvs Ondersteuning voor de Hongaarse taal. ports-irc release=cvs Internet Relay Chat hulpprogramma's. ports-japanese release=cvs Ondersteuning voor de Japanse taal. ports-java release=cvs &java; programma's. ports-korean release=cvs Ondersteuning voor de Koreaanse taal. ports-lang release=cvs Programmeertalen. ports-mail release=cvs Mailsoftware. ports-math release=cvs Numerieke rekensoftware. ports-mbone release=cvs MBone applicaties. ports-misc release=cvs Verschillende programma's. ports-multimedia release=cvs Multimedia software. ports-net release=cvs Netwerksoftware. ports-net-im release=cvs Berichtenuitwisseling. ports-net-mgmt release=cvs Netwerkbeheersoftware. ports-news release=cvs USENET news software. ports-palm release=cvs Softwareondersteuning voor Palm apparatuur. ports-polish release=cvs Ondersteuning voor de Poolse taal. ports-portuguese release=cvs Ondersteuning voor de Portugese taal. ports-print release=cvs Printsoftware. ports-russian release=cvs Ondersteuning voor de Russische taal. ports-science release=cvs Wetenschappelijk. ports-security release=cvs Beveiligingsprogramma's. ports-shells release=cvs Commandoregelshells. ports-sysutils release=cvs Systeemprogramma's. ports-textproc release=cvs Tekstverwerkingsprogramma's (zonder desktop publishing). ports-ukrainian release=cvs Ondersteuning voor de Oekraïnische taal. ports-vietnamese release=cvs Ondersteuning voor de Vietnamese taal. ports-www release=cvs Software gerelateerd aan het Wereldwijde Web. ports-x11 release=cvs Ports voor het X windowsysteem. ports-x11-clocks release=cvs X11 klokken. ports-x11-fm release=cvs X11 bestandsbeheerders. ports-x11-fonts release=cvs X11 lettertypen en lettertypeprogramma's. ports-x11-toolkits release=cvs X11 hulpprogramma's. ports-x11-servers release=cvs X11 servers. ports-x11-themes X11 thema's. ports-x11-wm release=cvs X11 vensterbeheerprogramma's. src-all release=cvs De hoofdbroncode van &os;, inclusief de cryptografische code. src-base release=cvs Verschillende bestanden bovenin de /usr/src structuur. src-bin release=cvs Gebruikersprogramma's die wellicht nodig zijn in single-user modus (/usr/src/bin). src-contrib release=cvs Programma's en bibliotheken van buiten het &os; project die vrijwel ongewijzigd gebruikt worden (/usr/src/contrib). src-crypto release=cvs Cryptografische programma's en bibliotheken van buiten het &os; project, die vrijwel ongewijzigd worden gebruikt (/usr/src/crypto). src-eBones release=cvs Kerberos en DES (/usr/src/eBones). Niet gebruikt in recente uitgaves van &os;. src-etc release=cvs Bestanden met systeeminstellingen (/usr/src/etc). src-games release=cvs Spelletjes (/usr/src/games). src-gnu release=cvs Programma's die onder de GNU Public License vallen (/usr/src/gnu). src-include release=cvs Headerbestanden (/usr/src/include). src-kerberos5 release=cvs Kerberos5 beveiligingspakket (/usr/src/kerberos5). src-kerberosIV release=cvs KerberosIV beveiligingspakket (/usr/src/kerberosIV). src-lib release=cvs Bibliotheken (/usr/src/lib). src-libexec release=cvs Systeemprogramma's die meestal door andere programma's worden uitgevoerd (/usr/src/libexec). src-release release=cvs Bestanden die nodig zijn voor het maken van een &os; release (/usr/src/release). src-sbin release=cvs Systeemprogramma's voor single-user modus (/usr/src/sbin). src-secure release=cvs Cryptografische bibliotheken en commando's (/usr/src/secure). src-share release=cvs Bestanden die tussen meerdere systemen gedeeld kunnen worden (/usr/src/share). src-sys release=cvs De kernel (/usr/src/sys). src-sys-crypto release=cvs Cryptografische kernelcode (/usr/src/sys/crypto). src-tools release=cvs Verschillende hulpprogramma's voor het onderhoud van &os; (/usr/src/tools). src-usrbin release=cvs Gebruikersprogramma's (/usr/src/usr.bin). src-usrsbin release=cvs Systeemprogramma's (/usr/src/usr.sbin). www release=cvs De broncode voor de &os; website. distrib release=self De instellingenbestanden van de CVSup server zelf. Gebruikt door de CVSup mirrorsites. gnats release=current De GNATS bug-tracking database. mail-archive release=current &os; mailinglijstarchief. www release=current De voorbewerkte &os; websitebestanden (niet de broncode). Gebruikt door WWW mirrorsites. Voor meer informatie De CVSup FAQ en andere informatie over CVSup is te vinden op De CVSup Homepage. De meeste &os;–gerelateerde discussie over CVSup vindt plaats op de &a.hackers;. Daar worden nieuwe versies van de software aangekondigd, net als op de &a.announce;. Vragen en foutrapporten kunnen gericht worden aan de auteur van het programma op cvsup-bugs@polstra.com. CVSup sites CVSup servers voor &os; draaien op de onderstaande sites. Het overige deel van deze paragraaf wordt automatisch samengesteld en is daarom niet vertaald. &chap.mirrors.cvsup.inc; Portsnap gebruiken Introductie Portsnap is een systeem voor het veilig distribueren van de &os; portsstructuur. Er wordt ongeveer eens per uur een snapshot van de portsstructuur gemaakt en dat wordt cryptografisch getekend. De resulterende bestanden worden daarna gedistribueerd via HTTP. Net als CVSup gebruikt - portsnap een + Portsnap een pull-model voor het bijwerken: de voorverpakte en getekende portsstructuren worden op een webserver geplaatst die passief wacht op verzoeken om bestanden door clients. Gebruikers dienen ofwel handmatig - portsnap te draaien om de updates op - te halen ofwel een taak in cron in te - stellen om de updates regelmatig automatisch op te laten - halen. + &man.portsnap.8; te draaien om de updates op te halen ofwel een + taak in &man.cron.8; in te stellen om de updates regelmatig + automatisch op te laten halen. Om technische redenen werkt - portsnap de portsstructuur in + Portsnap de portsstructuur in /usr/ports/ niet direct live bij. In plaats daarvan werkt het met een gecomprimeerde kopie van de portsstructuur die standaard in /var/db/portsnap/ staat. Deze gecomprimeerde kopie wordt daarna gebruikt om de eigenlijke portsstructuur bij te werken. - Als portsnap is + Als Portsnap is geïnstalleerd uit de &os; Portscollectie, dan is de standaardlocatie voor het gecomprimeerde snapshot /usr/local/portsnap/ in plaats van /var/db/portsnap/. Installatie In &os; 6.0 en nieuwere versies, is - portsnap onderdeel van het &os; + Portsnap onderdeel van het &os; basissysteem. In oudere versies van &os; kan het geïnstalleerd worden met de port sysutils/portsnap. Portsnap instellen De werking van Portsnap wordt bepaald door het instellingenbestand /etc/portsnap.conf. Voor de meeste gebruikers voldoen de standaard instellingen. Meer details staan in de handboekpagina van &man.portsnap.conf.5;. - Als portsnap is + Als Portsnap is geïnstalleerd uit de Portscollectie, dan wordt als instellingenbestand /usr/local/etc/portsnap.conf gebruikt in plaats van /etc/portsnap.conf. Dit instellingenbestand wordt niet gemaakt als de port wordt geïnstalleerd, maar er wordt een voorbeeldbestand gedistribueerd. Voer het volgende commando uit om dit bestand juist te plaatsen: &prompt.root; cd /usr/local/etc && cp portsnap.conf.sample portsnap.conf <application>Portsnap</application> voor de eerste keer draaien - De eerste keer dat portsnap - wordt gedraaid, moet het een gecomprimeerde snapshot van de - complete portsstructuur downloaden naar - /var/db/portsnap/ (of + De eerste keer dat &man.portsnap.8; wordt gedraaid, moet + het een gecomprimeerde snapshot van de complete portsstructuur + downloaden naar /var/db/portsnap/ (of /usr/local/portsnap/ als - portsnap geïnstalleerd is uit + Portsnap geïnstalleerd is uit de Portscollectie). Dit is een download van ongeveer 36 MB. &prompt.root; portsnap fetch Als het gecomprimeerde snapshot is gedownload, dan kan een live kopie van de portsstructuur uitgepakt worden naar /usr/ports/. Dit moet gebeuren, zelfs als er al een portsstructuur bestaat in die map (bijvoorbeeld door gebruik van CVSup), omdat hiermee een - uitgangspunt wordt gemaakt dat - portsnap gebruikt om later te - bepalen welke delen van de portsstructuur bijgewerkt moeten - worden. + uitgangspunt wordt gemaakt dat portsnap + gebruikt om later te bepalen welke delen van de portsstructuur + bijgewerkt moeten worden. + + + In de standaard installatie wordt /usr/ports niet aangemaakt. + Maak deze map aan alvorens + portsnap te gebruiken: + + &prompt.root; mkdir /usr/ports + &prompt.root; portsnap extract Portsstructuur bijwerken Nadat een eerste gecomprimeerd snapshot van de portsstructuur is gedownload en uitgepakt in /usr/ports/, bestaat het bijwerken van de portsstructuur uit twee stappen: het ophalen van de gecomprimeerde updates voor het snapshot (fetch) en die gebruiken om de live portsstructuur bij te werken (update). - Deze twee stappen kunnen door - portsnap in een enkel commando - worden uitgevoerd: + Deze twee stappen kunnen door portsnap in + een enkel commando worden uitgevoerd: &prompt.root; portsnap fetch update - Sommige oudere versies van - portsnap ondersteunen deze - syntaxis niet. Als het bovenstaande niet werkt, probeer - dan het volgende: + Sommige oudere versies van portsnap + ondersteunen deze syntaxis niet. Als het bovenstaande niet + werkt, probeer dan het volgende: &prompt.root; portsnap fetch &prompt.root; portsnap update Portsnap draaien vanuit cron Om het probleem dat hordes gebruikers inhameren op de - servers voor portsnap te voorkomen, + servers voor Portsnap te voorkomen, draait portsnap fetch niet vanuit een - cron-opdracht. In plaats daarvan is het - commando portsnap cron beschikbaar, dat - een willekeurige periode wacht, tot 3600 seconden, voordat de + &man.cron.8;-opdracht. In plaats daarvan is het commando + portsnap cron beschikbaar, dat een + willekeurige periode wacht, tot 3600 seconden, voordat de updates worden opgehaald. Daarnaast wordt het sterk aangeraden om portsnap update niet vanuit de cron te draaien, omdat er grote problemen te verwachten zijn als dit commando op hetzelfde moment draait als waarop een port wordt gebouwd of geïnstalleerd. Het is wel veilig om de INDEX-bestanden voor de ports bij te werken en dit kan gedaan worden door de vlag mee te - geven aan portsnap. Natuurlijk is - het op een later moment nodig om, als portsnap -I + geven aan portsnap. Natuurlijk is het op + een later moment nodig om, als portsnap -I update draait vanuit de cron, portsnap update te draaien zonder de vlag om de rest van de structuur bij te werken. Door de volgende regel toe te voegen aan /etc/crontab werkt - portsnap zijn gecomprimeerde + Portsnap zijn gecomprimeerde snapshot bij, worden de INDEX-bestanden in /usr/ports/ bijgewerkt en wordt er een e-mail verzonden als er ports zijn die bijgewerkt moeten worden: - 0 3 * * * root portsnap -I cron update && pkg_version -vIL= + 0 3 * * * root portsnap -I cron update && pkg_version -vIL= Als een systeemklok niet is ingesteld op de lokale - tijdzone, vervang 3 dan door een + tijdzone, vervang 3 dan door een willekeurige waarde tussen 0 en 23 om de belasting op de - servers voor portsnap zo + servers voor Portsnap zo evenwichtig mogelijk te verdelen. Sommige oudere versie van - portsnap bieden geen ondersteuning - voor het opgeven van meerdere commando's, zoals bijvoorbeeld + portsnap bieden geen ondersteuning voor + het opgeven van meerdere commando's, zoals bijvoorbeeld cron update, in dezelde aanroep van portsnap. Als de regel hierboven faalt, probeer portsnap -I cron update dan te vervangen door portsnap cron && portsnap -I update. CVS labels Bij het ophalen of bijwerken van broncode met cvs of CVSup moet een revisielabel meegegeven worden. Een revisielabel refereert aan een specifieke lijn in de &os; ontwikkeling of aan een specifiek moment in de tijd. Het eerste type heet taklabel (branch tag) en het tweede type heet releaselabel (release tag). Taklabels Deze zijn, met uitzondering van HEAD (dat altijd een geldig label is), alleen van toepassing op de src/ structuur. De ports/, doc/ en www/ structuren kennen geen takken. HEAD Symbolische naam voor de hoofdlijn van &os;-CURRENT. Ook de standaard als geen revisie is aangegeven. In CVSup wordt dit label aangegeven met een . (dat is dus geen interpunctie, maar een echt . karakter). In CVS is dit de standaard als er geen revisietabel is aangegeven. Het is meestal geen goed idee om een checkout of update van CURRENT broncode op een STABLE machine te doen, tenzij dat expliciet de bedoeling is. RELENG_6 De ontwikkellijn voor &os;-6.X, ook bekend als &os; 6-STABLE. + + RELENG_6_0 + + + De releasetak voor &os;-6.0, alleen gebruikt voor + beveiligingswaarschuwingen en andere kritische + aanpassingen. + + + RELENG_5 De ontwikkellijn voor &os;-5.X, ook bekend als &os; 5-STABLE. RELENG_5_4 De releasetak voor &os;-5.4, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_5_3 De releasetak voor &os;-5.3, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_5_2 De releasetak voor &os;-5.2 en &os;-5.2.1, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_5_1 De releasetak voor &os;-5.1, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_5_0 De releasetak voor &os;-5.0, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4 De ontwikkellijn voor &os;-4.X, ook bekend als &os; 4-STABLE. RELENG_4_11 De releasetak voor &os;-4.11, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_10 De releasetak voor &os;-4.10, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_9 De releasetak voor &os;-4.9, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_8 De releasetak voor &os;-4.8, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_7 De releasetak voor &os;-4.7, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_6 De releasetak voor &os;-4.6 en &os;-4.6.2, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_5 De releasetak voor &os;-4.5, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_4 De releasetak voor &os;-4.4, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_4_3 De releasetak voor &os;-4.3, alleen gebruikt voor beveiligingswaarschuwingen en andere kritische aanpassingen. RELENG_3 De ontwikkellijn voor &os;-3.X, ook bekend als 3.X-STABLE. RELENG_2_2 De ontwikkellijn voor &os;-2.2.X, ook bekend als 2.2-STABLE. Deze tak is sterk verouderd. Releaselabels Deze labels refereren aan een specifiek moment in de tijd waarop een versie van &os; is uitgegeven. Het proces om tot een release te komen is gedetailleerder beschreven in de Release Engineering Informatie en Release Proces documenten. De src structuur gebruikt labelnamen die beginnen met RELENG_ labels. De ports en doc structuren gebruiken labels waarvan de naam begint met het label RELEASE. De www tenslotte, is niet gemarkeerd met een bijzondere naam bij releases. RELENG_5_4_0_RELEASE &os; 5.4 RELENG_4_11_0_RELEASE FreeBSD 4.11 RELENG_5_3_0_RELEASE &os; 5.3 RELENG_4_10_0_RELEASE &os; 4.10 RELENG_5_2_1_RELEASE &os; 5.2.1 RELENG_5_2_0_RELEASE &os; 5.2 RELENG_4_9_0_RELEASE &os; 4.9 RELENG_5_1_0_RELEASE &os; 5.1 RELENG_4_8_0_RELEASE &os; 4.8 RELENG_5_0_0_RELEASE &os; 5.0 RELENG_4_7_0_RELEASE &os; 4.7 RELENG_4_6_2_RELEASE &os; 4.6.2 RELENG_4_6_1_RELEASE &os; 4.6.1 RELENG_4_6_0_RELEASE &os; 4.6 RELENG_4_5_0_RELEASE &os; 4.5 RELENG_4_4_0_RELEASE &os; 4.4 RELENG_4_3_0_RELEASE &os; 4.3 RELENG_4_2_0_RELEASE &os; 4.2 RELENG_4_1_1_RELEASE &os; 4.1.1 RELENG_4_1_0_RELEASE &os; 4.1 RELENG_4_0_0_RELEASE &os; 4.0 RELENG_3_5_0_RELEASE &os;-3.5 RELENG_3_4_0_RELEASE &os;-3.4 RELENG_3_3_0_RELEASE &os;-3.3 RELENG_3_2_0_RELEASE &os;-3.2 RELENG_3_1_0_RELEASE &os;-3.1 RELENG_3_0_0_RELEASE &os;-3.0 RELENG_2_2_8_RELEASE &os;-2.2.8 RELENG_2_2_7_RELEASE &os;-2.2.7 RELENG_2_2_6_RELEASE &os;-2.2.6 RELENG_2_2_5_RELEASE &os;-2.2.5 RELENG_2_2_2_RELEASE &os;-2.2.2 RELENG_2_2_1_RELEASE &os;-2.2.1 RELENG_2_2_0_RELEASE &os;-2.2.0 AFS sites Er draaien AFS servers voor &os; op de volgende sites: Sweden The path to the files are: /afs/stacken.kth.se/ftp/pub/FreeBSD/ stacken.kth.se # Stacken Computer Club, KTH, Sweden 130.237.234.43 #hot.stacken.kth.se 130.237.237.230 #fishburger.stacken.kth.se 130.237.234.3 #milko.stacken.kth.se Beheerder: ftp@stacken.kth.se rsync sites De volgende sites bieden &os; aan via het protocol rsync. Het programma rsync werkt vrijwel hetzelfde als &man.rcp.1;, maar kent meer mogelijkheden en gebruikt het rsync remote-update protocol, dat alleen verschillen tussen twee groepen bestanden overbrengt, waardoor het synchroniseren via een netwerk drastisch wordt versneld. Dit kan het beste gedaan worden als er een mirrorsite voor de &os; FTP server of het &os; CVS depot draait. De rsync suite is voor veel besturingssystemen beschikbaar. Voor &os; kan het package of de port uit net/rsync geïnstalleerd worden. Tschechische Republiek rsync://ftp.cz.FreeBSD.org/ Beschikbare collecties: ftp: een gedeeltelijke mirror van de &os; FTP server. &os;: een volledige mirror van de &os; FTP server. Duitsland rsync://grappa.unix-ag.uni-kl.de/ Beschikbare collecties: freebsd-cvs: het volledige &os; CVS depot. Deze machine mirrort onder andere ook de CVS depots voor de NetBSD en OpenBSD projecten. Nederland rsync://ftp.nl.FreeBSD.org/ Beschikbare collecties: vol/4/freebsd-core: een volledige mirror van de &os; FTP server. Verenigd Koninkrijk rsync://rsync.mirror.ac.uk/ Beschikbare collecties: ftp.FreeBSD.org: een volledige mirror van de &os; FTP server. Verenigde Staten rsync://ftp-master.FreeBSD.org/ Deze server mag alleen gebruikt worden door &os; primaire mirrorsites. Beschikbare collecties: &os;: het masterarchief van de &os; FTP server. acl: de &os; master ACL lijst. rsync://ftp13.FreeBSD.org/ Beschikbare collecties: &os;: een volledige mirror van de &os; FTP server.
diff --git a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml index f12d90353b..cd591e192c 100644 --- a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml @@ -1,2061 +1,2052 @@ 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 uit te vinden welk struurprogramma na het laden van het metastuurprogramma snd_driver wordt geladen kan de inhoud van het bestand /dev/sndstat nagekeken worden met cat /dev/sndstat. 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; samen met snd_sb16(4) en dient de volgende regel toegevoegd te worden aan het bestand met kernelinstellingen: device snd_sbc device snd_sb16 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. Het aantal virtuele kanalen voor een apparaat kan niet gewijzigd worden als het in gebruik is. Sluit eerst alle programma's die het apparaat gebruiken, zoals muziekspelers of geluidsdaemons. 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-RELEASE en later. 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) cd-rom 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 CD 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 CPU_ENABLE_SSE kernelopties 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: + kernelopties nodig om correct gebouwd te worden. Voeg de + onderstaande instelling toe aan het bestand met + kernelinstellingen, bouw en installeer daarna de kernel en + herstart het systeem: - option CPU_ENABLE_SSE -option USER_LDT + option CPU_ENABLE_SSE - option USER_LDT bestaat niet in - &os; 5.X. + In &os; 4.X dient option USER_LDT + toegevoegd te worden aan het bestand met kernelinstellingen. + In &os; 5.X en later bestaat deze optie niet. 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 + hercoderen van video- en audiobestanden. 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 + Tijdens het bouwen van de port multimedia/transcode kan een + groot aantal opties opgegeven worden en de volgende + commandoregel wordt geadviseerd om + transcode te bouwen: - Als ook multimedia/avifile wordt - geïnstalleerd, dan dient WITH_AVIFILE - aan de make commandoregel te worden - toegevoegd: + &prompt.root; make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ +WITH_MJPEG=yes -DWITH_XVID=yes - &prompt.root; make WITH_AVIFILE=yes WITH_LIBMPEG2=yes + De geadviseerde instellingen zijn toereikend voor de + meeste gebruikers. - 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. + Om de mogelijkheden van transcode te + illustreren volgt nu een voorbeeld van hoe een DivX-bestand + om te zetten in een PAL MPEG-1-bestand (PAL VCD): - &prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \ --y opendivx -N 0x55 -o output.avi + &prompt.user; transcode -i input.avi -V --export_prof vcd-pal -o output_vcd +&prompt.user; mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa - &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 + Het resulterende MPEG-bestand, + output_vcd.mpg, is klaar om afgespeeld + te worden met MPlayer. Het kan + ook op een CD-R gebrand worden om er een Video CD mee te + maken. In dat geval is het nodig om de programma's multimedia/vcdimager en sysutils/cdrdao te + installeren. 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. + maar kijk ook op transcode + wiki voor meer informatie en voorbeelden. 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 016536ad27..7487b6bc77 100644 --- a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml @@ -1,5611 +1,5611 @@ Murray Stokely Gereorganiseerd door Siebrand Mazeland Vertaald door Netwerkdiensten 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 schijfruimte 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, cd-rom 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 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 cd-rom 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;, &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 TCP Wrapper van Wietse Venema. Daardoor kan een beheerder de instellingenbestanden van TCP Wrapper 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 TCP Wrapper 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 gebruikers 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; versies eerder dan 6.0 gebruiken de ISC (Internet Software Consortium) DHCP client (&man.dhclient.8;) implementatie. Latere versies gebruiken de OpenBSD dhclient die uit OpenBSD 3.7 komt. Alle informatie over dhclient kan zowel voor de ISC als de OpenBSD DHCP client gebruikt worden. De DHCP server zit bij de ISC distributie. Wat behandeld wordt In dit onderdeel worden de clientcomponenten van de ISC en OpenBSD DHCP client en de 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 OpenBSD of ISC DHCP client dhclient volledig (afhankelijk van de gebruikte &os; versie). 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 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. Versies van &os; 5.3 en later bevatten BIND9 en aanwijzingen voor het instellen daarvan zijn later in dit hoofdstuk te vinden. Gebruikers van &os; 5.2 en eerdere versies kunnen BIND9 installeren vanuit de port net/bind9. 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/master/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"; }; // 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 &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 logboekbestanden 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 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 "." 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 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 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 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: &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. Het instellen van een vals versienummer beschermt een server niet tegen exploits. Alleen het bijwerken naar een versie die niet kwetsbaar is beschermt een server. Er kan een valse versiestring ingesteld 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 webservers opzetten 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. 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. Tom Rhodes Geschreven door PHP PHP In de afgelopen jaren hebben steeds meer bedrijven zich op Internet gericht om hun omzet te verhogen en hun zichtbaarheid te vergroten. Hiermee is ook de behoefte aan interactieve webcontent toegenomen. Hoewel sommige bedrijven zoals µsoft; oplossingen hebben geïntroduceerd voor hun eigen (proprietary) producten, heeft ook de open source gemeenschap een antwoord op de vraag gegeven. Een van die antwoorden, breed ingezet, heet PHP. PHP, ook bekend als Hypertext Preprocessor, is een algemene scripttaal die bijzonder geschikt is voor webontwikkeling. Het is mogelijk de taal in te bedden in HTML en de syntaxis is afgeleid van C, &java; en Perl met de bedoeling webontwikkelaars in staat te stellen en dynamisch samengestelde pagina's te schrijven. Om aan de Apache webserver ondersteuning voor PHP5 toe te voegen kan eerst de port www/mod_php5 toegevoegd worden. Hiermee worden de modules die nodig zijn voor de ondersteuning van dynamische webapplicaties geïnstalleerd en ingesteld. De volgende regels dienen in /usr/local/etc/apache/httpd.conf te staan: LoadModule php5_module libexec/apache/libphp5.so AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> Na afronding dient eenvoudigweg apache herstart te worden met apachectl: &prompt.root; apachectl graceful De ondersteuning voor PHP in &os; is extreem modulair. Als ondersteuning voor een bepaalde extensie gewenst is, hoeft een beheerder alleen maar de bewust port te installeren en Apache te herstarten zoals hierboven is aangegeven. Om bijvoorbeeld ondersteuning voor de MySQL databaseserver aan PHP5 toe te voegen kan gewoonweg de port databases/php5-mysql geïnstalleerd worden en het volgende commando gegeven worden: &prompt.root; apachectl graceful Hiermee wordt de MySQL ondersteuning in Apache ingeschakeld. Murray Stokely Geschreven door File Transfer Protocol (FTP) 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. FTP anoniem 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 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 FTP anoniem 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 fileserver Windows clients printserver 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 895057291d..53025e1e31 100644 --- a/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/pgpkeys/chapter.sgml @@ -1,1036 +1,1036 @@ PGP sleutels 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. Beambten &a.security-officer; &pgpkey.security-officer; &a.core-secretary; &pgpkey.core-secretary; + + + &a.portmgr-secretary; + &pgpkey.portmgr-secretary; + Leden Kernteam &a.jhb; &pgpkey.jhb; &a.kuriyama; &pgpkey.kuriyama; &a.imp; &pgpkey.imp; &a.wes; &pgpkey.wes; &a.murray; &pgpkey.murray; &a.peter; &pgpkey.peter; Ontwikkelaars &a.ariff; &pgpkey.ariff; &a.will; &pgpkey.will; &a.anholt; &pgpkey.anholt; &a.mat; &pgpkey.mat; &a.asami; &pgpkey.asami; &a.barner; &pgpkey.barner; &a.dougb; &pgpkey.dougb; &a.bvs; &pgpkey.bvs; &a.tobez; &pgpkey.tobez; &a.damien; &pgpkey.damien; + + &a.tdb; + &pgpkey.tdb; + + &a.mbr; &pgpkey.mbr; &a.novel; &pgpkey.novel; &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.oleg; + &pgpkey.oleg; + + &a.jcamou; &pgpkey.jcamou; &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.aaron; &pgpkey.aaron; &a.ceri; &pgpkey.ceri; &a.brd; &pgpkey.brd; &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.bruno; &pgpkey.bruno; &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.mnag; &pgpkey.mnag; &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.jkim; &pgpkey.jkim; &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.lawrance; &pgpkey.lawrance; &a.leeym; &pgpkey.leeym; &a.sam; &pgpkey.sam; &a.jylefort; &pgpkey.jylefort; &a.netchild; &pgpkey.netchild; &a.lesi; &pgpkey.lesi; &a.glewis; &pgpkey.glewis; &a.delphij; &pgpkey.delphij; &a.avatar; &pgpkey.avatar; &a.ijliao; &pgpkey.ijliao; &a.clive; &pgpkey.clive; &a.clsung; &pgpkey.clsung; &a.arved; &pgpkey.arved; &a.remko; &pgpkey.remko; &a.scottl; &pgpkey.scottl; &a.pav; &pgpkey.pav; &a.bmah; &pgpkey.bmah; &a.mtm; &pgpkey.mtm; &a.dwmalone; &pgpkey.dwmalone; + + &a.sem; + &pgpkey.sem; + + &a.ehaupt; &pgpkey.ehaupt; &a.kwm; &pgpkey.kwm; &a.matusita; &pgpkey.matusita; &a.tmclaugh; &pgpkey.tmclaugh; &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.gerald; + &pgpkey.gerald; &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.rees; + &pgpkey.rees; + + &a.trhodes; &pgpkey.trhodes; &a.benno; &pgpkey.benno; - - &a.paul; - &pgpkey.paul; - - &a.roberto; &pgpkey.roberto; &a.rodrigc; &pgpkey.rodrigc; &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.nork; &pgpkey.nork; &a.vanilla; &pgpkey.vanilla; - - &a.cshumway; - &pgpkey.cshumway; - - &a.demon; &pgpkey.demon; &a.jesper; &pgpkey.jesper; &a.scop; &pgpkey.scop; + + &a.anray; + &pgpkey.anray; + + &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.vsevolod; &pgpkey.vsevolod; &a.vs; &pgpkey.vs; &a.gsutter; &pgpkey.gsutter; &a.metal; &pgpkey.metal; &a.garys; &pgpkey.garys; &a.nyan; &pgpkey.nyan; &a.mi; &pgpkey.mi; &a.gordon; &pgpkey.gordon; &a.lth; &pgpkey.lth; &a.thierry; &pgpkey.thierry; &a.thompsa; &pgpkey.thompsa; &a.flz; &pgpkey.flz; - - &a.viny; - &pgpkey.viny; - - &a.ume; &pgpkey.ume; &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.emax; + &pgpkey.emax; + + &a.bz; &pgpkey.bz; &a.phantom; &pgpkey.phantom; diff --git a/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml index e6d476d0e4..5c3dfb4b4c 100644 --- a/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/printing/chapter.sgml @@ -1,409 +1,5441 @@ Sean Kelly - Bijgedragen door + Bijdrage van - Jim Mock - Herstructureerd en geupdate door - + Geherstructureerd en bijgewerkt door Lodewijk Koopman Vertaald door - - * Printen + + Afdrukken - * Samenvatting + Overzicht + + wachtrijsysteem LPD + + afdrukken + + &os; kan gebruikt worden om op een scala aan printers af te + drukken, van de oudste matrixprinter tot de nieuwste + laserprinters en alles er tussenin, waardoor op hoge kwaliteit + afgedrukt kan worden vanuit de gebruikte programma's. + + &os; kan ook ingesteld worden als printserver in een netwerk. + Dan kan &os; afdrukopdrachten ontvangen van uiteenlopende + computers, waaronder &os;, &windows; en &macos; hosts. &os; + zorgt ervoor dat er één afdrukopdracht per keer + wordt afgedrukt, houdt statistieken bij van gebruikers en + computers die de meeste afdrukken maken, drukt + voorbladen af, zodat duidelijk is van wie de + afdruk is en nog veel meer. + + Na het lezen van dit hoofdstuk weet de lezer: + + + + Hoe het &os; afdrukwachtrijsysteem moet worden + ingesteld; + + + + Hoe afdrukfilters kunnen worden geïnstalleerd, om + bepaalde afdrukopdrachten op een andere manier af te + handelen, zoals het omzetten van documenten naar formaten die + een printer begrijpt; + - + + Hoe voorbladen kunnen worden afgedrukt; + + + + Hoe er op printers die op andere computers zijn + aangesloten kan worden afgedrukt; + + + + Hoe er op printers die direct op het netwerk zijn + aangesloten kan worden afgedrukt; + + + + Hoe afdrukbeperkingen kunnen worden opgelegd, zoals het + beperken van de grootte van de afdrukopdracht, en bepaalde + gebruikers verbieden af te drukken; + + + + Hoe afdrukstatistieken kunnen worden bijgehouden en het + printergebruik in de gaten kan worden gehouden; + + + + Hoe problemen met afdrukken kunnen worden + opgelost. + + + + Aangeraden voorkennis: + + + + Hoe een nieuwe kernel wordt ingesteld, gebouwd en + geïnstalleerd (). + + - * Inleiding + Inleiding + + Om printers onder &os; te kunnen gebruiken moeten ze + kunnen werken met het Berkeley line afdrukwachtrijsysteem, ook + wel bekend als het wachtrijsysteem + LPD. Dit is het standaard + afdruksysteem onder &os;. Dit hoofdstuk introduceert het + wachtrijsysteem LPD, vaak simpelweg + LPD genoemd en begeleidt bij het + instellen. + + Als de gebruiker al bekend is met + LPD of een ander + afdrukwachtrijsysteem, dan kan verder worden lezen vanaf Standaardinstallatie. + + LPD regelt alles met betrekking + tot de printer van een host. Het is verantwoordelijk voor een + aantal zaken: + + + + Het regelt de toegang tot aangesloten printers en + printers die op andere hosts op het netwerk zijn + aangesloten; + + + afdrukopdrachten + + + Het geeft gebruikers de mogelijkheid bestanden aan te + bieden die afgedrukt moeten worden; deze aangeboden bestanden + worden afdrukopdrachten genoemd; + + + + Het voorkomt dat gebruikers tegelijkertijd een printer + benaderen door een wachtrij bij te + houden voor elke printer; + + + + Het kan voorbladen afdukken (in het + Engels ook wel bekend als banner, of + burst pagina's) zodat gebruikers hun + afdruk tussen andere afdrukken makkelijk terug kunnen + vinden; + + + + Het handelt de communicatie af voor printers die op een + seriële poort zijn aangesloten; + + + + Het kan afdrukopdrachten over een netwerk versturen naar + een LPD wachtrij op een andere + host; + + + + Het kan speciale filters aanroepen die afdrukopdrachten + converteren voor verschillende printertalen of + afdrukmogelijkheden; + + + + Het houdt statistieken bij van het printergebruik. + + + + Middels een instellingenbestand + (/etc/printcap) en door speciale filters + beschikbaar te stellen, kan het LPD + systeem alle, of enkele van bovenstaande taken uitvoeren + op een grote verscheidenheid aan afdrukhardware. - * Waarom je het wachtrijsysteem zou moeten - gebruiken + Waarom het wachtrijsysteem gebruikt zou moet + worden + + Als er maar één gebruiker is op een systeem, + staat terecht ter discussie waarom het wachtrijsysteem nodig is + als toegangscontrole, voorbladen en printerstatistieken niet + nodig zijn. Hoewel directe toegang tot de printer is in te + stellen, is het raadzaam het wachtrijsysteem toch te + gebruiken, omdat: + + + + LPD afdrukopdrachten in de + achtergrond afhandelt. Dan is het niet nodig te wachten + tot de gegevens naar de printer zijn verzonden; + + + &tex; + + + LPD op eenvoudige wijze een + afdrukopdracht door een filter kan afdrukken om kopteksten + met datum/tijd toe te voegen of een speciaal + bestandsformaat (zoals een &tex; DVI bestand) om te zetten + naar een formaat dat de printer begrijpt. Deze handelingen + hoeven dan niet handmatig uitgevoerd te worden; + - + + Veel gratis en commerciële software met een + afdrukfunctie verwacht dat er een wachtrijsysteem aanwezig + is op een systeem om afdrukopdrachten naar te sturen. Door + een wachtrijsysteem op te zetten, wordt toekomstig te + installeren of reeds geïstalleerde software op + eenvoudige wijze ondersteund. + + - * Standaard opzet + Standaardinstallatie + + Om printers met het LPD + wachtrijsysteem te kunnen gebruiken, dienen zowel de + printerhardware als de LPD software + geïnstalleerd te worden. Dit document beschrijft deze + installatie in twee stappen: + + + + In het onderdeel Eenvoudige + printerinstallatie staat hoe een printer moet worden + aangesloten, hoe LPD er mee kan + communiceren en hoe tekstbestanden afgedrukt kunnen + worden. + + + + In Geavanceerde + printerinstallatie staat beschreven hoe een scala + aan bestandsformaten afgedrukt kan worden, hoe voorbladen + kunnen worden afgedrukt en hoe statistieken van de printer + kunnen worden bijgehouden. + + - * Eenvoudige printer opzet + Eenvoudige printerinstallatie + + Nu wordt toegelicht hoe de printerhardware en de + LPD software ingesteld moeten worden + om een printer te kunnen gebruiken. Het behandelt de + basis: + + + + Hardware-instelling + geeft een aantal aanwijzingen voor het aansluiten van een + printer op een poort van een computer. + + + + Software-instellingen + toont hoe het instellingenbestand + (/etc/printcap) voor het + LPD-systeem moet worden + opgezet. + + + + Hoe een printer geïnstalleerd moet worden die via een + netwerkprotocol gegevens ontvangt, in plaats van een + seriële of parallelle poort, staat in Printers met + netwerkinterfaces. + + Hoewel dit onderdeel Eenvoudige + printerinstallatie heet, is het redelijk complex. De + printer met de computer en het + LPD-systeem laten samenwerken is het + moeilijkste. De geavanceerde opties, zoals voorbladen en + statistieken, zijn relatief makkelijk als de printer eenmaal + werkt. - * Hardware Setup + Hardware-instelling + + Hier worden de verschillende manieren waarop een printer + op een computer kan worden aangesloten beschreven. Het + bespreekt de soorten poorten en kabels en de + kernelinstellingen die nodig kunnen zijn om &os; met een + printer te laten communiceren. + + Als een printer al is aangesloten en succesvol is + gebruikt onder een ander besturingssysteem, dan kan + waarschijnlijk verder gelezen worden in Software-instellingen. - * Poorten en kabels + Poorten en kabels + + De printers die tegenwoordig voor PC's verkocht worden + hebben eigenlijk altijd een van de volgende drie + poorten: + + + + printers + + serieel + + + + Seriële poort, ook + bekend als RS-232 of COM poorten, gebruiken een + seriële poort op een computer om gegevens naar een + printer te sturen. Seriële poorten zijn heel + gebruikelijk in de computerindustrie en kabels zijn + eenvoudig verkrijgbaar en makkelijk te maken. + Seriële poorten hebben soms speciale kabels + nodig en vereisen soms het instellen van ingewikkelde + communicatieparameters. De meeste seriële poorten + hebben een maximale doorvoersnelheid van + 115.200 bps waardoor het afdrukken van grote + grafische afdrukopdrachten erg onpraktisch + wordt. + + + + printers + + parallel + - + + Parallelle poorten + gebruiken een parallelle poort op een computer om + gegevens naar een printer te sturen. Parallelle + poorten zijn gebruikelijk in de PC-markt en zijn + sneller dan RS-232 serieel. Kabels zijn goed + verkrijgbaar, maar moeilijker handmatig te + vervaardigen. Meestal zijn er geen + communicatieparameters bij parallelle poorten, wat het + instellen erg eenvoudig maakt. + + + centronics + + parallelle printers + + + Parallelle poorten staan ook wel bekend als + Centronics poorten, genoemd naar het + soort aansluiting op de printer. + + + + printers + + USB + + + + USB poorten, genoemd naar de Universal Serial + Bus, kunnen zelfs op nog hogere snelheid werken dan + parallelle of RS-232 seriële poorten. De + kabels zijn eenvoudig en goedkoop. USB is voor + afdrukken superieur aan RS-232 Serieel en Parallel, + maar wordt op &unix;-systemen niet altijd goed + ondersteund. Een van de manieren om dit te omzeilen is + de aanschaf van een printer met zowel een USB als een + parallelle poort, zoals veel printers die + hebben. + + + Over het algemeen kunnen parallelle poorten + meestal in één richting communiceren (van + computer naar printer), terwijl seriële en USB + poorten in twee richtingen kunnen communiceren. + Nieuwere parallelle poorten (EPP en ECP) en printers kunnen + onder &os; in beide richtingen communiceren, mits een + IEEE-1284 gekeurde kabel wordt gebruikt. + + &postscript; + + Tweewegcommunicatie met een printer over een + parallelle poort verloopt meestal op een van de volgende + twee manieren. De eerste manier is door gebruik te maken + van een op maat gemaakt stuurprogramma voor &os; dat de + taal spreekt die door de printer wordt gebruikt. Dit geldt + meestal voor inkjet printers en er kan dan gebruikt gemaakt + worden van rapportagemogelijkheden over bijvoorbeeld + inktniveau's en andere statusinformatie. De tweede methode + wordt gebruikt als een printer &postscript; + ondersteunt. + + &postscript;-taken zijn eigenlijk programma's die + naar de printer worden gestuurd. Het hoeft zelfs niet in + een afdruk te resulteren; het resultaat van de opdracht kan + direct weer naar de computer worden gestuurd. &postscript; + gebruikt ook tweewegcommunicatie om een computer op de + hoogte te stellen van opgetreden fouten, zoals fouten in + het &postscript;-programma of vastgelopen papier. + Gebruikers kunnen dit soort informatie handig vinden. De + beste manier om bij een &postscript;-printer effectief bij + te houden wat het printergebruik is, vraagt om + tweewegcommunicatie: de printer wordt gevraagd om het + totaal aantal afgedrukt pagina's, de afdrukopdracht wordt + verzonden en vervolgens wordt nogmaals om het totaal aantal + afgedrukte pagina's gevraagd. Het verschil van deze + getallen geeft het aantal afgedrukte pagina's van de + afdrukopdracht van de betreffende gebruiker. - * Parallel poorten + Parallelle poorten - + Om een printer met een parallelle poort aan te + sluiten, moet een Centronics kabel de printer met de + computer verbinden. De instructies die geleverd zijn bij + de printer, de computer of beide, moeten voldoende zijn + om dit te verduidelijken. + + Onthoud op welke parallelle poort de printer is + aangesloten. De eerste parallelle poort heet onder &os; + ppc0, de tweede + ppc1, enzovoort. De benaming voor + de printer gaat analoog: /dev/lpt0 + voor de printer op de eerste parallelle poort + enzovoort. - * Seriële poorten + Seriële poorten + + Gebruik de juiste seriële kabel om een printer met + een seriële poort op een computer aan te sluiten. + De instructies die geleverd zijn bij de printer, de + computer of beide, moeten voldoende zijn om dit te + verduidelijken. + + Als onduidelijk is wat de juiste seriële + kabel is, kan een van onderstaande opties + geprobeerd worden: + + + + Een modemkabel verbindt elke + pin van de stekker aan het ene eind direct met de + corresponderende pin van de stekker aan het andere + eind. Dit type kabel heet ook wel een + DTE-naar-DCE-kabel. + + + null-modem kabel + + + Een null-modem kabel verbindt + enkele pinnetjes direct, verwisselt andere + (bijvoorbeeld van verstuur gegevens naar ontvang + gegevens) en sluit sommige draden kort in de stekker. + Dit type kabel heet ook wel een + DTE-to-DTE-kabel. + - + + Een + seriële printerkabel, nodig + bij sommige ongebruikelijke printers, is als een + null-modem kabel, maar stuurt sommige signalen naar hun + tegenhangers in plaats van ze intern kort te + sluiten. + + + + baud rate + + pariteit + + + flow-control protocol + + + Het is ook nodig de communicatieparameters voor de + printer in te stellen, meestal via het bedieningspaneel of + middels DIP-schakelaars op de printer. Selecteer de + hoogste bps (bits per seconde, soms + baud) die zowel door de computer als + de printer wordt ondersteund. Kies 7 of 8 data bits. + Geen, even of oneven pariteit en 1 of 2 stop bits. + Selecteer ook het flow-control protocol: ofwel geen, ofwel + XON/XOFF (ook bekend als in-band of + software) flow-control. Onthoud deze + instellingen voor de hier op volgende + software-instellingen. - * Software setup + Software-instellingen + + Nu wordt beschreven welke software-instellingen nodig + zijn om onder &os; af te drukken met behulp van het + wachtrijsysteem LPD. + + Een overzicht van de te doorlopen stappen: + + + + Maak, indien nodig, de kernel geschikt voor de poort + die door de printer wordt gebruikt. In Kernelinstellingen is + te lezen hoe dit gedaan kan worden. + + + + Stel de communicatievorm voor de parallelle poort in, + als gebruik wordt gemaakt van een parallelle printer. In + Communicatietype + instellen voor een parallelle poort staan de + details. + + + + Test of het besturingssysteem gegevens naar de + printer kan sturen. In Printercommunicatie + controleren staat een aantal suggesties. + + + + Stel LPD in voor de + printer door /etc/printcap aan te + passen. Dat wordt later in het hoofdstuk + beschreven. + + - * Kernel configuratie + Kernelinstellingen + + Het besturingssysteem is gecompileerd om met een + beperkte verzameling apparaten te kunnen werken. De + seriële en parallelle poorten zijn onderdeel van + deze verzameling. Daarom kan het nodig zijn om + ondersteuning voor een extra seriële of parallelle + poort toe te voegen als een kernel hier nog niet voor is + ingesteld. + + Om te achterhalen of een huidige kernel een + seriële poort ondersteunt: + + &prompt.root; grep sioN /var/run/dmesg.boot + + Hier is N het aantal + seriële poorten, beginnende bij nul. Als de uitvoer + op het volgende lijkt, dan wordt de poort door een kernel + ondersteund: + + sio2 at port 0x3e8-0x3ef irq 5 on isa +sio2: type 16550A + + Om te achterhalen of een kernel een parallelle + poort ondersteunt: - + &prompt.root; grep ppcN /var/run/dmesg.boot + + Hier is N het aantal + parallelle poorten beginnende bij nul. Als de uitvoer er + ongeveer als volgt uit ziet, dan wordt de poort door een + kernel ondersteund: + + ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 +ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode +ppc0: FIFO with 16/16/8 bytes threshold + + Het kan nodig zijn een kernel aan te passen om het + besturingssysteem in staat te stellen een parallelle of + seriële poort die voor een printer wordt gebruikt te + herkennen en te gebruiken. + + In het onderdeel over kernelinstellingen staat meer + informatie om ondersteuning voor een seriële poort toe + te voegen. Lees de betreffende en de + volgende sectie om ondersteuning voor een parallelle poort + toe te voegen. - * Het toevoegen van <filename>/dev</filename> bestanden - voor de poorten + Ingangen in <filename>/dev</filename> toevoegen voor + poorten + + + &os; 5.0 beschikt over het bestandssysteem + devfs dat automatisch apparaatnodes + creëert wanneer deze nodig zijn. Als een versie van + &os; wordt gebruikt die devfs aan heeft + staan, dan kan deze sectie overgeslagen worden. + + + Een kernel die communicatie via seriële of + parallelle poort ondersteund, is niet voldoende. Er is ook + een software-interface nodig waarover programma's gegevens + kunnen zenden en ontvangen. Dat is de functie van de + bestanden in de map /dev. + + Volg onderstaande stappen om een ingang in + /dev voor een poort toe te + voegen: + + + + Wordt root met &man.su.1;. Geef + het root-wachtwoord als daar om + wordt gevraagd. + + + + Ga naar de map /dev: + + &prompt.root; cd /dev + + + + Geef in: + + &prompt.root; ./MAKEDEV poort + + Hier is poort de + apparaatingang voor de poort die wordt aangemaakt. + Gebruik lpt0 voor de printer op de + eerste parallelle poort, lpt1 voor de + printer op de tweede poort, enzovoort. Gebruik + ttyd0 voor de eerste seriële + poort, ttyd1 voor de tweede, + enzovoort. + + + + Voer het volgende commando uit om vast te stellen of + de apparaatingang is aangemaakt: + + &prompt.root; ls -l poort + + + - * Het communicatietype instellen voor de parallelle + <title>Communicatietype instellen voor een parallelle poort - + Wanneer een parallelle poort wordt gebruikt, kan + worden aangegeven of &os; voor de printer + interrupt-gestuurde of polled communicatie + moet gebruiken. Het generieke printer + apparaatstuurprogramma (&man.lpt.4;) onder + &os; 4.X en 5.X gebruikt het systeem &man.ppbus.4;. + Dit bestuurt de chipset van de poort met het stuurprogramma + &man.ppc.4;. + + + + De interrupt-gestuurde + methode is standaard in de GENERIC kernel. In dit + geval gebruikt het besturingssysteem een IRQ om te + bepalen of de printer klaar is om gegevens te + ontvangen. + + + + Bij de polled methode vraagt + het besturingssysteem met vaste intervallen aan de + printer of deze klaar is om gegevens te ontvangen. Als + de printer antwoordt met klaar, stuurt + de kernel meer gegevens. + + + + De interrupt-gestuurde methode is meestal iets sneller, + maar gebruikt een kostbaar IRQ nummer. Van sommige HP + printers wordt beweerd dat ze niet goed werken in + interruptmodus, schijnbaar door een (nog niet begrepen) + timing probleem. Deze printers moeten gebruik maken van de + polled methode. Gebruik de methode die werkt. Sommige + printers werken met beide methodes, maar zijn tergend + langzaam in de interrupt modus. + + Het communicatietype kan op twee manieren worden + ingesteld: door de kernel in te stellen of door gebruik te + maken van &man.lptcontrol.8;. + + Het communicatietype instellen door de kernel + aan te passen: + + + + Pas het kernelinstellingenbestand aan. Zoek naar + een ppc0 ingang. Gebruik + ppc1 voor het opzetten van een + tweede parallelle poort. Gebruik + ppc2 voor de derde poort, + enzovoort. + + + + Voeg onder &os; 4.X het + irq nummer toe om gebruik te + maken van interrupt-gestuurde modus: + + device ppc0 at isa? irq N + + Hier is N het IRQ + nummer voor een parallelle poort van de + computer. + + Wijzig voor &os; 5.X de volgende + regel in /boot/device.hints en + vervang N door het + juiste IRQ nummer: + + hint.ppc.0.irq="N" + + Het kernelinstellingenbestand moet ook het + stuurprogramma &man.ppc.4; bevatten: + + device ppc + + + + Voeg het irq nummer niet toe + om gebruik te maken van polled modus. + + Gebruik voor &os; 4.X de volgende regel + in het kernelinstellingenbestand: + + device ppc0 at isa? + + Verwijder voor &os; 5.X de onderstaande + regel in + /boot/device.hints: + + hint.ppc.0.irq="N" + + In sommige gevallen is het onder + &os; 5.X niet voldoende om een poort in + polled modus te zetten. In veel gevallen komt dat + door het stuurprogramma &man.acpi.4;. Dit is in + staat om apparaten te testen en aan te sluiten en + kan zodoende het communcatietype van de printer + wijzigen. Raadpleeg de instellingen voor + &man.acpi.4; om dit probleem te verhelpen. + + + + + + Sla het bestand op. Maak en installeer de nieuwe + kernel en herstart de computer. In De &os;-kernel + instellen staan meer details. + + + + Communictatietype instellen met + &man.lptcontrol.8;: + + + + Voer het volgende commando uit om + lptN op + interrupt-gestuurde modus in te stellen.: + + &prompt.root; lptcontrol -i -d /dev/lptN + + + + Voer het volgende commando uit om + lptN op + polled modus in te stellen. + + &prompt.root; lptcontrol -p -d /dev/lptN + + + + Zet deze commando's in het bestand + /etc/rc.local zodat het + communicatietype juist wordt ingesteld bij het opstarten. + In &man.lptcontrol.8; staat meer informatie. - * Het controleren van de printercommunicatie + Printercommunicatie controleren + + Voor het instellen van het wachtrijsysteem, is het + verstandig te controleren of het besturingssyteem gegevens + naar een printer kan versturen. Het is een stuk + makkelijker om problemen met printercommunicatie en het + wachtrijsysteem apart op te lossen. + + De printer wordt getest door er tekst naar toe te + sturen. Voor printers die direct tekens kunnen afdrukken + is het programma &man.lptest.1; handig: het genereert alle + 96 afdrukbare ASCII tekens op 96 regels. + + &postscript; + + Voor &postscript; (of andere op taal gebaseerde) + printers, is een meer geavanceerde test nodig. Een + eenvoudig &postscript;-programma zoals het volgende + volstaat: + + %!PS +100 100 moveto 300 300 lineto stroke +310 310 moveto /Helvetica findfont 12 scalefont setfont +(Werkt dit?) show +showpage + + Bovenstaande &postscript;-code kan in een bestand + worden opgeslagen en in de voorbeelden in de volgende + paragrafen gebruikt worden. + + PCL + + + Als in dit document wordt gesproken over een + printertaal, wordt uitgegaan van een taal als + &postscript; en niet PCL van HP. Hoewel PCL zeer + functioneel is, kan het direct platte tekst afdrukken + door gebruik te maken van escapetekens. &postscript; kan + niet direct platte tekst afdrukken. Voor dat soort + printertalen zijn speciale aanpassingen nodig. + - * Het controleren van een parallelle printer + Parallelle printer controleren - - + + printers - - * Het controleren van een seriële printer + parallel + - - - - + In deze sectie wordt beschreven hoe te controleren of + &os; kan communiceren met een printer die op een + parallelle poort is aangesloten. - - * De wachtrij aanzetten: het - <filename>/etc/printcap</filename> bestand + Voer de volgende stappen uit om een printer + op een parallelle poort te testen: - - * Printernaamgeving + + + &man.su.1; naar root. + - - + + Stuur gegevens naar de printer. - - * Voorbladen onderdrukken + + + Gebruik &man.lptest.1; als de printer platte + tekst af kan drukken: - - + &prompt.root; lptest > /dev/lptN - - * Het aanmaken van de wachtrijdirectory + Hier is N het + nummer van de parallelle poort, beginnende bij + nul. + - - + + Als de printer &postscript; of een andere + printertaal begrijpt, stuur dan een klein + programma naar de printer: - - * Het printerdevice identificeren + &prompt.root; cat > /dev/lptN - - + Geef het programma regel voor regel + heel nauwkeurig in. Een + regel kan niet worden gewijzigd als er op + RETURN of + ENTER is gedrukt. Geef na het + afronden van de invoer voor het programma het + einde-van-invoer teken. Dit is meestal + CONTROL+D. - - * Het configureren van communicatieparameters voor het - wachtrijsysteem + Het programma kan ook in een bestand worden + opgeslagen: - - + &prompt.root; cat bestand > /dev/lptN - - * Een tekstfilter installeren + Hier is bestand de + naam van het bestand waarin het programma is + opgeslagen dat naar een printer gestuurd kan + worden. + + + + - - + Nu moet er iets worden afgedrukt. Tekst die er niet + goed uitziet is geen probleem. Dit wordt later + gerepareerd. + - - * <application>LPD</application> aanzetten + + Seriële printer controleren - - + + printers - - * De printer uitproberen + serieel + - - - - - + In deze sectie wordt beschreven hoe te controleren of + &os; kan communiceren met een printer die op een + seriële poort is aangesloten. - - * Geavanceerde printer instellingen + Voer de volgende stappen uit om een printer + op de seriële poort te testen: - - * Filters + + + &man.su.1; naar root. + - - * Hoe filters werken + + Voeg de volgende regel toe aan + /etc/remote: - - + printer:dv=/dev/poort:br#bps-snelheid:pa=pariteit - - * Platte tekst op &postscript; printers afdrukken + + bits-per-seconde + - - + + seriële poort + - - * &postscript; simuleren op niet &postscript; - printers + pariteit - - + Hier is poort de + apparaatingave voor de seriële poort + (ttyd0, ttyd1, + enzovoort), bps-snelheid + is het aantal bits per seconde waarop de printer + communiceert en pariteit + is de pariteit die door de printer wordt vereist + (even, odd, + none of + zero). - - * Conversie filters + Hier volgt een voorbeeldregel voor een printer + verbonden met een seriële lijn op de derde + seriële poort op 19200 bps, zonder + pariteit: - - * Waarom conversie filters installeren? + printer:dv=/dev/ttyd2:br#19200:pa=none + - - + + Maak verbinding met de printer met + &man.tip.1;: - - * Welke conversie filters moet ik installeren? + &prompt.root; tip printer - - + Als dit niet werkt, pas dan + /etc/remote opnieuw aan en + probeer gebruik te maken van + /dev/cuaaN + in plaats van + /dev/ttydN. + - - * Conversie filters installeren + + Stuur gegevens naar de printer. - - + + + Gebruik &man.lptest.1; als de printer platte + tekst af kan drukken: - - * Meer conversie filters voorbeelden + &prompt.user; $lptest + - - + + Als de printer &postscript; of een andere + printertaal begrijpt, stuur dan een klein + programma naar de printer. Geef het programma + regel voor regel heel + nauwkeurig in. Backspace of andere + speciale toetsen kunnen een speciale betekenis + hebben voor de printer. Het kan ook nodig zijn + een speciaal einde-van-invoer teken te geven + zodat de printer weet dat het gehele programma + ontvangen is. Druk voor &postscript;-printers + CONTROL+D. - - * Geautomatiseerde conversie: een alternatief voor - conversie filters + Het programma kan ook in een bestand worden + opgeslagen: + + &prompt.user; >bestand - + Hier is bestand de + naam van het bestand waarin het programma is + opgeslagen. Nadat &man.tip.1; het bestand heeft + verstuurd kan het juiste einde-van-invoer + teken ingegeven worden. + + + + + + Nu moet er iets worden afgedrukt. Tekst die er niet + niet goed uitziet is geen probleem. Dit wordt later + gerepareerd. + - - * Output filters + + De wachtrij aanzetten: + <filename>/etc/printcap</filename> - - + Op dit punt moet de printer zijn aangesloten, de kernel + ingesteld zijn om met de printer te communiceren (indien + nodig) en is het mogelijk eenvoudige gegevens naar de printer + te sturen. Nu kan LPD ingesteld + worden zodat de toegang tot de printer wordt geregeld. - - * <command>lpf</command>: een tekstfilter + LPD wordt ingesteld door het + bestand /etc/printcap aan te passen. + Het wachtrijsysteem LPD leest + dit bestand iedere keer dat het systeem wordt aangeroepen + zodat wijzigingen direct van toepassing zijn. - - - + + printers - - * Voorbladen + mogelijkheden + - - * Voorbladen aanzetten + De opmaak van het bestand &man.printcap.5; is voor de + hand liggend. Met een willekeurige tekstverwerker kunnen + wijzigen in /etc/printcap aangebracht + worden. De opmaak is identiek aan die van andere bestanden + die voor dergelijke instellingen worden gebruik, zoals + /usr/share/misc/termcap en + /etc/remote. In &man.cgetent.3; staat + een uitgebreid overzicht van dit formaat. - - + De vereenvoudigde instellingen bestaan uit de volgende + stappen: - - * Voorbladen beheren + + + Kies een naam (en een paar handige aliassen) voor de + printer en voeg ze toe aan + /etc/printcap. In Printernaamgeving + staat meer informatie over het toekennen van een naam aan + een printer. + - - + voorbladen - - * Accounting voor voorbladen + + Het afdrukken van voorbladen (standaard) kan uitgezet + worden met de optie sh. In Voorbladen + onderdrukken staat meer informatie. + - - + + Maak een wachtrijmap aan en specificeer de locatie + door middel van de optie sd. In + Wachtrijmap + aanmaken staat meer informatie. + - - * Voorbladen op &postscript; printers + + Bepaal welke ingave in /dev voor + de printer wordt gebruikt en geef dit in + /etc/printcap aan door gebruik te + maken van de opte lp. In Printerapparaat + identificeren staat meer informatie. Als de + printer is aangesloten op een seriële poort moeten + de communicatieparameters worden ingesteld met de optie + ms#. Dit wordt beschreven in Communicatieparameters + voor het wachtrijsysteem instellen. + - - - + + Installeer een filter voor platte tekst. In Tekstfilter + installeren staan details. + - - * Printen over een netwerk + + Test de instellingen door iets met &man.lpr.1; af te + druken. Details staan in Printer uitproberen en + Problemen + oplossen. + + - - * Printers geïnstalleerd op externe machine's + + Op taal gebaseerde printers, zoals + &postscript;-printers, kunnen niet direct platte tekst + afdrukken. De vereenvoudigde instellingen, zoals hierboven + beschreven en hieronder verder beschreven, gaan er van uit + dat alleen bestanden naar een printer worden gestuurd die + de printer begrijpt. + - - + Gebruikers verwachten vaak dat ze platte tekst naar + printers op een systeem kunnen sturen. Programma's die + LPD gebruiken om af te drukken + gaan hier ook vaak van uit. Als een dergelijke printer wordt + geïnstalleerd en het moet mogelijk zijn zowel + afdrukopdrachten in de printertaal als in platte tekst naar + een printer te sturen, dan is het zeer aan te raden een extra + stap in deze vereenvoudigde opzet in te voegen: installeer + een conversieprogramma dat automatisch platte tekst omzet in + &postscript; (of een andere printertaal). In Platte tekst + op &postscript;-printers afdrukken staat hoe dit in + zijn werk gaat. - - * Printers met een netwerkaansluiting + + Printernaamgeving - - - + De eerste (makkelijke) stap is het kiezen van een naam + voor een printer. Het maakt niet uit of een naam + functioneel of grappig is, aangezien ook een aantal + aliassen aan een printer toegekend kunnen worden. - - * Printer gebruik limieteren + Ten minste één van de printers die in + /etc/printcap worden genoemd moet het + alias lp hebben. Dit is de + standaardnaam voor de printer. Als gebruikers de + omgevingsvariabele PRINTER niet ingesteld + hebben en ook geen printernaam specificeren als ze + LPD gebruiken, dan wordt + standaard de printer lp gebruikt. - - * Meerdere kopieën limieteren + Het is verder gebruikelijk om het laaste alias zo te + kiezen dat het een volledige beschrijving van de printer + is, inclusief merk en model. - - + Als een naam en een aantal aliassen zijn gekozen, + kunnen ze aan /etc/printcap worden + toegevoegd. De naam van een printer wordt in de meest + linker kolom geplaatst. Scheid ieder alias met een + verticale streep en plaats een dubbele punt achter het + laatste alias. - - * Toegang tot printers limieteren + In het volgende voorbeeld is de beginsituatie een + uitgekleed /etc/printcap waarin twee + printers worden gedefinieerd (een Diablo 630 lineprinter + en een Panasonic KX-P4455 + &postscript;-laserprinter): - - + # +# /etc/printcap voor host rose +# +rattan|line|diablo|lp|Diablo 630 Line Printer: - - * De grootte van verstuurde opdrachten beheren +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4: - - + In dit voorbeeld heet de eerste printer + rattan en heeft de volgende aliassen: + line, diablo, + lp en Diablo 630 Line + Printer. Omdat deze printer het alias + lp heeft, is het de standaard printer. + De tweede printer heet bamboo en heeft + de aliassen ps, PS, + S, panasonic en + Panasonic KX-P4455 PostScript + v51.4. + - - * Opdrachten van externe printers limieteren + + Voorbladen onderdrukken - - - + + afdrukken - - * Accounting voor printer gebruik + voorbladen + - - * Quick and Dirty printer accounting + Het wachtrijsysteem LPD + drukt standaard een voorblad af voor + elke afdrukopdracht. Het voorblad bevat de gebruikersnaam + van de gebruiker die de afdrukopdracht gaf, de computer + waar de opdracht is gegeven en, in mooie grote letters, de + naam van de afdrukopdracht. Het nadeel hiervan is dat al + deze extra tekst het debuggen van de eenvoudige + printerinstallatie bemoeilijkt. Daarom wordt het afdrukken + van voorbladen onderdrukt. - - + Om voorbladen te onderdrukken, wordt de optie + sh toegevoegd voor de relevante printer + in /etc/printcap. Hieronder staat een + voorbeeld van /etc/printcap met de + optie sh: - - * Hoe kun je geprinte pagina's tellen? + # +# /etc/printcap voor host rose - nergens worden voorbladen afgedrukt +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh: - - - - +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh: - - * Printers gebruiken + Het juiste formaat is gebruikt: de eerste regel begint + in de meest linker kolom, volgende regels springen in. + Elke regel eindigt met een backslash, behalve de + laatste. + - - * Print opdrachten + + Wachtrijmap aanmaken - - + printer wachtrij - - * Opdrachten controleren + afdrukopdrachten - - + De volgende stap in deze eenvoudige opzet is het + aanmaken van een wachtrijmap. Dit is + een map waar afdrukopdrachten geplaatst worden totdat ze + worden afgedrukt. Ook wordt er een aantal bestanden + geplaatst die nodig zijn voor het functioneren van het + wachtrijsysteem. - - * Opdrachten verwijderen + Vanwege het veranderlijke karakter van wachtrijmappen + is het gebruikelijk om deze mappen onder + /var/spool te plaatsen. Het is niet + nodig om een back-up van de inhoud van deze mappen te + maken. Ze kunnen eenvoudigweg opnieuw worden aangemaakt + met &man.mkdir.1;. - - + Het is ook gebruikelijk om de naam van de map overeen + te laten komen met die van de printer, zoals onder is + weergegeven: - - * Voorbij platte tekst: print opties + &prompt.root; mkdir /var/spool/printernaam - - * Formaat en conversie opties + Als er veel printers zijn aangesloten op een netwerk, + is het beter de wachtrijmappen aan te maken in een enkele + map die speciaal wordt gebruikt voor afdrukken met + LPD. In dit voorbeeld wordt dat + gedaan voor de printers rattan en + bamboo: - - + &prompt.root; mkdir /var/spool/lpd +&prompt.root; mkdir /var/spool/lpd/rattan +&prompt.root; mkdir /var/spool/lpd/bamboo - - * Opdracht afhandeling opties + + Als de afdrukopdrachten privé moeten blijven, + dan is het belangrijk de wachtrijmap niet algemeen + toegankelijk te maken. Wachtrijmappen moeten eigendom + zijn van gebruiker daemon en groep daemon. Uitsluitend + deze gebruiker en groep moeten de map kunnen lezen, + schrijven en doorzoeken: - - + &prompt.root; chown daemon:daemon /var/spool/lpd/rattan +&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo +&prompt.root; chmod 770 /var/spool/lpd/rattan +&prompt.root; chmod 770 /var/spool/lpd/bamboo + - - * Voorblad opties + Tenslotte moet LPD verteld + worden dat deze mappen bestaan. Dit kan met het bestand + /etc/printcap. De locatie van de + wachtrijmap wordt opgegeven met de optie + sd: - - - + # +# /etc/printcap voor host rose - opgeven van de wachtrijmappen +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan: - - * Printers beheren +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo: - - - + De naam van de printer staat in de eerste kolom, maar + alle andere regels die de printer beschrijven worden + ingesprongen en elke regel eindigt met een + backslash. - - * Alternatieven voor de standaard spooler + Als geen wachtrijmap wordt opgegeven met + sd, dan wordt standaard + /var/spool/lpd gebruikt. + - - + + Printerapparaat identificeren - - * Problemen oplossen + In Ingangen in + /dev toevoegen voor poorten is + bepaald welke ingang in de map /dev + door &os; wordt gebruikt om met een printer te + comminiceren. Nu moet LPD dit + ook weten. Als het wachtrijsysteem een afdrukopdracht + krijgt, wordt het relevante apparaat geopend door het + filterprogramma (dat verantwoordelijk is voor het sturen + van gegevens naar een printer). - - - + Geef de locatie van de ingang in + /dev op in + /etc/printcap door gebruik te maken + van de optie lp. + + In het huidige voorbeeld wordt aangenomen dat + rattan op de eerste parallelle poort is + aangesloten en bamboo op de zesde + seriële poort. Hier volgen de toevoegingen voor + /etc/printcap: + + # +# /etc/printcap voor host rose - juiste apparaat bepaald +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh:sd=/var/spool/lpd/rattan:\ + :lp=/dev/lpt0: + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:\ + :lp=/dev/ttyd5: + + Als voor een printer de optie lp + niet wordt gebruikt in /etc/printcap, + dan gebruikt LPD standaard + /dev/lp. Momenteel bestaat + /dev/lp niet in &os;. + + Als de te installeren printer is aangesloten op een + parallelle poort, dan staan verdere instructies in Tekstfilter + installeren. In andere gevallen kunnen de + instructies in de volgende paragraaf gevold worden. + + + + Communicatieparameters voor het wachtrijsysteem + instellen + + + printers - diff --git a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml index e1d978ec17..27225bbc05 100644 --- a/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/security/chapter.sgml @@ -1,5632 +1,5632 @@ 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 het hulpprogramma Portaudit gebruikt kan worden om softwarepakketten uit de Portscollectie te auditen; Hoe om te gaan met publicaties van &os; beveiligingswaarschuwingen; Iets van Procesaccounting en hoe dat is in te schakelen in &os;. 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 apparaten 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 apparaten 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 apparaat. 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 apparaat mee te compileren. sysctl Maar zelfs als het bpf apparaat is uitgeschakeld, dan zijn er nog /dev/mem en /dev/kmem. De inbreker kan namelijk nog schrijven naar ruwe schrijfapparaten. 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 apparaat of een ander snuffelapparaat 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 apparaten 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, enzovoort 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 schijfruimte 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 apparaten 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 TCP Wrapper's reverse-identd die direct aangevallen kan worden. In het algemeen is het hierom onverstandig gebruik te maken van de reverse-ident optie van TCP Wrapper. 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). 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. &os; 4.X kernels kennen een compileeroptie waarmee de effectiviteit van dit type aanvallen afneemt. Latere kernels gebruiken de sysctl variabele net.inet.icmp.icmplim. 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 (bijvoorbeeld 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 &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. 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 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 Portscollectie: 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 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 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 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 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 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> .k5login .k5users Voor gebruikers binnen een wereld wijst hun Kerberos principal (bv. tillman@EXAMPLE.ORG) gewoonlijk naar een lokale gebruikeraccount (bijvoorbeeld 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 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 <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 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 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. 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. 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 horen nu twee bestanden te staan in de map waarin het voorgaande commando is uitgevoerd. Het certificaatverzoek, req.pem, kan naar een certificate authority gestuurd worden die de bijgevoegde gegevens kan valideren, het verzoek kan tekenen en het certificaat kan retourneren. Het tweede bestand heet cert.pem en is de geheime sleutel voor het certificaat. Deze dient zorgvuldig beschermd te worden. Als de geheime sleutel in de handen van anderen valt kan die gebruikt worden om de identiteit van de eigenaar (of server) aan te nemen. 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. Certificaten 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
IPsec 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: kernelopties FAST_IPSEC 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 ESP IPsec AH 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. VPN virtual private network VPN virtueel privaat netwerk VPN 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: kernelopties IPSEC kernelopties IPSEC_ESP options IPSEC #IP security options IPSEC_ESP #IP security (crypto; define w/ IPSEC) kernelopties IPSEC_DEBUG 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 VPN maken 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 apparaten 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 apparaat 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: 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: kernel options IPSEC 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. IKE 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. IPsec security policies setkey 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. + beschreven hoe dat met racoon gaat. racoon is in de &os; + Portscollectie beschikbaar vanuit security/ipsec-tools. racoon - security/racoon moet - draaien op beide gateway hosts. Op iedere host moet het - IP adres van de andere kant van het VPN + 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 apparaat 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 + role="package">security/ipsec-tools. 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. <application>sshd</application> inschakelen OpenSSH inschakelen De sshd daemon wordt onder &os; 4.X standaard ingeschakeld en bij de installatie van &os; 5.X en later kan er tijdens de installatie gekozen worden. De daemom is ingeschakeld als de volgende regel voorkomt in rc.conf: 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. Recente OpenSSH servers staan standaard ingesteld om alleen SSH v2 connecties toe te staan. De client gebruikt versie 2 als dat mogelij is en valt anders terug op versie 1. De client kan ook gedwongen worden om een van de twee protocollen te gebruiken door de optie of voor respectievelijk versie 1 en versie 2 aan te geven. De mogelijkheid versie 1 te gebruiken blijft in de client bestaan om compatibiliteit met oudere versies te behouden. 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 DSA en RSA sleutels te maken om een gebruiker te authenticeren: &prompt.user; ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/user/.ssh/id_dsa): Created directory '/home/user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_dsa. Your public key has been saved in /home/user/.ssh/id_dsa.pub. The key fingerprint is: bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com &man.ssh-keygen.1; maakt een publiek en privaat sleutelpaar aan dat gebruikt kan worden voor authenticatie. De private sleutel staat opgeslagen in ~/.ssh/id_dsa of ~/.ssh/id_rsa en de publieke sleutel staat in ~/.ssh/id_dsa.pub of ~/.ssh/id_rsa.pub voor respectievelijk DSA en RSA sleuteltypen. De publieke sleutel moet in ~/.ssh/authorized_keys van de andere machine staan om dit te laten werken. RSA versie 1 publieke sleutels horen ook in ~/.ssh/authorized_keys te staan. Nu is het mogelijk een verbinding te maken met een andere machine die gebaseerd is op SSH sleutels in plaats van op wachtwoorden. 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. &man.ssh-agent.1; kan het ongemak van steeds opnieuw een lange wachtwoordzin moeten ingeven verlichten en wordt beschreven in het onderdeel . Afhankelijk van de gebruikte versie van OpenSSH kunnen opties en bestanden verschillen. Het is verstandig de handboekpagina &man.ssh-keygen.1; te raadplegen. ssh-agent en ssh-add De hulpprogramma's &man.ssh-agent.1; en &man.ssh-add.1; bieden de mogelijkheid om SSH in het geheugen te laden zodat niet iedere keer de wachtwoordzin ingegeven hoeft te worden. Het hulpprogramma &man.ssh-agent.1; handelt de authenticatie af voor de geheime sleutels die erin geladen zijn. &man.ssh-agent.1; wordt gebruikt om andere programma's te starten. Bij eenvoudig gebruik kan er een shell mee gestart worden of meer complex een schermbeheerprogramma. Voordat &man.ssh-agent.1; in een shell gebruikt kan worden dient het eerst gestart te worden met een shell als argument. Daarna kan de identiteit toegevoegd worden daar &man.ssh-add.1; aan te roepen en de wachtwoordzin voor de geheime sleutel op te geven. Als deze stappen zijn voltooid kan een gebruiker met &man.ssh.1; naar iedere host waar de corresponderende publieke sleutel is geïnstalleerd: &prompt.user; ssh-agent csh &prompt.user; ssh-add Enter passphrase for /home/user/.ssh/id_dsa: Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa) &prompt.user; Om &man.ssh-agent.1; te gebruiken in X11 dient er een verwijzing naar &man.ssh-agent.1; in ~/.xinitrc te staan. Dan zijn de diensten van &man.ssh-agent.1; beschikbaar voor alle programma's die in X11 gestart worden. Een ~/.xinitrc zou er als volgt uit kunnen zien: exec ssh-agent startxfce4 Hiermee wordt &man.ssh-agent.1; gestart die op zijn beurt XFCE start, iedere keer dat X11 start. Als dat is gebeurd en X11 is herstart zodat de wijzigingen actief zijn, dan kan eenvoudigweg &man.ssh-add.1; gestart worden om alle beschikbare SSH sleutels te laden. 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. De gebruikersoptie <varname>AllowUsers</varname> Vaak is het verstandig om beperkingen aan te brengen op het gebied van welke gebruikers kunnen aanmelden en van waar. De optie AllowUsers biedt deze mogelijkheid. Om bijvoorbeeld alleen root toe te staan zich aan te melden van 192.168.1.32, kan iets als de volgende regel worden opgenomen in /etc/ssh/sshd_config file: AllowUsers root@192.168.1.32 Om de gebruiker admin het recht te geven zich van overal aan te melden hoeft alleen de gebruikersnaam vermeld te worden: AllowUsers admin Meerdere gebruikers met rechten of beperkingen horen op dezelfde regel te staan: AllowUsers root@192.168.1.32 admin Het is van belang dat iedere gebruiker die zich moet kunnen aanmelden wordt genoemd. De overige gebruikers worden buitengesloten. Nadat er wijzigingen zijn gemaakt aan /etc/ssh/sshd_config dienen de bestanden in &man.sshd.8; geladen te worden: &prompt.root; /etc/rc.d/sshd reload Meer informatie OpenSSH &man.ssh.1; &man.scp.1; &man.ssh-keygen.1; &man.ssh-agent.1; &man.ssh-add.1; &man.ssh.config.5; &man.sshd.8; &man.sftp-server.8; &man.sshd.config.5; Tom Rhodes Bijgedragen door Siebrand Mazeland Vertaald door ACL Bestandssysteem toegangscontrolelijsten In combinatie met verbeteringen als snapshots, bieden &os; 5.0 en volgende versies de veiligheid van Bestandssysteem Toegangscontrolelijsten (Access Control Lists, ACLs). 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 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 Geschreven door Portaudit Monitoren van beveiligingsproblemen met andere software In de afgelopen jaren zijn er in de beveiligingswereld veel vorderingen gemaakt op het gebied van inzicht in kwetsbaarheden. Als er software naast het besturingssysteem wordt geïnstalleerd en ingesteld neemt op vrijwel ieder besturingssysteem het risico op inbraak toe. Inzicht in kwetsbaarheid is een vitale factor in beveiliging en hoewel &os; waarschuwingen publiceert voor het basissysteem, gaat het publiceren van waarschuwingen voor alle overige software de scope van het &os; Project te buiten. Er is een manier om inzicht te krijgen in de kwetsbaarheden voor additionele software en als beheerder gewaarschuwd te worden. Voor dit doel bestaat het &os; hulpprogramma Portaudit. De port security/portaudit zoekt naar bekende beveiligingsproblemen in een database die wordt bijgewerkt en onderhouden door het &os; Security Team en portontwikkelaars. Voordat Portaudit gebruikt kan worden dient het geïnstalleerd te worden uit de Portscollectie: &prompt.root; cd /usr/ports/security/portaudit && make install clean Tijdens het installatieproces worden de instellingenbestanden voor &man.periodic.8; bijgewerkt, waardoor Portaudit uitvoer in de dagelijkse security runs meekomt. Het is van belang dat de e-mails die aan de e-mailaccount van root worden gezonden en uit de dagelijkse beveiligingsronde komen ook echt worden gelezen. Er zijn geen verdere instellingen nodig. Na de installatie dient de beheerder de database bij te werken die lokaal staat in /var/db/portaudit: &prompt.root; portaudit -F De database wordt automatisch bijgewerkt tijdens de &man.periodic.8; run; dus het voorgaande commando is volledig optioneel. Het is alleen nodig om de volgende voorbeelden na te kunnen doen. De software de uit de Portscollection is geïnstalleerd kan door een beheerder geaudit worden met: &prompt.root; portaudit -a Hieronder staat een voorbeeld van de uitvoer: Affected package: cups-base-1.1.22.0_1 Type of problem: cups-base -- HPGL buffer overflow vulnerability. Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html> 1 problem(s) in your installed packages found. You are advised to update or deinstall the affected package(s) immediately. Door met een webbrowser naar de aangegeven URL te gaan kan een beheerder meer informatie over de bewust kwetsbaarheid krijgen, waaronder de versies die het betreft, volgens de &os; Port versie en andere websites waarop beveiligingswaarschuwingen te lezen zijn. In het kort is Portaudit een krachtig hulpprogramma dat bijzonder handig is als het wordt gekoppeld aan het gebruik van de port Portupgrade. 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. Tom Rhodes Geschreven door Procesaccounting Procesaccounting Procesaccounting is een beveiligingsmethode die een beheerder in staat stelt om in de gaten te houden welke systeembronnen worden gebruikt, hoe ze over gebruikers verdeeld zijn, systeemmonitoring biedt en op minimalistische wijze het gebruik van commando's door gebruikers volgt. Deze methode heeft voordelen en nadelen. Eén van de positieve punten is dat een inbraak gevolgd kan worden tot het moment waarop die zich voordeed. Nadelen zijn de grootte van de logboeken die door procesaccounting worden gegenereerd en de schijfruimte die dat kost. In dit onderdeel wordt een beheerder de basis van procesaccounting getoond. Procesaccounting inschakelen en gebruiken Voordat procesaccounting gebruikt kan worden dient het te worden ingeschakeld met de volgende commando's: &prompt.root; touch /var/account/acct &prompt.root; accton /var/account/acct &prompt.root; echo 'accounting_enable="YES"' >> /etc/rc.conf Eenmaal ingeschakeld begint accounting met het bijhouden van CPU statistieken, commands, enzovoort. Alle accounting logboeken worden in een niet leesbaar formaat bijgehouden en zijn uit te lezen met &man.sa.8;. Bij het uitvoeren zonder opties, toont sa informatie gerelateerd aan het aantal calls per gebruiker, de totale tijd in minuten die is verstreken, de totale CPU en gebruikerstijd in minuten, gemiddeld aantal I/O operaties, enzovoort. Informatie over uitgevoerde commando's kan bekeken worden met &man.lastcomm.1;. Zo kan met lastcomm bijvoorbeeld weergegeven worden welke commando's door gebruikers op een specifieke &man.ttys.5; zijn uitgevoerd: &prompt.root; lastcomm ls trhodes ttyp1 Het bovenstaande commando toont ieder bekend gebruikt van ls door de gebruiker trhodes op terminal ttyp1. Veel andere handige opties staan beschreven in &man.lastcomm.1;, &man.acct.5; en &man.sa.8;.
diff --git a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml index 5df83b0ba2..4a682fa1ad 100644 --- a/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/x11/chapter.sgml @@ -1,1949 +1,1950 @@ Ken Tom Geupdate voor X.Org's X11 server door Marc Fonvieille Erik Radder Vertaald door Het X Window systeem 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.11-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 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 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 en X11R6.8.2 in februari 2005. 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 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 Geschreven 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 welk stuurprogramma 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 stuurprogramma's laadt voor de gevonden hardware van het systeem. De volgende stap is het testen van de bestaande instellingen 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 instelling 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 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 stuurprogramma's 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 graphische chipset Intel i810 grafische chipset Instellen met &intel; i810 integrated chipsets vereist de agpgart AGP programmeringsinterface voor X11 om de kaart aan te sturen. Het &man.agp.4; stuurprogramma 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 instellen van de hardware net als ieder andere grafische kaart. Bij systemen die zonder &man.agp.4; stuurprogramma gecompileerd zijn slaagt het laden van module met &man.kldload.8; niet. Het stuurprogramma 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 anti-aliasing lettertypen uitschakelen 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 beeldschermmanager 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 instellingen 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. + verbindingen met andere machines bestuurt. Het wordt + genegeerd, tenzij xdm-config is + gewijzigd zodat er wordt geluisterd naar inkomende + verbindingen. Standaard wordt het clients niet toegestaan te + verbinden. 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. De website bevat ook redelijk complete FAQ's over het installeren, instellen en beheren van GNOME. 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. De meest eenvoudige manier om GNOME te starten is via GDM, de GNOME Display Manager. GDM wordt meegeïnstalleerd met de GNOME bureaubladomgeving, maar staat standaard uitgeschakeld. Dit programma kan ingeschakeld worden door gdm_enable="YES" toe te voegen aan /etc/rc.conf. Na herstarten start GNOME automatisch bij het aanmelden. Er zijn geen verdere instellingen nodig. GNOME kan ook gestart worden vanaf de commandoregel door het bestand .xinitrc juist in te stellen. Als er al een .xinitrc is, dan hoeft alleen de regel die de huidige window 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/krootimage 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.