Home

  server

Linux::Permissies

Permissies Introductie

Om met een Linux-systeem aan de slag te kunnen moet een gebruiker en/of groep bij het systeem met een naam bekend zijn en daarnaast moet een omgeving gedefiniëerd worden waarbinnen de gebruiker of groep zijn werk doet. Deze omgeving bijvoorbeeld bestaande uit een homedirectory en instellingen van een gebruiker wordt een account genoemd.

Naar index

Gebruikersbeheer

Beheer van gebruikers op UNIX systemen vindt plaats in het bestand '/etc/passwd'.
Vanouds was de authenticatieprocedure zo ontworpen dat iedere gebruiker leesrechten op dit bestand moest hebben zodat de log-in routine toegang kon krijgen tot het bestand om het wachtwoord te vergelijken. Om veiligheidsredenen wordt nu naast het '/etc/passwd' bestand gebruik gemaakt van het bestand '/etc/shadow' waarin wachtwoorden versleuteld opgeslagen zijn en waartoe alleen de bebruiker root toegang heeft. De bestanden 'passwd' en 'shadow' bevatten samen de totale configuratie van de gebruiker.
In de gebruikersdatabase hebben we 2 soorten gebruikers. Ten eerste de personen die toegang tot bepaalde systeembronnen willen en daarnaast de zogenaamde service-accounts die gebruikt worden voor toepassingen die op het systeem gebruikt moeten worden zoals een webserver, printer, etc.

In '/etc/passwd' komt voor iedere gebruiker één regel voor en kan eruit zien als volgt:
root:x:0:0:root:/root:/bin/bash
pleuni:x:504:100:secretaresse,1e etage:/home/pleuni:bin/bash

de afzonderlijke onderdelen hierin zijn:
login-naam Moet uniek zijn, alleen eerste 8 tekens worden bekeken.
wachtwoord Ter authenticatie van de gebruiker. Blanco geeft iedereen toegang, * bij systeemaccount, x voor wachtwoord in /etc/shadow, prefix ! maakt wachtwoord ongeldig en blokkeert gebruiker.
gebruikers-ID UID of User ID, uniek getal ter identificatie van gebruiker. UID 0 is voor super-gebruiker met alle rechten zoals root.
groeps-ID GID of Groep ID. Elke gebruiker is lid van minimaal 1 groep, de GID is de primaire groep.
extra informatie Nadere informatie voor herkenbaarheid van de gebruiker door de beheerder. Velden gescheiden door comma
homedirectory Verwijzing naar de homedirectory.
shell Specificatie van welke shell de gebruiker gebruik gaat maken, meestal bash.

Naar index

Gebruikersauthenticatie

Het versleutelde wachtwoord wordt gebruikt ter authenticatie, dus om vast te stellen dat de zich aanmeldende gebruiker ook diegene is die hij zegt te zijn.
Dit wachtwoord is opgeslagen in het bestand '/etc/shadow'. Hier kan ook optionele informatie worden opgenomen in de velden die volgen op het versleutelde paswoord.
Net als in '/etc/passwd' is er telkens één regel per gebruiker die er als volgt uit kan zien:

pleuni:qwert1:10833:10:40:2:30:-1:135445604

Het betreft de volgende informatie voor gebruiker pleuni en qwert1 is het versleuteld wachtwoord.
10833 is het aantal dagen sinds 1/1/1970 dat wachtwoord gewijzigd is.
10 is het aantal dagen dat het wachtwoord gebruikt moet worden voordat het gewijzigd mag worden.
40 is het aantal dagen dat het wachtwoord na opnieuw instellen gebruikt mag worden.
2 is het aantal dagen voorafgaand aan het verlopen van een wachtwoord dat de gebruiker een melding krijgt.
30 is het aantal dagen na het verlopen van een wachtwoord waarna de account gedeactiveerd wordt.
-1 is aantal dagen sinds 1 januari 1970 dat de account gedeactiveerd is. -1 betekend dat de account niet gedeactiveerd is.

Verdere restricties worden vastgelegd in het bestand '/etc/login.defs' zoals waar de directory van de mailboxen is, zoekpad van gebruiker root, zoekpad van gewone gebruikers, delay voordat opnieuw gevraagd wordt om wachtwoord na een inlog failure, devices van waaraf gebruiker root in mag loggen, minimum lengte van wachtwoord, etc. Zie # man login.defs voor meer informatie.

Gebruikers instellingen met PAM (Pluggable Authentication Modules) is een modulair mechanisme dat alle authenticatie op een Linux machine afhandelt. Hierin kan geregeld worden dat gebruikers zich aanmelden via wachtwoord, smartcard, remote terminalsessie, vinger afdruk, etc. PAM kan er hierbij voor zorgen dat algemene modules door een specifiek PAM-configuratiebestand beschikbaar gesteld wordt aan elk programma dat het nodig heeft.
Op de meeste systemen hebben alle programma's die iets met aanmelden van doen hebben een configuratiebestand onder /etc/pam.d waarin precies staat welke modules allemaal gebruikt moeten worden tijdens het inloggen. Hierbij kan bijvoorbeeld verwezen naar een PAM bestand waarin wordt bepaald dat gekeken moet worden wanneer root zich meldt of hij dat van betreffende terminal wel mag. Er kan bijvoorbeeld ook aangegeven worden dat een wachtwoord minimaal één cijfer moet bevatten, etc.

Naar index

Groepen

Aan elk bestand is naast een bebruiker ook een groep gekoppeld. Elke gebruiker is altijd lid van minimaal 1 groep. Groepen worden bijgehouden in het bestand '/etc/group' en als de optie voor een groepswachtwoord wordt gebruikt heeft het shadow bestand de naam '/etc/gshadow'.

De eerste groep waar de gebruiker lid van is, is de primaire groep en wordt altijd gespecificeerd in het bestand '/etc/passwd'.
Een gebruiker kan ook lid gemaakt worden van meerdere, secundaire, groepen door het bestand '/etc/group' te bewerken.
In dit bestand komen per groep 4 velden voor: naam, wachtwoord, GID en gebruikers.

Naam Een unieke naam die over het algemeen bestaat uit 8 of minder tekens.
Wachtwoord Meestal wordt deze optie niet gebruikt. Dit wachtwoord moet worden ingegeven door gebruikers voordat ze met het commando newgrp deze groep willen gaan gebruiken.
GID (Group_IDentification) Het unieke getal dat gebruikt wordt door het systeem om met de groep te werken.
Gebruikers Alle gebruikers die lid van deze groep zijn, gescheiden door een comma.


De inhoud van '/etc/group' kan er als volgt uit zien:
root::0:root
bin::1:root,bin,daemon
deamon::2:
users::100:
boekhouders::101:ad,gerrit,dik

Naar index

Aanmaken Gebruikers/Groepen

Met een editor zijn de gebruikersbestanden '/etc/passwd', '/etc/shadow' of '/etc/group' goed te bewerken.
Het nadeel is dat voor het aanmaken van een gebruiker dan ook manueel een homedirectory (account) aangemaakt moet worden en daarna moet de gebruiker er ook nog eigenaar van gemaakt worden. Met een editor is het extra beveiligde wachtwoord in /etc/shadow niet aan te maken. Het is dan ook makkelijker voor de daarvoor bestemde commando's te gebruiken.

De meest bekende commando's zijn # useradd en # groupadd.

Met # useradd kan een gebruiker aangemaakt worden en met optionele argumenten wordt verdere informatie opgegeven (zie # man useradd).
Het is daarnaast ook mogelijk met # useradd vooraf standaard waarden in te stellen, bijvoorbeeld default groep waar nieuwe users lid van worden. De standaardwaarden staan opgeslagen in '/etc/default/useradd' en kunnen bekeken worden met commando # useradd -D. Dit default bestand is bij te werken met een editor.

Het commando # groupadd biedt weinig meerwaarde en '/etc/group' kan beter met een editor aangemaakt en bewerkt worden.

Naast genoemde commando's zijn er nog enkele waarmee gebruikers, groepen en wachtwoordbestanden onderhouden kunnen worden:

# passwd Na het aanmaken van een gebruikersaccount met commando useradd wordt hiermee een wachtwoord aangemaakt in '/etc/shadow'. Bijv.voor user pleuni: passwd pleuni
# userdel Voor het verwijderen van een gebruikersaccount.
# pwck Controleert of gebruikers in '/etc/passwd' en '/etc/shadow' correct gedefiniëerd zijn.
# usermod Voor het wijzigen van bestaande gebruikers.
# chfn Voor wijzigen van de informatie in het infoveld in '/etc/passwd'.
# groupmod oor het wijzigen van bestaande groepen.
# groupdel Voor het verwijderen van een groep.

Naar index

Toegangsbeheer

De toegang tot directories en bestanden wordt geregeld door middel van permissies, die aan gebruikers en groepen wordt gegeven.
De informatie over de eigenaar van een bestand, de groep die eigenaar is en de permissies die aan dat bestand gekoppeld zijn kan worden bekeken met commando # ls -l en de output kan er als volgt uitzien:
-rwxr-xr-x 2 pleuni users 1024 Jul 12 0:24 brief

Degene die het bestand aanmaakt wordt automatisch eigenaar in dit geval pleuni zoals vermeld in de 3e kolom.
De eigenaar van het bestand kan alleen gewijzigd worden door de beheerder met het commando # chown, bijv. # chown joris brief om 'joris' eigenaar te maken van pleuni's bestand 'brief'.
Om een andere groep eigenaar te maken wordt het commando # chgrp gebruikt: # chgrp admin brief maakt de groep 'admin' eigenaar van het bestand.

De permissies bepalen uiteindelijk wat er met een bestand gedaan mag worden.
De drie voornaamste permissies zijn read, write en execute en deze worden ingesteld voor de eigenaar (user) voor de groep die eigenaar is (group) en voor de rest van de wereld (others).
De eerste tien tekens in bovenstaande listing geven informatie over de permissies die van toepassing zijn op dit bestand.
Als de eerste letter een d is betreft het een directory. Daarna volgen er de letters rwx, r-x en r-x en dit zijn respectievelijk de permissies van de 'user', 'groep' en 'others'.

permissie
bestanden
directories
read Bekijken van de inhoud. Bekijken inhoud met commando # ls
write Wijzigen van de inhoud en/of verwijderen van het bestand. Aanmaken, verplaatsen en verwijderen van bestanden.
execute Opstarten van programma bestanden. Met commando cd naar een subdirectroy gaan

Dus als een gebruiker bepaalde permissies heeft op een directory houdt dat niet in dat diezelfde permissies ook gelden voor de bestanden in die directory. Voor de bestanden geldt of de gebruiker de eigenaar van het bestand is of dat hij lid is van de groep die eigenaar is, welke permissies hij heeft. Als de gebruiker 'write' permissie in die directory heeft kan hij het bestand wel verwijderen.

Naar index

Instellen

De eigenaar en gebruiker root kunnen permissies instellen met commando # chmod. Dit kan op absolute of op een relatieve wijze.

Op absolute wijze wordt met een 4 bits getal de toe te passen permissies aangegeven.
Het eerste getal voor speciale permissies zoals SUID, SGID en sticky bit (see man chmod). Als er geen speciale permissie gegeven moet worden kan dat met het getal 0 of door een getal met maar 3 bits te gebruiken.
De volgende 3 getallen zijn achtereenvolgens voor de eigenaar, de groep en de rest van de wereld:
1 staat voor execute, 2 voor write en 4 voor read.
Deze waarden kunnen bij elkaar worden opgeteld, zo betekend bijv. 3 execute & write en 6 write & read

 permissie  chmod value
- - x 1
- w - 2
- w x 3
r - - 4
r - x 5
r w - 6
r w x 7


# chmod 0734 bestand betekend dus x, w & r voor de gebruiker, x & w voor de groep en r voor de rest van de wereld.

Naast de absolute modus is er ook een relatieve modus. Het voordeel hier is dat instellingen gemaakt kunnen worden zonder de betekenis van de getallen te kennen. In de relatieve modus moeten 3 dingen worden opgegeven:
1. Wie krijgt de permissie: a iedereen, g group, o others en u user.
2. Wordt permissie toegevoegd, verwijderd of ingesteld: + voeg toe aan bestaand, - verwijder van bestaand, = overschrijf bestaand.
3. Welke permissie: r read, w write, x executable, s of S User-ID of Group-ID, t sticky bit

Het commando kan er dus uitzien als volgt: # chmod g=rx,u=rwx bestand
De resultaten kunnen bekeken worden met het commando # ls -l en kunnen er voor bovenstaand commando uitzien als volgt:
-rwxr-x--- 1 root root 123 Jun 15 12:35 bestand

Bij het aanmaken van een bestand worden standaard permissies ingesteld met het commando # umask en deze instellingen zijn opgeslagen in 'etc/profile' of 'etc/bashrc' als het voor het hele systeem is en in '~/.profile' of '~/.bashrc' voor afzonderlijke gebruikers.
Het commando kan bijv. als volgt zijn: # umask 022. De getallen zijn achtereenvolgens voor: 'user', 'group' en 'others'
De betekenis van de getallen is wel anders als bij chmod:

umask waarde
0
1
2
3
4
5
6
7
bestands permissies r & w r & w read read write write niets niets
directory permissies alles r & w r & x read w & r write execute niets

Naar index