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
次のようにすると、/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/bashrc
SSH ログインごとに環境に反映されます。
OS/X のデフォルトでは、/etc/bashrc
最初の数行を評価した後すぐに終了することに注意してください (非対話型シェルでは PS1 が設定されていないため)。
if [ -z "$PS1" ]; then
return
fi
したがって、これらの行をコメントアウトするか、非対話型 SSH ログインで評価する必要があるすべてのものをこれらの行の前に置いてください。