Benutzerkonto mit Zeitbeschränkung

Post Reply
Message
Author
Holger Wolf

Benutzerkonto mit Zeitbeschränkung

#1 Post by Holger Wolf »

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

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

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: Select all

#!/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 Post by Holger Wolf »

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

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#4 Post by Janka »

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 Post by Marco Gerber »

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: Select all

#!/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: Select all

$ 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 Post by Holger Wolf »

Danke für die Hilfe.

Viele Grüße

Holger

Marco Gerber

#7 Post by Marco Gerber »

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

Post Reply