Gebruikerstip 27 (Mei 2003)


Gebruikersbeheer en rechten II

Zoals vorige maand beloofd, deze maand wat meer uitleg over gebruikersbeheer en rechten onder Unix. Als voorbeeld voor een Unix systeem wordt in deze tip gebruik gemaakt van Linux, maar de besproken gereedschappen, programma's en de opbouw van het rechtensysteem gelden voor alle Unix varianten.

Unix kent vanaf de perceptie van het systeem een in het systeem geïntegreerd rechtenbeheer. Dit houdt in dat al op het niveau van het bestandssysteem de rechten van gebruikers is vastgelegd. Effectief betekent dit ook dat er geen manier is om het rechtenbeheer te omzeilen en toch bij die bepaalde applicatie te komen. Maar... Unix beveiliging gaat uit van (netwerk)machines die altijd aan staan. Fysieke toegang tot een machine betekent onder Unix per definitie algehele toegang. Dit werkt als volgt: Een Unix systeem start op naar een bepaald init-level, hiervan zijn er in origine 7 à 9 gedefiniëerd (afhankelijk van de Unix variant. Init-level 1 is echter altijd de single-user modus (voor de liefhebber: kies tijdens uw lilo-scherm <esc> en type "linux init 1"). In deze modus heeft de gebruiker "root" ofwel beheerdersrechten en kan de gebruiker dus alles aan een systeem wijzigen.. Maar zoals gezegd is dit alleen mogelijk wanneer iemand fysiek toegang heeft tot een machine, en op dat moment is ieder besturingssysteem te "openen". Deze manier van beveiligen kan ook als positief worden gezien, immers wanneer u uw wachtwoord bent vergeten, kunt u nog altijd uw machine met de bestanden die erop staan gebruiken. Voor echte veiligheid bevatten Unix systemen een andere mogelijkheid, namelijk een versleuteld bestand, map of schijf dat via een loopback device met een encryptie ingekoppeld kan worden. Hierover zal ik hier niet uitweiden, voor de liefhebbers is er een howto die uitlegt hoe dit werkt.

Terug naar het onderwerp: Unix kent drie groepen die rechten hebben op een item. Deze drie groepen zijn respectievelijk: "owner", "group", "everyone", hierbij is "everyone" inderdaad iedereen . Ieder van deze drie groepen kan rechten toegewezen worden. De mogelijke rechten zijn: "read", "write", "execute" in een tabel ziet dat er dus als volgt uit:

owner group everyone
read
write
execute

Wie zijn nu die owners en groups? Dat zijn op het systeem aanwezige en gedefinieerde gebruikers. Dus wanneer u voor uzelf een gebruiker heeft aangemaakt met de naam "gebruiker1" die lid is van de groep "users", heeft u alle rechten die "gebruiker1" heeft, maar ook alle rechten die de groep "users" heeft. Wanneer u een bestand aanmaakt (bijvoorbeeld een tekstdocument), dan heeft dat document automatisch de rechten ingesteld op: read, write voor de eigenaar, "gebruiker1", en read voor de groep "users".

gebruiker1 users everyone
read X X
write X
execute

De supergebruiker "root" heeft per definitie overal en altijd toegang op een systeem. De rechten op een bestandof map, kunt u uitlezen via uw bestands-browser (onder Linux meestal Nautilus of Konqueror), door met de rechter muisknop op een bestand te klikken en te kiezen voor "properties" (eigenschappen). Wanneer u voldoende rechten op het aangeklikte bestand heeft, kunt u deze rechten ook wijzigen, u kunt bijvoorbeeld de groep "users" ook schrijfrechten geven:

gebruiker1 users everyone
read X X
write X X
execute

Of zelfs definiëren dat u niet wilt dat de groep "users" niet degene is die het bestand mag bekijken, maar dat u een andere, specifieke gebruiker op het systeem heeft, bijvoorbeeld "gebruiker2", en u wilt dat alleen "gebruiker2" leesrechten op het betreffende bestand heeft. In dat geval vult u in plaats van "users", "gebruiker2" in.

gebruiker1 gebruiker2 everyone
read X X
write X
execute

Dit is meteen een belangrijk punt: Unix laat u vrij om voor "group", maar ook voor "owner" te kiezen een groep of een enkele gebruiker in te vullen. Dit verhoogt de flexibiliteit van het systeem aanzienlijk, en maakt het dus ook mogelijk om rechten op een meer "exotische" manier toe te wijzen.

In Unix zijn er in principe geen standaard groepen of standaard gebruikers aangemaakt behalve "root", maar de meeste Linux distributies, BSD en andere varianten worden wel aangeboden met een aantal standaard gebruikers en groepen met voorgedefiniëerde rechten.U hoeft als gebruiker dus niet meer de rechten van gebruikers in alle gevallen vast te stellen. Wanneer u een systeem wilt hebben voor dagelijks gebruik, is het aanmaken van een gebruiker die lid is van de groep "users" meer dan voldoende, immers wanneer u het systeem gaat beheren logt u toch in als "root".

De rechten op een Unix systeem zijn ook via de commandoregel zeer eenvoudig te beheren, rechten bekijken kan bijvoorbeeld met het commando "ls -l":

gebruiker1@machine:~/Desktop$ ls -l
total 8
-rw-r--r-- 1 gebruiker1 users 73 2003-04-19 21:35 debian.desktop
-rw-r--r-- 1 gebruiker1 users 3254 2003-04-19 21:35 Home
-rw-r--r-- 1 gebruiker1 users 368 2003-04-20 16:31 Postbank GTZ
drwx------ 2 gebruiker1 users 1024 2003-04-19 21:35 Trash
-rw-r--r-- 1 gebruiker1 users 154 2003-04-20 04:13 USB stick

De betekenis is als volgt:
de eerste kolom bevat de rechteninformatie over het betreffende bestand, opgedeeld in 4 delen:

De tweede kolom bevat respectievelijk informatie over om hoeveel bestanden het gaat, wie de "owner" is en wie de "group"is. Met deze twee kolommen worden alle relevante gegevens voor het gebruikersbeheer getoond.

Wanneer u rechten wilt wijzigen, moet u weten dat u voor het wijzigen van de rechten het commando "chmod" gebruikt. De nieuwe rechten geeft u op als parameters na het commando. Deze parameters zijn:

Voor zowel de "owner", "group", als "everybody", telt u de waardes van de rechten die u wilt geven op, dus wanneer u de eigenaar alle rechten (dus lezen, schrijven en uitvoeren) wilt geven, is dat: 4+2+1=7. En wilt u de groep alleen lees- en uitvoerrechten geven, dan is dat: 4+1=5. Vervolgens geeft u "everybody" geen rechten, dus 0.
dit levert dus het volgende commando op: "chmod 750 bestandsnaam".
Wanneer u ook de "owner" en de "group" wilt wijzigen, kunt u dat doen met het commando "chown". U wilt bijvoorbeeld een bestand geven aan gebruiker2 en groep users: "chown gebruiker2.users bestandsnaam".
Op deze manier kunt u snel een of meerdere bestanden of mappen voorzien van de juiste rechten. Voor meer informatie over de mogelijkheden van commandoregel commando's op uw Unix systeem, type "man commandonaam".

Een laatste opmerking: voor het aankoppelen van schijven maakt Unix gebruik van het commando "mount". Dit commando kan ook gegeven worden met toewijzing van rechten (dit gaat via de optie "-o umask=---"), hierbij geldt echter niet dezelfde nummerieke invulling als voor "chmod"! De toewijzing is hier omgekeerd, dus om alle rechten te geven aan iedereen op een bepaalde schijf, vult u niet in: "mount /dev/sda1 /mnt/removable -o umask=777", maar "mount /dev/sda1 /mnt/removable -o umask=000"!!!!

Over gebruikersbeheer en rechten in Unix systemen is, vooral voor Linux, veel informatie op internet te vinden, dus mocht u er niet uitkomen, of mocht u zich afvragen of datgene wat u wilt wel mogelijk is, zoek er dan eens naar op internet, de kans is groot dat iemand al iets dergelijks geprobeerd heeft en u kan helpen.

Wilt u meer weten over gebruikersbeheer, of heeft u aanvullende tips, stuur ons dan een e-mail.



home