LDAP を使用して認証された非対話型ユーザーのパスを設定するにはどうすればよいでしょうか?

LDAP を使用して認証された非対話型ユーザーのパスを設定するにはどうすればよいでしょうか?

OSX 10.7.5 を実行している Mac では、ssh 経由で接続し、LDAP を使用して認証される非対話型ユーザーの PATH を設定する必要があります。これは、ここで尋ねられた (そして答えられた) のと同じ質問です。

https://serverfault.com/questions/139426/ldap ユーザー アカウントを使用して SSH 経由でコマンドを実行するためのパスを更新する

しかし、私は PAM や LDAP に十分精通していないため、答えを完全に理解できません。

以下のことを行う必要があるようです:

add a line to /etc/pam.d/sshd saying "auth      required    pam_env.so"
create a file named /etc/security/pam_env.conf

しかし、pam_env.conf のドキュメントは非常にわかりにくく、DEFAULT 値と OVERRIDE 値のどちらが必要なのかわかりません。

これらは正しい手順だと思っていいでしょうか? pam_env.conf に入力する行は何ですか?

ありがとう、クリス

ps /etc/pam.d/sshd に「auth required pam_env.so debug」という行を入れてみましたが、/var/log/system.log には pam_env.so から来ているような内容は何も表示されません。また、/etc/security/pam_env.conf を作成し、そこに「PATH DEFAULT=/usr/fred OVERRIDE=/usr/george」という行を入れましたが、PATH に目に見える効果はありませんでした。

pps 実行した場合:

ssh USER@MACHINE echo \$SHELL

/bin/bash と書かれています。次に MACHINE にログオンし、次の行を /etc/bashrc に追加します。

export Test=Fred

そして自分のマシンに戻って以下を実行します:

ssh USER@MACHINE echo \$Test

何も返されません。LDAP を使用してこの方法でログオンすると、/etc/bashrc は実行されません。

ppps 重要と思われる追加情報: MACHINE には USER という名前のローカル ユーザーは存在しません。MACHINE は LDAP 認証を行うように設定されているため、USER@MACHINE に ssh すると、$HOME は /Network/Servers/blah/blah/Users/USER に設定されます。/Network/Servers/blah/blah/Users/USER/.bashrc を編集して PATH を設定すると、正常に動作しますが、このサーバーにアクセスしたいすべてのユーザーがネットワーク .bashrc を編集する必要があるため、あまり良い解決策ではありません。

答え1

これは、https://askubuntu.com/questions/382485/ssh-how-to-force-execution-of-a-script-etc-sshrc-forcecommand-on

次のようにすると、/etc/bashrc対話型かどうかに関係なく、すべての SSH ログインのソースを強制できます。これにより、非対話型ログインで実行されないことに依存しているユーザーには問題が発生する可能性がある/etc/bashrcため、注意して進めてください (ただし、これはまさにあなたが求めていることなので、おそらく影響はご存知でしょう)。

まずForceCommand /usr/local/bin/sshd_envsを に追加します/etc/sshd_config。次に、次のものを に追加します/usr/local/bin/sshd_envs

#!/bin/bash

source /etc/bashrc

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

その後に設定した環境設定は、/etc/bashrcSSH ログインごとに環境に反映されます。

OS/X のデフォルトでは、/etc/bashrc最初の数行を評価した後すぐに終了することに注意してください (非対話型シェルでは PS1 が設定されていないため)。

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

したがって、これらの行をコメントアウトするか、非対話型 SSH ログインで評価する必要があるすべてのものをこれらの行の前に置いてください。

関連情報