Ich habe Probleme festzustellen, warum ich mich su
nicht so verhalte, wie es die PAM-Konfiguration implizieren würde. Kurz gesagt, su
wenn Sie ein anderer Benutzer werden möchten, sollten Sie sekundäre Gruppen gemäß der PAM-Konfiguration laden, die Gruppen jedoch pam_group
nicht 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.d
soweit 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/su
und /etc/pam.d/sshd
, aber beide enthalten identische Dateien, wo pam_group.so
aufgerufen wird (einschließlich system-auth
und password-auth
jeweils, 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.conf
hinzu und fügt (unter anderem) jedem, der sich anmeldet, die Gruppe "Apache" hinzu:
*;*;*;Al0000-2400;apache,devs,rvm
Wenn diese pam_group su - username
als 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 - username
dazu, dass Sie diese Gruppen verlieren, weil sie su
von 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 - bob
Sie 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 - username
und Anmelden mit SSH darin besteht, dass im SSH-Fall ein Kennwort für die verschiedenen Module verfügbar ist, die verwendet werden, try_first_pass
usw. 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_group
scheine 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_rootok
deaktiviert, 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 sudo
für sich und Gruppen behalten, aber sudo
für einen anderen Benutzer werden nur LDAP-Gruppen abgerufen. /etc/pam.d/sudo
enthält nur, /etc/pam.d/system-auth
welcher Stapel su
verwendet wird, so dass dies keine Überraschung sein sollte. Ich nehme an, es sudo
ist klug genug, Berechtigungen nicht zu löschen / Benutzer zu wechseln, wenn der Zielbenutzer mit dem aktuellen Benutzer identisch ist, daher Root-Keeping-Gruppen.