• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Problem mit einem login-skript

goeba

Hacker
Hallo,

bei uns im Netzwerk wird beim Login durch kdm ein skript namens pam_session aufgerufen:

Code:
#!/bin/bash                                                                                                                                                                     
# Copyright (c) 2016 xxxx
read p
echo "#############################################" >> /tmp/pw
date >> /tmp/pw
set >> /tmp/pw
chmod 600 /tmp/pw
if [ "$PAM_USER" = "root" ]
then
        exit 0;
fi
if [ "$PAM_TYPE" = "auth" ]; then
    mkdir -p /tmp/groups
    MOUNTED=$( mount | grep '/tmp/groups' )
    if [ "$MOUNTED" ]
    then
        /bin/umount /tmp/groups &>/dev/null
    fi
    /sbin/mount.cifs //admin/groups /tmp/groups -o user=$PAM_USER,password=$p
    MOUNTED=$( mount | grep '/tmp/groups' )
    if [ "$MOUNTED" ]
    then
        exit 0
    else
        exit 1
    fi
fi
if [ "$PAM_TYPE" = "close_session" ]; then
    if [ $PAM_SERVICE = "gdm" -o $PAM_SERVICE = "kdm" -o $PAM_SERVICE = "login" -o $PAM_SERVICE = "xdm" ]; then
        /bin/umount /tmp/groups &>/dev/null
    fi
    exit 0
fi

Dieses Skript habe ich nicht geschrieben, sondern ein Mitarbeiter der Firma, die unseren Server betreut. Leider sind dort momentan alle in Urlaub, daher möchte ich Euch das Problem schildern (das für mich dringend ist).

Wir haben einige neue, für unsere Verhältnisse sehr schnelle Rechner (SSD, Core I5, Gigabit-Netzwerk).

Melde ich mich an diesem Rechner mit meinem Standardnutzer an, so erhalte ich "pam_session failed: exit Code 1".
An anderen (älteren) Rechnern kann ich mich mit diesem Nutzer aber anmelden, kein Problem.

Melde ich mich hingegen mit einem Nutzer an, den ich nur für administrative Aufgaben nehme (nicht root), funktioniert es.

Der Unterschied zwischen beiden Nutzern: Mein Standardnutzer ist Mitglied in sehr vielen Gruppen, der administrative Nutzer nicht.

Mir ist nicht so ganz klar, wofür das Skript gut ist. Die Homeverzeichnisse sind ohnehin per nfs gemountet. Der Server bietet auch Samba-Shares an, diese werden ja offenbar in dem Skript temporär gemountet (jedenfalls die Gruppenverzeichnisse), und wenn das klappt, ist es gut, wenn nicht, bricht das Skript ab.

Aber warum funktoniert es auf langsameren Rechnern, warum mit Nutzern, die nur in wenigen Gruppen Mitglied sind? (das habe ich mit verschiedenen Accounts probiert, ist reproduzierbar so).

Wenn jemand eine Idee für einen Workaround hat, wäre ich sehr sehr dankbar. Vielleicht würde es ja genügen, irgendwo zu Warten oder so etwas.

Sorry, dass ich mit so einer unklaren Frage hier ankomme,

Viele Grüße,
goeba
 

spoensche

Moderator
Teammitglied
Da hat igendwer noch nichts von Winbind gehört, sofern bei euch den ein Windows AD seinen Dienst verrichtet. Das Script mounted irgendwelche Groups nach /tmp/groups. Diese sind wahrscheinlich noch irgendwo anders hinterlegt. Da es sich hier um ein Anmelde- Script handelt, gehe ich mal von einem Windows AD aus.

Was das bewirken soll wird mir so auch nicht klar.
Mir macht das eher den Eindruck als wüsste jmd. nicht wirklich was er da macht und Einarbeitung in die Thematik heterogenes Netzwerk Windows AD, Linux, och nö kein Bock.
Ich lasse mich gerne eines besseren belehren.

Das sind so Dinger wo ich nur den Kopf schütteln kann und mir die Hutschnur platzt. Wenn man ein heterogenes Netzwerk hat, dann hat man sich gefälligst auch die Zeit zu nehmen sich in die Thematik einzuarbeiten und nicht irgendetwas zu machen, was keiner nachvolziehen oder verstehen kann.

Wenn man nicht die Zeit hat, kann man das auch an einen Kollegen delegieren. Qualität ist hier das Stichwort.

Warte bitte bis die Mitarbeiter aus dem Urlaub da sind und dann frag mal nach was das bewirken soll, was das soll und wofür das gut sein soll. Ich hab da so eine Vorahnung bezüglich pam_mkhomedir und irgendwelchen Berechtigungen.

Wenn du ein paar Infos mehr hast, dann können wir das evtl. auch so irgendwie hindingeln, was mehr Würgaround als Lösung ist.
 
OP
G

goeba

Hacker
In dem Netz gibt es einen Domänencontroller (Samba), aber kein AD (zu alt).

Für einen Würgaround wäre ich trotzdem dankbar :)

Dank + Gruß,

goeba
 

uhelp

Member
Ein grottenschlechtes Script.

Das Script mag auf den alten Kisten genügend Zeit haben, bis die eigenwilligen Test und der eventuell nötige CIFS- Mount durchgeführt wurde.
Auf schnellen Rechnern bleibt den Mount für //admin/groups kaum Zeit. Bis dieser //admin -Rechner reagiert, ist das Thema mit Fehler durch. Da wären ein paar sleeps nötig.ö

Unklar ist auch die erste Anweisung read p
Das read p erwartet eine Eingabe von STDIN, die es dann in der nicht verwendeten Variablen p speichert.
Mag sein, dass damit motd oder dergleichen abgefangen werden soll.
Das macht aber nur jemand, der nun wirklich wenig Ahnung hat.

Es könnte aber deshalb schon helfen, wenn man nach dem Einlog- Kommando ganz einfach gleich ein <enter> hinterherschiebt.
Probier das mal.

Hilft das nicht, würde ich mal gucken, was denn auf dem Share //admin/groups so alles liegt.
Das Script- Aufruf dann entfernen, weil du das ja eh nicht wirklich brauchst.
(Du kannst den CIFS- Mount jederzeit händisch machen).

Und verwechsel nicht NFS mit CIFS. Das sind zwei komplett verschiedene Sachen.
Und ein Sambaserver als Domänencontroller konfiguriert IST ein AD.
 
OP
G

goeba

Hacker
Hallo,

vielen Dank für die Erläuterungen.
Der Unterschied zwischen CIFS und NFS ist mir in groben Zügen bekannt, mit CIFS kann man Samba-Shares mounten, NFS ist das Network File System von Linux / Unix. Ich weiß, dass die Homeverzeichnisse bei unseren Linux Clients mit NFS gemountet werden. Mit diesem (temporären) Mount der Gruppen per CIFS sollen, so vermute ich, irgendwelche Rechte überprüft werden.

Ich dachte, AD stünde für "Active Directory" und wäre erst in den neusten Samba-Versionen vorhanden, sorry.

Ich werde versuchen, Deine Hinweise umzusetzen, und melde mich dann noch mal.
Dank+ Gruß,

goeba
 

uhelp

Member
Ja, AD steht für ActiveDirectory.
Und Nein, samba konnte schon immer als "Workgroup" (Server) laufen
Oder auch schon fast immer als Domaincontroller eines ADs. (Egal ob Primary oder Backup)
 
Oben