Wenn 'su - username' ausgeführt wird, fügt pam_group keine zusätzlichen Gruppen aus /etc/security/group.conf hinzu, aber sshd login?

7

Ich habe Probleme festzustellen, warum ich mich sunicht so verhalte, wie es die PAM-Konfiguration implizieren würde. Kurz gesagt, suwenn Sie ein anderer Benutzer werden möchten, sollten Sie sekundäre Gruppen gemäß der PAM-Konfiguration laden, die Gruppen jedoch pam_groupnicht hinzufügen /etc/security/group.conf. Wir erhalten nur unsere LDAP-Gruppen. Wenn Sie sich als Benutzer über SSH anmelden, haben Sie Gruppen aus beiden Quellen.

Unser Setup ist nicht zu weit vom Standard-CentOS 6.5 entfernt. Wir verwenden SSSD, um Anmeldungen über Kerberos / LDAP bereitzustellen, haben jedoch, /etc/pam.dsoweit ich mich erinnere, keine direkten Änderungen an irgendetwas vorgenommen. Die Änderungen wurden vorgenommen von:

authconfig --updateall --enablesssd --enablesssdauth --enablemkhomedir

Es gibt natürlich separate /etc/pam.d/suund /etc/pam.d/sshd, aber beide enthalten identische Dateien, wo pam_group.soaufgerufen wird (einschließlich system-authund password-authjeweils, aber diese beiden enthaltenen Dateien sind identisch).

Der relevante Abschnitt von /etc/pam.d/su:

#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            include         system-auth

Der relevante Abschnitt von /etc/pam.d/sshd:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth

In der enthaltenen Datei:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        optional      pam_group.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so
...

Wenn Sie sich über SSH anmelden, fügt die Zeile pam_group.so Gruppen über /etc/security/group.confhinzu und fügt (unter anderem) jedem, der sich anmeldet, die Gruppe "Apache" hinzu:

*;*;*;Al0000-2400;apache,devs,rvm

Wenn diese pam_group su - usernameals root (oder sudo su - ...als jemand anderes) ausgeführt wird und ein anderer Benutzer wird, scheint sie diese zusätzlichen Gruppen nicht hinzuzufügen. Wenn Sie sich als root anmelden, um diese Gruppen zu erhalten (weil pam_group seine Aufgabe erfüllt hat), führt das Ausführen su - usernamedazu, dass Sie diese Gruppen verlieren, weil sie suvon nichts ausgehen und nur die Gruppen hinzufügen, die sie von PAM erhalten (LDAP-Gruppen im Wesentlichen, da pam_group isn ist funktioniert nicht)

Hier können Sie sehen, dass ich anfangs als root angemeldet bin. Ich habe Apache (48), devs (501) und rvm (504), aber su -wenn ich mich nur als root anmelde, verliere ich alles außer root (0). Wenn Sie sich als Benutzer 'bob' anmelden, sehen su - bobSie außerdem, dass ich viele Gruppen aus LDAP habe (plus eine fest codierte Gruppe aus / etc / group, die funktioniert), aber nichts aus /etc/security/group.conf.

[root@dev-web pam.d]# id -G
0 48 501 504
[root@dev-web pam.d]# su -
[root@dev-web ~]# id -G
0
[root@dev-web ~]# logout
[root@dev-web pam.d]# su - bob
[bob@dev-web ~]$ id -G
1005001 10 1001000 1001001 1001002 1001003 1001004 1001005 1001008 1001009 1001010 1001011 1001012 1001017 1001018 1001025 1001027 1001028 1001033 1001034

Schließlich, wie ein SSH-Login als Bob aussieht - wieder habe ich Apache (48), Entwickler (501) und RVM (504).

[bob@dev-web ~]$ id -G
1005001 10 48 501 504 1001000 1001001 1001002 1001003 1001004 1001005 1001008 1001009 1001010 1001011 1001012 1001017 1001018 1001025 1001027 1001028 1001033 1001034

Man könnte annehmen, dass der Unterschied zwischen su - usernameund Anmelden mit SSH darin besteht, dass im SSH-Fall ein Kennwort für die verschiedenen Module verfügbar ist, die verwendet werden, try_first_passusw. Da wir uns jedoch häufig mit Kerberos anmelden, gibt es für diese Module kein Kennwort.

Ich werde weitere Informationen (im Rahmen des Zumutbaren) bereitstellen, wenn dies zur Diagnose dieser Diskrepanz beiträgt. Danke im Voraus!

bearbeiten:

Ich habe das PAM-Debugging aktiviert und pam_groupscheine nicht zu feuern su- auch wenn ich es deaktiviere pam_rootok, muss ich mich anmelden (um sicherzustellen, dass tatsächlich versucht wurde, den Rest des Pam-Stacks zu durchlaufen). Unabhängig davon, wo es sich im Stapel befindet, werden andere Gegenstände ausgelöst (einmal pam_rootokdeaktiviert, da der Status "ausreichend" den Stapel kurzzuschließen scheint).

Außerdem kam es mir nur zum Testen in den Sinn sudo, und es scheint fast das gleiche Problem zu haben. Root kann sudofür sich und Gruppen behalten, aber sudofür einen anderen Benutzer werden nur LDAP-Gruppen abgerufen. /etc/pam.d/sudoenthält nur, /etc/pam.d/system-authwelcher Stapel suverwendet wird, so dass dies keine Überraschung sein sollte. Ich nehme an, es sudoist klug genug, Berechtigungen nicht zu löschen / Benutzer zu wechseln, wenn der Zielbenutzer mit dem aktuellen Benutzer identisch ist, daher Root-Keeping-Gruppen.

biosehnsucht
quelle

Antworten:

1

Ich nahm an, Ihr Problem ist die su-pam-Datei und das pam_rootokModul.

#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            include         system-auth

Die sufficientKlausel verkürzt den Authentifizierungsprozess. Daher wird die Systemauthentifizierung niemals eingeschlossen, was bedeutet, dass das Modul pam_group für diese Sitzung niemals aktiviert wird.

Dann seufz ich lese deine Bearbeitung. Wie auch immer, es ist definitiv ein Anfang, dies herauszufinden. Aktivieren Sie möglicherweise das Debuggen für pam_group, um festzustellen, ob einer der dokumentierten Fehlerwerte ( man pam_group) zurückgegeben wird.

Bei sudo ist es tatsächlich sinnvoll, dass nach der Authentifizierung des Benutzers über PAM alle Kontoinformationen verworfen / deaktiviert werden. Es verfügt über eigene Mechanismen zum Hinzufügen von Benutzern zu Gruppen. Versuchen Sie, die preserve_groupsOption für den entsprechenden Sudo-Eintrag hinzuzufügen .

All dies macht mich frage mich: Warum hat pam das Gruppenmodul nur relevant zu machen auth . Es sollte in der Tat Teil des Kontos sein .

Otheus
quelle
0

Die Authentifizierungszeilen werden nur bei der Verarbeitung eines Kennworts angezeigt. Sie werden daher für su ignoriert, wenn Sie root sind, oder für ssh, wenn Sie einen öffentlichen Schlüssel verwenden.

Ich habe keinen Weg gefunden, diese Arbeit zu machen.

Peter Chubb
quelle