diff --git a/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml
index f6b5a5ebb5..94f94249f1 100644
--- a/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/mac/chapter.sgml
@@ -1,2199 +1,2198 @@
TomRhodesGeschreven door SiebrandMazelandVertaald door RenéLadanVertaling voortgezet door Verplichte Toegangscontrole (MAC)OverzichtMACverplichte toegangscontroleMACmandatory access controlIn &os; 5.X werden nieuwe beveiligingsuitbreidingen
geïntroduceerd uit het TrustedBSD project, dat is gebaseerd
op de &posix;.1e draft. Twee van de meest significante nieuwe
beveiligingsmechanismen zijn faciliteiten voor
Toegangscontrolelijsten voor bestandssystemen
(ACLs) en Verplichte Toegangscontrole
(Mandatory Access Control of MAC). Met
Verplichte Toegangscontrole kunnen nieuwe toegangscontrolemodules
geladen worden, waarmee nieuw beveiligingsbeleid opgelegd kan
worden. Een aantal daarvan bieden beveiliging aan hele kleine
onderdelen van het systeem, waardoor een bepaalde dienst
weerbaarder wordt. Andere bieden allesomvattende gelabelde
beveiliging op alle vlakken en objecten. Het verplichte deel van
de definitie komt van het feit dat het opleggen van de controle
wordt gedaan door beheerders en het systeem en niet wordt
overgelaten aan de nukken van gebruikers, zoals wel wordt gedaan
met toegangscontrole naar goeddunken (discretionary access control
of DAC, de standaardrechten voor bestanden en
System V IPC rechten in &os;).In dit hoofdstuk wordt de nadruk gelegd op het
Verplichte Toegangscontrole Raamwerk (MAC
Framework) en een verzameling van te activeren
beveiligingsbeleidsmodules waarmee verschillende soorten
beveiligingsmechanismen wordt ingeschakeld.Na het lezen van dit hoofdstuk weet u:Welke MAC beveiligingsbeleidsmodules
op dit moment in &os; beschikbaar zijn en welke mechanismen
daarbij horen.Wat MAC beveiligingsbeleidsmodules
implementeren en het verschil tussen gelabeld en
niet-gelabeld beleid.Hoe een systeem efficiënt ingesteld kan worden om
met het MAC-raamwerk te werken.Hoe het beleid van de verschillende
beveiligingsbeleidsmodules die in het
MAC-raamwerk zitten ingesteld kunnen
worden.Hoe een veiligere omgeving gemaakt kan worden met het
MAC-raamwerk en de getoonde voorbeelden;Hoe de MAC-instellingen getest
kunnen worden om er zeker van te zijn dat het raamwerk juist
is geïmplementeerd.Aangeraden voorkennis:Begrip van &unix; en &os; basiskennis ();Bekend zijn met de beginselen van het instellen en
compileren van de kernel ();Enigszins bekend zijn met beveiliging en wat dat te maken
heeft met &os; ().Het verkeerd gebruiken van de informatie die hierin staat
kan leiden tot het niet langer toegang hebben tot een systeem,
ergernis bij gebruikers, of het niet langer kunnen gebruiken van
de mogelijkheden die X11 biedt. Nog belangrijker is dat niet
alleen op MAC vertrouwd moet worden voor de
beveiliging van een systeem. Het
MAC-raamwerk vergroot alleen het bestaande
beveiligingsbeleid; zonder goede beveiligingsprocedures en
regelmatige beveiligingscontroles is een systeem nooit helemaal
veilig.Het is ook van belang op te merken dat de voorbeelden in
dit hoofdstuk alleen voorbeelden zijn. Het is niet aan te
raden ze uit te rollen op een productiesysteem. Het
implementeren van de verschillende beveiligingsbeleidsmodules
dient goed overdacht en getest te worden. Iemand die niet
helemaal begrijpt hoe alles werkt, komt er waarschijnlijk achter
dat die het complete systeem van voor naar achter en weer terug
doorloopt en vele bestanden en mappen opnieuw moet instellen.Wat niet wordt behandeldIn dit hoofdstuk wordt een brede reeks
beveiligingsonderwerpen met betrekking tot het
MAC-raamwerk behandeld. De ontwikkeling
van nieuwe MAC-beveiligingsbeleidsmodules
wordt niet behandeld. Een aantal modules die bij het
MAC-raamwerk zitten hebben specifieke
eigenschappen voor het testen en ontwikkelen van nieuwe modules.
Daaronder vallen &man.mac.test.4;, &man.mac.stub.4; en
&man.mac.none.4;. Meer informatie over deze
beveiligingsbeleidsmodules en de mogelijkheden die ze bieden
staan in de hulppagina's.Sleuteltermen in dit hoofdstukVoordat dit hoofdstuk gelezen wordt, moeten er een aantal
sleuteltermen toegelicht worden. Hiermee wordt hopelijk mogelijke
verwarring en de abrupte introductie van nieuwe termen en
informatie voorkomen.compartiment: een compartiment is een
verzameling van programma's en gegevens die gepartitioneerd of
gescheiden dient te worden en waartoe gebruikers expliciet
toegang moeten krijgen op een systeem. Een compartiment staat
ook voor een groep, zoals een werkgroep, afdeling, project, of
onderwerp. Door gebruik te maken van compartimenten is het
mogelijk om een need-to-know beveiligingsbeleid
in te stellen.hoogwatermarkering: Een
hoogwatermarkeringsbeleid is een beleid dat toestaat om
beveiligingsniveaus te verhogen met het doel informatie dat op
een hoger niveau aanwezig is te benaderen. In de meeste
gevallen wordt het originele niveau hersteld nadat het proces
voltooid is. Momenteel heeft het
MAC-raamwerk van &os; hier geen beleid
voor, maar de definitie is voor de volledigheid opgenomen.integriteit: integriteit, als
sleutelconcept, is het niveau van vertrouwen dat in gegevens
gesteld kan worden. Als de integriteit van gegevens wordt
vergroot, dan geldt dat ook voor het vertrouwen dat in die
gegevens gesteld kan worden.label: een label is een
beveiligingsattribuut dat toegepast kan worden op bestanden,
mappen of andere onderdelen van een systeem. Het kan gezien
worden als een vertrouwelijkheidsstempel: als er een label op
een bestand is geplaatst, beschrijft dat de
beveiligingseigenschappen voor dat specifieke bestand en is
daarop alleen toegang voor bestanden, gebruikers, bronnen,
enzovoort, met gelijke beveiligingsinstellingen. De betekenis
en interpretatie van labelwaarden hangt af van de
beleidsinstellingen: hoewel sommige
beleidseenheden een label beschouwen als representatie van de
integriteit of het geheimhoudingsniveau van een object, kunnen
andere beleidseenheden labels gebruiken om regels voor toegang
in op te slaan.niveau: de verhoogde of verlaagde
instelling van een beveiligingsattribuut. Met het stijgen
van het niveau wordt ook aangenomen dat de veiligheid
stijgt.laagwatermarkering: Een
laagwatermarkeringsbeleid is een beleid dat toestaat om de
beveiligingsniveaus te verlagen met het doel informatie te
benaderen die minder veilig is. In de meeste gevallen wordt
het originele beveiligingsniveau van de gebruiker hersteld
nadat het proces voltooid is. De enige
beveiligingsbeleidsmodule in &os; die dit gebruikt is
&man.mac.lomac.4;.meervoudig label: de eigenschap
is een optie van het
bestandssysteem die in enkelegebruikersmodus met
&man.tunefs.8;, tijdens het opstarten via het bestand
&man.fstab.5; of tijdens het maken van een nieuw
bestandssysteem ingesteld kan worden. Met deze optie wordt
het voor een beheerder mogelijk om verschillende
MAC-labels op verschillende objecten toe te
passen. Deze optie is alleen van toepassing op
beveiligingsbeleidsmodules die labels ondersteunen.object: een object of systeemobject
is een entiteit waar informatie doorheen stroomt op
aanwijzing van een subject. Hieronder
vallen mappen, bestanden, velden, schermen, toetsenborden,
geheugen, magnetische opslag, printers en alle andere
denkbare apparaten waarmee gegevens kunnen worden vervoerd of
kunnen worden opgeslagen. In de basis is een object een
opslageenheid voor gegevens of een systeembron; toegang tot
een object betekent in feite toegang tot
de gegevens.beleidseenheid: een verzameling van
regels die aangeven hoe doelstellingen bereikt moeten worden.
In een beleidseenheid staat meestal
beschreven hoe bepaalde eenheden behandeld dienen te worden.
In dit hoofdstuk wordt de term
beleidseenheid in deze context gezien
als een beveiligingsbeleidseenheid, wat
zoveel wil zeggen als een verzameling regels die bepaalt hoe
gegevens en informatie stroomt en aangeeft wie toegang tot
welke gegevens en informatie heeft.gevoeligheid: meestal gebruikt bij
het bespreken van MLS. Een
gevoeligheidsniveau is een term die gebruikt wordt om te
beschrijven hoe belangrijk of geheim de gegevens horen te
zijn. Met het stijgen van het gevoeligheidsniveau stijgt ook
het belang van de geheimhouding of de vertrouwelijkheid van de
gegevens.enkelvoudig label: een enkelvoudig
label wordt gebruikt als een heel bestandssysteem gebruik
maakt van één label om het toegangsbeleid over
de gegevensstromen af te dwingen. Als dit voor een
bestandssysteem is ingesteld, wat geldt als er geen gebruik
gemaakt wordt van de optie , dan
gehoorzamen alle bestanden aan dezelfde labelinstelling.subject: een subject is een gegeven
actieve entiteit die het stromen van informatie tussen
objecten veroorzaakt, bijvoorbeeld een
gebruiker, gebruikersprocessor, systeemproces, enzovoort. Op
&os; is dit bijna altijd een thread die in een proces namens
een gebruiker optreedt.Uitleg over MACMet al deze nieuwe termen in gedachten, kan overdacht worden
hoe het MAC-raamwerk de complete beveiliging
van een systeem kan vergroten. De verschillende
beveiligingsbeleidsmodules die het MAC-raamwerk
biedt zouden gebruikt kunnen worden om het netwerk en
bestandssystemen te beschermen, gebruikers toegang tot bepaalde
poorten en sockets kunnen ontzeggen, en nog veel meer. Misschien
kunnen de beleidsmodules het beste gebruikt worden door ze samen
in te zetten, door meerdere beveiligingsbeleidsmodules te laden om
te komen tot een omgeving waarin de beveiliging uit meerdere lagen
is opgebouwd. In een omgeving waarin de beveiliging uit meerdere
lagen is opgebouwd zijn meerdere beleidsmodules actief om de
beveiliging in de hand te houden. Deze aanpak is anders dan een
beleid om de beveiliging sec beter te maken, omdat daarmee in het
algemeen elementen in een systeem beveiligd worden dat voor een
specifiek doel wordt gebruikt. Het enige nadeel is het benodigde
beheer in het geval van meervoudige bestandssysteemlabels, het
instellen van toegang tot het netwerk per gebruiker, enzovoort.De nadelen zijn wel minimaal als ze worden vergeleken met het
immer durende effect van het raamwerk. Zo zorgt bijvoorbeeld de
mogelijkheid om te kiezen welke beleidseenheden voor een specifiek
gebruik nodig zijn voor het zo laag mogelijk houden van de
beheerslast. Het terugdringen van ondersteuning voor onnodige
beleidseenheden kan de beschikbaarheid van systemen verhogen en
ook de keuzevrijheid vergroten. Voor een goede implementatie
worden alle beveiligingseisen in beschouwing genomen en daarna
worden de verschillende beveiligingsbeleidsmodules effectief door
het raamwerk geïmplementeerd.Een systeem dat gebruik maakt van de mogelijkheden van
MAC dient dus tenminste de garantie te bieden
dat een gebruiker niet de mogelijkheid heeft naar eigen inzicht
beveiligingsattributen te wijzigen. Alle gebruikersprogramma's en
scripts moeten werken binnen de beperkingen die de toegangsregels
voorschrijven volgens de geselecteerde beveiligingsbeleidsmodules.
Het voorgaande impliceert ook dat de volledige controle over de
MAC-toegangsregels bij de systeembeheerder
ligt.Het is de taak van de systeembeheerder om zorgvuldig de juiste
beveiligingsbeleidsmodules te kiezen. Voor sommige omgevingen kan
het nodig zijn dat de toegang tot het netwerk wordt beperkt. In
dat soort gevallen zijn de beleidsmodules &man.mac.portacl.4;,
&man.mac.ifoff.4; en zelfs &man.mac.biba.4; goede startpunten. In
andere gevallen kan de strikte vertrouwelijkheid van
bestandssysteemobjecten van belang zijn. Dan zijn beleidsmodules
zoals &man.mac.bsdextended.4; en &man.mac.mls.4; voor dit doel
gemaakt.Beslissingen over beleid zouden gemaakt kunnen worden op basis
van het netwerkontwerp. Wellicht wordt alleen bepaalde gebruikers
toegestaan gebruik te maken van de mogelijkheden van &man.ssh.1;
om toegang te krijgen tot het netwerk of Internet. In dat geval
is de juiste beleidsmodule &man.mac.portacl.4;. Maar wat te doen
voor bestandssystemen? Moet alle toegang tot bepaalde mappen
worden afgesneden van andere gebruikersgroepen of specifieke
gebruikers, of moeten de toegang voor gebruikers of programma's
tot bepaalde bestanden worden ingesteld door bepaalde objecten
als geheim te bestempelen?In het geval van het bestandssysteem, kan ervoor gekozen
worden om de toegang voor sommige objecten voor bepaalde
gebruikers als geheim te bestempelen, maar voor andere niet.
Bijvoorbeeld: een groot ontwikkelteam wordt opgedeeld in kleinere
eenheden van individuen. Ontwikkelaars in project A horen geen
toegang te hebben tot objecten die zijn geschreven door
ontwikkelaars in project B. Maar misschien moeten ze wel toegang
hebben tot objecten die zijn geschreven door ontwikkelaars in
project C. Dat is nogal wat. Door gebruik te maken van de
verschillende beveiligingsbeleidsmodules in het
MAC-raamwerk kunnen gebruikers in hun groepen
worden opgedeeld en kan ze toegang gegeven worden tot de juiste
locaties zonder dat er angst hoeft te zijn voor het lekken van
informatie.Zo heeft dus iedere beveiligingsbeleidsmodule een unieke wijze
om om te gaan met de totale beveiliging van een systeem. Het
kiezen van modules hoort gebaseerd te zijn op een zorgvuldig
uitgedacht beveiligingsbeleid. In veel gevallen wordt het totale
beveiligingsbeleid aangepast en opnieuw toegepast op het systeem.
Een goed begrip van de verschillende beveiligingsbeleidsmodules
die het MAC-raamwerk biedt helpt beheerders bij
het kiezen van de juiste beleidseenheden voor hun situatie.De standaard &os;-kernel kent geen ondersteuning voor het
MAC-raamwerk en daarom dient de volgende
kerneloptie toegevoegd te worden voordat op basis van de
voorbeelden of informatie uit dit hoofdstuk wijzigen worden
gemaakt:options MACHierna dient de kernel herbouwd en opnieuw geïnstalleerd
te worden.Hoewel in de verschillende hulppagina's voor
MAC-beleidsmodules staat dat ze in de kernel
gebouwd kunnen worden, is het mogelijk het systeem van het
netwerk af te sluiten en meer. Het implementeren van
MAC is net zoiets als het implementeren van
een firewall en er moet opgepast worden dat een systeem niet
totaal op slot gaat. Er dient rekening gehouden te worden met
het teruggaan naar een vorige instelling en het op afstand
implementeren van MAC dient bijzonder
voorzichtig te gebeuren.MAC-labels begrijpenEen MAC-label is een beveiligingsattribuut
dat toegepast kan worden op subjecten en objecten die door het
systeem gaan.Bij het instellen van een label moet de gebruiker in staat
zijn om precies te begrijpen wat er gebeurt. De attributen die
voor een object beschikbaar zijn hangen af van de geladen
beleidsmodule en die interpreteren hun attributen op nogal
verschillende manieren. Het resultaat kan resulteren in
onverwacht en wellicht ongewenst gedrag van een systeem als het
beleid door een gebrek aan begrip verkeerd is ingesteld.Het beveiligingslabel op een object wordt gebruikt als
onderdeel van een beveiligingstoegangscontrolebeslissing door een
beleidseenheid. Voor sommige beleidseenheden bevat het label zelf
alle informatie die nodig is voor het maken van een beslissing;
in andere modellen kunnen de labels als onderdeel van een grotere
verzameling verwerkt worden, enzovoort.Zo staat bijvoorbeeld het instellen van het label
biba/low op een bestand voor een label dat
wordt beheerd door de beveiligingsbeleidsmodule Biba, met een
waarde van low.Een aantal beleidsmodules die in &os; de mogelijkheid voor
labelen ondersteunen, bieden drie specifieke voorgedefinieerde
labels: low, high en equal. Hoewel ze in verschillende
beleidsmodules op een andere manier toegangscontrole afdwingen,
is er de garantie dat het label low de laagst
mogelijke instelling is, het label equal het
subject of object uitschakelt of ongemoeid laat en het label
high de hoogst mogelijk instelling afdwingt
die beschikbaar is in de beleidsmodules Biba en
MLS.Binnen een bestandssysteemomgeving met een enkelvoudig label
kan er maar één label gebruikt worden op objecten.
Hiermee wordt een verzameling van toegangsrechten op het hele
systeem opgelegd en dat is voor veel omgevingen voldoende. Er
zijn echter een aantal gevallen waarin het wenselijk is
meervoudige labels in te stellen op subjecten of objecten in het
bestandssysteem. In die gevallen kan de optie
meegegeven worden aan
&man.tunefs.8;.In het geval van Biba en MLS kan er een
numeriek label gezet worden om het precieze niveau van de
hiërarchische controle aan te geven. Dit numerieke niveau
wordt gebruikt om informatie in verschillende groepen te
partitioneren of te sorteren voor het classificeren voor het geven
van toegang voor een bepaalde groep of een groep van een hoger
niveau.In de meeste gevallen stelt een beheerder alleen maar een
enkelvoudig label in dat door het hele bestandssysteem wordt
gebruikt.Wacht eens, dat klinkt net als
DAC! MAC gaf de controle
toch strikt aan de beheerder? Dat klopt nog steeds,
root heeft nog steeds de controle in handen
en is degene die het beleid instelt zodat gebruikers in de juiste
categorie en/of toegangsniveaus worden geplaatst. Daarnaast
kunnen veel beleidsmodules ook de gebruiker
root beperkingen opleggen. Dan wordt de
controle overgedragen aan een groep, maar kan
root de instellingen op ieder gewenst moment
intrekken of wijzigen. Dit is het hiërarchische of
toegangsmodel dat wordt afgedekt door beleidseenheden zoals Biba
en MLS.LabelinstellingenVrijwel alle aspecten voor het instellen van labelbeleid
worden uitgevoerd met basissysteemprogramma's. Die commando's
bieden een eenvoudige interface voor object- of
subjectinstellingen of de manipulatie en verificatie van de
instellingen.Alle instellingen kunnen gemaakt worden met de
hulpprogramma's &man.setfmac.8; en &man.setpmac.8;.
Het commando setfmac wordt gebruikt om
MAC labels op systeemobjecten in te stellen
en setpmac voor het instellen van de labels
op systeemsubjecten:&prompt.root; setfmac biba/high testAls het bovenstaande commando geen foutmeldingen heeft
veroorzaakt, dan komt er een prompt terug. Deze commando's
geven nooit uitvoer, tenzij er een fout is opgetreden; net als
bij de commando's &man.chmod.1; en &man.chown.8;. In sommige
gevallen kan de foutmelding Permission
denied zijn en deze treedt meestal op als het label
wordt ingesteld of gewijzigd op een object dat is beperkt.
Andere condities kunnen andere foutmeldingen
veroorzaken. De gebruiker die het object probeert te
herlabelen kan bijvoorbeeld niet de eigenaar zijn van het
bestand, het object kan niet bestaan of alleen-lezen zijn.
Een verplichte beleidsinstelling zal het proces niet
toestaan om een bestand te herlabelen, misschien om een
eigenschap van het bestand, een eigenschap van het proces
of een eigenschap van de voorgestelde nieuwe waarde van het
label. Een gebruiker die met een lage integriteit draait,
probeert bijvoorbeeld het label van een bestand met een hoge
integriteit te veranderen of zo'n zelfde gebruiker kan
proberen het label van een bestand met lage integriteit te
wijzigen in een label van een hoge integriteit.
De systeembeheerder kan de volgende commando's gebruiken om dit
probleem te voorkomen:&prompt.root; setfmac biba/high testPermission denied
&prompt.root; setpmac biba/low setfmac biba/high test
&prompt.root; getfmac test
test: biba/highHierboven is te zien dat setpmac gebruikt
kan worden om aan de instellingen van een beleidsmodules voorbij
te gaan door een ander label toe te wijzen aan het aangeroepen
proces. Het hulpprogramma getpmac wordt
meestal toegepast op processen die al draaien, zoals
sendmail: hoewel er een proces-ID
nodig is in plaats van een commando, is de logica gelijk. Als
gebruikers proberen een bestand te manipuleren waar ze geen
toegang tot hebben, onderhevig aan de regels van de geladen
beleidsmodules, dan wordt de foutmelding Operation
not permitted weergegeven door de functie
mac_set_link.LabeltypenMet de beleidsmodules &man.mac.biba.4;, &man.mac.mls.4; en
&man.mac.lomac.4; is het mogelijk eenvoudige labels toe te
wijzen. Die kunnen hoog, gelijk aan en laag zijn. Hieronder
een beschrijving van wat die labels betekenen:Het label low is de laagst
mogelijke labelinstelling die een object of subject kan
hebben. Deze instelling op objecten of subjecten
blokkeert hun toegang tot objecten of subjecten met de
markering hoog.Het label equal hoort alleen
ingesteld te worden op objecten die uitgesloten moeten
worden van een beleidsinstelling.Het label high geeft een object of
subject de hoogst mogelijke instelling.Afhankelijke van iedere beleidsmodule heeft iedere
instelling een ander informatiestroomdirectief tot gevolg.
Het lezen van de hulppagina's die van toepassing zijn geeft
inzicht in de precieze eigenschappen van de standaard
labelinstellingen.Gevorderde labelinstellingenDit zijn de labels met numerieke graden die gebruikt
worden voor
vergelijking:afdeling+afdeling.biba/10:2+3+6(5:2+3-20:2+3+4+5+6)Het bovenstaande kan dus geïnterpreteerd worden
als:Biba-beleidslabel/Graad
10:Afdelingen 2, 3 en 6:
(graad 5 ...)In dit voorbeeld is de eerste graad de
effectieve graad met de effectieve
afdelingen, de tweede graad is de lage graad en de
laatste is de hoge graad. In de meeste instellingen worden
deze instellingen niet gebruikt. Ze zijn inderdaad
instellingen voor gevorderden.Als ze worden toegepast op systeemobjecten, hebben ze
alleen een huidige graad/afdeling in vergelijking met
systeemsubjecten, omdat ze de reikwijdte van rechten in het
systeem en op netwerkinterfaces aangeven, waar ze gebruikt
worden voor toegangscontrole.De graad en afdelingen in een subject en object paar
wordt gebruikt om een relatie te construeren die
dominantie heet, waar een subject een object
domineert, geen van beiden domineert, of beiden elkaar
domineren. Het geval beiden domineren komt
voor als de twee labels gelijk zijn. Vanwege de natuur van
de informatiestroom van Biba, heeft een gebruiker rechten
op een verzameling van afdelingen, need to
know, die overeen zouden kunnen komen met projecten,
maar objecten hebben ook een verzameling van afdelingen.
Gebruikers dienen wellicht hun rechten onder te verdelen met
su of setpmac om
toegang te krijgen tot objecten in een afdeling die geen
verboden terrein voor ze zijn.Gebruikers en labelinstellingenGebruikers moeten zelf labels hebben, zodat hun bestanden
en processen juist kunnen samenwerken met het
beveiligingsbeleid dat op een systeem is ingesteld. Dit wordt
ingesteld via het bestand login.conf door
gebruik te maken van aanmeldklassen. Iedere beleidsmodule die
labels gebruikt implementeert ook de instelling van de
gebruikersklasse.Een voorbeeld dat iedere instelling uit de beleidsmodule
bevat is hieronder te zien:default:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
:path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
:manpath=/usr/share/man /usr/local/man:\
:nologin=/usr/sbin/nologin:\
:cputime=1h30m:\
:datasize=8M:\
:vmemoryuse=100M:\
:stacksize=2M:\
:memorylocked=4M:\
:memoryuse=8M:\
:filesize=8M:\
:coredumpsize=8M:\
:openfiles=24:\
:maxproc=32:\
:priority=0:\
:requirehome:\
:passwordtime=91d:\
:umask=022:\
:ignoretime@:\
:label=partition/13,mls/5,biba/10(5-15),lomac/10[2]:De optie label wordt gebruikt om het
standaardlabel voor aanmeldklasse in te stellen dat door
MAC wordt afgedwongen. Het wordt
gebruikers nooit toegestaan deze waarde te wijzigen, dus kan
het gezien worden als niet optioneel vanuit het perspectief
van de gebruiker. In de echte wereld besluit een beheerder
echter nooit iedere beleidsmodule te activeren. Het wordt
sterk aangeraden de rest van die hoofdstuk te lezen alvorens
(een deel van) de bovenstaande instellingen te
implementeren.Gebruikers kunnen hun label wijzigen na het
initiële aanmelden, maar dit is wel afhankelijk van de
beperkingen van een beleidsinstelling. Het bovenstaande
voorbeeld vertelt de beleidseenheid Biba dat de minimale
integriteit van een proces 5 en het maximum 15, maar dat het
effectieve label standaard 10 is. Het proces draait op
niveau 10, totdat het het label wijzigt, misschien door een
gebruiker die setpmac gebruikt, bij het
aanmelden beperkt tot de door Biba ingestelde reeks.In alle gevallen dient de database met
aanmeldklassemogelijkheden opnieuw gebouwd te worden met
cap_mkdb na het wijzigen van
login.conf. Dit wordt ook in alle
komende voorbeelden en beschrijvingen gedaan.Het is belangrijk op te merken dat in veel gevallen sites
te maken hebben met bijzonder grote aantallen gebruikers
waardoor er een aantal verschillende aanmeldklassen nodig
zijn. Het is dan nodig gedetailleerd te plannen omdat dit
anders bijzonder complex wordt om te onderhouden.Toekomstige versies van &os; kennen een nieuwe manier om
om te gaan met het koppelen van gebruikers aan labels. Dit
komt echter niet beschikbaar tot enige tijd na
&os; 5.3.Netwerkinterfaces en labelinstellingenLabels kunnen ook ingesteld worden op netwerkinterfaces om
te assisteren bij het controleren van het stromen van gegevens
over het netwerk. In alle gevallen werken ze op dezelfde
wijze als het beleid werkt ten aanzien van objecten.
Gebruikers met bijvoorbeeld een hoge instelling in
biba krijgen geen toegang tot interfaces
met een laag label.Het kan meegegeven worden aan
ifconfig als het
MAC-label op netwerkinterfaces wordt
ingesteld:&prompt.root; ifconfig bge0 maclabel biba/equalIn het bovenstaande voorbeeld wordt het
MAC-label biba/equal
ingesteld op de interface &man.bge.4;. Als er een instelling
wordt gebruikt die gelijkvormig is aan
biba/high(low-high), dan moet het volledige
label worden ingegeven, anders treedt er een fout op.Iedere beleidsmodule die labels ondersteunt een instelling
waarmee het MAC-label op netwerkinterfaces
kan worden uitgeschakeld. Het label instellen op
heeft hetzelfde effect. Deze
instellingen zijn na te kijken in de uitvoer van
sysctl, de hulppagina van het beleid en
zelfs later in dit hoofdstuk.Enkelvoudig label of meervoudig label?Standaard gebruikt een systeem de optie
. Wat betekent dit voor een
beheerder? Er zijn een aantal verschillen die allemaal hun
eigen voor- en nadelen hebben voor de flexibiliteit in het
beveiligingsmodel voor een systeem.Bij gebruik van kan er maar
één label, bijvoorbeeld
biba/high, gebruikt worden voor ieder subject
of object. Hierdoor is er minder beheer nodig, maar de
flexibiliteit voor beleid dat labels ondersteunt daalt erdoor.
Veel beheerders willen de optie
gebruiken in hun beveiligingsmodel.De optie staat ieder subject of
object toe om zijn eigen onafhankelijke
MAC-label te hebben in plaats van de
standaardoptie , die maar
één label toestaat op een hele partitie. De
labelopties en
zijn alleen verplicht voor de
beleidseenheden die de mogelijkheid bieden om te labelen,
waaronder de beleidsmogelijkheden van Biba, Lomac,
MLS en SEBSD.In veel gevallen hoeft niet eens
ingesteld te worden. Stel er is de volgende situatie en
beveiligingsmodel:&os;-webserver die gebruik maakt van het
MAC-raamwerk en een mengeling van
verschillende beleidseenheden.De webserver heeft maar één label nodig,
biba/high, voor alles in het systeem.
Hier is de optie voor het
bestandssysteem niet nodig, omdat een enkelvoudig label
altijd van toepassing is.Maar omdat de machine als webserver dienst gaat doen,
dient de webserver te draaien als
biba/low om administratiemogelijkheden te
voorkomen. Later wordt beschreven hoe de beleidseenheid
Biba werkt, dus als de voorgaande opmerking wat lastig te
begrijpen is, lees dan verder en kom later nog een keer
terug. De server zou een aparte partitie kunnen gebruiken
waarop biba/low van toepassing kan zijn
voor de meeste, zo niet alle, runtime-statussen. Er
ontbreekt veel in dit voorbeeld, bijvoorbeeld de restricties
op gegevens en (gebruikers)instellingen. Dit was slechts
een snel voorbeeld om de hiervoor aangehaalde stelling te
ondersteunen.Als er een niet-labelende beleidseenheid wordt gebruikt, dan
is de optie nooit verplicht.
Hieronder vallen de beleidseenheden
seeotheruids, portacl en
partition.Bij gebruik van voor een
partitie en het neerzetten van een beveiligingsmodel gebaseerd
op functionaliteit gaat de deur open
voor hogere administratieve rompslomp, omdat alles in een
bestandssysteem een label krijgt. Hieronder vallen mappen,
bestanden en zelfs apparaatknooppunten.Het volgende commando stelt in
op de bestandssystemen om meerdere labels te kunnen krijgen.
Dit kan alleen uitgevoerd worden in enkele gebruikersmodus:&prompt.root; tunefs -l enable /Dit is geen criterium voor het wisselbestandssysteem.Sommige gebruikers hebben problemen ondervonden met het
instellen van de vlag op de
rootpartitie. Als dit het geval is, kijk dan naar van dit hoofdstuk.De beveiligingsconfiguratie plannenWanneer een nieuwe technologie wordt geïmplementeerd is
een planningsfase altijd een goed idee. Tijdens de planningsfases
zou een beheerder in het algemeen naar de big
picture moeten kijken, en daarbij minstens het volgende
in de gaten proberen te houden:De implementatiebenodigdheden;De implementatiedoelen;Voor MAC-installaties houden deze in:Hoe de beschikbare informatie en bronnen die op het
doelsysteem aanwezig zijn te classificeren.Voor wat voor soort informatie of bronnen de toegang te
beperken samen met het type van de beperkingen die dienen te
worden toegepast.Welke MAC-module(s) nodig zullen zijn
om dit doel te bereiken.Het is altijd mogelijk om de systeembronnen en de
beveiligingsinstellingen te veranderen en te herconfigureren, het
komt vaak erg ongelegen om het systeem te doorzoeken en bestaande
bestanden en gebruikersaccounts te repareren. Plannen helpt om
zeker te zijn van een probleemloze en efficiënte
systeemimplementatie. Het is vaak vitaal en zeker in uw voordeel
om een proefronde van het vertrouwde systeem, inclusief de
configuratie, te draaien
vóórdat een
MAC-implementatie wordt gebruikt op
productiesystemen. Het idee om een systeem met
MAC gewoon los te laten is als het plannen van
mislukkingen.Verschillende omgevingen kunnen verschillende behoeften en
benodigdheden nodig hebben. Het opzetten van een diepgaand en
compleet beveiligingsprofiel zal de noodzaak van verandering
verminderen wanneer het systeem in gebruik wordt genomen.
Zodoende zullen de toekomstige secties de verschillende modules
die beschikbaar zijn voor beheerders behandelen; hun gebruik en
configuratie beschrijven; en in sommige gevallen inzicht bieden in
welke situaties ze het beste tot hun recht komen. Een webserver
bijvoorbeeld zou de beleiden &man.mac.biba.4; en
&man.mac.bsdextended.4; in gebruik nemen. In andere gevallen kan
voor een machine met erg weinig lokale gebruikers
&man.mac.partition.4; een goede keuze zijn.Module-instellingenIedere module uit het MAC-raamwerk kan
zoals zojuist aangegeven in de kernel worden gecompileerd of als
runtime-kernelmodule geladen worden. De geadviseerde methode is
de naam van een module toevoegen aan het bestand
/boot/loader.conf zodat die wordt geladen
tijdens de eerste fase van het starten van een systeem.In de volgende onderdelen worden de verschillende
MAC-modules en hun mogelijkheden beschreven.
De implementatie in een specifieke omgeving wordt ook in dit
hoofdstuk beschreven. Een aantal modules ondersteunt het gebruik
van labelen, wat het beperken van toegang is door een label als
dit is toegestaan en dat niet af te dwingen. Een
labelinstellingenbestand kan bepalen hoe bestanden kunnen worden
benaderd, hoe netwerkcommunicatie wordt uitgewisseld, en meer. In
het vorige onderdeel is beschreven hoe de vlag
ingesteld kon worden op
bestandssystemen om per bestand of per partitie toegangscontrole
in te schakelen.Een instelling met een enkelvoudig label zou maar
één label over een heel systeem afdwingen, daarom
wordt de optie tunefs
genoemd.MAC-module seeotheruidsMAC zie andere UID's beleidsinstellingModulenaam: mac_seeotheruids.koKernelinstelling: options
MAC_SEEOTHERUIDSOpstartoptie:
mac_seeotheruids_load="YES"De module &man.mac.seeotheruids.4; imiteert de
sysctl-tunables
security.bsd.see_other_uids en
security.bsd.see_other_gids en breidt deze
uit. Voor deze optie hoeven geen labels ingesteld te worden voor
de instelling en hij werkt transparant met de andere modules.Na het laden van de module kunnen de volgende
sysctl-tunables gebruikt worden om de opties te
beheren:security.mac.seeotheruids.enabled
schakelt de opties van de module in en gebruikt de
standaardinstellingen. Deze standaardinstellingen ontzeggen
gebruikt de mogelijkheid processen en sockets te zien die
eigendom zijn van andere gebruikers.security.mac.seeotheruids.specificgid_enabled
staat toe dat een bepaalde groep niet onder dit beleid valt.
Om bepaalde groepen van dit beleid uit te sluiten, kan de
sysctl-tunable
security.mac.seeotheruids.specificgid=XXX
gebruikt worden. In het bovenstaande voorbeeld dient
XXX vervangen te worden door het
numerieke ID van een groep die uitgesloten moet worden van de
beleidsinstelling.security.mac.seeotheruids.primarygroup_enabled
wordt gebruikt om specifieke primaire groepen uit te sluiten
van dit beleid. Als deze tunable wordt gebruikt, mag
security.mac.seeotheruids.specificgid_enabled
niet gebruikt worden.MAC-module bsdextendedMACbestandssysteemfirewall beleidsinstellingModulenaam: mac_bsdextended.koKernelinstelling:
options MAC_BSDEXTENDEDOpstartoptie:
mac_bsdextended_load="YES"De module &man.mac.bsdextended.4; dwingt de
bestandssysteemfirewall af. Het beleid van deze module biedt een
uitbreiding van het standaard rechtenmodel voor bestandssystemen,
waardoor een beheerder een firewallachtige verzameling met regels
kan maken om bestanden, programma's en mappen in de
bestandssysteemhiërarchie te beschermen. Wanneer geprobeerd
wordt om toegang tot een object in het bestandssysteem te krijgen,
wordt de lijst met regels afgelopen totdat er òf een
overeenkomstige regel is gevonden òf het einde van de lijst
is bereikt. Dit gedrag kan veranderd worden door het gebruik van
de &man.sysctl.8;-parameter
security.mac.bsdextended.firstmatch_enabled. Net zoals andere
firewall-modules in &os; kan een bestand dat regels voor
toegangscontrole bevat tijdens het opstarten door het systeem
worden aangemaakt en gelezen door een &man.rc.conf.5;-variabele te
gebruiken.De lijst met regels kan ingevoerd worden met het hulpprogramma
&man.ugidfw.8;, dat een syntaxis heeft die lijkt op die van
&man.ipfw.8;. Meer hulpprogramma's kunnen geschreven worden met
de functies in de bibliotheek &man.libugidfw.3;.Bij het werken met deze module dient bijzondere
voorzichtigheid in acht te worden genomen. Verkeerd gebruik kan
toegang tot bepaalde delen van het bestandssysteem blokkeren.VoorbeeldenNadat de module &man.mac.bsdextended.4; is geladen, kan met
het volgende commando de huidige regels getoond worden:&prompt.root; ugidfw list
0 slots, 0 rulesZoals verwacht zijn er geen regels ingesteld. Dit betekent
dat alles nog steeds volledig toegankelijk is. Om een regel te
maken die alle toegang voor alle gebruikers behalve
root ontzegt:&prompt.root; ugidfw add subject not uid root new object not uid root mode nDit is een slecht idee, omdat het voorkomt dat alle
gebruikers ook maar het meest eenvoudige commando kunnen
uitvoeren, zoals ls. Een betere lijst met
regels zou kunnen zijn:&prompt.root; ugidfw set 2 subject uid gebruiker1 object uid gebruiker2 mode n
&prompt.root; ugidfw set 3 subject uid gebruiker1 object gid gebruiker2 mode nHiermee wordt alle toegang, inclusief het tonen van
mapinhoud, tot de thuismap van
gebruiker2
ontzegd voor de gebruikersnaam gebruiker1.In plaats van gebruiker1, zou
kunnen worden opgegeven. Hierdoor worden dezelfde restricties
als hierboven actief voor alle gebruikers in plaats van voor
slechts één gebruiker.De gebruiker root blijft onaangetast
door deze wijzigingen.Met deze informatie zou een basisbegrip moeten zijn ontstaan
over hoe de module &man.mac.bsdextended.4; gebruikt kan worden
om een bestandssysteem te beschermen. Meer informatie staat in
de hulppagina's van &man.mac.bsdextended.4; en &man.ugidfw.8;.MAC-module ifoffMAC Interface Silencing beleidsinstellingModulenaam: mac_ifoff.koKernelinstelling:
options MAC_IFOFFOpstartoptie: mac_ifoff_load="YES"De module &man.mac.ifoff.4; bestaat alleen om
netwerkinterfaces tijdens het draaien uit te schakelen en om te
verhinderen dat netwerkinterfaces tijdens het initiële
opstarten worden geactiveerd. Er hoeven geen labels ingesteld te
worden, noch is deze module afhankelijk van andere
MAC-modules.Het meeste beheer wordt gedaan met de
sysctl-tunables die hieronder zijn vermeld.security.mac.ifoff.lo_enabled schakelt
alle verkeer op teruglusinterface (&man.lo.4;) in of of uit.security.mac.ifoff.bpfrecv_enabled
schakelt alle verkeer op het Berkeley Packet Filterinterface
(&man.bpf.4;) in of uit.security.mac.ifoff.other_enabled
schakelt alle verkeer op alle andere interfaces in of uit.&man.mac.ifoff.4; wordt het meest gebruikt om netwerken te
monitoren in een omgeving waar netwerkverkeer niet toegestaan zou
moeten zijn tijdens het opstarten. Een ander voorgesteld gebruik
zou het schrijven van een script zijn dat security/aide gebruikt om automatisch
netwerkverkeer te blokkeren wanneer het nieuwe of veranderde
bestanden in beschermde mappen vindt.MAC-module portaclMAC poorttoegangscontrolelijst beleidsinstellingModulenaam: mac_portacl.koKernelinstelling:
MAC_PORTACLOpstartoptie: mac_portacl_load="YES"De module &man.mac.portacl.4; wordt gebruikt om het binden aan
lokale TCP- en UDP-poorten
te begrenzen door een waaier aan
sysctl-variabelen te gebruiken. In essentie
maakt &man.mac.portacl.4; het mogelijk om
niet-root-gebruikers in staat te stellen om
aan gespecificeerde geprivilegieerde poorten te binden, dus
poorten lager dan 1024.Eenmaal geladen zal deze module het
MAC-beleid op alle sockets aanzetten. De
volgende tunables zijn beschikbaar:security.mac.portacl.enabled schakelt
het beleid volledig in of uit.security.mac.portacl.port_high stelt
het hoogste poortnummer in waarvoor &man.mac.portacl.4;
bescherming biedt.security.mac.portacl.suser_exempt sluit
de gebruiker root uit van dit beleid
wanneer het op een waarde anders dan nul wordt ingesteld.security.mac.portacl.rules specificeert
het eigenlijke beleid van mac_portacl; zie onder.Het eigenlijke beleid van mac_portacl,
zoals gespecificeerd in de sysctl
security.mac.portacl.rules, is een tekststring
van de vorm: regel[,regel,...] met zoveel
regels als nodig. Elke regel heeft de vorm:
idtype:id:protocol:poort. De parameter
idtype kan uid of
gid zijn en wordt gebruikt om de parameter
id als respectievelijk een gebruikers-id of
groeps-id te interpreteren. De parameter
protocol wordt gebruikt om te bepalen of de
regel op TCP of UDP moet
worden toegepast door de parameter op tcp of
udp in te stellen. De laatste parameter
poort is het poortnummer waaraan de
gespecificeerde gebruiker of groep zich mag binden.Aangezien de regelverzameling direct door de kernel wordt
geïnterpreteerd kunnen alleen numerieke waarden voor de
parameters voor de gebruikers-ID, groeps-ID, en de poort
gebruikt worden. Namen van gebruikers, groepen, en
poortdiensten kunnen dus niet gebruikt worden.Standaard kunnen op &unix;-achtige systemen poorten lager dan
1024 alleen aan geprivilegieerde processen gebonden worden, dus
diegenen die als root draaien. Om
&man.mac.portacl.4; toe te laten staan om ongeprivilegieerde
processen aan poorten lager dan 1024 te laten binden moet deze
standaard &unix;-beperking uitgezet worden. Dit kan bereikt
worden door de &man.sysctl.8;-variabelen
net.inet.ip.portange.reservedlow en
net.inet.ip.portrange.reservedhigh op nul te
zetten.Zie de onderstaande voorbeelden of bekijk de handleidingpagina
voor &man.mac.portacl.4; voor meer informatie.VoorbeeldenDe volgende voorbeelden zouden de bovenstaande discussie wat
moeten toelichten:&prompt.root; sysctl security.mac.portacl.port_high=1023
&prompt.root; sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0Eerst wordt &man.mac.portacl.4; ingesteld om de standaard
geprivilegieerde poorten te dekken en worden de normale
bindbeperkingen van &unix; uitgeschakeld.&prompt.root; sysctl security.mac.portacl.suser_exempt=1De gebruiker root zou niet beperkt
moeten worden door dit beleid, stel
security.mac.portacl.suser_exempt dus in op
een waarde anders dan nul. De module &man.mac.portacl.4; is nu
ingesteld om zich op de zelfde manier te gedragen als
&unix;-achtige systemen zich standaard gedragen.
&prompt.root; sysctl security.mac.portacl.rules=uid:80:tcp:80Sta de gebruiker met UID 80 (normaliter
de gebruiker www) toe om zich aan poort 80
te binden. Dit kan gebruikt worden om de gebruiker
www toe te staan een webserver te draaien
zonder ooit root-rechten te hebben.&prompt.root; sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995Sta de gebruiker met UID 1001 om zich aan
de TCP-poorten 110 (pop3) en
995 (pop3s) te binden. Dit staat deze gebruiker
toe om een server te starten die verbindingen accepteert op
poorten 110 en 995.MAC-module partitionMAC procespartitionering beleidsinstellingModulenaam: mac_partition.koKernelinstelling:
options MAC_PARTITIONOpstartoptie:
mac_partition_load="YES"Het beleid &man.mac.partition.4; plaatst processen in
specifieke partities gebaseerd op hun
MAC-label. Zie dit als een speciaal soort
&man.jail.8;, hoewel dit nauwelijks een waardige vergelijking is.Dit is één module die aan het bestand
&man.loader.conf.5; dient te worden toegevoegd zodat het het
beleid tijdens het opstartproces laadt en aanzet.De meeste configuratie van dit beleid wordt gedaan met het
gereedschap &man.setpmac.8;, wat hieronder zal worden uitgelegd.
De volgende sysctl-tunable is beschikbaar voor
dit beleid:security.mac.partition.enabled zet het
afdwingen van MAC-procespartities aan.Wanneer dit beleid aanstaat, mogen gebruikers alleen hun eigen
processen zien, en elke andere in hun partitie, maar mogen niet
met gereedschappen buiten deze partitie werken. Bijvoorbeeld, een
gebruiker in de klasse insecure heeft geen
toegang tot het commando top noch tot vele
andere commando's die een proces moeten draaien.Gebruik het gereedschap setpmac om
gereedschappen in te stellen of ze in een partitielabel te
plaatsen:&prompt.root; setpmac partition/13 topDit zal het commando top toevoegen aan het
label dat voor gebruikers in de klasse insecure
gebruikt wordt. Merk op dat alle processen gestart door
gebruikers in de klasse insecure in het label
partition/13 zullen blijven.VoorbeeldenHet volgende commando laat de partitielabel en de
proceslijst zien:&prompt.root; ps ZaxHet volgende commando staat toe om het procespartitielabel
van een andere gebruiker en de momenteel draaiende processen van
die gebruiker te zien:&prompt.root; ps -ZU trhodesGebruikers kunnen processen in het label van
root zien tenzij het beleid
&man.mac.seeotheruids.4; is geladen.Een echte vakmansimplementatie zou alle diensten in
/etc/rc.conf uitzetten en deze door een
script met de juiste labeling laten starten.De volgende beleiden ondersteunen integerinstellingen in
plaats van de drie standaardlabels die aangeboden worden.
Deze opties, inclusief hun beperkingen, worden verder
uitgelegd in de handleidingpagina's van de modules.MAC-module Multi-Level SecurityMAC Multi-Level Security PolicyMAC meerlaagse beveiliging beleidsinstellingModulenaam: mac_mls.koKernelinstelling:
options MAC_MLSOpstartoptie: mac_mls_load="YES"Het beleid &man.mac.mls.4; beheert toegang tussen subjecten en
objecten in het systeem door een strikt beleid voor
informatiestromen af te dwingen.In MLS-omgevingen wordt een
toestemming-niveau ingesteld in het label van elk
subject of object, samen met compartimenten. Aangezien deze
toestemmings- of zinnigheidsniveaus getallen groter dan zesduizend
kunnen bereiken; zou het voor elke systeembeheerder een
afschrikwekkende taak zijn om elk subject of object grondig te
configureren. Gelukkig worden er al drie
kant-en-klare bij dit beleid geleverd.Deze labels zijn mls/low,
mls/equal en mls/high.
Aangezien deze labels uitgebreid in de handleidingpagina worden
beschreven, worden ze hier slechts kort beschreven:Het label mls/low bevat een lage
configuratie welke het toestaat om door alle andere objecten
te worden gedomineerd. Alles dat met
mls/low is gelabeld heeft een laag
toestemmingsniveau en heeft geen toegang tot informatie van
een hoger niveau. Ook voorkomt dit label dat objecten van een
hoger toestemmingsniveau informatie naar hen schrijven of aan
hen doorgeven.Het label mls/equal dient geplaatst te
worden op objecten die geacht te zijn uitgesloten van het
beleid.Het label mls/high is het hoogst
mogelijke toestemmingsniveau. Objecten waaraan dit label is
toegekend zijn dominant over alle andere objecten in het
systeem; ze mogen echter geen informatie lekken naar objecten
van een lagere klasse.MLS biedt:Een hiërarchisch beveiligingsniveau met een
verzameling niet-hiërarchische categoriën;Vaste regels: niet naar boven lezen, niet naar beneden
schrijven (een subject kan leestoegang hebben naar objecten op
zijn eigen niveau of daaronder, maar niet daarboven. Evenzo
kan een subject schrijftoegang hebben naar objecten op zijn
eigen niveau of daarboven maar niet daaronder.);Geheimhouding (voorkomt ongeschikte openbaarmaking van
gegevens);Een basis voor het ontwerp van systemen die gelijktijdig
gegevens op verschillende gevoeligheidsniveaus behandelen
(zonder informatie tussen geheim en vertrouwelijk te lekken).De volgende sysctl-tunables zijn
beschikbaar voor de configuratie van speciale diensten en
interfaces:security.mac.mls.enabled wordt gebruikt
om het MLS-beleid in en uit te schakelen.security.mac.mls.ptys_equal labelt alle
&man.pty.4;-apparaten als mls/equal wanneer
ze worden aangemaakt.security.mac.mls.revocation_enabled
wordt gebruikt om toegang tot objecten in te trekken nadat hun
label in die van een lagere graad verandert.security.mac.mls.max_compartments wordt
gebruikt om het maximaal aantal compartimentniveaus met
objecten in te stellen; in feite het maximale
compartimentnummer dat op een systeem is toegestaan.Het commando &man.setfmac.8; kan gebruikt worden om de
MLS-labels te manipuleren. Gebruik het
volgende commando om een label aan een object toe te kennen:&prompt.root; setfmac mls/5 testGebruik het volgende commando om het
MLS-label voor het bestand
test te verkrijgen:&prompt.root; getfmac testDit is een samenvatting van de mogelijkheden van het beleid
MLS. Een andere manier is om een
meesterbeleidsbestand in /etc aan te maken dat de
MLS-informatie bevat en om dat bestand aan het
commando setfmac te geven. Deze methode wordt
uitgelegd nadat alle beleiden zijn behandeld.Verplichte Gevoeligheid plannenMet de beleidsmodule voor meerlaagse beveiliging plant een
beheerder het beheren van gevoelige informatiestromen.
Standaard zet het systeem met zijn natuur van lezen naar boven
blokkeren en schrijven naar beneden blokkeren alles in een lage
toestand. Alles is beschikbaar en een beheerder verandert dit
langzaam tijdens de configuratiefase; waarbij de
vertrouwelijkheid van de informatie toeneemt.Buiten de bovengenoemde drie basisopties voor labels, kan
een beheerder gebruikers en groepen indelen als nodig om de
informatiestroom tussen hun te blokkeren. Het is misschien
gemakkelijker om naar de informatie te kijken in
toestemmingsniveaus waarvoor bekende woorden bestaan, zoals
Vertrouwelijk, Geheim en
Strikt Geheim. Sommige beheerders zullen
verschillende groepen aanmaken gebaseerd op verschillende
projecten. Ongeacht de classificatiemethode moet er een goed
overwogen plan bestaan voordat zo'n berperkend beleid wordt
geïmplementeerd.Wat voorbeeldsituaties voor deze beveiligingsbeleidsmodule
kunnen een e-commerce webserver, een bestandsserver die kritieke
bedrijfsinformatie, en omgevingen van financiële
instellingen zijn. De meest onwaarschijnlijke plaats zou een
persoonlijk werkstation met slechts twee of drie gebruikers
zijn.MAC-module BibaMAC Biba Integrity PolicyMAC Biba integriteit beleidsinstellingModulenaam: mac_biba.koKernelinstelling: options MAC_BIBAOpstartoptie: mac_biba_load="YES"De module &man.mac.biba.4; laadt het beleid
MAC Biba. Dit beleid werkt vaak zoals dat van
MLS behalve dat de regels voor de
informatiestroom lichtelijk zijn omgedraaid. Dit is gezegd om de
neerwaartse stroom van gevoelige informatie te voorkomen terwijl
het beleid MLS de opwaartse stroom van
gevoelige informatie voorkomt; veel van deze sectie is dus op
beide beleiden toepasbaar.In Biba-omgevingen wordt een integriteits-label
op elk subject of object ingesteld. Deze labels bestaan uit
hiërarchische graden, en niet-hiërarchische componenten.
Een graad van een object of subject stijgt samen met de
integriteit.Ondersteunde labels zijn biba/low,
biba/equal, en biba/high;
zoals hieronder uitgelegd:Het label biba/low wordt gezien als de
laagste integriteit die een object of subject kan hebben. Dit
instellen op objecten of subjecten zal hun schrijftoegang tot
objecten of subjecten die als hoog zijn gemarkeerd blokkeren.
Ze hebben echter nog steeds leestoegang.Het label biba/equal dient alleen
geplaatst te worden op objecten die geacht te zijn uitgesloten
van het beleid.Het label biba/high staat schrijven
naar objecten met een lager label toe maar sluit het lezen van
dat object uit. Het wordt aangeraden om dit label te plaatsen
op objecten die de integriteit van het gehele systeem
beïnvloeden.Biba biedt:Hiërarchische integriteitsniveaus met een verzameling
niet-hiërarchische integriteitscategoriën;Vaste regels: niet naar boven schrijven, niet naar beneden
lezen (tegenovergestelde van MLS). Een
subject kan schrijftoegang hebben naar objecten op hetzelfde
niveau of daaronder, maar niet daarboven. Evenzo kan een
subject leestoegang naar objecten op hetzelfde niveau of
daarboven hebben, maar niet daaronder;Integriteit (voorkomt oneigenlijk wijzigen van gegevens);Integriteitsniveaus (in plaats van de gevoeligheidsniveaus
van MLS)De volgende sysctl-tunables kunnen gebruikt
worden om het Biba-beleid te manipuleren.security.mac.biba.enabled kan gebruikt
worden om het afdwingen van het Biba-beleid op de doelmachine
aan en uit te zetten.security.mac.biba.ptys_equal kan
gebruikt worden om het Biba-beleid op &man.pty.4;-apparaten
uit te zetten.security.mac.biba.revocation_enabled
dwingt het herroepen van toegang tot objecten af als het label
is veranderd om het subject te domineren.Gebruik de commando's setfmac en
getfmac om de instellingen van het Biba-beleid
op systeemobjecten te benaderen:&prompt.root; setfmac biba/low test
&prompt.root; getfmac test
test: biba/lowVerplichte Integriteit plannenIntegriteit, anders dan gevoeligheid, garandeert dat de
informatie nooit door onvertrouwde gebruikers zal worden
gemanipuleerd. Dit geldt ook voor informatie die tussen
subjecten, objecten, of beiden wordt doorgegeven. Het verzekert
dat gebruikers alleen de informatie kunnen wijzigen en in
sommige gevallen zelfs benaderen die ze expliciet nodig hebben.De beveiligingsbeleidsmodule &man.mac.biba.4; staat een
beheerder in staat om te bepalen welke bestanden en programma's
een gebruiker of gebruikers mogen zien en draaien terwijl het
verzekert dat de programma's en bestanden vrij zijn van
dreigingen en vertrouwt zijn door het systeem voor die gebruiker
of groep van gebruikers.Tijdens de initiële planningsfase moet een beheerder
bereid zijn om gebruikers in gradaties, niveaus, en gebieden in
te delen. Gebruikers zal toegang tot niet alleen gegevens maar
ook tot programma's en hulpmiddelen ontzegt worden zowel voordat
en nadat ze beginnen. Het systeem zal standaard een hoog label
instellen nadat deze beleidsmodule is ingeschakeld, en het is
aan de beheerder om de verschillende gradaties en niveaus voor
gebruikers in te stellen. In plaats van toestemmingsniveaus
zoals boven beschreven te gebruiken, kan een goede
planningsmethode onderwerpen bevatten. Bijvoorbeeld, geef
alleen ontwikkelaars veranderingstoegang tot het
broncoderepository, de broncodecompiler, en andere
ontwikkelgereedschappen. Andere gebruikers zouden in andere
groepen zoals testers, ontwerpers, of gewone gebruikers worden
ingedeeld en zouden alleen leestoegang hebben.Met zijn natuurlijke beveiligingsbeheer kan een subject van
lagere integriteit niet schijven naar een subject van hogere
integriteit; een subject van hogere integriteit kan geen subject
van lagere integriteit observeren of lezen. Een label op de
laagst mogelijke graad instellen kan het ontoegankelijk voor
subjecten maken. Sommige succesvolle omgevingen voor deze
beveiligingsbeheermodule zijn een beperkte webserver, een
ontwikkel- en testmachine, en broncoderepositories. Minder
nuttige implementaties zouden een persoonlijk werkstation, een
machine gebruikt als router, of een netwerkfirewall zijn.MAC-module LOMACMAC LOMACModulenaam: mac_lomac.koKernelinstelling: options MAC_LOMACOpstartoptie: mac_lomac_load="YES"In tegenstelling tot het beleid MAC Biba,
staat het beleid &man.mac.lomac.4; toegang tot objecten van lagere
integriteit slechts toe nadat het integriteitsniveau is verlaagt
om de integriteitsregels niet te verstoren.De MAC-versie van het
laagwatermarkeringsintegreitsbeleid, niet te verwarren met de
oudere implementatie van &man.lomac.4;, werkt bijna hetzelfde als
Biba maar met de uitzondering dat er drijvende labels worden
gebruikt om subjectdegradatie via een hulpcompartiment met graden
te ondersteunen. Dit tweede compartiment heeft de vorm
[hulpgraad]. Wanneer een lomac-beleid met een
hulpgraad wordt toegekend, dient het er ongeveer uit te zien als:
lomac/10[2] waar het getal twee (2) de
hulpgraad is.Het beleid MAC LOMAC berust op het overal
labelen van alle systeemobjecten met integriteitslabels, waardoor
subjecten wordt toegestaan om te lezen van objecten van lage
integriteit en om daarna het label op subject te degraderen om
toekomstig schrijven naar objecten van hoge integriteit te
voorkomen. Dit is de hierboven besproken optie
[hulpgraad], dus biedt het beleid grotere
compatibiliteit en vereist het minder initiële configuratie
dan Biba.VoorbeeldenNet zoals bij de beleiden Biba en MLS
kunnen de commando's setfmac en
setpmac gebruikt worden om labels op
systeemobjecten te plaatsen:&prompt.root; setfmac /usr/home/trhodes lomac/high[low]
&prompt.root; getfmac /usr/home/trhodes lomac/high[low]Merk op dat de hulpgraad hier low is, dit
is een mogelijkheid die alleen door het beleid
- MAC LOMAC wordt geboden.
+ MAC LOMAC wordt geboden.
Nagios in een MAC-jailNagios in een MAC-jailDe volgende demonstratie zal een veilige omgeving
implementeren door verschillende MAC-modules te
te gebruiken met juist ingestelde beleiden. Dit is slechts een
test en dient niet gezien te worden als het volledige antwoord op
de beveiligingszorgen van iedereen. Gewoon een beleid
implementeren en het verder negeren werkt nooit en kan rampzalig
zijn in een productieomgeving.Voordat met dit proces wordt begonnen, moet de optie
multilabel zijn geactiveerd op elk
bestandssysteem zoals vermeld aan het begin van dit hoofdstuk.
Nalatigheid zal in fouten resulteren. Zorg er ook voor dat de
ports net-mgmt/nagios-plugins,
net-mgmt/nagios, en www/apache13 allemaal
geïnstalleerde en geconfigureerd zijn en correct werken.Gebruikersklasse insecure makenBegin de procedure door de volgende gebruikersklasse toe te
voegen aan het bestand /etc/login.conf:insecure:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
:path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
:manpath=/usr/share/man /usr/local/man:\
:nologin=/usr/sbin/nologin:\
:cputime=1h30m:\
:datasize=8M:\
:vmemoryuse=100M:\
:stacksize=2M:\
:memorylocked=4M:\
:memoryuse=8M:\
:filesize=8M:\
:coredumpsize=8M:\
:openfiles=24:\
:maxproc=32:\
:priority=0:\
:requirehome:\
:passwordtime=91d:\
:umask=022:\
:ignoretime@:\
:label=biba/10(10-10):Voeg de volgende regel toe aan de standaard
gebruikersklasse::label=biba/high:Wanneer dit voltooid is, moet het volgende commando gedraaid
worden om de database te herbouwen:&prompt.root; cap_mkdb /etc/login.confOpstartinstellingenStart nog niet opnieuw op, voeg alleen de volgende regels
toe aan /boot/loader.conf zodat de
benodigde modules worden geladen tijdens systeeminitialisatie:mac_biba_load="YES"
mac_seeotheruids_load="YES"Gebruikers instellenStel de gebruiker root in op de
standaardklasse met:&prompt.root; pw usermod root -L defaultAlle gebruikersaccounts die geen root
of systeemgebruikers zijn hebben nu een aanmeldklasse nodig. De
aanmeldklasse is nodig om te voorkomen dat gebruikers geen
toegang hebben tot gewone commando's als &man.vi.1;. Het
volgende sh-script zou moeten werken:&prompt.root; for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \/etc/passwd`; do pw usermod $x -L default; done;Laat de gebruikers nagios en
www in de klasse insecure vallen:&prompt.root; pw usermod nagios -L insecure&prompt.root; pw usermod www -L insecureHet contextbestand aanmakenNu dient een contextbestand aangemaakt te worden; het
volgende voorbeeld dient geplaatst te worden in
/etc/policy.contexts.# Dit is het standaard-BIBA-beleid voor dit systeem.
# Systeem:
/var/run biba/equal
/var/run/* biba/equal
/dev biba/equal
/dev/* biba/equal
/var biba/equal
/var/spool biba/equal
/var/spool/* biba/equal
/var/log biba/equal
/var/log/* biba/equal
/tmp biba/equal
/tmp/* biba/equal
/var/tmp biba/equal
/var/tmp/* biba/equal
/var/spool/mqueue biba/equal
/var/spool/clientmqueue biba/equal
#Voor Nagios:
/usr/local/etc/nagios
/usr/local/etc/nagios/* biba/10
/var/spool/nagios biba/10
/var/spool/nagios/* biba/10
#Voor Apache:
/usr/local/etc/apache biba/10
/usr/local/etc/apache/* biba/10Dit beleid zal beveiliging afdwingen door beperkingen aan de
informatiestroom te stellen. In deze specifieke configuratie
mogen gebruikers, inclusief root, nooit
toegang hebben tot Nagios.
Instellingenbestanden en processen die deel zijn van
Nagios zullen geheel in zichzelf
of in een jail zitten.Dit bestand kan nu in ons systeem worden gelezen door ons
systeem door het volgende commando uit te voeren:&prompt.root; setfsmac -ef /etc/policy.contexts /
&prompt.root; setfsmac -ef /etc/policy.contexts /De bovenstaande indeling van het bestandssysteem kan
afhankelijk van de omgeving verschillen; het moet echter op
elk bestandssysteem gedraaid worden.Het bestand /etc/mac.conf dient als
volgt in de hoofdsectie gewijzigd te worden:default_labels file ?biba
default_labels ifnet ?biba
default_labels process ?biba
default_labels socket ?bibaHet netwerk activerenVoeg de volgende regel toe aan
/boot/loader.conf:security.mac.biba.trust_all_interfaces=1En voeg het volgende toe aan de instellingen van de
netwerkkaart opgeslagen in rc.conf. Als de
primaire Internetconfiguratie via DHCP wordt
gedaan, kan het nodig zijn om dit handmatig te configureren
telkens nadat het systeem is opgestart:maclabel biba/equalDe configuratie testenMAC-configuratie testenControleer dat de webserver en
Nagios niet tijdens de
systeeminitialisatie worden gestart, en start opnieuw op.
Controleer dat de gebruiker root geen enkel
bestand in de instellingenmap van
Nagios kan benaderen. Als
root het commando &man.ls.1; op
/var/spool/nagios kan uitvoeren, is er iets
verkeerd. Anders zou er een fout Permission
denied teruggegeven moeten worden.Als alles er goed uitziet, kunnen
Nagios,
Apache, en
Sendmail nu gestart worden op een
manier die past in het beveiligingsbeleid. De volgende
commando's zorgen hiervoor:&prompt.root; cd /etc/mail &↦ make stop && \
setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \
setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestartControleer nogmaals om er zeker van te zijn dat alles juist
werkt. Indien niet, controleer dan de logbestanden of de
foutmeldingen. Gebruik het hulpprogramma &man.sysctl.8; om de
beveiligingsbeleidsmodule &man.mac.biba.4; uit te schakelen en
probeer om alles opnieuw op te starten, zoals gewoonlijk.De gebruiker root kan zonder angst de
afgedwongen beveiliging veranderen en de instellingenbestanden
bewerken. Het volgende commando staat toe om het
beveiligingsbeleid naar een lagere graad te degraderen voor
een nieuw voortgebrachte shell:&prompt.root; setpmac biba/10 cshOm te voorkomen dat dit gebeurt, kan de gebruiker via
&man.login.conf.5; in een bereik worden gedwongen. Als
&man.setpmac.8; probeert om een commando buiten het bereik van
het compartiment te draaien, zal er een fout worden
teruggegeven en wordt het commando niet uitgevoerd. Zet in
dit geval root op biba/high(high-high).Gebruikers afsluitenDit voorbeeld gaat over een relatief klein opslagsysteem met
minder dan vijftig gebruikers. Gebruikers kunnen zich aanmelden,
en mogen zowel gegevens opslaan als bronnen benaderen.Voor dit scenario kunnen &man.mac.bsdextended.4; gecombineerd
met &man.mac.seeotheruids.4; naast elkaar bestaan en zowel toegang
tot systeemobjecten als tot gebruikersprocessen ontzeggen.Begin door de volgende regel aan
/boot/loader.conf toe te voegen:
- mac_seeotheruids_enabled="YES"
+ mac_seeotheruids_load="YES"Het beveiligingsbeleidsmodule &man.mac.bsdextended.4; kan door
volgende variabele in rc.conf geactiveerd worden:ugidfw_enable="YES"De standaardregels in /etc/rc.bsdextended
zullen tijdens de systeeminitialisatie worden geladen; het kan
echter nodig zijn om de standaardregels te wijzigen. Aangezien
van deze machine alleen verwacht wordt dat het gebruikers bedient,
kunnen alle regels uitgecommentarieerd blijven behalve de laatste
twee. Deze forceren het standaard laden van systeemobjecten die
eigendom zijn van gebruikers.Voeg de benodigde gebruikers toe aan deze machine en start
opnieuw op. Probeer, voor testdoeleinden, u aan te melden als een
andere gebruiker over twee consoles. Draai het commando
ps aux om te zien of processen van andere
gebruikers zichtbaar zijn. Probeer om &man.ls.1; te draaien op de
thuismap van een andere gebruiker, dit zou moeten mislukken.Probeer niet te testen met de gebruiker
root tenzij de specifieke
sysctl's om supergebruikertoegang te blokkeren
zijn aangepast.Wanneer een nieuwe gebruiker is toegevoegd, zit de
&man.mac.bsdextended.4;-regel van die gebruiker niet in de lijst
van regelverzamelingen. Om de regelverzameling snel bij te
werken, kan simpelweg de beveiligingsbeleidsmodule worden
herladen met de gereedschappen &man.kldunload.8; en
&man.kldload.8;.Problemen oplossen met het MAC-raamwerkMAC-problemen oplossenTijdens de ontwikkeling hebben een aantal gebruikers problemen
aangegeven met normale instellingen. Hieronder worden een aantal
van die problemen beschreven:De optie kan niet ingeschakeld
worden op /De vlag blijft niet ingeschakeld
op de rootpartitie (/)!Het lijkt er inderdaad op dat een paar procent van de
gebruikers dit probleem heeft. Nadere analyse van het probleem
doet vermoeden dat deze zogenaamde bug het
resultaat is van òfwel onjuiste documentatie òfwel
verkeerde interpretatie van de documentatie. Hoe het probleem
ook is ontstaan, met de volgende stappen is het te verhelpen:Wijzig /etc/fstab en stel de
rootpartitie in op voor alleen-lezen.Herstart in enkele-gebruikersmodus.Draai tunefs op /.Herstart in normale modus.Draai mount/ en wijzig terug
in in /etc/fstab en
start het systeem opnieuw.Controleer de uitvoer van mount om
zeker te zijn dat juist is
ingesteld op het rootbestandssysteem.Kan geen X11-server starten na
MACNa het instellen van een beveiligde omgeving met
MAC start X niet meer!Dit kan komen door de MAC-beleidseenheid
partition of door een verkeerde labeling van
een van de MAC-labeling beleidseenheden.
Probeer als volgt te debuggen:Controleer de foutmelding. Als de gebruiker in de
klasse insecure zit, kan de
beleidseenheid partition het probleem
zijn. Zet de klasse voor de gebruiker terug naar de klasse
default en herbouw de database met het
commando cap_mkdb. Ga naar stap twee als
hiermee het probleem niet is opgelost.Controleer de labelbeleidseenheden nog een keer. Stel
zeker dat het beleid voor de bewuste gebruiker, de
X11-applicatie, en de onderdelen van /dev juist zijn ingesteld.Als geen van beide methodes het probleem oplossen, stuur
dan de foutmelding en een beschrijving van de omgeving naar
de TrustedBSD-discussielijsten van de TrustedBSD
website of naar de &a.questions; mailinglijst.Error: &man..secure.path.3; cannot stat
.login_confBij het wisselen van de gebruiker root
naar een andere gebruiker in het systeem, verschijnt de
foutmelding
_secure_path: unable to state .login_conf.Deze melding komt meestal voor als de gebruiker een hogere
labelinstelling heeft dan de gebruiker waarnaar wordt
gewisseld. Als bijvoorbeeld gebruiker joe
een standaardlabel heeft, dan kan
gebruiker root, die een label
heeft, de thuismap van
joe niet zien. Dit gebeurt zonder
rekening te houden met de mogelijkheid dat
root met su de
identiteit van joe heeft aangenomen. In
dit scenario staat het integriteitsmodel van Biba niet toe dat
root objecten kan zien van een lager
integriteitsniveau.De gebruikersnaam root is
stuk!In normale, of zelfs in enkelegebruikersmodus, wordt
root niet herkend. Het commando
whoami geeft 0 (nul) terug en
su heeft als resultaat who are
you?. Wat is er aan de hand?Dit kan gebeuren als een labelbeleid is uitgeschakeld,
òfwel door &man.sysctl.8; òf doordat de
beleidsmodule niet meer is geladen. Als de beleidseenheid
(tijdelijk) is uitgeschakeld dan moet de database met
aanmeldmogelijkheden opnieuw worden ingesteld, waarbij de optie
wordt verwijderd. Er dient voor te
worden zorggedragen dat het bestand
login.conf wordt ontdaan van alle opties
met , waarna de database opnieuw gebouwd
kan worden met cap_mkdb.Dit kan ook gebeuren als een beleid toegang verhinderd tot
het bestand of de database master.passwd.
Meestal wordt dit veroorzaakt door een beheerder die het bestand
veranderd onder een label welke conflicteert met het globale
beleid dat gebruikt wordt op het systeem. In deze gevallen
wordt de gebruikersinformatie gelezen door het systeem en wordt
de toegang geblokkeerd omdat het bestand het nieuwe label erft.
Zet het beleid uit door middel van &man.sysctl.8; en alles zou
weer normaal moeten zijn.
diff --git a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml
index 931adb041f..75f0a149c7 100644
--- a/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml
+++ b/nl_NL.ISO8859-1/books/handbook/multimedia/chapter.sgml
@@ -1,1991 +1,1992 @@
RossLippertAangepast door SiebrandMazelandVertaald door RenéLadanMultimediaOverzicht&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 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 goed
hercoderingsprogramma in de &os; Portscollectie beschikbaar wat
gebruikt kan worden om tussen formaten onderling 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;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 de inhoud van CD's en DVD's 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 aan te koppelen van audio-CD's met
&man.mount.8; resulteert in ieder geval in een foutmelding en in
het ergste geval tot een kernel panic. Dat
type media heeft een formaat dat afwijkt van het gebruikelijke
ISO-bestandssysteem.MosesMooreGeschreven door MarcFonvieilleAangepast voor &os; 5.X door Geluidskaart installerenSysteem instellenPCIISAgeluidskaartenAlvorens 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 audio-apparaten staan in een lijst in
de Hardware Notes.
In de Hardware Notes staat ook beschreven welk stuurprogramma
uw kaart ondersteunt.kernelinstellenOm 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_emu10k1Of 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_driverDit 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 stuurprogramma na het laden van het
metastuurprogramma snd_driver wordt
geladen kan de inhoud van het bestand
/dev/sndstat nagekeken worden met
cat /dev/sndstat.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 geluidsondersteuningEerst moet het stuurprogramma voor het audioraamwerk
&man.sound.4; aan de kernel toegevoegd worden. Daarvoor
dient het volgende te worden opgenomen in het bestand met
kernelinstellingen:device soundDaarna 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 audio-apparaten 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_emu10k1In de hulppagina voor een stuurprogramma staat welke
syntaxis gebruikt kan worden. De expliciete syntaxis voor de
kernelinstellingen voor elk ondersteund geluidsstuurprogramma
staat ook in /usr/src/sys/conf/NOTES.Voor niet-PnP ISA-geluidskaarten kan het nodig zijn dat de
kernel informatie gegeven moet worden over de instellingen
van de kaart (IRQ, I/O poort, enzovoort), zoals dat geldt voor
alle niet-PnP ISA-kaarten. 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 en dient de volgende regel
toegevoegd te worden aan het kernelinstellingenbestand:device snd_sbc
device snd_sb16Daarnaast 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 &man.sound.4; en de hulppagina voor het
gevraagde stuurprogramma.De bovenstaande instellingen zijn de
standaardinstellingen. 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 over
deze kaart.Geluidskaart testenNa 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 genoemd worden, dienen
eerdere stappen herzien te worden. Bekijk nogmaals de
instellingen van de kernel en bevestig dat het juiste
apparaatstuurprogramma was gekozen. Veel voorkomende problemen
staan beschreven in .Als het goed is werkt de geluidskaart nu. Als pinnen voor
audio-out van de CD-ROM- of DVD-ROM-drive juist zijn aangesloten
op de geluidskaart, dan kan er een CD in de drive gestopt worden
en kan deze met &man.cdcontrol.1; afgespeeld worden:&prompt.user; cdcontrol -f /dev/acd0 play 1Applicaties 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 gegevens naar /dev/dsp:&prompt.user; cat bestandsnaam > /dev/dspbestandsnaam
kan ieder bestand zijn. Deze commandoregel hoort wat ruis te
maken, waardoor wordt bevestigd dat de geluidskaart echt werkt.Niveaus voor de geluidskaartmixer kunnen aangepast worden
met het commando &man.mixer.8;. Er staan meer details in
&man.mixer.8;.Bekende problemenapparaatknooppuntenI/O poortIRQDSPFoutOplossingsb_dspwr(XX) timed
outDe I/O poort is niet correct ingesteld.bad irq XXHet 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
memoryEr 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.MunishChopraGeschreven door Meerdere geluidsbronnen gebruikenHet 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 aangezet kunnen worden met de
faciliteit &man.sysctl.8;. Met virtuele kanalen kunnen het
afspelen 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 dev.pcm.0.play.vchans=4
&prompt.root; sysctl dev.pcm.0.rec.vchans=4
&prompt.root; sysctl hw.snd.maxautovchans=4In het bovenstaande voorbeeld worden vier virtuele kanalen
toegewezen, wat in het dagelijks gebruik voldoende is. Zowel
dev.pcm.0.play.vchans=4 als
dev.pcm.0.rec.vchans=4 zijn het aantal
virtuele kanalen dat pcm0 heeft voor
afspelen en opnemen, en zijn 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. Voor meer informatie wordt naar &man.pcm.4; verwezen.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
dev.pcm.0.rec.vchans is ingesteld op 4, zoals
in het bovenstaande voorbeeld. Op een systeem waar
&man.devfs.5; wordt gebruikt, wordt het voorgaande voor een
programma dat om /dev/dsp0 vraagt
automatisch transparant gealloceerd.JosefEl-RayesGeschreven door Standaardwaarden voor mixerkanalen instellenDe standaardwaarden voor de mixerkanalen 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. Het is mogelijk om de standaardwaarden in te
stellen op het niveau van het stuurprogramma — dit wordt
bereikt door de gewenste waarden in te stellen in
/boot/device.hints, bijvoorbeeld:hint.pcm.0.vol="50"Met de bovenstaande instelling wordt het volume van een
kanaal standaard op 50 ingesteld bij het laden van de module
&man.pcm.4;.ChernLeeGeschreven door MP3 audioMet 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 spelersVerreweg 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
pakket.De interface van XMMS is
intuïtief met een afspeellijst, 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. Aangenomen dat uw audio-apparaat
/dev/dsp1.0 is en u het MP3-bestand
Foobar-GreatestHits.mp3 wilt afspelen,
zou u het volgende opgeven:&prompt.root; mpg123 -a /dev/dsp1.0Foobar-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-stereoCD audio tracks rippenVoordat een CD of een CD track naar MP3 ge-encodeerd kan
worden moeten de audiogegevens naar de harde schijf geript
worden. Dit gaat door de ruwe CDDA (CD Digital Audio) gegevens
naar WAV-bestanden te 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 -Bcdda2wav 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/acd0 -t 7De 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 7In 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+7Ook het hulpprogramma &man.dd.1; kan gebruikt worden om
audio tracks van ATAPI drives af te halen. Deze mogelijkheid
wordt beschreven in .MP3's encoderenTegenwoordig 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.mp3192 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 decoderenOm 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 naar toe geschreven 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 schrijft 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 tikgeluid 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 pakket audio/sox&prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.rawIn staat meer informatie over
het gebruiken van een CD-brander in &os;.RossLippertGeschreven door Video afspelenVideo 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 juiste apparaten:&prompt.root; ln -sf /dev/acd0 /dev/dvd
&prompt.root; ln -sf /dev/acd0 /dev/rdvdVanwege 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 rdvdDaarnaast zijn voor het decoderen van DVD, waarvoor
bijzondere DVD-ROM functies aangeroepen worden, schrijfrechten
op de DVD-apparaten nodig.Om de gedeeld-geheugeninterface van X11 te verbeteren,
wordt aangeraden dat een aantal variabelen van &man.sysctl.8;
worden verhoogd:kern.ipc.shmmax=67108864
kern.ipc.shmall=32768Videomogelijkheden vaststellenXVideoSDLDGAEr 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; xvinfoXVideo 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, 0x0Sommige 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 presentAls 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 LaagDe 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 ToegangDirecte 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 pakketten met videovideopoortenvideopakkettenIn 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 ogenschijnlijk 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 overzetten tot
een minimum te beperken.MPlayerMPlayer 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 bouwenMPlayermakenMPlayer 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
pakket 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.htmlDe 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 gebruikenMPlayergebruikenIedere 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-userDe 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
testbestand.avi
af te spelen met een van de beschikbare video-interfaces,
kan de optie gebruikt worden:&prompt.user; mplayer -vo xv testbestand.avi&prompt.user; mplayer -vo sdl testbestand.avi&prompt.user; mplayer -vo x11 testbestand.avi&prompt.root; mplayer -vo dga testbestand.avi&prompt.root; mplayer -vo 'sdl:dga' testbestand.aviHet 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
testbestand.avi
vervangen te worden door
waar
N het titelnummer is dat
afgespeeld moeten worden en
APPARAAT het
apparaatknooppunt 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/dvdHet 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=yesTenslotte 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/dvdHet uitvoerbestand out.vob, is
van het type MPEG en kan bewerkt worden met andere in dit
onderdeel besproken programma's.mencodermencoderVoordat 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. Eerst een eenvoudige kopie:&prompt.user; mencoder invoer.avi -oac copy -ovc copy -o uitvoer.aviVerkeerde 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 invoer.avi
te converteren naar de MPEG4-codec met MPEG3-audio
encodering (audio/lame
is verplicht):&prompt.user; mencoder invoer.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o utvoer.aviHiermee wordt uitvoer gemaakt die af te spelen is met
mplayer en
xine.invoer.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.xine videospelerDe 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 pakket 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 videospeler
xine 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; xineHet is ook mogelijk om zonder de GUI direct een bestand
af te laten spelen:&prompt.user; xine -g -p mijnfilm.avitranscode
hulpprogramma'sDe software transcode is geen
speler, maar een verzameling hulpprogramma's voor het
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.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:&prompt.root; make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
WITH_MJPEG=yes -DWITH_XVID=yesDe geadviseerde instellingen zijn toereikend voor de
meeste gebruikers.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 invoer.avi -V --export_prof vcd-pal -o uitvoer_vcd
&prompt.user; mplex -f 1 -o uitvoer_vcd.mpg uitvoer_vcd.m1v uitvoer_vcd.mpaHet resulterende MPEG-bestand,
uitvoer_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 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 lezenDe 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 prijs gesteld als iemand de documentatie niet heeft gelezen,
dus het is verstandig RTFM in gedachten te houden alvorens
bug rapportages 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.JosefEl-RayesOorspronkelijk geschreven door MarcFonvieilleVerbeterd en aangepast door TV-kaarten installerenTV-kaartenInleidingMet 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 toevoegenVoordat 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 smbusDe 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=6Dit kan ook via een instelling van &man.sysctl.8;:&prompt.root; sysctl hw.bt848.tuner=6In de hulppagina voor &man.bktr.4; en
/usr/src/sys/conf/NOTES staan meer details
over de beschikbare opties.Handige programma'sOm 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 oplossenBij 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.MarcFonvieilleGeschreven door ScannersscannersInleidingIn &os; is toegang tot scanners mogelijk met
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; ondersteunt 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. Op systemen
van vóór &os; 8.X staat in de handleidingpagina van
&man.uscanner.4; een lijst met ondersteunde USB-scanners.Kernel instellenZoals hierboven al is aangegeven, worden zowel SCSI als
USB-scanners ondersteund. Afhankelijk van de gebruikte
scannerinterface zijn verschillende apparaatstuurprogramma's
nodig.USB-interfaceIn 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
device ehciOp systemen van vóór &os; 8.X is de volgende
regel ook nodig:device uscannerOp deze versies van &os; biedt het apparaat &man.uscanner.4;
ondersteuning voor de USB-scanners. Sinds &os; 8.0 ondersteunt
de bibliotheek &man.libusb.3; dit direct.Na een herstart met de juiste kernel kan de USB-scanner
aangesloten worden. Een regel die de detectie van uw scanner
aangeeft zou in de berichtenbuffer van het systeem
(&man.dmesg.8;) moeten verschijnen:ugen0.2: <EPSON> at usbus0Of op een &os; 7.X systeem:uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2Deze berichten geven aan dat de scanner òfwel
/dev/ugen0.2 òf
/dev/uscanner0 als apparaatknooppunt
gebruikt afhankelijk van de versie van &os; die we draaien. Voor dit
- voorbeeld was een &epson.perfection; 1650 USB-scanner gebruikt.
+ voorbeeld was een &epson.perfection; 1650 USB-scanner
+ gebruikt.
SCSI interfaceAls 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 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 passAls de kernel juist gecompileerd en geïnstalleerd is,
horen de apparaten tijdens het opstarten zichtbaar te zijn in
de systeemberichtbuffer:pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfersAls 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 successfulIn 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 de hulppagina's
voor &man.scsi.4; en &man.camcontrol.8;.SANE instellenHet 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 SANEondersteunde
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).De eerste stap is om de port of het pakket graphics/sane-backends te
installeren. 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/pass3In de uitvoer is te lezen welk type interface en welk
apparaatknooppunt 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 scannerOf, met bijvoorbeeld de USB-scanner die in wordt gebruikt:&prompt.root; scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scannerDeze uitvoer komt van een &os; 8.X systeem, het item
- `epson2:libusb:/dev/usb:/dev/ugen0.2' geeft de naam
+ 'epson2:libusb:/dev/usb:/dev/ugen0.2' geeft de naam
van het backend (epson2) en het apparaatknooppunt
(/dev/ugen0.2) dat door onze scanner wordt
gebruikt.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, wordt in &os; 8.X prima gedetecteerd en werkt
daar, maar in eerdere versies van &os; (waar &man.uscanner.4; wordt
gebruikt) toont het de volgende informatie met
sane-find-scanner:&prompt.root; sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0De bovenstaande uitvoer geeft aan dat de scanner juist is
gedetecteerd, dat het de USB-interface gebruikt en is
aangesloten op het apparaatknooppunt
/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/epson2.conf
gewijzigd te worden. De gebruikte scanner is een
- &epson.perfection; 1650, dus in dit geval dient voor de scanner
+ &epson.perfection; 1650, dus in dit geval dient voor de scanner
het backend epson2 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 apparaatknooppunt geplaatst worden:usb /dev/uscanner0Het 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 scannerDe USB-scanner is geïdentificeerd. Het is niet
belangrijk dat het merk en model niet overeenkomen met de
scanner. Het belangrijkste is het veld
`epson:/dev/uscanner0', dat de
juiste benamingen voor het backend en het apparaatknooppunt
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.Andere gebruikers toegang tot de scanner gevenAlle 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
apparaatknooppunt voor een scanner. Onze USB-scanner gebruikt
bijvoorbeeld apparaatknooppunt /dev/ugen0.2 wat in
feite slechts een symbolische koppeling is naar het echte
apparaatknooppunt genaamd /dev/usb/0.2.0 (een blik
op de inhoud van de map /dev
bevestigt dit). Zowel de symbolische koppeling als het apparaatknooppunt
zijn van respectievelijk de groepen wheel en
operator. Door de gebruiker
joe aan deze groepen toe
te voegen kan hij de scanner zien, maar vanwege duidelijke
veiligheidsredenen dient het toevoegen van een gebruiker aan elke groep
met zorg te gebeuren, vooral aan de groep wheel.
Een betere oplossing is om een specifieke groep aan te maken voor het
gebruik van USB-apparaten en de scanner toegankelijk te maken voor leden
van deze groep.We zullen dus bijvoorbeeld een groep genaamd
usb gebruiken. De
eerste stap is het aanmaken van deze groep met behulp van het commando
&man.pw.8;:&prompt.root; pw groupadd usbHierna moeten we de symbolische koppeling
/dev/ugen0.2 aanmaken en het apparaatknooppunt
/dev/usb/0.2.0 met de juiste schrijfpermissies
toegankelijk maken voor de groep usb
(0660 of 0664), omdat standaard
- alleen de eigenaar van deze bestanden (root) ernaar
- kan schrijven. Dit alles wordt gedaan door de volgende regels aan
- /etc/devfs.rules toe te voegen:
+ alleen de eigenaar van deze bestanden (root)
+ ernaar kan schrijven. Dit alles wordt gedaan door de volgende regels
+ aan /etc/devfs.rules toe te voegen:
[system=5]
add path ugen0.2 mode 0660 group usb
add path usb/0.2.0 mode 0666 group usb
- Voor gebruikers van &os; 7.X zijn de volgende regels met het
- juiste apparaatknooppunt, meestal /dev/uscanner0
- nodig:
+ Gebruikers van &os; 7.X hebben waarschijnlijk de volgende
+ regels met het juiste apparaatknooppunt,
+ /dev/uscanner0, nodig:[system=5]
add path uscanner0 mode 0660 group usbDaarna 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
de hulppagina voor &man.devfs.8;.Nu dienen er alleen nog gebruikers aan de groep
usb toegevoegd te
worden om toegang tot de scanner toe te staan:&prompt.root; pw groupmod usb -m joeLees voor meer details de handleidingpagina van &man.pw.8;.