Auf einem Mac mit OSX 10.7.5 muss der PFAD für nicht interaktive Benutzer festgelegt werden, die eine Verbindung über ssh herstellen und über LDAP authentifiziert werden. Es ist dieselbe Frage, die hier gestellt (und beantwortet) wurde:
Aber ich kenne PAM oder LDAP nicht gut genug, um die Antwort zu verstehen.
Es sieht so aus, als müsste ich:
add a line to /etc/pam.d/sshd saying "auth required pam_env.so"
create a file named /etc/security/pam_env.conf
Aber die Dokumentation für pam_env.conf ist wirklich verwirrend und ich kann nicht sagen, ob ich einen DEFAULT- oder einen OVERRIDE-Wert benötige.
Habe ich recht, dass das die richtigen Schritte sind? Welche Zeile sollte ich in die Datei pam_env.conf einfügen?
Vielen Dank, Chris
p.s. Ich habe versucht, die Zeile "auth required pam_env.so debug" in /etc/pam.d/sshd zu setzen, und in /var/log/system.log wird nichts angezeigt, das aussieht, als käme es von pam_env.so. Ich habe auch /etc/security/pam_env.conf erstellt und die Zeile "PATH DEFAULT = / usr / fred OVERRIDE = / usr / george" eingefügt, und es hatte keine sichtbaren Auswirkungen auf PATH.
Wenn ich ausführe:
ssh USER@MACHINE echo \$SHELL
Es heißt / bin / bash. Wenn ich mich dann bei MACHINE anmelde und diese Zeile zu / etc / bashrc hinzufüge:
export Test=Fred
und kehre zu meinem Rechner zurück und führe aus:
ssh USER@MACHINE echo \$Test
es gibt nichts zurück. Wenn ich mich auf diese Weise mit LDAP anmelde, wird / etc / bashrc nicht ausgeführt.
p.p.p.s Einige zusätzliche Informationen, die wichtig sein könnten: In MACHINE gibt es keinen lokalen Benutzer namens USER. MACHINE wurde für die LDAP-Authentifizierung eingerichtet. Wenn Sie also USER @ MACHINE verwenden, ist $ HOME auf / Network / Servers / blah / blah / Users / USER eingestellt. Wenn ich /Network/Servers/blah/blah/Users/USER/.bashrc bearbeite, um den PFAD festzulegen, funktioniert dies für mich korrekt, aber es ist keine großartige Lösung, da dies bedeutet, dass jede Person, die auf diesen Server zugreifen möchte, ihren bearbeiten muss Netzwerk .bashrc.
/bin/bash
, benutzen/etc/bashrc
.Antworten:
Dies ist eine Modifikation von https://askubuntu.com/questions/382485/ssh-how-to-force-execution-of-a-script-etc-sshrc-forcecommand-on .
Mit dem folgenden Befehl können Sie das Sourcing erzwingen
/etc/bashrc
für alle SSH-Anmeldungen, interaktiv oder nicht. Dies kann bei Benutzern, die sich darauf verlassen, zu Problemen führen/etc/bashrc
Bei nicht interaktiven Anmeldungen wird die Ausführung nicht ausgeführt. Gehen Sie daher vorsichtig vor (obwohl Sie genau danach fragen, sodass Sie wahrscheinlich die Auswirkungen kennen).Zuerst hinzufügen
ForceCommand /usr/local/bin/sshd_envs
zu/etc/sshd_config
. Dann legen Sie folgendes in/usr/local/bin/sshd_envs
:Welche Umgebungseinstellungen Sie dann vornehmen
/etc/bashrc
wird bei jedem SSH-Login in die Umgebung gelangen.Bitte beachten Sie diesen Standard
/etc/bashrc
for OS / X wird sofort nach Auswertung der ersten Zeilen beendet (da PS1 nicht für nicht interaktive Shells eingestellt ist):Kommentieren Sie diese Zeilen aus oder setzen Sie alles, was Sie für Ihre nicht interaktiven SSH-Anmeldungen auswerten möchten, vor diese Zeilen.
quelle