Introductie tot Linux Bart Blanckaert, Geert De Maere, Johan Camp, Nele Custers 24 oktober 2002
2 c 2002 Geert De Maere Copyright
Toestemming is gegeven voor het kopi¨eren, verdelen en/of veranderen van dit document onder de voorwaarden van de GNU Free Documentation License, Versie 1.1 of enige latere versie die wordt uitgebracht door de Free Software Foundation; zonder Invariant Sections, Front-Cover Text noch Back-Cover Text.
Inhoudsopgave 1 Inleiding 1.1 Een korte geschiedenis van 1.2 Copyright - GPL . . . . . 1.3 Architectuur . . . . . . . 1.4 De shell . . . . . . . . . . 1.5 X-Window . . . . . . . . . 1.6 Distributies . . . . . . . .
Linux . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
7 7 8 8 9 10 10
2 Basis-concepten van Linux 2.1 Inleiding . . . . . . . . . . . . . . 2.2 Inloggen en uitloggen . . . . . . . 2.3 Je wachtwoord veranderen . . . . 2.4 Bestanden en mappen . . . . . . 2.5 Beheer van bestanden en mappen 2.6 Het systeem afsluiten . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
15 15 15 17 18 22 27
3 De window manager KDE 3
29
4 Gebruikers, groepen en toegangsrechten 4.1 Gebruikers in Linux . . . . . . . . . . . . 4.2 Gebruikersbeheer . . . . . . . . . . . . . . 4.3 Groepen in Linux . . . . . . . . . . . . . . 4.4 Toegangsrechten . . . . . . . . . . . . . .
33 33 35 37 39
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
5 Processen en procesbeheer 45 5.1 Processen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.2 Voorgrond en achtergrond processen . . . . . . . . . . . . . . 46 5.3 Processen in de achtergrond zetten en stoppen . . . . . . . . 46 6 Syntax van de gebruikte commando’s
3
49
4
INHOUDSOPGAVE
Lijst van figuren 1.1 1.2 1.3 1.4
KDE 3 . . Blackbox Gnome . . IceWM . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
11 11 12 12
2.1 2.2 2.3 2.4
KDE passwd programma . . . . . . . . . . . . . . . . Deel van de mappen-structuur van een Linux systeem Konquerer: bestanden en mappen in je home directory Konquerer: navigatie en informatie . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
18 19 21 22
3.1
KDE 3: een window manager van formaat . . . . . . . . . . .
30
4.1 4.2 4.3
Dialoogvenster voor paswoord systeembeheerder . . . . . . . Het grafische programma voor gebruikersbeheer . . . . . . . . Een gebruiker toevoegen . . . . . . . . . . . . . . . . . . . . .
37 38 38
5
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
6
LIJST VAN FIGUREN
Hoofdstuk 1
Inleiding 1.1
Een korte geschiedenis van Linux
UNIX was lange tijd het meest populaire besturingssysteem over de hele wereld. Het is oorspronkelijk ontwikkeld door AT&T als een multitasking1 systeem voor minicomputers en grote mainframes in 1970. Er bestaan veel verschillende versies van UNIX, geschikt voor personal computers tot supercomputers zoals de Cray Y-MP. De meeste versies zijn echter zeer duur: een UNIX System V versie voor een i3862 computer kostte ongeveer 1600 Euro. Linus Torvalds studeerde in 1990 aan de Universiteit van Helsinki. Om de theoretische kennis van besturingssystemen om te zetten in de praktijk ontwikkelde prof. Tanenbaum de UNIX-variant MINIX. MINIX was echter een vrij beperkt besturingssysteem en was ontworpen met het doel een duidelijk gestructureerd systeem voor te leggen aan studenten, niet om echt als uitgebreid besturingssysteem in het dagelijks leven gebruikt te worden. Daarom besloot Linus om als hobby zelf een besturingssysteem te schrijven. Het besturingssysteem moest een vrij beschikbare versie worden van UNIX (zie ook 1.2). Versie 0.02 werd door Linus op de comp.os.minix nieuwsgroep gepost, samen met de uitnodiging voor iedereen om aan het besturingssysteem mee te werken. Na 3 jaar was dan eindelijk versie 1.0 af. Uit testen bleek dat Linux op een 486 resultaten behaalde die vergelijkbaar waren met een gemiddeld werkstation van Sun Microsystems 3 . 1
multitasking laat een gebruiker toe om meer dan 1 taak (bijvoorbeeld een toepassingsprogramma) tegelijkertijd uit te voeren 2 met i386 wordt een IBM-compatibele PC met intel 80386 processor bedoeld 3 deze werkstations waren veel duurder dan een i486 en hadden SunOS als besturingssysteem, een variant van UNIX System V
7
8
HOOFDSTUK 1. INLEIDING
Ondertussen is de laatste stabiele Linux kernel versie 2.4.19 4 . De kernel kan gebruikt worden op personal computers, DEC alpha’s, IBM S/390 computers enzovoort.
1.2
Copyright - GPL
Linux is uitgebracht onder de zogenaamde GNU5 General Public License, of GPL. Een volledige uitleg over GNU en de GPL zou ons te ver leiden. Hieronder volgen enkele voorname gevolgen van deze GPL: • Het auteursrecht behoort tot de schrijver van de software (in tegenstelling tot ”public domain” software) • Software uitgebracht onder de GPL is niet altijd gratis. De auteur mag geld vragen voor het door hem ontwikkelde programma. • De GPL staat toe dat iemand de software aanpast en daarna zijn eigen versie verdeelt maar deze versie moet dan ook uitgebracht worden onder de GPL. Dit is ongeveer wat er gebeurd met de verschillende Linux distributies die je kan kopen op CD-ROM of DVD. Mandrake download de Linux kernel, een aantal andere programma’s voor Linux en zet ze samen op een DVD. Zij mogen deze DVD dan ook verkopen maar alle software die erop staat wordt weer uitgebracht onder de GPL (voor meer informatie over distributies zie 1.6).
1.3
Architectuur
Het Linux systeem bestaat uit 3 belangrijke verzamelingen van code: • De kernel is verantwoordelijk voor het onderhouden van alle belangrijke abstracties van een besturingssysteem (welk merk en type harde schijf, processor, geheugen, ...), inclusief dingen als het beheer van virtueel geheugen en processen. • De systeembibliotheken defini¨eren een standaard verzameling van functies waarmee programma’s kunnen interageren met de kernel. • De utilities zijn programma’s die bepaalde taken voor het beheer van het systeem uitvoeren. Sommigen worden 1 keer uitgevoerd, andere (bekend onder de naam daemons) worden continue uitgevoerd en behandelen inkomende netwerkverbindingen, log in aanvragen enzovoort. 4
zie voor up-to-date informatie http://www.kernel.org voor meer informatie over GNU’s Not Unix zie http://www.gnu.org/, je kan hier ook terecht voor informatie over de GPL 5
1.4. DE SHELL
9
Systeembeheer programma’s gebruikerprogramma’s Gedeelde bibliotheken (shared libraries) Linux kernel Laadbare kernel-modules We doorlopen deze structuur van beneden naar boven: De Linux kernel heeft de mogelijkheid om bepaalde delen van de kernel code te laden op aanvraag. Er zijn verschillende redenen waarom dit nuttig is. Voor iemand die bezig is een device driver te schrijven is het vervelend wanneer hij de volledige kernel opnieuw moet compileren iedere keer nadat hij een regeltje aan zijn device driver6 heeft veranderd. Standaard kan je vertrekken van een minimale kernel zonder extra device drivers. Deze worden dan eventueel geladen op het moment dat ze nodig zijn. De kernel zelf vormt de kern van het besturingssysteem. Het zorgt voor alle nodige functionaliteit om processen te draaien en het voorziet systeemdiensten om processen toegang te geven tot de hardware. De interface die het besturingssysteem aanbiedt aan programma’s wordt echter niet door de kernel onderhouden. Programma’s gebruiken hiervoor de systeembibliotheken, die op hun beurt gebruik maken van de functionaliteit van de kernel. De systeembibliotheken bieden verschillende functies aan. Op het eenvoudigste niveau laten ze gebruikerprogramma’s toe om gebruik te maken van de hardware. Tenslotte zijn er de gebruikerprogramma’s en systeembeheer programma’s die gebruik maken van de systeembibliotheken om bijvoorbeeld een bestand te openen. Even een voorbeeldje om de samenwerking tussen de componenten te verduidelijken. Wanneer een programma een bestand wil openen, gebruikt het daarvoor een functie uit een systeembibliotheek. De systeembibliotheek zorgt ervoor dat de aanvraag en de juiste parameters worden doorgegeven aan de kernel. De kernel zal de aanvraag verwerken en doorspelen aan de device driver van de harde schijf waarop het bestand zich bevindt. Tenslotte zorgt deze device driver (een laadbare kernel-module) ervoor dat de kernel de juiste bits ontvangt. Deze bits worden door de kernel dan weer doorgegeven naar de systeembibliotheek, die ze in het juiste formaat doorgeeft aan het programma.
1.4
De shell
Hoe kan je nu met het besturingssysteem UNIX of Linux werken? Je hebt een hulpprogramma nodig dat opdrachten netjes aan het besturingssysteem 6
een device driver is een programma dat een bepaald apparaat (device) beheert zoals een printer, CD-ROM lezer of diskette-station
10
HOOFDSTUK 1. INLEIDING
doorgeeft. Dit programma wordt in Linux de shell genoemd (men spreekt vanwege zijn basisfunctie ook ooit over de ”command interpreter”). De shell heeft als doel om de gebruikers de mogelijkheid te geven (hulp)programma’s van Linux op te roepen. Linux levert een aantal shells, maar de zogenaamde Bourne-again-shell of Bash (gebaseerd op de Bourne-shell geschreven door Steve Bourne midden jaren 70) is voor de meeste beginners de interessantste.
1.5
X-Window
X-Window is de grafische gebruikersinterface van Linux. Onder X-Window bestaan zowel clients als servers. Hier zijn de definities een beetje anders dan in andere omgevingen. De server onder X-Window (kortweg X-server) is een programma dat zorgt voor de presentatie van informatie op het scherm. Afhankelijk van de grafische kaart en de schermcapaciteiten bestaan er heel wat X-servers onder Linux. Toepassingen onder X-Window zijn dan de zogenoemde X-clients, die via de X-server hun uitvoer op het scherm weergegeven krijgen. Normaal draait er ´e´en X-server op een systeem. Deze X-server bedient echter wel tal van X-clients. X-server en X-clients staan met elkaar in contact via een uniform X-protocol. Dit is een protocol dat opgesteld is om grafische gegevens, muisbeweging en dergelijke als informatie uit te wisselen. Bij dit concept maakt het niet uit of de X-server en de X-client zich op dezelfde computer bevinden of niet. Het uitzicht en het gedrag van de afzonderlijke X-clients wordt voor een deel bepaald door de zogenoemde window manager. Hij bepaalt hoe de grootte van vensters veranderd wordt of hoe een vensterkader eruit ziet. Hieronder vind je enkele screenshots van verschillende window managers.
1.6
Distributies
We hebben reeds gezien dat de Linux kernel alleen niet voldoende is als besturingssysteem. Daarnaast zijn er een heel aantal commando’s. Maar ook met de kernel en alle commando’s zijn de meeste gebruikers tegenwoordig niet tevreden. Ze hebben graag een X-Window omgeving en een aantal toepassingsprogramma’s hiervoor (web-browser, bestandsbeheer, ...). Er zijn verschillende bedrijven die op deze vraag inspelen. Zij stellen een zogenoemde distributie samen die bestaat uit een installatieprogramma, de kernel, commando’s, een aantal windowmanagers, configuratie-programma’s, toepassingsprogramma’s, spelletjes enzovoort. Deze distributies kan je dan
1.6. DISTRIBUTIES
11
Figuur 1.1: KDE 3
Figuur 1.2: Blackbox
12
HOOFDSTUK 1. INLEIDING
Figuur 1.3: Gnome
Figuur 1.4: IceWM
1.6. DISTRIBUTIES
13
downloaden via het internet of kopen op CD-ROM of DVD. Enkele bekende distributies zijn Redhat, SuSE, Debian en Mandrake. Wij zullen in de les gebruike maken van de distributie van Mandrake en de window manager KDE 3.
14
HOOFDSTUK 1. INLEIDING
Hoofdstuk 2
Basis-concepten van Linux 2.1
Inleiding
Linux is een multitasking en multiuser besturingssysteem, wat betekent dat verschillende mensen verschillende programma’s kunnen uitvoeren op hetzelfde moment. Dit is een wezenlijk verschil met MS-DOS (en ook met Windows 9x). Daarom moet je jezelf ook altijd identificeren wanneer je inlogt op een Linux systeem. Je moet daarvoor een gebruikersnaam en een wachtwoord ingeven. Op traditionele UNIX systemen kent de systeembeheerder je een gebruikersnaam en initieel wachtwoord toe wanneer je een account op het systeem krijgt. Indien je zelf Linux installeert moet je dit zelf doen. In volgende hoofdstukken worden een aantal basis-concepten van Linux bekeken. De meeste dingen kan je zowel via de shell als via een window manager doen. In dat geval wordt het concept op deze twee verschillende manieren verduidelijkt.
2.2
Inloggen en uitloggen
In- en uitloggen via de shell/console Linux heeft verschillende zogenaamde virtuele consoles (de console van een systeem zijn de monitor en het toetsenbord die erop aangesloten zijn). Via een virtuele console kan je inloggen, waarna je een shell ter beschikking krijgt. Je kan de verschillende consoles bereiken door de toetsencombinatie CTRL+ALT+Fi waarin de i een cijfer is van 1 tot 6 (bij het cijfer 7 schakel je over naar de window manager). Onderstaande stappen beschrijven het inloggen op een Linux systeem: 15
16
HOOFDSTUK 2. BASIS-CONCEPTEN VAN LINUX • Schakel over naar de 2de virtuele console (CTRL+ALT+F2) • Je ziet nu: Mandrake Linux release 9.0 (dolphin) for i586 Kernel 2.4.19-16mdk on an i686 / tty2 FREGGEL login:
Voer de gebruikersnaam ”student” in en druk op ENTER. • Vervolgens vraagt Linux je om je wachtwoord te geven: Mandrake Linux release 9.0 (dolphin) for i586 Kernel 2.4.19-16mdk on an i686 / tty2 FREGGEL login: student Password:
Voer het wachtwoord in dat je van de docent krijgt. • De karakters die je ingeeft zijn niet te zien op het scherm. Indien je een fout maakt in het wachtwoord (of de gebruikersnaam) zie je het volgende: Mandrake Linux release 9.0 (dolphin) for i586 Kernel 2.4.19-16mdk on an i686 / tty2 FREGGEL login: student Password: Login incorrect login:
Je zal opnieuw moeten proberen. Om uit te loggen typ je gewoon exit achter de prompt: Mandrake Linux release 9.0 (dolphin) for i586 Kernel 2.4.19-16mdk on an i686 / tty2 FREGGEL login: student Password: [student@FREGGEL student]# exit
2.3. JE WACHTWOORD VERANDEREN
17
In- en uitloggen via X-Window Vroeger kon je enkel de X-server opstarten door het commando startx te typen nadat je via een virtuele console had ingelogd. Tegenwoordig zijn er ook grafische log-in programma’s. Het uitzicht van een grafisch log-in programma is afhankelijk van de gebruikte distributie. Je gebruikt het programma als volgt: • Schakel over naar het grafische log-in programma via de toetsencombinatie CTRL+ALT+F71 • Klik op het silhouet waaronder student staat. • Vul het wachtwoord dat je van de leerkracht hebt gekregen in. • Je kan eventueel ook nog kiezen welke windowmanager je wil gebruiken door er een te selecteren uit de vervolgkeuzelijst. Kies voor KDE. • Klik tenslotte op ”starten!”. Om uit te loggen klik je op de knop aan de linker-onderkant van het scherm (de plaats waar in Windows de start-knop staat). Het menu dat nu te voorschijn komt noemen we het Mandrake-menu (naar analogie met het start-menu van Windows). Vervolgens klik je op ”uitloggen” en beantwoord de vraag opnieuw door op ”ok” te klikken. Let op: deze procedure is voor iedere window manager verschillend.
2.3
Je wachtwoord veranderen
Je wachtwoord veranderen via de shell Je verandert je wachtwoord als volgt: • Log in via een virtuele console. • Typ passwd achter de prompt en druk op ENTER. • Voer je huidige wachtwoord in. • Voer het wachtwoord in dat je vanaf nu wil gebruiken. • Voer dit laatste wachtwoord nogmaals in (om typefouten te vermijden). 1
Indien de X-server nog niet opgestart is dient dit eerst te gebeuren. Dit kan door het commando ”startx” in te geven in een van de virtuele consoles.
18
HOOFDSTUK 2. BASIS-CONCEPTEN VAN LINUX
Figuur 2.1: KDE passwd programma
Je wachtwoord veranderen in de X-Window omgeving Via de window manager KDE 3 zullen we nu ook ons wachtwoord veranderen: • Log in via het grafische programma of schakel over naar de window manager. • Selecteer achtereenvolgens uit het Mandrake-menu ”configuratie”, ”Overige” en ”Kpasswd”. Het passwd programma wordt zo opgestart (zie figuur 2.1). • Voer jouw huidige wachtwoord in. • Voer het wachtwoord in dat je vanaf nu wil gebruiken. • Voer dit laatste wachtwoord nogmaals in (om typefouten te vermijden).
2.4
Bestanden en mappen
Bestanden en mappen structuur in Linux Bestanden worden ge¨ıdentificeerd door hun bestandsnaam. Er is geen standaard formaat voor bestandsnamen: een bestandsnaam kan elk karakter bevatten behalve ”/” en mag maximum 256 karakters lang zijn. Hetzelfde geldt voor namen van mappen. De meeste Linux systemen hebben een standaard layout voor bestanden en mappen, zodat ”system resources” en programma’s gemakkelijk terug te vinden zijn. Deze layout heeft een boomstructuur (directory tree), die start bij de map ”/”, ook wel root directory (wortel van de boom) genoemd. Meteen onder de root directory zitten de belangrijke subdirectories ”bin”
2.4. BESTANDEN EN MAPPEN
19 /
bin
dev
etc
jan
school
nederlands
home
karin
muziek
duits
leen
school
engels
root
user
piet
steven
documenten
muziek
informatica
Figuur 2.2: Deel van de mappen-structuur van een Linux systeem met programma’s die alle gebruikers kunnen uitvoeren, ”etc” met belangrijke configuratie-bestanden en ”home” waarin alle gebruikers een eigen map hebben (zie figuur 2.2).
Bestanden en mappen structuur in de shell De mappen en bestandsnamen worden in de shell gescheiden door een slash (/). We zullen deze structuur even onderzoeken: • Log in via virtuele console 2 • Na het inloggen kom je automatisch in jouw home-directory. Dit is de directory /home/gebruikersnaam, in ons geval dus /home/student. De home directory wordt in de shell-prompt vervangen door een tilde (~). • Om de inhoud van een map te bekijken gebruik je in Linux het commando ls. [student@FREGGEL student]# ls KDesktop LEESMIJ documenten muziek public_html school tmp [student@FREGGEL student]#
• Om van map te wisselen heeft Linux het commando cd (change directory). Ga naar de map school en vervolgens naar de map informatica (let op de prompt die verandert):
20
HOOFDSTUK 2. BASIS-CONCEPTEN VAN LINUX [student@FREGGEL student]$ cd school/ [student@FREGGEL school]$ cd informatica/ [student@FREGGEL informatica]$
• Welke bestanden staan er in deze map?
• Om te weten in welke map je precies staat kun je het commando pwd (print working directory) ingeven. [student@FREGGEL informatica]$ pwd /home/student/school/informatica [student@FREGGEL informatica]$
• In iedere map is er een verwijzing naar de map erboven (de map waartoe de map waar we op dit moment in zitten behoort). Deze verwijzing wordt weergegeven door 2 punten (..). Wanneer we dus cd .. typen, gaan we naar deze map. [student@FREGGEL informatica]$ cd .. [student@FREGGEL school]$
• Tenslotte kun je altijd teruggaan naar je home-directory door gewoon cd te typen. Ga eerst naar de map ”nederlands” en vervolgens naar je home directory. [student@FREGGEL school]$ cd nederlands/ [student@FREGGEL nederlands]$ cd [student@FREGGEL student]$
Tot nu toe hebben we enkel zogenoemde relatieve padnamen gebruikt. Een padnaam is een opeenvolging van namen van mappen gescheiden door een ”/”, eventueel gevolgd door een bestandsnaam. Relatieve padnamen beginnen altijd met het karakter van de eerste map in de padnaam. Relatief betekent hierbij dat je de padnaam bekijkt vanuit de map waarin men je op dat moment bevindt. Wanneer we bijvoorbeeld cd nederlands typen, dan willen we naar de map ”nederlands”die zich in de huidig map bevindt (huidige map is de map waarin we ons op dat moment bevinden). Er bestaan echter ook absolute padnamen. Deze beginnen altijd
2.4. BESTANDEN EN MAPPEN
21
Figuur 2.3: Konquerer: bestanden en mappen in je home directory met ”/”. Absoluut wil dus zeggen dat je de padnaam bekijkt vanuit de root directory, de wortel van je mappenboom. Om naar dezelfde map ”nederlands”te gaan, maar dan met een absolute padnaam, gebruik je dus cd /home/student/school/nederlands. In de volgende kleine oefening werken we steeds met absolute padnamen: • Ga naar de map documenten in je home directory. [student@FREGGEL student]$ cd /home/student/documenten/ [student@FREGGEL documenten]$
• Ga naar de map informatica. Welk commando gebruik je hiervoor?
Bestanden en mappen structuur in de X-Window omgeving We gaan dezelfde mappenstructuur eens verkennen in de X-Window omgeving (met window manager KDE 3). • Log in via de grafische interface (als je al ingelogd bent, schakel dan over naar de X-Window omgeving via de toetsencombinatie ALT+CTRL+F7). • Selecteer ”Persoonlijke map” uit het Mandrake-menu. • Een programma gelijkaardig aan de Windows Verkenner start nu op, en je bevindt je opnieuw in jouw home directory (zie figuur 2.3). De naam
22
HOOFDSTUK 2. BASIS-CONCEPTEN VAN LINUX Figuur 2.4: Konquerer: navigatie en informatie van dit programma is Konquerer (terug te vinden in de titelbalk). Je vindt de verschillende mappen en het bestand ”LEESMIJ” terug. Door op een map te klikken kan je de inhoud van die map bekijken. • Klik op de map ”school” en vervolgens op de map ”informatica”. Je ziet hier twee bestanden staan. Als Linux de extensie van het bestand herkent (net zoals in Windows, indien een bepaald bestandstype is gekoppeld aan een bepaald programma), dan kan je dat bestand bekijken door erop te klikken. Klik bijvoorbeeld op het bestand ”cursus linux.tex”. • Om verder te navigeren zijn er een aantal knoppen ter beschikking. Je kan bijvoorbeeld terug naar de vorige plaats door op de blauwe pijl naar links te klikken. Je kan naar de hoger liggende map gaan door op de pijl naar boven te klikken. Je kan ook navigeren door een map te kiezen in het linkerdeel van het scherm. • Navigeer eens rustig door je home-directory en let daarbij eens op de informatie die je krijgt in de statusbalk. • Tenslotte kan men zien in welke map men zich bevindt in de balk achter ”Location”. Je kan hier eventueel ook het volledige padnaam invoeren van de map waarvan je de inhoud wil bekijken. De padnaam begint hier met ”file:” omdat je Konquerer ook kan gebruiken om webpagina’s te bekijken. • Hoe geraak je in 1 keer terug in je home-directory?
2.5
Beheer van bestanden en mappen
Beheer van bestanden en mappen via de shell We zullen leren hoe je een bestand kan aanmaken, verplaatsen en kopi¨eren via de shell aan de hand van volgende oefening: • Log in via een virtuele console. • Het commando om een directory aan te maken is mkdir. Om bijvoorbeeld de directory ”test” te maken doe je het volgende:
2.5. BEHEER VAN BESTANDEN EN MAPPEN [student@FREGGEL [student@FREGGEL KDesktop LEESMIJ [student@FREGGEL
23
student]$ mkdir test student]$ ls documenten muziek public_html school test tmp student]$
• Vervolgens zullen we het ”LEESMIJ” bestand kopi¨eren naar de map ”test”. Dit gebeurt met het commando cp waaraan 2 argumenten moeten meegegeven worden: het bestand dat gekopieerd moet worden en de plaats waarnaar het bestand gekopieerd dient te worden. Deze plaats (padnaam) kan op verschillende manieren gegeven worden: – als een volledige padnaam (bv. /home/student/test/LEESMIJ) of als relatieve padnaam (bv. test/LEESMIJ) – met (bv. test/LEESMIJ) of zonder bestandsnaam (bv test/) (in het laatste geval wordt de bestandsnaam van het te kopi¨eren bestand overgenomen) – indien je de bestandsnaam opgeeft mag dit een andere naam zijn dan die van het te kopi¨eren bestand (bv. test/Testbestandje) Zo meteen gaan we deze mogelijkheden uitproberen. Eerst kijken we hoe we een bestand kunnen verwijderen. • Om een bestand te verwijderen is er het commando rm. Probeer nu elke hierboven beschreven manier uit om het bestand LEESMIJ te kopi¨eren naar de map ”test”. Nadat je het bestand gekopieerd hebt bekijk je de inhoud van de map test zodat je zeker weet dat het kopi¨eren gelukt is. Tenslotte verwijder je het gekopieerde bestand weer zodat je de volgende mogelijkheid kan uitproberen. • Om een map te verwijderen zijn er 2 mogelijkheden: 1. Je gaat naar die map, verwijdert alle bestanden in de map, gaat terug ´e´en niveau hoger in de mappenstructuur en verwijdert dan de map met het commando rmdir (remove directory): [student@FREGGEL test]$ cd test [student@FREGGEL test]$ rm * rm: remove regular empty file ‘LEESMIJ’? y [student@FREGGEL test]$ cd .. [student@FREGGEL student]$ rm test rm: remove directory ‘test’? y [student@FREGGEL student]$
24
HOOFDSTUK 2. BASIS-CONCEPTEN VAN LINUX 2. Je gaat ´e´en niveau hoger staan dan de map zelf en gebruikt het commando rm -r. De optie -r vertelt rm dat de map recursief moet worden verwijderd. Je kan op die manier een grote tak van de mappen-boom in ´e´en keer ”afhakken”, in plaats van twijgje per twijgje te verwijderen: [student@FREGGEL student]$ rm -r test rm: descend into directory ‘test’? y rm: remove regular empty file ‘test/LEESMIJ’? y rm: remove directory ‘test’? y [student@FREGGEL student]$ Dit is een zeer gevaarlijke optie: als gebruiker root kan je op deze manier de alle bestanden in ´e´en keer verwijderen met het commando rm -rf / • Wanneer je niet meer heel goed weet hoe een commando precies werkt, of welke opties dat commando heeft, kun je de optie -h of --help gebruiken. Om bijvoorbeeld te weten te komen wat f in de optie ”-rf” van hierboven doet, typ je rm --help. De uitleg die hierbij wordt gegeven is meestal vrij summier. Je kan extra uitleg over een commando opvragen met het commando man of info2 Typ bijvoorbeeld eens man rm. Je vindt hier een beetje extra uitleg, maar ook een verwijzing naar de info-pagina’s. Je kan door de uitleg scrollen met behulp van de ENTER toets. Stoppen doe je met de toets q. Typ vervolgens eens info rm. Hier vind je al heel wat meer informatie. Scrollen door de info-pagina’s kan met de pijltjestoets met het pijltje naar beneden. Deze info-pagina heeft echter nog geen structuur. Je kan opnieuw stoppen met de toets q. Als je eens een pagina wil zien met structuur, typ dan info latex. Wanneer de cursor zich op de titel van een deel of hoofdstuk bevindt en je drukt op ENTER zal je zien dat je de informatie over dat deel terugvindt. • Het commando mv dient om bestanden en mappen te verplaatsen. De argumenten zijn net hetzelfde als bij het cp commando. Verplaats bijvoorbeeld het LEESMIJ bestand eens naar de map ”documenten” en terug. Je kan een bestand met dit commando ook hernoemen: je verplaatst het naar dezelfde map maar onder een andere naam. 2
Vroeger vond je alle informatie via het man commando, tegenwoordig wordt meer en meer overgeschakeld naar het gebruik van het info commando. Dit heeft te maken met de structuur van man- en info-pagina’s: bij man-pagina’s stond alle informatie achter elkaar, op 1 lange pagina; bij info-pagina’s kan je een hi¨erarchische structuur cre¨eren met links naar andere onderdelen. Hierbij kan je beter een onderscheid maken tussen belangrijke opties, uitgebreidere en minder vaak gebruikte opties, voorbeeldjes enzovoort.
2.5. BEHEER VAN BESTANDEN EN MAPPEN
25
Wanneer je bijvoorbeeld ”brief” wil hernoemen naar ”brief voor baas” doe je dit met het commando mv brief brief_voor_baas. • Tenslotte is de zogenoemde tab-completion van Linux ook het vermelden waard. Wanneer je een gedeelte van de naam van een map of bestand hebt ingetypt, kun je de shell vragen om de naam te vervolledigen door op de TAB-toets te drukken. Gebruik dit bijvoorbeeld eens om de inhoud van de map informatica (deze map bevindt zich in de map school) te bekijken. Typ ls sch en druk vervolgens op de TAB-toets. De shell zal dit nu aanvullen en er komt ls school/ te staan. Typ hierachter de letters inf en druk opnieuw op de TAB-toets en vervolgens op ENTER. Wanneer er meerdere mogelijkheden zijn kan de shell natuurlijk niet voor jou kiezen. Als je dan nog 2 keer op de TAB-toets drukt krijg je wel een lijstje van de mogelijkheden te zien. We zullen om dit te demonstreren het bestand cursus_linux.pdf naar de map documenten te kopi¨eren. Typ cp sch TAB inf TAB cur TAB. De shell geeft aan de hand van een pieptoon te kennen dat er meerdere (of geen) mogelijkheden zijn. Druk nog 2 keer op de TAB toets. Nu zie je dat er zowel cursus_linux.pdf als cursus_linux.tex in deze map staan. Als je nu de letter p typt en nogmaals op de TAB-toets drukt krijg je het juiste bestand. Om onze oefening af te maken typ je nog een spatie en daarna do TAB en tenslotte op ENTER. Nu is het tijd geworden om deze commando’s in te oefenen. Schrijf onder iedere opdracht welk commando (of welke commando’s) je gebruikt. Gebruik minimum 1 keer een absolute padnaam, 1 keer een relatieve padnaam, 1 keer een padnaam zonder bestandsnaam op het einde en 1 keer een padnaam met eem bestandsnaam op het einde (hint: je kan 2 dingen combineren). • Ga naar je home-directory.
• Kopieer het ”LEESMIJ” bestand naar de map ”test”.
• Verplaats het ”LEESMIJ” bestand naar de map ”informatica” onder de naam ”LEESMIJNIET”.
• Kopieer het ”LEESMIJ” bestand in jouw home-directory naar de map ”Tekstbestandje” in de map ”test”.
26
HOOFDSTUK 2. BASIS-CONCEPTEN VAN LINUX
• Verwijder de map ”test”.
Beheer van bestanden en mappen met Konquerer Om te werken via de shell moet je vele commando’s en opties kennen. Deze kunnen vooral van pas komen wanneer je bepaalde dingen moet automatiseren omdat je deze commando’s dan in een script kunt zetten en ze zo automatisch achter elkaar kan uitvoeren. Voor het dagelijks gebruik is de shell misschien iets minder handig. Daarom gaan we ook in de grafische omgeving de vorige oefening eens doen: • Log in of schakel over naar de windowmanager KDE 3. Start opnieuw de verkenner op (”Persoonlijke map” uit het Mandrake-menu). • Maak de map test aan als volgt: klik met de rechtermuisknop in het rechter-deel van het vensters (klik wel naast of onder een bestaande map of bestand). Kies uit het pop-up menu ”nieuw” en vervolgens ”map”. Typ de naam ”test” in het invulvakje van het venster dat zojuist is verschenen. Klik op de knop ”OK”. • Ga naar de map test (bv. door erop te klikken). • Start nog een Konquerer op. • Sleep het ”LEESMIJ” bestand vanuit deze Konquerer naar de andere (waarin we daarnet de map documenten hebben geopend. Laat het ”LEESMIJ” bestand daar vallen (muisknop loslaten). Konquerer zal je nu vragen of je het bestand ”LEESMIJ” naar de map documenten wil kopi¨eren, verplaatsen of er een link naartoe wil maken. Wij kiezen kopi¨eren. • Je kan het gekopieerde bestand hernoemen door er met de rechtermuisknop op te klikken en uit het pop-up menu ”hernoemen” te kiezen. Hernoem het bestand naar ”LEESMIJNIET”. • Je kan het gekopieerde bestand verwijderen door er met de rechtermuisknop op te klikken en uit het pop-up menu de optie ”naar prullenbak verplaatsen” of ”verwijderen” te kiezen (bij deze laatste optie kan je het bestand achteraf niet meer recupereren). Kies nu ”move to trash”.
2.6. HET SYSTEEM AFSLUITEN
27
• Verplaats het ”LEESMIJ” bestand van de map ”test” naar de map ”informatica” (deze map is onderdeel van de map school). • Kopieer het ”LEESMIJ” bestand van je home directory naar de map ”documenten”. • Verwijder de map ”test” (optie ”Verwijderen”).
2.6
Het systeem afsluiten
Het afsluiten van een Linux systeem heeft meer gevolgen dan je denkt. Ten eerste mag je nooit de computer uitzetten door op de power- of reset-knop te drukken. De Linux kernel houdt namelijk gegevens voor de harde schijf een tijdje bij in het geheugen vooraleer deze gegevens naar de harde schijf te schrijven. Wanneer je het systeem gewoon uitzet heeft de kernel niet de kans om deze gegevens naar de harde schijf te schrijven en geraakt het bestandsysteem in de war. Ten tweede zijn er een heel aantal processen in uitvoering. Wanneer je het systeem goed afsluit wordt aan al deze processen gevraagd om te stoppen. Zoniet worden zij midden in hun uitvoering bruusk gestopt. Als laatste moet je eraan denken dat Linux een multi-user systeem is. Er kunnen een aantal gebruikers ingelogd zijn (en aan het werken zijn) op het systeem. Voor hen is het niet interessant als tijdens het bewerken van een tekst plots alles wegvalt omdat jij de PC wil afzetten. Daarom heeft het shutdown commando als tweede argument de tijd waarop afgesloten moet worden (hh:mm) of na hoeveel minuten er moet afgesloten worden (+m). Bij het commando shutdown zijn er 2 verschillende opties: -r om opnieuw op te starten (rebooten) en -h om af te sluiten (halt). Om de computer over 2 minuten af te sluiten gebruik je dus het commando: shutdown -h +2. Alle gebruikers die zijn ingelogd krijgen dan de melding dat het systeem over 2 minuten afgesloten wordt.
28
HOOFDSTUK 2. BASIS-CONCEPTEN VAN LINUX
Hoofdstuk 3
De window manager KDE 3 De window manager KDE 3 vertoont grote gelijkenissen met de omgeving die je in Windows gewoon bent. Ieder venster heeft bijvoorbeeld in de rechter bovenhoek een blokje waarmee je het venster kan minimaliseren, een vierkantje waarmee je het venster kan maximaliseren en een kruisje waarmee je het venster kan afsluiten. Je kan het venster ook naar een gewenste grootte omvormen door een bepaald hoek te verplaatsen. KDE 3 heeft ook een taakbalk waarin de programma’s te zien zijn die je aan het uitvoeren bent en een klok en datum in de rechter benedenhoek (zie figuur 3.1). Er is ook een soort van start-menu in de linker benedenhoek (zie figuur 3.1). Niet alles is echter identiek. Bij KDE 3 beschik je niet over 1 maar over 4 desktops (bureaubladen). Je kan omschakelen tussen deze bureaubladen door op het getal 1, 2, 3 of 4 in de taakbalk te klikken. Dit komt ook tot uiting wanneer je met de rechter muisknop op de bovenkant van een venster klikt. Buiten de normale opties om het venster te verplaatsen en van grootte te veranderen staat hier ook ”Naar bureaublad” waarmee je een scherm naar een andere desktop kan sturen. De optie ”configuratie”, ”vensterdecoratie” dient om het uiterlijk van een venster te wijzigen. Wanneer je goed kijkt zie je in de linker bovenkant van een venster ook een priknaald staan. Wanneer je hierop klikt verandert deze van positie. Nu is het venster op elk bureaublad te zien (het zit vastgeprikt op je scherm). Laten we tenslotte eens een snelkoppeling naar een programma toevoegen aan het bureaublad. Dit werkt ongeveer op dezelfde manier als in Windows: • Klik met de rechtermuisknop op een lege plaats op het bureaublad • Selecteer ”Nieuw” en dan ”Koppeling naar applicatie...” 29
30
HOOFDSTUK 3. DE WINDOW MANAGER KDE 3
Figuur 3.1: KDE 3: een window manager van formaat • We zullen een link maken naar het programma The Gimp1 Verander de naam ”Koppeling naar applicatie” in het invulvakje naar ”The Gimp”. • Selecteer het tabblad ”Uitvoeren”. Hier moeten we instellen welk commando moet uitgevoerd worden. We weten echter niet waar het programma ergens staat. Daarom zullen we het zoeken. – Kies uit het Mandrake menu achtereenvolgens ”Wat kan ik doen”, ”Bestanden zoeken”. – Typ in het invulveld achter ”Genaamd” het volgende in *gimp (dit is omdat we niet weten of het programma nu gimp of thegimp heet). – Verander de locatie in ”file:” want we willen het volledige bestandssysteem doorzoeken. – Klik op de knop ”Zoeken”, en wacht een tijdje. – Even later verschijnt er onder andere als gevonden item ”gimp” in de map ”/usr/bin”. Dit is het programma dat we zoeken, de andere gevonden items tot nu toe zijn enkel mappen. We kunnen het programma nog verder laten zoeken, maar dat is niet nodig. Daarom kun je nu best op de ”Stop” knop klikken. – We sluiten het zoekprogramma af door op de knop ”Sluiten” te klikken. • Omdat we nu weten waar het programma staat vullen we dit ook in in het invulvakje onder ”Commando:”. We typen daar /usr/bin/gimp. 1
Gimp staat voor Graphic Image Manipulation Program. Het is een soort Adobe Photopaint variant. Meer info vind je op http://www.gimp.org/
31 • Nu gaan we het icoontje nog veranderen. Klik hiervoor terug op het tabblad ”Algemeen”. Klik op het icoontje voor de naam van de link. Selecteer het icoon Gimp. Klik tenslotte op OK. • Je kan nu controleren of de link werkt door erop te klikken (dit is ook nog een verschil met de Microsoft Windows omgeving: 1 keer klikken volstaat).
32
HOOFDSTUK 3. DE WINDOW MANAGER KDE 3
Hoofdstuk 4
Gebruikers, groepen en toegangsrechten 4.1
Gebruikers in Linux
Omdat er normaalgezien meer dan ´e´en gebruiker op een Linux systeem werkt, zullen we nu aandacht besteden aan het beheer van deze gebruikers en de groepen waartoe ze behoren. Later in dit hoofdstuk zullen we ´e´en van de voordelen zien van dit gebruikersbeheer: Linux voorziet namelijk een mechanisme waarbij gebruikers hun bestanden kunnen afschermen tegen het lezen of wijzigen door andere gebruikers. Zelfs wanneer jij de enige gebruiker bent van het computersysteem is het belangrijk om de verschillende aspecten van gebruikersbeheer onder Linux te begrijpen. Je moet namelijk minimum ´e´en gebruiker buiten de ”root” cre¨eren, waar je bijna altijd mee werkt. Elke gebruiker moet zijn eigen account hebben. Het is zelden een goed idee om een bepaalde account door meerdere gebruikers te laten delen, vooral uit veiligheidsoverwegingen1 . De root-gebruiker is in Linux diegene met alle toegangsrechten. Hij is diegene die het systeem installeert en onderhoudt (de systeembeheerder). Juist omdat hij zoveel toegangsrechten heeft is het belangrijk dat hij voor zichzelf ook een gewone gebruiker aanmaakt. Er is dan minder kans dat hij schade aan het systeem veroorzaakt wanneer hij gewoon op het systeem aan het werken is en per ongeluk een foutje maakt. Enkel wanneer hij systeemtaken moet uitvoeren, verandert hij even in de root gebruiker. 1 Alle gebruikers met dezelfde gebruikersnaam (dezelfde account) kunnen aan elkaars documenten. Als ´e´en van de gebruikers een fout maakt schaadt hij daarmee ten eerste alle andere gebruikers, en ten tweede kan de systeembeheerder op deze manier niet weten wie van de gebruikers deze fout heeft gemaakt
33
34HOOFDSTUK 4. GEBRUIKERS, GROEPEN EN TOEGANGSRECHTEN Het systeem houdt de volgende informatie over elke gebruiker bij: Gebruikersnaam Gebruikers ID
Groep ID
Paswoord Volledige naam Home directory
Login shell
Deze is uniek voor elke gebruiker en mag zowel letters als cijfers bevatten Dit nummer (UID = User ID) is eveneens uniek voor elke gebruiker. Het systeem maakt meestal gebruik van de UID in plaats van de gebruikersnaam. Dit nummer (GID = Group ID) is het nummer van de ”default”groep waartoe de gebruiker behoort. Een gebruiker behoort tot ´e´en of meerdere groepen, maar van ´e´en groep wordt het groepsnummer bijgehouden. De andere groepen zijn in een ander bestand te vinden. Het wachtwoord van de gebruiker wordt ge¨encrypteerd bewaard. Dit is de ”echte” of ”volledige” naam van de gebruiker. Dit is de map waarin de gebruiker terecht komt na het inloggen. Meestal is deze map /home/gebruikersnaam, maar in uitzonderlijke gevallen kan dit anders ingesteld worden (bijvoorbeeld voor gebruiker ”ftp” is de home directory vaak /var/pub/ftp omdat dit ook de map is waarin je terecht komt wanneer je een ftp verbinding met het systeem tot stand brengt). Dit is de shell die wordt opgestart nadat de gebruiker is ingelogd. Meestal is dit ”/bin/bash”.
Al deze informatie wordt opgeslagen in het bestand /etc/passwd in de vorm
gebruikersnaam:encrypted password:UID:GID: Volledige naam:Home dir:login shell
Je kan de laatste regels van dit bestand bekijken door het volgende commando: tail /etc/passwd. Omdat Linux tegenwoordig zogenoemde ”shadow passwords” gebruikt zijn deze in een ander bestand opgeslagen dat enkel de root-gebruiker kan lezen (ze staan als het ware in de ”schaduw”, waar gewone gebruikers ze niet kunnen zien). De andere groepen waar de gebruiker toe behoort vind je in het ”/etc/group” bestand. Je kan eventueel de laatste regels weer bekijken met het commando tail /etc/group.
4.2. GEBRUIKERSBEHEER
4.2
35
Gebruikersbeheer
Gebruikersbeheer via de shell Het commando dat in de shell beschikbaar is om een gebruiker toe te voegen is useradd. Je moet wel systeembeheerder (root) zijn om dit programma uit te voeren! Je kan inloggen als root-gebruiker ofwel van gebruiker veranderen nadat je ingelogd bent. Vermits dit laatste meestal gedaan wordt gaan wij het ook zo doen: • Log in als student • Je kan veranderen van gebruiker via het commando su (substitute user). We veranderen nu naar de root-gebruiker (vraag het wachtwoord aan je leerkracht) [student@FREGGEL student]$ su root Password: [root@FREGGEL student]#
• De prompt is veranderd. Hoe verklaar je deze verandering?
• Voeg nu een gebruiker met jouw naam en een zelfgekozen wachtwoord toe. We zullen alle andere eigenschappen van een gebruiker door het systeem zelf laten bepalen2 . [root@FREGGEL student]# useradd -m geertdemaere [root@FREGGEL student]#
Waarvoor dient de optie -m?
Vervolgens stellen we het wachtwoord in voor deze gebruiker. Dit gebeurt als volgt: [root@FREGGEL student]# passwd geertdemaere Changing password for user geertdemaere. 2
Het systeem gebruikt hiervoor de instellingen uit etc/default/useradd
het configuratiebestand
36HOOFDSTUK 4. GEBRUIKERS, GROEPEN EN TOEGANGSRECHTEN New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@FREGGEL student]# Linux zal je een waarschuwing geven indien je het wachtwoord te eenvoudig kiest. • Typ exit om terug over te schakelen naar de gebruiker ”student”. • Probeer in een andere virtuele console in te loggen als de gebruiker die je zojuist hebt gecre¨eerd. In welke map kom je terecht na het inloggen?
• Om een gebruiker terug te verwijderen gebruik je het commando userdel met daarachter de gebruikersnaam. [student@FREGGEL student]$ su root Password: [root@FREGGEL student]# userdel geertdemaere [root@FREGGEL student]# [root@FREGGEL student]# exit exit [student@FREGGEL student]$ • Controleer of de gebruiker effectief verwijderd is (probeer nogmaals als die gebruiker in te loggen).
Gebruikersbeheer in de X-Window omgeving De procedure om een gebruiker toe te voegen via de shell is vrij omslachtig, zeker als je een aantal eigenschappen van de gebruiker wil meegeven. We zullen zien dat het eenvoudiger kan via een grafisch programma. • Log in via het grafisch programma of schakel over naar de windowmanager. • Kies uit het Mandrake menu achtereenvolgens ”Wat kan ik doen”, ”Beheer uw systeem” en ”Gebruikers beheren” (zie figuur 3.1). • Het systeem zal je vragen het root-wachtwoord te geven omdat alleen de systeembeheerder gebruikers mag toevoegen of verwijderen (zie figuur 4.1). Vul het paswoord in en wacht: het kan even duren voordat dit programma opgestart is.
4.3. GROEPEN IN LINUX
37
Figuur 4.1: Dialoogvenster voor paswoord systeembeheerder • Om een gebruiker aan te maken klik je op de knop ”Toevoegen”. – Het ”Aanmeldnaam” veld bevat de gebruikersnaam. – Bij commentaar kan je extra gegevens over de account toevoegen. – Selecteer de gewenste shell (bijv. bash). – Vul het pad in waar de homedirectory van de gebruiker zich bevindt. – Vul het paswoord in. Om typ-fouten te vermijden moet dit twee keer gebeuren. – Op het tabblad ”Groepen” kan je de gebruiker aan ´e´en of meerdere groepen toevoegen. • Druk op OK om de gebruiker aan te maken. • Probeer in te loggen met de zojuist gecre¨eerde gebruikersnaam. • Het verwijderen van een gebruiker gebeurt met hetzelfde programma als het aanmaken van gebruikers. Verwijder de zojuist aangemaakte gebruiker weer door hem te selecteren uit de lijst van gebruikers en vervolgens op de ”Verwijderen” te klikken.
4.3
Groepen in Linux
Zoals reeds vermeld kan een gebruiker behoren tot ´e´en of meerdere groepen. Het belang van groepen wordt vooral duidelijk bij het bekijken van de toegangsrechten, vermits je toegangsrechten ook per groep kan specifi¨eren. In wat volgt worden toegangsrechten nader bekeken.
38HOOFDSTUK 4. GEBRUIKERS, GROEPEN EN TOEGANGSRECHTEN
Figuur 4.2: Het grafische programma voor gebruikersbeheer
Figuur 4.3: Een gebruiker toevoegen
4.4. TOEGANGSRECHTEN
4.4
39
Toegangsrechten
We hebben al eens gekeken welke mappen en bestanden er in onze home directory staan, maar nog niet naar de attributen die bij deze bestanden horen. We zullen eerst een kijkje nemen naar deze attributen en ze vervolgens ´e´en voor ´e´en verklaren.
• Log in via een virtuele console als student
• Bekijk de inhoud van je home directory, maar geef deze keer de optie -l mee aan het commando:
[student@FREGGEL student]$ ls -l totaal 16 drwxrwxr-x 2 student student -rw-rw-r-1 student student -rw-rw-r-1 student student drwxrwxr-x 4 student student drwx-----2 student student [student@FREGGEL student]$
4096 25 0 4096 4096
okt okt okt okt okt
15 17 15 15 15
11:46 10:57 12:28 11:43 11:34
(inhoud, datum en tijd kunnen verschillen) Van links naar rechts zijn 7 velden te onderscheiden. Onderstaande tabel geeft de betekenis ervan weer.
documenten/ LEESMIJ LEESMIJ~ school/ tmp/
40HOOFDSTUK 4. GEBRUIKERS, GROEPEN EN TOEGANGSRECHTEN Veld 1 2
3 4
5 6 7
Betekenis Het type bestand (bestand, map of link) en de toegangsrechten (zie verder) Dit cijfer stelt het aantal referenties naar het bestand voor. Bij bestanden is dit minimum 1 (de bestandsnaam zelf) Bij mappen is dit minimum 2: de map zelf en de ”.” in de map (de punt staat voor ”huidige map”). Voor iedere sub-map die een map bevat wordt dit cijfer nog eens met 1 verhoogd omdat iedere map ook een verwijzing heeft naar de map waartoe hij behoort (”..”). Kan je nu verklaren waarom de referentieteller van de map school gelijk is aan 4?
De gebruikersnaam van de eigenaar (waarvoor een gedeelte van de toegangsrechten gelden) De groep die eigenaar is van het bestand of de map (waarvoor opnieuw een gedeelte van de toegangsrechten gelden) De grootte van een bestand (geen betekenis voor mappen) De datum en het uur waarop het bestand het laatst is gewijzigd De naam van het bestand of de map
We bespreken nu uitgebreid waarvoor het eerste veld (de toegangsrechten) staat. Deze betekenis is verschillend voor bestanden en voor mappen. Vandaar dat we dit ook apart zullen bespreken. Het eerste teken van de reeks van 10 tekens geeft het type weer. Wanneer het een koppelteken (-) is gaat het om een bestand, voor een map staat hier een d. De volgende negen tekens vormen drie groepjes van drie. Het eerste groepje staat voor de toegangsrechten van de gebruiker die eigenaar is van de map of het bestand (wie dat is zie je in veld 3), het volgende groepje van 3 tekens geeft weer welke rechten de groep heeft die eigenaar is van het bestand (veld 4), en het laatste groepje van 3 representeert de toegangsrechten van de gebruikers die noch eigenaar noch lid van de groep zijn (dit worden ook wel de toegangsrechten voor ”de wereld” genoemd).
4.4. TOEGANGSRECHTEN
41
Toegangsrechten voor een bestand Ieder groepje van 3 heeft dezelfde betekenis. Wanneer er een letter staat (r, w of x), betekent dit dat je dat bepaalde recht hebt, wanneer er een streepje staat (-), heb je dat recht niet. Bij een bestand staat de r voor readable (leesbaar), de w voor writable (schrijfbaar of ook wel wijzigbaar) en de x voor executable (uitvoerbaar). Iemand met enkel toegangsrecht r kan het bestand wel lezen, maar er niets aan veranderen. Iemand die ook toegangsrecht w heeft kan het bestand wel wijzigen. Het toegangsrecht x is enkel van belang voor uitvoerbare bestanden (programma’s of commando’s). Dit geeft je het recht om het programma ook effectief uit te voeren. Verklaar nu de toegangsrechten van het ”LEESMIJ” bestand door een kruisje te zetten wanneer iemand het recht heeft: eigenaar
groep
wereld
lezen schrijven uitvoeren
Toegangsrechten voor een map Opnieuw heeft ieder groepje van 3 dezelfde betekenis. De letter r staat voor het lezen van de inhoud van de map. Indien een gebruiker dit recht niet heeft kan hij niet zien welke bestanden er in een map staan. De letter w staat voor de mogelijkheid om gegevens in een map te veranderen. Je kan dan nieuwe bestanden aanmaken en bestaande bestanden wissen. Let op: de mogelijkheid om een bestand te wissen hangt dus niet af van je toegangsrechten tot dat bestand maar van je toegangsrechten tot de map waarin dat bestand zit! Tenslotte staat de letter x voor het ”betreden” of ”gebruiken” van een map. Zonder dit toegangsrecht kan je niet naar de map in kwestie gaan (commando cd) of een bestand uit die map kopi¨eren. Verklaar nu de toegangsrechten van de map ”documenten”: eigenaar inhoud opvragen bestand aanmaken ”gebruiken”
groep
wereld
42HOOFDSTUK 4. GEBRUIKERS, GROEPEN EN TOEGANGSRECHTEN
Oefeningen op toegangsrechten Omdat het concept van toegangsrechten zeer belangrijk is gaan we hier nog enkele oefeningen op maken. Om te kunnen controleren hoe alles werkt hebben we meerdere gebruikers nodig. Maak daarom 2 gebruikers aan: ´e´en met hetzelfde GID als jij (student), ´e´en met een ander GID. Geef te twee gebruikers een naam, bijv. leerling en leraar. Vervolgens zullen we leren hoe we de toegangsrechten kunnen wijzigen. Hiervoor dient het commando chmod3 . Het eerste argument is van de vorm [ugoa][+-=][rwx]. Het eerste deel duidt aan voor welke gebruikers de toegangsrechten van toepassing moeten zijn: user, group, other, all. Het tweede groepje duidt aan of de toegangsrechten moeten toegevoegd worden aan de rechten die de gebruiker al heeft (+), moeten worden ingetrokken (-) of dat dit de toegangsrechten van de gebruiker zullen worden (ongeacht welke rechten hij nu al heeft). Het laatste groepje geeft weer over welke toegangsrechten het gaat. Je mag meerdere letters per groepje gebruiken. Tenslotte is het tweede argument van chmod de naam van het bestand of de map waarvan de toegangsrechten moeten gewijzigd worden. We gaan dit eens uitproberen op het ”LEESMIJ” bestand. • Log in virtuele console 2 in als student, bij 3 als leerling en bij 4 als leraar. • Maak als leerling en als leraar ook een bestand ”LEESMIJ” aan. Dit doen we door als student het ”LEESMIJ” bestand naar de ”/tmp” 4 map te kopi¨eren en als leerling en leraar dit bestand naar onze home directory te kopi¨eren. • Wie heeft welke rechten op het ”LEESMIJ” bestand van de student? leerling student leraar lezen wijzigen uitvoeren • De leerling vindt dat de student het ”LEESMIJ” bestand ook mag bewerken. Verander hiervoor de toegangsrechten. • Bekijk de toegangsrechten van een home directory. Ga hiervoor met 1 van de gebruikers een niveau naar boven (naar de bovenliggende map). 3 Enkel de eigenaar van een bestand en de systeembeheerder kunnen de toegangsrechten tot een bestand wijzigen. 4 Iedereen heeft schrijftoegang tot deze map. Hij wordt net als in windows veel gebruikt om een bestand tijdelijk op te slaan.
4.4. TOEGANGSRECHTEN
43
[leerling@FREGGEL leerling]$ cd .. [leerling@FREGGEL home]$ ls -l
Duidt aan wie welke toegangsrechten heeft: leerling student inhoud opvragen bestand aanmaken ”gebruiken”
leraar
• De leraar vindt dat de leerlingen niets te zoeken hebben in zijn home directory. Verander hiervoor de toegangsrechten. Controleer of de leerling nu inderdaad niet meer naar de map van de leraar kan gaan. Het is belangrijk om hier even bij stil te staan: wanneer je de toegangsrechten van het ”LEESMIJ” bestand in de map van de leraar bekijkt dan zou je hieruit afleiden dat de leerling dit bestand mag lezen. Hij kan dit echter niet omdat hij geen toegang heeft tot de map waarin het bestand staat. Of iemand een bestand kan lezen hangt dus niet alleen af van de toegangsrechten van het bestand zelf, maar ook van de toegangsrechten van de map waarin het bestand zich bevindt. • De leerling wil dat er niemand zijn ”LEESMIJ” bestand kan lezen behalve hijzelf. Verander hiervoor de toegangsrechten en controleer ook of de student het bestand niet meer kan lezen (gebruik hiervoor het commando tail /home/leerling/LEESMIJ als student). • Alle commando’s bevinden zich in de ”/bin” map. Om eens de toegangsrechten van zo een programma te bekijken kan je het commando ls -l /bin/chmod gebruiken. Duidt hieronder de rechten aan van de student en de systeembeheerder (root-gebruiker): systeembeheerder leerling lezen wijzigen uitvoeren • Sommige commando’s zijn alleen bedoeld voor de systeembeheerder. Deze staan meestal in de ”/sbin” map. Doe bijvoorbeeld eens ls -l /sbin/netconf
44HOOFDSTUK 4. GEBRUIKERS, GROEPEN EN TOEGANGSRECHTEN . Geef opnieuw de rechten van de leerling en de systeembeheerder: systeembeheerder leerling lezen wijzigen uitvoeren
Hoofdstuk 5
Processen en procesbeheer 5.1
Processen
Procesbeheer wordt door vele shells voorzien zodat je verschillende programma’s tegelijk kan uitvoeren. Iedere keer wanneer je een programma opstart, start je een zogenaamd ”proces”. Het commando ps geeft een lijst van processen die op dat moment in uitvoering zijn: [student@FREGGEL student]$ ps PID TTY TIME CMD 3000 pts/1 00:00:00 bash 3173 pts/1 00:00:00 ps [student@FREGGEL student]$ Het PID dat in de eerste kolom staat is een afkorting voor process ID: een uniek nummer dat aan elk proces wordt toegekend wanneer het gestart wordt. De laatste kolom laat zien welk proces in uitvoering is. De tweede kolom (TTY)1 duidt aan via welke (virtuele) console het proces is opgestart. De derde kolom geeft tenslotte weer hoeveel CPU tijd in seconden het process al heeft ingenomen. De weergegeven lijst bevat alleen de processen (zonder de X-Window processen) die je zelf hebt opgestart. Wil je eens kijken welke processen het systeem allemaal aan het uitvoeren is dan kan dit via ps aux. De opties zijn a voor alle gebruikers, u om dan ook de gebruikersnaam weer te geven en x om ook de X-Window processen te zien. Meestal is er maar ´e´en proces per gebruiker in uitvoering buiten de shell (bash): het commando dat je het laatst getypt hebt. Waarom kan het nu nuttig zijn om meerder processen tegelijk te draaien? 1
TTY is een afkorting van TeleTYpe: een terminal lijkt in eerste instantie niet veel meer dan een geavanceerde typmachine
45
46
HOOFDSTUK 5. PROCESSEN EN PROCESBEHEER
Stel je bent een tekst aan het bewerken en iemand vraagt je om even iets te kopi¨eren. Via procesbeheer kan je dan de tekstverwerker even schorsen, het bestand kopi¨eren en dan weer terug overschakelen naar de tekstverwerker.
5.2
Voorgrond en achtergrond processen
Een proces kan ofwel op de voorgrond ofwel op de achtergrond in uitvoering zijn. Een proces op de voorgrond kan je rechtstreeks mee interageren via je toetsenbord, een proces op de achtergrond draait op zichzelf: je moet het naar de voorgrond halen om er invoer aan te kunnen geven. Er kan maximum 1 proces op de voorgrond draaien. Sommige processen hebben lange tijd nodig om hun taak te vervullen maar hebben daarvoor geen invoer nodig. Voorbeelden van zulke processen zijn het compileren van een groot programma en het maken van een lijst van bestanden die op de harde schijf staan. We zullen hiervan later een voorbeeld zien.
5.3
Processen in de achtergrond zetten en stoppen
Om procesbeheer te demonstreren is er in Linux zelfs een speciaal commando: yes. Dit commando laat continue een regel met de letter y op het scherm zien. Voer het commando maar eens uit. Om het proces te stoppen kun je de toetsencombinatie CTRL+C gebruiken. Om de uitvoer te onderdrukken kunnen we deze naar een soort ”zwart gat” sturen. Dit doe je op de volgende manier: yes > /dev/null. Voer dit commando uit. Dit is al al veel beter. Maar het probleem is dat de prompt niet terugkomt. De uitvoer gaat wel ergens anders naartoe, maar het proces draait nog steeds op de voorgrond. Om een proces na het opstarten onmiddellijk naar de achtergrond de sturen moet je een ampersand (&) achter het commando zetten. Voer het commando yes > /dev/null & maar eens uit. Nu zie je dat de prompt wel terugkeert. Controleer welke processen op dit moment in uitvoering zijn met het commando ps: [student@FREGGEL student]$ yes > /dev/null & [1] 3178 [student@FREGGEL student]$ ps PID TTY TIME CMD 3000 pts/1 00:00:00 bash 3178 pts/1 00:00:03 yes 3179 pts/1 00:00:00 ps
5.3. PROCESSEN IN DE ACHTERGROND ZETTEN EN STOPPEN 47 [student@FREGGEL student]$ Je kan een proces be¨eindigen (”killen”) via het commando kill. Dit programma neemt als argument het PID van het proces dat je wenst te be¨eindigen. Be¨eindig nu het yes-proces en controleer of het gelukt is door weer de lijst van processen in uitvoering te vragen. Het kill commando zonder opties vraagt vriendelijk aan het proces in uitvoering of het zou willen stoppen. Wanneer zich een programma heeft ”opgehangen” zal het echter niet op zo een vriendelijke vraag reageren. Je moet dan een ander signaal naar het proces sturen. Dit doe je via de optie -s signaal. Het signaal voor halsstarrige programma’s is SIGTERM. Om zo een programma te be¨eindigen gebruik je dus het commando kill -s SIGTERM PID. Het yes commando dient natuurlijk enkel als voorbeeldje, het is niet meteen een nuttig commando. Een voorbeeld van een commando dat wel nuttig werk doet en ook best in de achtergrond kan uitgevoerd worden is updatedb. Dit programma gaat na welke bestanden er allemaal in het bestandsysteem zitten en slaat deze op in een gegevensbank. Deze gegevensbank kan achteraf geraadpleegd worden met het commando locate. Op die manier kan je in Linux zeer snel een bestand terugvinden. Wanneer je niet meer weet waar het staat gebruik je locate bestandsnaam. Locate zal dan in de gegevensbank die updatedb heeft opgebouwd zoeken waar het bestand staat. Dit gaat veel sneller dan de verschillende harde schijven na te pluizen op zoek naar het bestand. Probeer bijvoorbeeld eens het commando locate gimp. Linux draait updatedb iedere nacht zodat je de volgende dag weer een upto-date gegevensbank hebt. Je kan echter ook zelf updatedb uitvoeren, bijvoorbeeld nadat je een aantal programma’s hebt ge¨ınstalleerd. Kopieer bijvoorbeeld eens het bestand ”LEESMIJ” naar het bestand ”LEESMIJOOK”. Start vervolgens updatedb in de achtergrond (updatedb &). Je kan nu gewoon verder werken in de shell terwijl updatedb de gegevensbank bijwerkt (je kan het programma updatedb best als systeembeheerder uitvoeren, anders heeft het programma niet voldoende toegangsrechten om het volledige bestandssysteem te doorzoeken. Tenslotte nog een korte uitleg over hoe het voorbeeldje in het begin van dit hoofdstuk werkt: • Start eerst een editor op, bijvoorbeeld vim (we zullen niet leren hoe deze editor werkt) met het commando vim test.txt. • Nu heeft iemand ons gevraagd het ”LEESMIJ” bestand naar de /tmp map te kopi¨eren. Daarom willen we de editor naar de achtergrond verplaatsen. Dit gaat via de toetsencombinarie CTRL+Z.
48
HOOFDSTUK 5. PROCESSEN EN PROCESBEHEER • Kopieer het ”LEESMIJ” bestand naar de map ”/tmp” onder de naam ”HIERISLEESMIJ”. • Om nu terug over te schakelen naar de editor moeten we een proces uit de achtergrond terug naar de voorgrond halen. Dit gaat via het commando fg (foreground). Het programma neemt (eventueel) als parameter het volgnummer van het proces in de achtergrond. Wanneer je een proces naar de achtergrond stuurt verschijnt er steeds [volgnummer] PID. Bij het naar de achtergrond sturen van onze editor was het volgnummer gelijk aan 1. Om de editor terug naar de voorgrond te krijgen typen we dus fg %1. • Je sluit de editor af door een dubbelpunt te typen, vervolgens de letter q (quit) en daarna op ENTER te drukken.
Hoofdstuk 6
Syntax van de gebruikte commando’s chmod [OPTION]... MODE[,MODE]... FILE... Each MODE is one or more of the letters ugoa, one of the symbols +-= and one or more of the letters rwx cd [-PL] [dir] cp [OPTION]... SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY ls [OPTION]... [FILE]... -a, --all do not hide entries starting with . -d, --directory list directory entries instead of contents -l use a long listing format mkdir [OPTION] DIRECTORY... mv [OPTION]... SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY ps [OPTION]... a all w/ tty, including other users u user-oriented x processes w/o controlling ttys tail [OPTION]... [FILE]... -n, --lines=N output the last N lines, instead of the last 10 49
50 HOOFDSTUK 6. SYNTAX VAN DE GEBRUIKTE COMMANDO’S
useradd
[-u uid [-o]] [-g group] [-G group,...] [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-n] [-r] name
yes [OPTION]... [STRING]...
Bibliografie [1]
easy computing gids linux, uitgever easy computing nv, 1999, ISBN 90-5167-298-5, aut: michael wielsch
[2]
operating system concepts, 5th edition, uitgever addison-wesley, 1998, ISBN 0-2001-54262-5, aut: abraham silberschatz en peter baer galvin
[3]
operating systems: ontwerp en implementatie, uitgever academic service, 1991, ISBN 90-6233-582-9, aut: andrew s. tanenbaum
[4]
http://www.gnu.org/
[5]
http://www.linuxdoc.org/LDP/gs/
51