Benutzerkonto mit Zeitbeschränkung

Antworten
Nachricht
Autor
Holger Wolf

Benutzerkonto mit Zeitbeschränkung

#1 Beitrag von Holger Wolf » 22. Jul 2006 21:00

Hallo,
ist es möglich ein Benutzerkonto mit einer Zeitbeschränkung zu belegen? Der User soll nur eine bestimmte Zeit am Tag sein Benutzerkonto nutzen können.

Danke

Holger

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 22. Jul 2006 23:16

Wüsste nicht, dass das irgendwo vorgesehen ist, aber man kann es über eine selbstgebaute Loginshell bewerkstelligen, die zuerst die Uhrzeit prüft, und sich bei Erfolg dann nach /bin/bash execve't oder halt 1 (kein Login) als Exitcode zurückliefert.

Die Loginshell darf auch ein Skript sein. Es reicht also z.B.

Code: Alles auswählen

#!/bin/bash

case $(date +%H) in
  18|19|20) exec /bin/bash;;
  *) exit 1;;
esac
als Loginshell.

Wenn es nur um X geht gibt es evtl. auch einen Displaymanager (kdm, gdm, wdm), der das kann.

Oder meinst du eine maximale Loginzeit?

Sinn der Übung?

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Holger Wolf

#3 Beitrag von Holger Wolf » 23. Jul 2006 9:53

Hallo,
ich meinte die maximal login zeit, da ich ein wenig die Computerzeit meiner Kinder beschränken möchte.

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 23. Jul 2006 11:03

Dann müsstest du Buch führen, wie lange in einem bestimmten Zeitraum der Computer genutzt wurde. (z.B. zwei Stunden täglich). Es ist ziemlich vertrackt, eine solche Sperre zu konstruieren -- und die Kinder finden die Lücken meist schnell heraus. Prinzipiell geht das so:

1. Bei jedem Login einen Timer starten.
2. Alle Minute halt 1 Minute hinzuzählen.
3. Bei Überschreiten der Maximalsumme keine Logins mehr zulassen, sowie alle Prozesse des Benutzers beenden.
4. Die Summe für jeden Tag neu berechnen.

Mit X wird das etwas komplizierter.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Marco Gerber

#5 Beitrag von Marco Gerber » 23. Jul 2006 12:34

guten Tag

Ich habe kurz ein Script geschrieben, welches diese Aufgabe erledigt. In der aktuellen Fassung kann der Benutzer die Minuten angeben, welche der Computer pro Tag unabhaengig von wem er benutzt wird, verwendet werden kann.
Nach Ablauf der Zeit erscheint eine Meldung mit dem Hinweis, dass der Computer in einer vom Benutzer definierten Zeit heruntergefahren wird (so bleibt Zeit um Programme zu beenden).
Ist das Tageslimit (in Minuten) abgelaufen, wird der Computer heruntergefahren, und kann erst am naechsten Tag wieder verwendet werden.

Das Script laesst sich natuerlich an spezielle Wuensche anpassen.

Code: Alles auswählen

#!/bin/bash
# kindersicherung
# written by Marco Gerber

NUM_OF_MINUTES="60"      # Anzahl der Minuten, welche der Rechner pro Tag verwendet
                        # werden darf.
TRESHOLD_MINUTES="10"    # Anzahl Minuten, die zwischen dem Hinweis, dass der Computer
                        # ausgeschaltet wird, bis er heruntergefahren wird.

FILE_REMAINING_MINUTES="/etc/timedelay/remaining_minutes"
FILE_LAST_DATE="/etc/timedelay/lastdate"

LASTDATE="$&#40;<$&#123;FILE_LAST_DATE&#125;&#41;"
ACTDATE="`date +%m%d`"

if &#91; $&#123;LASTDATE&#125; -lt $&#123;ACTDATE&#125; &#93; ; then # ein neuer Tag
 echo $&#123;NUM_OF_MINUTES&#125; > $&#123;FILE_REMAINING_MINUTES&#125;
 echo $&#123;ACTDATE&#125; > $&#123;FILE_LAST_DATE&#125;
fi

REMAINING_MINUTES=$&#40;<$&#123;FILE_REMAINING_MINUTES&#125;&#41;


while &#91; $&#123;REMAINING_MINUTES&#125; -ge $&#123;TRESHOLD_MINUTES&#125; &#93; ; do
  sleep 60
  let "REMAINING_MINUTES -= 1"
  echo $&#123;REMAINING_MINUTES&#125; > $&#123;FILE_REMAINING_MINUTES&#125;
done

xmessage "Der Computer wird in $&#123;TRESHOLD_MINUTES&#125; Minute&#40;n&#41; heruntergefahren" -display &#58;0.0 &

sleep $&#40;&#40;$&#123;TRESHOLD_MINUTES&#125; * 60&#41;&#41;
/sbin/shutdown -h now #die
Installation:

Code: Alles auswählen

$ su
$ mkdir /etc/timedelay
$ echo 60 > /etc/timedelay/remaining_minutes #Anzahl MInuten
$ date +%m%d > /etc/timedelay/lastdate
$ chmod -R g-w /etc/timedelay
$ chmod -R o-w /etc/timedelay
$ chmod +x <script> # <script> durch den Namen dieses Scripts ersetzen
Es wird das Programm "xmessage" benoetigt, welches die Warnung der verbleibenden Minuten ausgibt.
Das Script sollte per Runlevelscript gestartet werden.
Auf Wunsch kann man es dahingehend erweitern, dass es erst startet, wenn ein Benutzer eingeloggt ist (ansonsten startet es einfach).

Die Werte im Script lauten:
NUM_OF_MINUTES
TRESHOLD
Diese sollten dann noch angepasst werden.

hth

Marco Gerber

Holger Wolf

#6 Beitrag von Holger Wolf » 23. Jul 2006 12:45

Danke für die Hilfe.

Viele Grüße

Holger

Marco Gerber

#7 Beitrag von Marco Gerber » 23. Jul 2006 12:47

noch ein Hinweis:

Du solltest dann noch das BIOS mit einem Passwort absichern, damit die Zeit nicht einfach verstellt werden kann.
(sonst ist alles fuer die Katz ;})
Und, im obigen Script die Zeile mit xmessage muss alles auf einer Zeile sein, also bis und mit dem & (Darstellungsfehler)


hth

Marco

Antworten