Linux gebruiken

>> Index <<

Single-user versus multi-user systemen

Gebruikers, groepen en anderen

Permissies





Single-user versus multi-user systemen

> Top <

Single-user besturingssystemen als DOS, Windows en OS/2 zijn voor persoonlijke computers ontworpen. In tegenstelling tot de onder multi-user besturingssystemen als UNIX lopende minicomputers en mainframes, waren microcomputers voor gebruik door één persoon bedoeld. Daarom verlenen single-user besturingssystemen hun eigenaars volledige toegang tot alle hardware, mappen en bestanden. Het is immers hun PC. Beveiliging tegen medegebruikers (privacy) werd niet nodig geacht. Ook netwerkgebruikers kregen dezelfde rechten als de eigenaar van de computer (rootrechten). Hierdoor zijn de op een netwerk (laat staan internet) aangesloten single-user besturingssystemen moeilijk te beveiligen.

In het begin was dit geen probleem. Het eenvoudige ontwerp voor één gebruiker kwam de snelheid ten goede. De eerste IBM Personal Computer (12/8/1981) had geen vaste schijf. Gebruikers startten het Disk Operating Systeem van Microsoft van een bootdiskette op. Na afloop van de sessie namen ze het besturingssysteem, de software en data gewoon mee naar huis. Door het gebruik van diskettes was de privacy gewaarborgd.

Maar het is duidelijk dat dit op een met vaste schijf uitgeruste IBM PC XT (9/3/82) al niet meer werkt. Daarom kon de 16-bit 80286 PC AT (Advanced Technology) met een BIOS wachtwoord beveiligd worden. Ook een versleuteld bestandssysteem is een mogelijkheid. Maar omdat het versleutelen van data geen bescherming biedt tegen wissen, kopiëren of kraken is het bewaren van verwisselbare media in een kluis nog steeds de beste oplossing.

DOS, Windows 9x en OS/2 gaan er nog steeds vanuit dat maar een gebruiker op een PC werkt. De beveiliging en het vastleggen van gebruikersinstellingen moeten door applicatiesoftware geleverd worden. Een beveiliging van de kant van het besturingssysteem ontbreekt.

In het bedrijfsleven wordt die beveiliging door multi-user netwerksoftware geleverd. U meldt zich op de netwerkserver aan door uw gebruikersnaam (login ID) en wachtwoord op te geven. Als het goed is staan uw bestanden nu buiten het bereik van ongewenste gebruikers en maakt de systeembeheerder er reservekopiën van. De netwerksoftware van de server is op meerder gebruikers ingesteld. En hoe meer gebruikers, des te duurder (dezelfde!) netwerkprogrammatuur is.

Maar op het single-user werkstation zelf krijgt iedere gebruiker - ervaren of niet - en alle software - veilig of niet - onbeperkte toegang tot de hardware en de bestanden op de schijf. Omdat setup scripts niet door bestandspermissies gehinderd worden is het installeren van een nieuw programma een makkie. Zelfs op XP Home worden thuisgebruikers nog standaard tot Administrator gebombardeerd. Dit ontlast de Helpdesks van tijdrovende "hij-doet-het-niet" problematiek. En als u door het werken onder het "gemakkelijke" rootaccount even gemakkelijk een virus via het internet installeert, had u maar een goede virusscanner moeten kopen.

Een single-user systeem levert dus veel individueel gebruikersgemak op, maar dat gaat ten koste van de veiligheid en stabiliteit op het netwerk. Want van de vrijheid van het Administrator account zullen ook slecht geschreven programma's, malware en virussen profiteren. Daarom werden DOS en Windows ook populair bij de schrijvers van computervirussen. Zonder enige bescherming kunnen indringers en virussen bestanden installeren, wijzigen of verwijderen.

Dit is heel anders geregeld op een multi-user systeem als Linux waar iedere gebruiker (met uitzondering van de super user root) maar een klein deel van het geheel beïnvloeden kan. Toegang tot mappen, bestanden en zelfs tot de hardware is tot in de puntjes te regelen. Onder Linux werkt u standaard in een netwerkomgeving. Ook op een PC.

Gebruikers, groepen en anderen

> Top <

Hoe de beveiliging onder Linux werkt, is het best aan de hand van praktijkvoorbeelden te bestuderen. De commando's zijn soms vet gedrukt. De commando's zijn vrijwel allemaal op een terminal venster onder X uit te voeren. De uitvoer op het scherm (groen) zal per PC verschillen, maar de het gedrag van Linux zal op uw PC niet wezenlijk verschillen.

Waarschuwing!

De beste manier om Linux te leren kennen is om de commando's gewoon uit te proberen. Doe dit echter nooit als root, maar als gebruiker! Maak eventueel als root een dummy user aan. In uw /home/dummy directory kunt u veilig experimenteren.



Gebruikers

> Top <

Linux is een multi-user besturingssysteem. Een user is een gebruiker van het systeem. Multi staat voor meer. Linux kan meerdere gebruikers tegelijkertijd bedienen. Ieder onder zijn eigen inlognaam.

Een gebruiker heeft een naam en behoort tot een bepaalde gebruikersgroep. Op mijn SuSE systeem is de standaard groep waartoe iemand behoort de groep users. Sjoerd behoort tot de groep users. Onder het op RedHat gebaseerde Mandrake (zie hiernaast) krijgt een gebruiker bovendien zijn eigen groep. Zo zou vader sjoerd zich tot lid van de groepen atke en bouke kunnen maken.

Wie zijn de gebruikers van een besturingssysteem? Vanuit DOS gedacht zijn dat de personen die Linux gebruiken. Onder Linux zijn dat degenen die met hun gebruikers-ID en wachtwoord inloggen, commando' s op de prompt intikken en de muis besturen. U en ik. Zonder wachtwoord komt u Linux niet binnen.

Bij de installatie van Linux moet u daarom meteen al een wachtwoord voor de systeembeheerder (root) opgeven (vergeet het niet). Daarna maakt u onder de naam root gebruikersaccounts voor uzelf en anderen aan. Dat laatste gaat vaak het best met het grafische configuratieprogramma van distributeur (onder SuSE is dat het programma yast, hiernaast ziet u Linuxconf).

Programma's zijn ook maar gebruikers op een Linux systeem

Linux beschouwt ook programma's als gebruikers van het besturingssysteem. Dit geldt met name voor de achtergrond lopende beheersprocessen: de daemonen. Veel van deze programma's lopen al voordat u op het systeem inlogt d.m.v. een init script.

Linux hanteert voor deze autonoom draaiende achtergrondprogramma's meestal het cliënt-server model. Ze zijn net als u gebruikers van het systeem en krijgen soms ook een eigen Home directory: bijv. /var/spool/lpd voor de line printer daemon (spooler) en /etc/news voor de daemon die het berichtenverkeer regelt.

Tevens krijgt iedere gebruiker een eigen inlog shell. Het hoeft geen echte shell te zijn, maar kan ook een frontend zijn voor een database of een dummy shell als false (do nothing, unsuccessfully).

Een blik op de eerste regels van het configuratiebestand /etc/passwd laat dit zien:

oracle:x:59:54:Oracle User:/opt/oracle:/bin/bash
mysql:x:60:2:MySQL Database User:/var/mysql:/bin/false
dpbox:x:61:56:DpBox User:/var/spool/dpbox:/bin/false
nobody:x:65534:65534:nobody:/tmp:/bin/bash
sjoerd:x:500:100:Sjoerd Visser:/home/sjoerd:/bin/bash

Omdat programma's voor Linux ook maar gebruikers van het besturingssysteem zijn, hebben ze het ook maar gedeeltelijk voor het zeggen. Terecht: want het ene programma mag het andere programma niet in de weg staan.

Multitaskende 32 bits besturingssystemen doen hun best om te voorkomen dat programma's elkaar in het geheugen voor de voeten lopen (dat zou een general protection fault van de processor opleveren), maar Linux biedt veel meer bescherming, omdat Linux de door gewone gebruiker opgestarte programma ook beperkte toegang geeft tot het bestandssysteem waarmee ook de hardware is verbonden. Op deze manier kunt u de anonieme FTP gebruikers van uw systeem sterk beperkte gebruikersrechten geven. En kunt u uw zoontje verbieden het internet op te gaan. En kan een krakkemikkig geschreven programma niet zomaar bestanden van een ander programma overschrijven (tenzij ze tot dezelfde groep behoren en de schrijf permissies geregeld zijn).

Inloggen

Ieder Linux systeem gedraagt zich als een netwerk. U kunt meerdere malen inloggen. In het onderstaande geval log ik met Ctr-Alt-F2 in op het tweede virtuele toetsenbord tty2, terwijl ik ook al ingelogd ben op het standaardtoetsenbord tty1. Tty staat voor teletyper. Zie: Virtual consoles.

Welcome to SuSE Linux 6.1 (i386) - Kernel 2.2.5 (tty2)
visser login:

Na het intikken van gebruikersnaam (sjoerd) en wachtwoord verschijnt de prompt. Zonder geldig wachtwoord komt u Linux niet binnen.

Welcome to SuSE Linux 6.1 (i386) - Kernel 2.2.5 (tty2)
visser login: sjoerd
Password:
Have a lot of fun...
Last login: Wed Oct 6 08:08:47 on tty1.
No mail.
sjoerd@visser: ~ >

Typisch voor een netwerkomgeving is de mededeling "No mail" en het email adres (sjoerd@visser) die op de prompt verschijnen. Ik ben gebruiker sjoerd op de computer met de naam visser. Hier komen de emailaddresen vandaan. Als ik op dezelfde computer als root inlog met het commando su verschijnt er een andere prompt met een ander email adres. SU staat voor SuperUser: de machtige systeembeheerder met de naam root. Maar ook voor change user: "su atke" stelt u in staat om als "atke" verder te gaan. Su's default is echter root.

sjoerd@visser:~ > su
Password:
root@visser:/home/sjoerd > cd /root
root@visser:~ >

De actieve directory (.) is gelijk gebleven, maar deze wordt nu aangeven met /home/sjoerd in plaats van een tilde (~). De tilde is een afkorting voor de home directory van de gebruiker. De home directory van de Super User is /root. Na een cd /root (of cd) verschijnt de tilde. U verlaat de su interface met exit.

Gebruikers als root@visser en sjoerd@visser kunnen elkaar mail versturen en over het PC netwerk chatten: root kan sjoerd aanroepen met talk sjoerd@visser of op dezelfde computer met talk sjoerd en omgekeerd. Met de interne mail kunnen programma's hun logbestanden versturen. Maar u kunt er ook de boodschappenlijst mee doorgeven aan uw vrouw. Probeer dat maar eens in te stellen met Outlook.

Gebruikers toevoegen met useradd

Een nieuwe UNIX gebruiker wordt toegevoegd met useradd.

laptop:/etc # useradd bouke

Hiermee worden slechts ingangen in het wachtwoordenbestand /etc/passwd aangemaakt.

laptop:/etc # grep bouke /etc/passwd
bouke:x:501:100::/home/bouke:/bin/bash

De door useradd gebruikte standaardwaarden zijn op te vragen met useradd -D

laptop:/etc # useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel

Het groep ID(entificatienummer) 100 is dat van de gebruiker (users). Tegenwoordig start SuSE de gebruikers met ID 1000. Na inloggen ziet de gebruiker de bash prompt ($SHELL), maar het zou ook een emailprogramma als /usr/bin/pine kunnen zijn. Dit is in /etc/passwd aan te passen. Met useradd -D -opties past u de standaardwaarden voor alle nieuwe gebruikers aan.

Het skelet in /etc/skel is de standaard opmaak van de home directory. U kunt deze aanmaken met de -m(ake) optie van useradd. Met de -p(assword) optie voegt u meteen een wachtwoord toe:

laptop:/etc # useradd -m -p geheim -c "Bouke Visser" bouke

Bouke kan zijn wachtwoord met passwd wijzigen:

bouke@laptop:~ > passwd

Old Password:

New password:~ >

Als Bouke een Windows gebruiker is moet hij meestal nog een samba wachtwoord aanmaken.

Userdel

Alleen root kan gebruikers aanmaken en verwijderen (hier gebruiker samba):

root@zolder:/home/sjoerd > useradd samba

root@zolder:/home/sjoerd > userdel samba

root@zolder:/home/sjoerd > apropos userdel

userdel (8) - Delete a user account and related files

Met userdel gebruiker -r(emove) wist u tevens de /home/gebruiker. Het tijdelijk veranderen van het wachtwoord is een effectievere methode om iemand (uw zoontje) tijdelijk uit te sluiten.

Groepen

> Top <

Onder Windows 9x of DOS kan iedere PC gebruiker bestanden inzien (lezen), beschrijven of uitvoeren. Het File Allocation Systeem (FAT) en de FAT32 variant daarop kent weliswaar bestandsattributen (alleen lezen, systeem, verborgen, archief), maar deze stellen qua beveiliging niets voor, omdat voor DOS/Win 9x iedere PC gebruiker heer en meester van de PC is. Iedere gebruiker (incl. hackers en viri) kan ze naar eigen inzicht aanpassen.

Onder Linux is dat niet het geval. Bestanden die u op het EXT bestandssysteem maakt zullen uw naam dragen. Alleen u of de systeembeheerder root mag ze veranderen.

Eigenlijk gaat het niet om uw echte naam, maar om uw User ID (UID) op het systeem, dat net als bij CompuServe Classic een nummer is. De ID's zijn op te vragen is met het commando id voor uzelf of id gebruikersnaam voor een andere gebruiker:

sjoerd@visser:~ > id
uid=500(sjoerd) gid=100(users) groups=100(users),16(dialout)

Het User ID (uid) van gebruiker sjoerd is 500. Bovendien zien we dat sjoerd tot de groep users en dialout behoort (met Group ID=100). Het commando id haalt de informatie uit het bestand /etc/passwd. Dit bestand is voor iedereen in te zien (r) met cat /etc/passwd, maar alleen door de eigenaar root te wijzigen (w). Wachtwoorden worden op een alleen voor root zichtbaar bestand opgeslagen.

sjoerd@visser:~ > ls -l /etc/passwd
-rw-r--r-- 1 root root 1827 Oct 3 15:42 /etc/passwd
sjoerd@visser:~ > cat /etc/passwd | grep sjoerd
sjoerd:x:500:100:Sjoerd Visser:/home/sjoerd:/bin/bash

De ingang van sjoerd in dit bestand is: sjoerd:x:500:100:Sjoerd Visser:/home/sjoerd:/bin/bash. Hierin leest u dat sjoerd User ID 500 en Group ID 500 heeft, de nickname van Sjoerd Visser is, als home directory /home/sjoerd heeft en bash als shell gebruikt. Mijn wachtwoord is er niet in terug te vinden.

Aangezien ik tevens de Superuser (systeembeheerder) ben, is het wel aardig om de id van root op te vragen.

sjoerd@visser:~ > id root
uid=0(root) gid=0(root) groups=0(root),1(bin),14(uucp),15(shadow),16(dialout),65534(nogroup)

Root blijkt User ID 0 te hebben en maakt deel uit van meerdere groepen, waaronder uucp en dialout. Laatstgenoemde groepen geven o.a. toegang tot het terminal programma minicom.

Permissies

> Top <

Als u in uw home directory een bestand aanmaakt of download wordt u automatisch eigenaar van dat bestand. Als eigenaar van het bestand kunt u ermee doen en laten wat u wilt, maar andere gebruikers (behalve de root) hebben maar beperkte toegangsrechten (permissies). Hoe dat geregeld is wordt hieronder beschreven.

Maar eerst nog eens iets over bestanden.

Het Ext2 bestandssysteem onderscheidt drie soorten bestanden (files):

  1. Normale bestanden: deze worden weer onverdeeld in tekstbestanden (tekst, html, scripts) en binaire bestanden (plaatjes, programma's).

  2. Mappen (directory files)

  3. Apparatuurbestanden (special files, devices)

In Werken met bestanden wordt de zaak van een meer praktische kant belicht. Hier is het belangrijk om u te realiseren dat ook mappen bestanden zijn (vergelijk het met een inhoudsopgave) en dat onder Linux ook hardware componenten als bestanden benaderd worden op een virtueel bestandssysteem (zie hiervoor de notities in Devices). Hierdoor kan root de toegang tot de hardware interfaces ook met permissies regelen.

Linux maakt m.b.t. permissies onderscheid tussen de eigenaar/gebruiker, groepsleden en anderen. Alleen de eigenaar en de root hebben het recht de permissies van het bestand te wijzigen.

Van belang is dat toegankelijkheid van een bestand niet alleen wordt bepaald door de permissies die de eigenaar aan het bestand zelf geeft, maar ook door de toegangsrechten van de (sub)directories waarin het zich bevindt! De volgende tabel geeft een overzicht van wat er mogelijk is.


Directory (slaat op bestandsinhoud)

Bestand

Lezen (read)

De bestandsinhoud van de directory is wel (r) of niet (-) in te zien. Zonder leestoegang ziet u een lege directory.

Het bestand is al (r) dan niet (-) te openen.

Schrijven (write)

De bestanden van de directory zijn al (w) dan niet (-) te veranderen: dit slaat op het wissen, hernoemen en plaatsen van bestanden en subdirectories. Kopieeracties naar buiten (backups) zijn wel toegestaan.

Het bestand is al (w) dan niet (-) te wijzigen. Zonder r(ead) attribuut heeft een w(rite) attribuut weinig waarde.

Uitvoeren (execute)

De bestandsinhoud van de directory is wel (x) of niet (-) toegankelijk voor commando's als cd, cp en ls.

Het bestand (script, programma) is al (x) dan niet (-) in uit te voeren.

Verder geldt dat bovengenoemde permissies afzonderlijk geregeld worden voor de user/eigenaar, zijn groep en de anderen.

De eigenschappen van bestanden zijn met ls -l op te vragen. Zie Werken met bestanden.

Instellingen van een directory

Een standaard directory (bijv. een home directory) geeft bij mij het volgende beeld: drwxr-xr-x. De betekenis hiervan wordt in de tabel toegelicht.

D

R W X voor de eigenaar

R - X voor de groep

R - X voor anderen

Directory attribuut

De eigenaar mag alles (lezen, schrijven en uitvoeren) met de directory doen (mits hij toegang heeft tot de bovenliggende directory, als het om een subdirectory gaat).

Groepsleden kunnen de bestandslijst inzien en doorzoeken, maar kunnen geen bestanden plaatsen, hernoemen of wissen.

Anderen kunnen de bestandslijst inzien en doorzoeken, maar kunnen geen bestanden plaatsen, hernoemen of wissen.

De X van eXecute is in vrijwel iedere directory te vinden. Zonder de X zou de directory praktisch onbenaderbaar zijn (zelfs voor backups, tenzij die door root uitgevoerd worden).

Standaard ontbreekt de W(rite) toegang voor groepsleden en vreemden. Omdat de root eigenaar is van alle systeembestanden en -mappen kan een gewone gebruiker nooit systeembestanden wissen of overschrijven.

Voor een projectmap waaraan meerdere mensen bijdragen moeten leveren, zet u de schrijfattributen voor de groep in deze map op rwx (drwxrwxr-x). De consequentie hiervan is dat groepsleden nu bestanden van andere groepsleden in deze map kunnen wissen.

De standaardinstellingen van een (niet uitvoerbaar) databestand zijn: -rw-r--r--.

-

R W - voor de eigenaar

R - - voor de groep

R - - voor anderen

Geen speciaal attribuut

De eigenaar kan het bestand lezen en beschrijven. Omdat het geen uitvoerbaar bestand is ontbreekt de X.

Groepsleden kunnen het bestand inzien, maar kunnen het niet veranderen.

Vreemden kunnen het bestand inzien, maar kunnen het evenmin veranderen.

Een bestand van een ander dat alleen voor u te lezen (openen) is, kunt u zonder w(rite) attribuut niet veranderen. U kunt het wel in een tekstverwerker laden en onder een andere naam in uw home directory opslaan. U wordt dan de eigenaar van een kopie van bestand dat u wel kunt veranderen. Als u van een UNIX server van het internet een bestandje plukt, doet u in wezen hetzelfde.

De X ontbreekt, omdat het om een databestand gaat.

Uitvoerbare bestanden hebben meestal de volgende eigenschappen.

-

R W X voor de eigenaar

R - X voor de groep

R - X voor anderen

Geen speciaal attribuut

De eigenaar kan het bestand lezen en beschrijven. Omdat het geen uitvoerbaar bestand is ontbreekt de X.

Groepsleden kunnen het bestand inzien en uitvoeren, maar kunnen het niet veranderen.

Vreemden kunnen het bestand inzien en uitvoeren, maar kunnen het evenmin veranderen.

Standaard is de systeembeheerder (root) eigenaar van alle uitvoerbare bestanden (incl. hun directories) die zich niet in een home directory bevinden. Alleen hij kan ze wijzigen. Maar zoals u ziet mogen anderen er gebruik van maken. Dat is logisch, want de door root beheerde uitvoerbare bestanden zijn er tenslotte voor de gebruikers.

Maar hoe zit het nu met gevaarlijke programma's?

sjoerd@visser:~ > fdisk
bash: fdisk: command not found
sjoerd@visser:~ > cd /sbin
sjoerd@visser:/sbin > ls -l | grep fdisk
-rwxr-xr-x 1 root root 40720 Apr 15 1999 cfdisk
-rwxr-xr-x 1 root root 67716 Apr 15 1999 fdisk
-rwxr-xr-x 1 root root 44400 Apr 15 1999 sfdisk
sjoerd@visser:/sbin > fdisk
Using /dev/sda as default device!
Unable to open /dev/sda

In het bovenstaande voorbeeld probeert gebruiker sjoerd fdisk op te starten. Maar de systeembeheerder heeft dit commando wijselijk uit zijn pad gehouden (command not found). Sluw als sjoerd is, sluipt hij de directory met systeem bestanden in. Daar treft hij fdisk aan. Maar fdisk start niet op omdat hem de toegangsrechten tot de eerste IDE schijf (/dev/hda) ontbreken:

sjoerd@visser:/sbin > ls -l /dev/hda
brw-rw---- 1 root disk 3, 0 Sep 22 13:25 /dev/hda
sjoerd@visser:/sbin >

Dit block device is alleen door de systeembeheerder root (en zijn groep) te openen en te beschrijven. De overige fdisks geven soortgelijke foutmeldingen.

Voor elke mogelijkheid (read, write, execute) moet u afzonderlijk toestemming hebben. Toestemming voor een eigenschap wordt door de letter r, w of x aangeven. Hebt u geen toestemming, dan staat er een minnetje (-).

> Top <



>> Index <<

Personal Computer Milestones : What was the first personal computer?