web-dev-qa-db-ja.com

なぜsshdは絶対パスを必要とするのですか?

再起動するときにsshdに絶対パスが必要なのはなぜですか。例:/usr/sbin/sshdではなくsshd

セキュリティへの影響はありますか?

PSエラーメッセージ:

# sshd
sshd re-exec requires execution with an absolute path
24
daisy

これはバージョン3.9以降のOpenSSHに固有です。

新しい接続ごとに、sshdはそれ自体を再実行して、新しい接続ごとにすべての実行時のランダム化が確実に再生成されるようにします。 sshdが自分自身を再実行するには、自分自身へのフルパスを知っている必要があります。

これは、3.9のリリースノートからの引用です。

  • Sshd(8)が新しい接続を受け入れたときに自分自身を再実行するように。このセキュリティ対策により、すべての実行時のランダム化が、マスタープロセスの存続期間中、1回ではなく各接続に再適用されます。これには、mmapとmallocのマッピング、共有ライブラリのアドレス指定、共有ライブラリのマッピング順序、ProPoliceとStackGhostのCookieが含まれます。

いずれの場合も、通常、サービスを再起動するには、initスクリプト(例:/etc/init.d/sshd restart)またはservice sshd restartを使用することをお勧めします。他に何もない場合は、次の再起動後にサービスが正しく開始することを確認するのに役立ちます...

元の回答、現在は無関係:私の最初の推測は、/usr/sbinが$ PATHにないことです。

22
Jenny D

これは、誰かがsshdのいずれかのディレクトリのどこかにPATHプログラムを挿入して、誤って実行してしまうのを防ぐためです。この post は2004年のもので、この問題をすでに説明しています。

6
Timo