# [obsolete] Wie winbind-Anmeldung über PAM aktivieren?

## schmidicom

ACHTUNG: Die in dieser Diskussion gezeigten Lösungen sind inzwischen veraltet und nicht mehr zu empfehlen. 

---

Wie der Titel schon andeutet möchte ich erreichen das sich die Benutzer aus der Windows-Domäne auch über den Display-Manager "lightdm" (welcher ja über PAM läuft) anmelden können. Gemäss Google soll man mit Hilfe von pam_group dafür sorgen das diese Domänen-Benutzer in den nötigen lokalen Gruppen Mitglied sind was nicht sonderlich schwer zu sein scheint:

```
cat /etc/security/group.conf

* ; * ; @Domänen-Benutzer ; Al0000-2400 ; bin, tty, disk, floppy, console, audio, cdrom, dialout, tape, video, cdrw, usb, users, plugdev

* ; * ; @Domänen-Admins ; Al0000-2400 ; root, bin, sys, adm, tty, disk, mem, kmem, wheel, floppy, uucp, console, audio, cdrom, dialout, tape, video, cdrw, usb, users, portage, utmp, netdev, lpadmin, plugdev
```

Und

```
echo 'auth        required      pam_group.so try_first_pass' >> /etc/pam.d/system-auth-winbind
```

Dann habe ich noch in der PAM-Datei von lightdm folge Zeilen hinzugefügt:

```
auth            include         system-auth-winbind

account         include         system-auth-winbind

password        include         system-auth-winbind

session         include         system-auth-winbind
```

Das Problem jedoch ist das ein Login weiterhin nicht möglich ist und die einzige brauchbare Fehlermeldung ergibt für mich keinen Sinn:

```
Nov 19 14:16:36 zeta03 lightdm[28708]: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=  user=UNSERE-DOM\Meine Wenigkeit

Nov 19 14:16:36 zeta03 lightdm[28708]: pam_winbind(lightdm:auth): getting password (0x00000000)
```

Wenn ich die Fehlermeldung richtig verstehe dann soll angeblich das Passwort falsch sein aber das ist es nicht. Weiß einer von euch wie man dieses Problem lösen kann?Last edited by schmidicom on Mon Oct 23, 2017 12:31 pm; edited 2 times in total

----------

## schmidicom

Also inzwischen weiß ich warum es nicht geht aber leider nicht wie ich das beheben soll ohne gleich die ganze PAM-Konfiguration selbst in die Hand zu nehmen.

Durch das test-weise schreiben einer eigenen PAM-Konfiguration für den lightdm gelang es mir mich mit einem Domänen-Benutzer anzumelden mit dem man sogar fest hätte Arbeiten können, zumindest so lange wie man nicht mit einem Dienst (z.B: /bin/su) in Berührung kommt der eine andere/eigene PAM-Konfiguration hat.

```
# Block login if they are globally disabled

auth            required        pam_nologin.so

# Load environment from /etc/environment and ~/.pam_environment

auth            required        pam_env.so

# Benutzer zu lokaler Gruppe hinzufügen

auth            required        pam_group.so

# Use /etc/passwd and /etc/shadow and winbind for passwords

auth            sufficient      pam_winbind.so krb5_auth krb5_ccache_type=FILE

auth            sufficient      pam_unix.so nullok use_first_pass

# Check account is active, change password if required

account         sufficient      pam_winbind.so

account         sufficient      pam_unix.so

# Allow password to be changed

password        sufficient      pam_winbind.so

password        sufficient      pam_unix.so

# Setup session

session         sufficient      pam_winbind.so mkhomedir

session         required        pam_unix.so

session         optional        pam_systemd.so
```

Gemäß meinen Recherchen beißt sich die von Gentoo vorgegebene Konfiguration von PAM (speziell dem Modul "pam_unix") mit einer über "pam_winbind" und Active Directory laufenden Authentifizierung. Und die Konfiguration "system-auth-winbind" ist unbrauchbar, zumindest beißt sie sich genauso mit der restlichen PAM-Konfiguration wie mein testfile weshalb eine einfache "include" Anweisung in den entsprechenden Dienst-Konfigurationen nutzlos ist.

Ich weiß ja nicht wer sich diese PAM-Konfiguration ausgedacht hat aber derjenige hatte so etwas wie Benutzerfreundlichkeit wohl nicht allzu weit oben auf der TODO-Liste...

Es wäre wirklich schön wenn da mal nachgebessert werden würde.

----------

## Christian99

ich hab zwar jetzt keine ahnung von winbind oder so, aber die pam configs von gentoo sind schon irgendwie durchdacht.

und zwar sind die gestaffelt, sprich: du brauchst nicht jeden dienst einzeln zu bearbeiten, sondern, ich vermute mal das z.b. lightdm system-local-login, system-local-login dann system-login und system-login dann system-auth includieren. und über den einen oder anderen weg includieren wohl alle dienste system-auth

Also müsstest du nur deine system-auth mit dem winbind sachen ergänzen, und dann sollten alle dienste darauf zu greifen.

----------

## schmidicom

 *Christian99 wrote:*   

> ich hab zwar jetzt keine ahnung von winbind oder so, aber die pam configs von gentoo sind schon irgendwie durchdacht.
> 
> und zwar sind die gestaffelt, sprich: du brauchst nicht jeden dienst einzeln zu bearbeiten, sondern, ich vermute mal das z.b. lightdm system-local-login, system-local-login dann system-login und system-login dann system-auth includieren. und über den einen oder anderen weg includieren wohl alle dienste system-auth

 

Das habe ich auch gemerkt aber irgendwie erkenne ich gerade nicht den Sinn darin das ganze so aufzuziehen.

Aktuell:

Dienst > Konfig > Konfig > Konfig

Besser wäre:

Dienst > Konfig > Optionales

 *Christian99 wrote:*   

> Also müsstest du nur deine system-auth mit dem winbind sachen ergänzen, und dann sollten alle dienste darauf zu greifen.

 

Genau das habe ich bereits versucht aber irgendwo in dem oben gezeigten Rattenschwanz beisst sich irgendeine pam_unix.so Konfiguration mit der von mir benötigten winbind Authentifizierung. Ergo darf ich jetzt die ganze PAM-Konfiguration Stück für Stück auseinander nehmen bis ich diese Stelle gefunden habe oder alternativ baue ich gleich alles nach eigener Logik neu auf. Aber egal für was ich mich letzten Endes entscheide danach darf ich dann bei jedem world Update aufpassen wie ein Schießhund weil sonst portage ziemlich sicher ungewollt an meiner PAM-Konfiguration herumbastelt.

Bitte nicht falsch verstehen in den meisten Situationen mag diese teilweise automatisch generierte PAM-Konfiguration in Ordnung sein, obwohl auch da mehrere unnötige Redundanzen herumgeistern dürften, aber ich bin gerade etwas entnervt davon...

----------

## Christian99

wenn du weißt, dass es sich winbind mit pam_unix beißt brauchst du nicht lange suchen. pam_unix kommt nur in wenigen dateien vor, die für dich wichtigste ist direkt in system-auth. woanders kommt die nicht vor bzw betifft dich nicht (cron und system-services sollen sich ja vermutlich nicht über winbind autentifizieren)

ich hab nochmal geschaut, was du anfangs gemacht hast, und ich glaube du solltest include system-auth-winbind nicht zur lightdm config hinzufügen ( das würde ja wieder einen eingriff bei allen anderen programmen su, ssh etc auch erfordern), sondern ind system-login die "include system-auth" zeilen durch "system-auth-winbind" ersetzen. wenn du nämlich system-auth-winbind hinzufügst, wie du anfangs geschrieben hast, wird nämlich beides gemacht, und das geht schief. Probiers mal so.

----------

## schmidicom

Das war eine der ersten Änderungen die ich ausprobiert habe, und jetzt gerade eben nochmal, aber leider führt das umstellen in system-login auf system-auth-winbind zu genau der Meldung wie im letzten Codeblock meines ersten Beitrags. Die einzige Konfiguration die ein anmelden mit AD-Benutzern erlaubte war mein kleines testfile aus meinem zweiten Beitrag.

Verstehst du jetzt meinen Frust? Selbst die Datei system-auth-winbind die von portage installiert wird passt nicht zur restlichen PAM-Konfiguration.

----------

## Christian99

ok, kannst du dann bitte mal deine system-auth-winbind und system-auth-login posten?

----------

## schmidicom

Eine system-auth-login gibt es bei mir nicht nur system-auth und system-auth-winbind:

```
# cat system-auth

auth            required        pam_env.so

auth            required        pam_unix.so try_first_pass likeauth nullok

auth            optional        pam_permit.so

account         required        pam_unix.so

account         optional        pam_permit.so

password        required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3

password        required        pam_unix.so try_first_pass use_authtok nullok sha512 shadow

password        optional        pam_permit.so

session         required        pam_limits.so

session         required        pam_env.so

session         required        pam_unix.so

session         optional        pam_permit.so
```

```
# cat system-auth-winbind

#%PAM-1.0

# $Header: /var/cvsroot/gentoo-x86/net-fs/samba/files/3.6/system-auth-winbind.pam,v 1.1 2011/06/30 15:50:28 dagger Exp $

auth        required      pam_env.so

auth        sufficient    pam_winbind.so

auth        sufficient    pam_unix.so likeauth nullok use_first_pass

auth        required      pam_deny.so

account     sufficient    pam_winbind.so

account     required      pam_unix.so

password    required      pam_cracklib.so retry=3

password    sufficient    pam_unix.so nullok use_authtok md5 shadow

password    required      pam_deny.so

session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0022

session     required      pam_limits.so

session     required      pam_unix.so
```

----------

## Christian99

ich meinte system-login

----------

## schmidicom

Aus Testzwecken habe ich sie so wie du gesagt hast abgeändert wodurch sie dann so aussah:

```
# cat system-login

auth            required        pam_tally2.so onerr=succeed

auth            required        pam_shells.so

auth            required        pam_nologin.so

auth            include         system-auth-winbind

account         required        pam_access.so

account         required        pam_nologin.so

account         include         system-auth-winbind

account         required        pam_tally2.so onerr=succeed

password        include         system-auth-winbind

session         optional        pam_loginuid.so

session         required        pam_env.so

session         optional        pam_lastlog.so silent

session         include         system-auth-winbind

-session        optional        pam_systemd.so

session         optional        pam_motd.so motd=/etc/motd

session         optional        pam_mail.so
```

Da das aber nicht funktionierte steht sie nun wieder auf dem Originalzustand also mit system-auth anstelle von system-auth-winbind hinter dem include.

----------

## Christian99

der fehlermeldung aus deinem ersten post nach wird pam_unix vor pam_winbind aufgerufen. die konfiguration die du jetzt gepostet hast ruft aber winbind vor unix auf. kannst du nochmal mit der jetzt geposteten konfiguration in den logs nachschauen?

----------

## schmidicom

Habe die system-login nochmal angepasst und alle anderen Dateien sind im Originalzustand. Auch habe ich gleich mehrmals hintereinander versucht mich anzumelden um zu testen ob sich das ganze bei jedem Anmeldeversuch gleich verhält, was nicht der Fall ist. Beim ersten Versuch sagte er auf dem Displaymanager das Passwort sei falsch (was es aber nicht ist) und beim zweiten gab es auf dem Display gar keine Meldung, danach wiederholte sich das Muster und ich hätte es bis ins endlose so weiter Testen können:

```
Erster Versuch

Nov 21 13:48:44 zeta03 lightdm[5069]: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=  user=UNSERE-DOM\Meine Wenigkeit

Nov 21 13:48:44 zeta03 lightdm[5069]: pam_winbind(lightdm:auth): getting password (0x00000180)

Zweiter Versuch

Nov 21 14:56:19 zeta03 lightdm[5069]: pam_winbind(lightdm:auth): user 'UNSERE-DOM\Meine Wenigkeit' granted access

...

Nov 21 14:56:30 zeta03 lightdm[5239]: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=  user=UNSERE-DOM\Meine Wenigkeit

Nov 21 14:56:30 zeta03 lightdm[5239]: pam_winbind(lightdm:auth): getting password (0x00000000)

...

Nov 21 14:56:42 zeta03 lightdm[5239]: pam_winbind(lightdm:auth): user 'UNSERE-DOM\Meine Wenigkeit' granted access

...

Nov 21 14:56:55 zeta03 lightdm[5242]: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=  user=UNSERE-DOM\Meine Wenigkeit

Nov 21 14:56:55 zeta03 lightdm[5242]: pam_winbind(lightdm:auth): getting password (0x00000000)

...

Nov 21 14:57:41 zeta03 lightdm[5242]: pam_winbind(lightdm:auth): user 'UNSERE-DOM\Meine Wenigkeit' granted access

...

Nov 21 14:58:13 zeta03 lightdm[5243]: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=  user=UNSERE-DOM\Meine Wenigkeit

Nov 21 14:58:13 zeta03 lightdm[5243]: pam_winbind(lightdm:auth): getting password (0x00000000)

...

Nov 21 14:58:36 zeta03 lightdm[5243]: pam_winbind(lightdm:auth): user UNSERE-DOM\Meine Wenigkeit' granted access
```

----------

## Christian99

ich finde die ziemlich lange pause zwischen den zwei winbind meldungen etwas irritierend.

kannst du 1)

dich mal mithilfe von "login" anmelden? also auf tty1 oder so oder login direkt (als root) ausführen

2)

außer deiner funktionierenden config die krb optionen mal in system-auth-winbind ergänzen und mal probieren?

----------

## schmidicom

 *Christian99 wrote:*   

> ich finde die ziemlich lange pause zwischen den zwei winbind meldungen etwas irritierend.
> 
> kannst du 1)
> 
> dich mal mithilfe von "login" anmelden? also auf tty1 oder so oder login direkt (als root) ausführen

 

Mit system-auth-winbind in der system-login und den krb optionen in der system-auth-winbind funktioniert die Anmeldung über das Programm login:

```
Nov 21 15:33:06 zeta03 login[5295]: pam_winbind(login:auth): getting password (0x00000180)

Nov 21 15:33:11 zeta03 login[5295]: pam_winbind(login:auth): user 'MESSERLI-DOM\Stefan Schmid' granted access

Nov 21 15:33:11 zeta03 login[5295]: pam_winbind(login:account): user 'MESSERLI-DOM\stefan schmid' granted access

Nov 21 15:33:11 zeta03 login[5295]: pam_unix(login:session): session opened for user MESSERLI-DOM\stefan schmid by root(uid=0)
```

 *Christian99 wrote:*   

> 2)
> 
> außer deiner funktionierenden config die krb optionen mal in system-auth-winbind ergänzen und mal probieren?

 

Die selbe Konfiguration unter lightdm:

```
Erster Versuch:

Nov 21 15:31:40 zeta03 lightdm[5244]: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=  user=MESSERLI-DOM\stefan schmid

Nov 21 15:31:40 zeta03 lightdm[5244]: pam_winbind(lightdm:auth): getting password (0x00000000)

Zweiter Versuch:

Nov 21 15:31:57 zeta03 lightdm[5244]: pam_winbind(lightdm:auth): user 'MESSERLI-DOM\stefan schmid' granted access
```

PS: Ich habe nach dem Hinzufügen der krb Optionen zuerst deinen zweiten Vorschlag getestet und erst danach den ersten deswegen spielt Nr.2 in der Zukunft.

----------

## Christian99

kannst du mal deine lightdm config noch posten?

(gleich haben wir alles durch  :Smile:  )

----------

## schmidicom

 *Christian99 wrote:*   

> kannst du mal deine lightdm config noch posten?

 

Die ist im Originalzustand so wie von portage installiert:

```
#%PAM-1.0

# Block login if they are globally disabled

auth      required pam_nologin.so

# Load environment from /etc/environment and ~/.pam_environment

auth      required pam_env.so

# Use /etc/passwd and /etc/shadow for passwords

auth      required pam_unix.so

# Check account is active, change password if required

account   required pam_unix.so

# Allow password to be changed

password  required pam_unix.so

# Setup session

session   required pam_unix.so

session   optional pam_systemd.so

# File autogenerated by pamd_mimic in pam eclass

auth    include         system-local-login

account include         system-local-login

session include         system-local-login
```

Ich habe inzwischen auch schon versuchsweise lightdm mit der selben Konfiguration ausprobiert wie sie bei login zum Einsatz kommt, weil es dort ja funktioniert hat, aber unsinniger Weise leider ohne Erfolg (Die gleichen Fehler wie immer).

----------

## Christian99

kein wunder dass das nicht funktioniert. wenn das die von portage installierte version ist, dann wurde sie wohl nicht auf die gentoo-art angepasst und kommt vermutlich vom original upstream.

```
auth       include      system-local-login

account    include      system-local-login

password   include      system-local-login

session    include      system-local-login
```

schreib das mal rein, und ich finde fast das wäre einen gentoo bug-report wert

----------

## schmidicom

Damit klappt es tatsächlich auch, zumindest kann ich mich erfolgreich anmelden und komme in den blackbox-wm rein. Aber der Eintrag "session   optional   pam_systemd.so" darf nicht weggelassen werden sonst ist keine systemd session mehr da und das mag polkit dann gar nicht. Und was ich auch noch irgendwie hinbekommen muss ist die Domänen-Benutzer mit "pam_group.so" erfolgreich den nötigen lokalen Gruppen hinzuzufügen aber das mach ich morgen. Den Bugreport kannst du gerne schreiben mein Englisch reicht dafür leider nicht aus und danke für die Hilfe.

Aber trotzdem hat mir dieses Erlebnis klar gemacht das die PAM-Konfiguration etwas ist das man besser kennen sollte. Falls du also einen Weg kennst wie man portage dazu bringen könnte alle Dateien die normalerweise in "/etc/pam.d/" landen würden wo anders abzulegen dann könnte ich mich daran mal in aller Ruhe austoben ohne Angst haben zu müssen das mir portage dazwischen kommt.

----------

## Christian99

ja, das mit dem pam_group.so sollte dann in die system_auth-winbind, und wahrscheinlich wäre das auch der bessere platz für pam_systemd.so. Falls du dann mal den displaymanager wechselst musst du dass dann nicht bei jdem exta eintragen, sondern die sollten dann (zumindest kdm macht das) auf system-login und damit system-auth-winbind zugreifen.

----------

## schmidicom

Bei pam_group hast du vermutlich recht aber pam_systemd sollte nur dort geladen werden wo es auch gebraucht wird also eher im DM denn Hintergrunddienste und der gleichen brauchen ja keine systemd-session, was sie aber hätten wenn es so weit hinten eingetragen wird.

----------

## Christian99

wie auch immer. ich will eigentlich auch gar net so genau wissen, was dieses pam_systemd macht (schauder)

----------

## Josef.95

 *schmidicom wrote:*   

> ...
> 
> Aber trotzdem hat mir dieses Erlebnis klar gemacht das die PAM-Konfiguration etwas ist das man besser kennen sollte. Falls du also einen Weg kennst wie man portage dazu bringen könnte alle Dateien die normalerweise in "/etc/pam.d/" landen würden wo anders abzulegen dann könnte ich mich daran mal in aller Ruhe austoben ohne Angst haben zu müssen das mir portage dazwischen kommt.

 

Hm, ich denke die angst das portage dir dazwischenfunkt ist unbegründet, denn /etc/pam.d/ steht normal unter dem Schutz von CONFIG_PROTECT

Siehe dazu auch in der Ausgabe von 

```
portageq envvar CONFIG_PROTECT CONFIG_PROTECT_MASK

oder auch in der

emerge --info
```

Das heißt in etwa, das von dir veränderte Dateien in diesem Verzeichnis von portage beim Update oder rebuild nicht automatisch ungefragt überschrieben werden. portage wird dich dann auffordern diese Dateien mit dispatch-conf | etc-update, oder was auch immer zu aktualisieren, wo du dann entscheiden kannst was mit den Änderungen geschehen soll.

Falls du dich "austoben" möchtest, lege dir aber dennoch besser vorher ein Backup an  :Wink: 

Und falls du es total versaust, und die originalen unmodifizierten wieder installieren lassen möchtest, dann sollte dies zb via 

```
emerge -av1 /etc/pam.d
```

 machbar sein (am besten vor dem nächsten login  :Wink:  ).

----------

## schmidicom

Also das mit "pam_group.so" bekomme ich irgendwie noch nicht so ganz hin. Egal wo das Modul geladen wird ob in lightdm oder in system-auth-winbind, nach der Anmeldung mit einem Domänen-Benutzer gibt groups nur die Gruppen aus die dem Benutzer von der Domäne zugeteilt wurden. Und dabei scheint es keine Rolle zu spielen wie der Eintrag in "/etc/security/group.conf" aussieht, selbst so gibt es keine erfolgreiche Zuordnung:

```
* ; * ; * ; Al0000-2400 ; bin, tty, disk, floppy, console, audio, cdrom, dialout, tape, video, cdrw, usb, users, plugdev
```

Infolge dessen funktioniert natürlich einiges nicht worauf ein normaler Benutzer nicht verzichten kann, vom Admin ganz zu schweigen.

Unschön ist auch das winbind nicht nur auf Domänen-Benutzer anspringt:

```
pam_winbind(lightdm-greeter:setcred): request wbcLogoffUser failed: WBC_ERR_AUTH_ERROR, PAM error: PAM_USER_UNKNOWN...
```

Scheint aber keine negativen Auswirkungen auf die Anmeldung an sich zu haben also kann nicht mit dem bisschen FUD Richtung Domäne leben.  :Wink: 

Was jedoch weniger schön aussieht sind Meldung wie diese:

```
kernel: traps: lightdm[17779] general protection ip:7feddfea3eb7 sp:7fffd2fc3cf0 error:0 in libc-2.15.so[7feddfe5b000+196000]
```

Diese Meldungen kommen nicht immer aber wenn sie auftreten dann verzögert sich die Anmeldung spürbar ist aber dennoch erfolgreich.

Sicher wird sich für all das mit der Zeit auch noch eine Lösung finden lassen und zum Glück hab ich es nicht allzu eilig mit den Linux basierenden Workstations.

@Josef.95

Fürs erste werde ich mich wohl darauf verlassen müssen das dieser Schutz auch wirklich hält, aber trotzdem Danke.

----------

