Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:linuxclient:mehrfachanmeldung]] 

Mehrfachanmeldung unterbinden

Allgemeines

Davon abgesehen, dass eine Mehrfachanmeldung per Nutzungsverordung prinzipiell verboten gehört, ist es bei Linuxclients besonders „dramatisch“, wenn sich mehrere Nutzer mit denselben Zugangsdaten gleichzeitig anmelden, da die gesamten Profildaten auf dem Netzlaufwerk liegen und somit eine Zerstörung des Accounts vorprogramiert ist.

Mit dem folgenden Skript kann man eine Mehrfachanmeldung unterbinden und der betreffende User erhält zudem eine Rückmeldung.

Skript

Voraussetzungen:

  1. zenity installieren
     sudo apt-get install zenity 
  2. Skriptdatei mehrfachlogin.sh z.B. unter /skripte anlegen. Rechte auf 711 setzen, damit nur root die Datei lesen und schreiben kann und alle anderen sie nur ausführen können
  3. Folgenden Code in die Skriptdatei einfügen:
    #!/bin/bash 
    
    # Überprüfen, ob die Datei .userlock im Homeshare vorhanden ist und wenn ja, dann 1 ausgeben --> Ausgabe in Variable LOCK schreiben
    LOCK=$(ls -a /$HOME/ | grep -c .userlock)
    
    # Testen, ob Variable LOCK mit 1 belegt ist
    if test "$LOCK" = "1" ; then
    
    # wenn ja, dann 5 sec Meldung wegen Mehrfachanmeldung und anschließend Neustart des Displaymanagers
    zenity --error --text "Der Benutzer ist schon auf einem anderen Rechner angemeldet" --timeout 5
    sudo /etc/init.d/gdm restart
    
    # wenn nein, dann Datei .userlock im Homeshare anlegen, damit keine Mehrfachanmeldung mehr möglich ist.
    else
    touch /$HOME/.userlock
    
    fi
  4. Eintrag von: sh /<Pfad_zum_Skript>/mehrfachlogin.sh in /etc/gdm/PostLogin/Default ganz oben zum Starten des Skripts nach der Authentifizierung
  5. Eintrag von: rm -rf /$HOME/.userlock in /etc/gdm/PostSession/Default ganz unten, damit die Lockdatei bei Abmeldung wieder entfernt wird
  6. Eintrag in die /etc/sudoers ganz unten: ALL ALL=(root) NOPASSWD: /etc/init.d/gdm, damit der Neustart des Displaymanagers ohne Passwortabfrage von jedem User ausgeführt werden kann
  7. Conjob im Server, der Nachts alle vorhandenen .userlock - Datein in dem homeverzeichnissen löscht, falls diese durch „unsauberes“ Abmelden noch vorhanden sein sollten.

User "gelocked" - was nun?

Früher oder später passiert es, dass ein Lock-File die Anmeldung unerwünscht verhindert. Grundsätzlich kein Problem, die .userlock-Datei im Home des betreffenden Users zu löschen, aber schöner, wenn es dafür einen Befehl gibt:

folgenden Code in die (neu anzulegende) Datei usr/local/sbin/unlockuser einfügen:

#!/bin/bash
# /usr/local/sbin/unlockuser
# von Jesko Anschütz, Februar 2012
# zur freien Verwendung, damit es glücklich macht.
if [ "$1" = "" ] # Ohne Benutzernamen macht das Skript keinen Sinn
then
    echo "Usage: unlockuser <username>"
	exit 1
fi


# Erstmal checken, ob der gewünschte Benutzer überhaupt existiert:

smbldap-usershow $1 > /dev/null
if [ $? != 0 ] 
then
	echo Sorry, aber den User $1 gibt es gar nicht...
    echo "Usage: unlockuser <username>"
	exit 1
fi
# Toll, der Benutzer existiert... Aber ist er auch gelocked?
userlock=$(smbldap-usershow $1 | grep homeDirectory | awk '{print $2}')/.userlock
if [ -f $userlock ]
then
	# Er ist gelocked, also machen wir das Lock weg.
	echo Userlock im Homeverzeichnis von $1 existiert... wird entfernt... 
	rm $userlock && echo Löschen erfolgreich || echo Löschen nicht erfolgreich
else 
	# Er ist nicht gelocked, dann haben wir nichts mehr zu tun.
	echo Der Benutzer $1 ist gar nicht gelocked... Holzkopf! 
	exit 1
fi 

# Ein letzter Check, ob das Lock auch wirklich weg ist:

if [ -f $userlock ] 
then 
	echo $1 ist immer noch ausgesperrt! Ich konnte nicht helfen. Das ist ein Problem!
	exit 1
else
	echo $1 darf sich wieder anmelden!
fi

Wenn es dann schnell gehen muss:

  1. einloggen als root am Server
  2. Befehl eingeben:
    unlock holzkopf

    (also den Usernamen ;) feddisch

 [[anwenderwiki:linuxclient:mehrfachanmeldung]] anwenderwiki/linuxclient/mehrfachanmeldung.txt · Zuletzt geändert: 2013/06/30 02:15 (Externe Bearbeitung)