- 150 名前:149 mailto:sage [2008/07/26(土) 03:10:11 ]
- というわけで、一応自分なりにまとめといた
[問題点] OpenSSH-5.1p1のsshdを動かしているシステムに対し、 bashをログインシェルとするユーザがリモートから ssh host command を実行した場合、~/.bashrcが読まれない。 OpenSSH-5.0p1までは~/.bashrcを読んでいた。 Linux, Solarisでこの現象を確認。 [解決法] session.cの427行目の#define USE_PIPESを 削除して再コンパイル。 [原因?] bashは、リモートからの実行だと判断すると~/.bashrcを 読む機能を備えるが、stdinに対するgetpeername()が失敗すると、 リモートからの実行だと判断せず、~/.bashrcを読まない。一方、 sshd側のsession.cに#define USE_PIPESがあると、後続の do_exec_no_pty()でsetsockpair()が使われないため、シェルへの stdinがネット直結にならない。このため、bashがstdinに対する getpeername()を実行したとき失敗するので、~/.bashrcが読まれ なくなる。
|

|