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
Benutzerkonto mit Zeitbeschränkung
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.
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
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
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.
Ich mag die Schreie.
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
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.
Ich mag die Schreie.
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.
Installation:
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
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="$(<${FILE_LAST_DATE})"
ACTDATE="`date +%m%d`"
if [ ${LASTDATE} -lt ${ACTDATE} ] ; then # ein neuer Tag
echo ${NUM_OF_MINUTES} > ${FILE_REMAINING_MINUTES}
echo ${ACTDATE} > ${FILE_LAST_DATE}
fi
REMAINING_MINUTES=$(<${FILE_REMAINING_MINUTES})
while [ ${REMAINING_MINUTES} -ge ${TRESHOLD_MINUTES} ] ; do
sleep 60
let "REMAINING_MINUTES -= 1"
echo ${REMAINING_MINUTES} > ${FILE_REMAINING_MINUTES}
done
xmessage "Der Computer wird in ${TRESHOLD_MINUTES} Minute(n) heruntergefahren" -display :0.0 &
sleep $((${TRESHOLD_MINUTES} * 60))
/sbin/shutdown -h now #die
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
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