dinsdag 1 april 2008

Toegang beperken op basis van tijd

Gebruik maken van PAM om toegang tot het systeen te beperken

PAM staat voor Pluggable Authentication Modules, deze modules
worden gebruikt om toegangscontrole uit te voeren.

Ik maak gebruik van de pam_time module om het
voor gebruiker op een bepaald moment onmogelijk te maken
in te loggen. Verder maak ik gebruik van een
cronjob om gebeurtenis in de toekomst in te plannen, waarbij
de gebruiker uitgelogd wordt.
In onderstaand voorbeeld laat ik de gebruiker op het
systeem tot 18:00 uur, daarna wordt deze verplicht uitgelogd
en is het daarna niet meer mogelijk voor die gebruiker om op
de machine in te loggen tot de volgende ochtend 08:00 uur.
Ook ideaal voor u als ouder om uw kinderen zich ook met andere
dingen te laten bezighouden dan met de pc, huiswerk bijvoorbeeld.

Hoe ziet een en ander eruit?
Als eerste zorg ik ervoor zorgen dat de gebruiker uitgelogd wordt.
Dit doe ik door gebruik te maken van een zogenaamde cronjob.

1) sudo chmod u+s /sbin/shutdown
2) sudo gedit /etc/shutdown.allow
Voeg in dit bestand per regel de gebruikers toe
3) sudo crontab -e -u gebruikersnaam
Voeg daarin de volgende regel toe:
59 17 * * * /sbin/shutdown +1 -h
4) sudo /etc/init.d/cron restart
De gebruiker wordt uitgelogd om 18:00

De gebruiker mag daarna uiteraard niet meer inloggen
Dat doe ik als volgt:

5) gedit /etc/pam.d/gdm
Voeg daarin de volgende regel toe:
account required pam_time.so
6) gedit /etc/security/time.conf
voeg daarin de volgende regel toe:
gdm;*;gebruikersnaam;Al0800-1800
#de gebruiker mag het systeem gebruiken van 8 tot 18:00 uur

Deze opdrachten zijn voor Ubuntu 7.10 geschreven, mogelijk werkt het voor andere systemen op soortgelijke wijze.

Bovenvermelde opdrachten zijn wellicht verre van ideaal en duidelijk voor
verbetering vatbaar. Zo ontbreekt nog een meldingsscherm waarbij
de gebruiker kenbaar gemaakt wordt dat er uitgelogd gaat worden in
bijv. 5 minuten. Dat komt omdat ikzelf nog heel pril ben in de
wereld die Linux heet. Dus heeft u aanvullingen en
verbeteringen schroom dan niet dat aan de wereld
te laten weten. Voor mij werkt het op deze wijze, maar andere functionaliteit
is wellicht makkelijker.


edit:

Inmiddels op het pad gebracht van Zenity (zie afbeelding). Hiermee kun je dialoogvensters tonen op het scherm van de gebruiker. Uit het aantal hits van zenity + cron blijkt dat dit wellicht niet zo 1-2-3 gaat werken, des te groter is de uitdaging om me daarin te verdiepen