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.
Voraussetzungen:
sudo apt-get install zenity
#!/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
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:
unlock holzkopf
(also den Usernamen ;) feddisch