Wie kann ich den Pfad für nicht interaktive Benutzer festlegen, die mit LDAP authentifiziert wurden?

2

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:

https://serverfault.com/questions/139426/updating-the-path-for-running-an-command-through-ssh-with-ldap-user-account

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.

Betty Crokker
quelle
Sie können hierfür Shell-Initialisierungsdateien verwenden. Z.B. für den Fall, dass Ihre Benutzer ihre Shell eingestellt haben /bin/bash, benutzen /etc/bashrc.
Sami Laine
Danke Sami, ich habe es versucht und es war ein No-Go. Ich habe meine Frage bearbeitet, um zu zeigen, was passiert ist.
Betty Crokker
Nun, da ich die Handbuchseite tatsächlich lese, anstatt mich auf meinen Speicher zu verlassen, sehe ich deutlich, dass nur ~ / .bashrc für Nicht-Login-Shells verwendet wird. Entschuldigung für einen Schuss im Dunkeln.
Sami Laine

Antworten:

0

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:

#!/bin/bash

source /etc/bashrc

if [ -n "$SSH_ORIGINAL_COMMAND" ]; then
  eval $SSH_ORIGINAL_COMMAND
else
  exec $SHELL
fi

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):

if [ -z "$PS1" ]; then
  return
fi

Kommentieren Sie diese Zeilen aus oder setzen Sie alles, was Sie für Ihre nicht interaktiven SSH-Anmeldungen auswerten möchten, vor diese Zeilen.

Sami Laine
quelle