Het filesysteem bij Linux

Directories

In UNIX worden directories aangewend om de files systematisch op te slaan. Een directory bevat een groep van files, en/of directories. Elke gebruiker heeft een eigen directory, zodat deze niet bang hoeft te zijn dat zijn bestand door een andere gebruiker overschreven zal worden, als deze eenzelfde naam aan zijn bestand geeft. Een file is door zijn pad en zijn naam gedefinieerd. De commando’s die door de gebruiker gegeven worden, werken in principe alleen in de eigen directory en op de eigen files.
Enkele subdirectories zijn:

/bin bevat alle commando’s
/lib bevat bibliotheek functies
/etc bevat systeem aangelegenheden
/dev hier staan de namen van de apparaten vermeld
/users alle gebruikers bevinden zich onder deze directory

Login directory
Zoals in het voorafgaande is gezegd, krijgt een gebruiker als hij inlogt, een directory toegewezen. Deze directory wordt de login directory genoemd. In het algemeen zal het pad er als volgt uitzien //tele16/users/gk2xx. In het algemeen is de login directory de HOME directory.

Huidige directory
Hoe het volledige pad luidt kan met het commando ‘pwd’ worden opgevraagd. Pwd staat voor print working directory. Dit commando laat de directory (current) zien waarin de gebruiker zich bevindt.

Veranderen van de directory
Het change directory commando (cd) stelt de gebruiker in staat om de gehele boom te doorlopen.

Voorbeeld:

Cd / gaat naar de root directory van het systeem waarop U zich bevindt.
cd / etc gaat naar directory etc.
cd gaat terug naar de HOME directory .
cd /users/gk2xx geeft hetzelfde resultaat als cd op het systeem tele16.
cd //tele16/users/gk2xx geeft hetzelfde resultaat als cd.

Einde voorbeeld

Directory aanmaken/verwijderen
mkdir
Syntax: mkdir dirnaam […]

Het mkdir commando stelt de gebruiker in staat om een directory aan te maken.
Bijvoorbeeld: mkdir cursistA

rmdir
Syntax: rmdir dirnaam […]

Met het rmdir commando wordt een directory verwijderd.
Bijvoorbeeld: rmdir cursistA

Files

De editor wordt in het algemeen aangewend om files aan te maken. De naam van een file bestaat uit een aantal karakters. In principe mag elk karakters gebruikt worden, maar voor de lees en de herkenbaarheid worden meestal zinvolle namen gekozen. Een aantal tekens kunnen beter gemeden worden, omdat ze een speciale betekenis hebben. Vermijd het gebruik van *, [, ], ?,; , (, ), <, >, |, &, spatie, tab, ‘, “, en \. Als ze toch gebruikt moeten worden, omsluit ze dan met een aanhalingste¬ken (‘).
Het ls commando stelt de gebruiker in staat om een overzicht van zijn files te krijgen, of om een uitgebreide informatie over een file te verkrijgen.
Stel dat een gebruiker over de files nlq.c en print beschikt.

ls nlq.c
print
ls –l -rw——- 1 dovgg root 304 oct 22 16:38 nlq.c
-rwxr-x– 2 dovgg root 16804 aug 27 1980 print
figuur 1: ls en ls –l

Inhoud van een file
Om de inhoud van een file te bekijken staan er verschillende commando’s ter beschikking. Op de eerste plaats kan met behulp van een editor de file worden ingelezen. De andere manieren zijn:

more
Syntax:more [filenaam]

Het more commando laat de inhoud van een file zien op basis van het aantal regels dat op het scherm past.

less
Syntax:less [filenaam]

Met het less commando kun je met de pijltjestoetsen snel door een bestand heen gaan.

Filemanipulatie
cat (concatenate)
Syntax: cat [ usvte] file …

Het cat commando laat de inhoud van een of meer files op het scherm zien.
Bijvoorbeeld: cat file1 laat de inhoud van file1 zien.

cp (copy)
Syntax: cp file1 file2
cp file … dir

Met het cp commando wordt of file1 gekopieerd en onder de naam file2 opgeborgen, of een of meer files naar de directory dir gekopieerd onder dezelfde naam.

Bijvoorbeeld: cp file1 file2 is nu een kopie van file1.
cp file1 file2.. kopieer file1 en file2 naar de directory boven de huidige directory in de boom.

rm (remove)
Syntax: rm [ fri] file …

Verwijder de files uit de directory.
Bijvoorbeeld: rm i nlq.c

mv (move)
Syntax: mv [ f] file1 file2
mv [ f] file … dir

Met het mv commando wordt of file1 van de naam file2 voorzien, of de files verplaatst naar de gegeven directory.

Bijvoorbeeld: mv naam1 naam2 de file naam1 krijgt nu de naam naam2.
mv naam1 naam2 ../backupde files worden in de directory ../backup geplaatst.

cmp (compare)
Syntax: cmp [ l] [ s] file1 file2

Met dit commando wordt de inhoud van twee files vergeleken. De naam ‘ ‘ voor file1 is default voor standaard input.

Bijvoorbeeld: cmp file1 file2 vergelijkt de inhoud van file1 met file2
cmp file2 vergelijkt de input vanaf het toetsenbord (stand. in¬put) met de inhoud van file2.

diff
Syntax: diff [ efbh] file1 file2

Met dit commando wordt regel voor regel het verschil tussen de twee files getoond. Een van de twee file namen mag vervangen worden door: ‘ ‘ (de file wordt met standaard input vergeleken) of door de naam van een directory (er wordt dan vergeleken met een gelijknamige file uit die directory).

Bijvoorbeeld: diff file1 file2
diff file1 . vergelijkt de file met zichzelf.

Wildcards

Een aantal symbolen zijn te gebruiken om een groep van files aan te geven. Enkele symbolen zijn *,?,[ ]. Deze symbolen hebben de volgende betekenis:

* elke willekeurige rij van tekens
? één willekeurig teken
[] één van de tekens tussen de haken

Om alle files die op .c eindigen te laten zien zonder deze elk afzonderlijk op te geven kan cat *.c ingetypt worden.
Merk op dat de * nu een andere betekenis heeft gekregen in vergelijking met de editor. Een reguliere expressie en een filenaam expansie zijn niet identiek.

Files en directories

Binnen UNIX is het zo geregeld, dat degene die de file aanmaakt ook de eigenaar is. Wie de eigenaar is wordt door de loginnaam bepaald.
De systeembeheerder geeft een loginnaam uit en houdt dit bij in een bestand, aangeduid met ‘password¬file’. In de passwordfile staan alle gebruikers vermeld en hun loginnaam is gekoppeld aan een gebrui¬kerscode. UNIX maakt steeds van deze code gebruik. Naast het uitgeven van loginnaam wordt de gebruiker ook in groep (group) ingedeeld.
Op de passwordfile zal nog nader worden ingegaan.

Rechten op files en directories
De boekhouding van de files wordt in de inode bijgehouden, zoals b.v. wie is de eigenaar, datum van aanmaak, rechten, etc.. Een gebruiker kan deze eigenschappen met het ls commando onderzoeken:

rwx r x r 3 wru doc 1024 jul 23 10:29 brief
1 2 3 4 5 6 7

De bovenstaande kolommen hebben de volgende betekenis:

1: geeft de protectie bits weer.
1e positie:
als het om een gewone file gaat
d als het om een directory gaat
c special file (bevindt zich in de directory /dev)
b special file (/dev)

2e t/m 10e positie
deze kolommen moeten in groepjes van drie gelezen worden:

rwx rwx rwx
eigenaar groep anderen

Onder UNIX worden deze namen resp. aangeduid met user, group en other.
Elke gebruiker kan r (read), w (write), en x (execute/search) permis¬sie instellen.
Elke positie vertegenwoordigt een bepaald recht, als er niets staat is de permissie uitgeschakeld. Vaak wordt gezegd, dat het bit aan of uit staat.
Opgemerkt moet worden dat x een verschillende betekenis heeft voor een file of een directory. Indien het bit aan staat en het betreft een programma dan wil dat zeggen, dat dit programma geëxecuteerd mag worden. Gaat het echter om een directory dan betekent dit dat de directory doorzocht mag worden. Indien het x bit niet aan staat dan werken b.v. ‘ls’, ‘pwd’ niet.

2:links
Het aantal aanwezige hard links naar de betreffende file.

3:eigenaar
Dit is een loginnaam, diegene die onder deze naam inlogt is de eigenaar van deze file of directory.

4:groep
Indien er projectgewijs gewerkt wordt is het handig om bijvoorbeeld files onderling te kunnen uitwisselen terwijl de niet projectleden geen rechten hebben. Dit is onder UNIX geregeld met het begrip groep. Een nadeel van standaard UNIX is dat je maar in één groep opgenomen kan zijn.

5:lengte
De grootte van de file in bytes staat hier vermeld.

6:datum
De datum heeft betrekking op de schrijfdatum, m.a.w. wanneer is er voor het laatst in de file geschreven.

7:filenaam
Dit is de naam van de file.

Ter illustratie een voorbeeld van de rechten, opgeroepen met het ‘ls a’ commando.

drwx wru .
rw rw wru postcodes
r wru brief
rwxr xr x wru runprog
drwxrwxr x wru commando
rw vgg inbraak
wru superveilig

De file postcodes is voor de eigenaar en de groep te lezen resp. te beschrijven, maar is voor de rest onbereikbaar.
Brief is alleen leesbaar voor de eigenaar.
Runprog mag door iedereen gelezen en geëxecuteerd worden, alleen de eigenaar wru mag in de file schrijven.
Commando is een directory. Deze mag iedereen doorzoeken, alleen schrijven is voor de rest van de wereld niet toegestaan.
Inbraak is van een vreemde eigenaar (vgg). Helaas heeft eigenaar wru geen toegang tot de “vreemde” file, ondanks dat deze zich in zijn directory bevindt, maar kan hem wel verwijderen (schrijfrechten op de directory).
Superveilig is voor iedereen onbereikbaar, maar kan wel door de eigenaar verwijderd worden.

De directory . en ..
Elke directory die aangemaakt wordt bevat een . en een .. file. De . wijst naar de huidige (current) directory en de .. wijst naar de directory (parent) waaronder de aangemaakte directory hangt. Doordat de .. verwijzing in elke directory aanwezig is kan snel naar hoger gelegen directories gegaan worden.
Indien de optie al bij het commando ‘ls’ wordt gebruikt, worden deze twee extra namen zichtbaar.

Verwijderen van een file
Het verwijderen van de file geschiedt met het rm commando.
Iedere gebruiker die schrijfpermissie op een directory heeft kan hierin files verwijderen. Ook al heeft die gebruiker geen schrijfpermissie op een file, dan kan hij zondermeer de file
weggooien. De controle van de protectie ligt niet bij de schrijfpermissie op een file, maar op de schrijf en zoekpermissie van de directory waarin de file zich bevindt.
De files inbraak en superveilig kunnen door wru verwijderd worden.
Bij het rm commando wordt een melding gegeven als er geen schrijfpermissie bestaat, maar met de beantwoording van y wordt de file alsnog verwijderd.
Het verwijderen van een directory (rmdir) kan alleen als de directory leeg is en de gebruiker zich niet in de te verwijderen directory bevindt.

Veranderingen van de rechten
Het chmod commando (change mode) stelt de gebruiker in staat om de rechten te veranderen. Dit kan op twee manieren:

1. De bits die in groepjes van drie zijn gegroepeerd kunnen als een octaal getal geïnterpreteerd worden.

Bijvoorbeeld: chmod 710 file betekent rwx x

2. In plaats van met cijfers te werken kan ook met letters worden ge¬werkt. Voor de eigenaar is de letter u, voor de groep de letter g en voor de rest de letter o.

Bijvoorbeeld: chmod u+a file betekent dat rwx voor de eigenaar worden gezet.
chmod o wr file betekent dat voor de anderen lees en schrijfper¬missie worden afgezet.
Umask
De Shell maakt standaard van de bit setting gebruik die in ‘umask’ is vastgelegd. Telkens als een nieuwe file wordt gecreëerd worden rechten volgens ‘umask’ weggehaald (gemaskeerd).

Bijvoorbeeld: umask 077 zet rwx voor de eigenaar en de andere bits staan uit.