ユーザーのログインにパスワードがないのに、なぜsshdはユーザーが自分のホームディレクトリを所有していないのか気にしないのですか?

ユーザーのログインにパスワードがないのに、なぜsshdはユーザーが自分のホームディレクトリを所有していないのか気にしないのですか?

私が見た中で最も奇妙な行動は次のとおりです。

私は持っています:

Linuxユーザーアカウントを設定し、パスワードとSSHキーを設定します。

  • ユーザーにホームディレクトリがある場合は、SSHキーを使用してログインできます。
  • このユーザーが自分のホームディレクトリを所有していない場合は、次のようにsshd文句を言います。

    Authentication refused: bad ownership or modes for directory /path/to/home/user/
    
  • Linuxアカウントのパスワードを削除すると、ユーザーはSSHキーを使用してログインできますが、ホームディレクトリを所有していません。

ワット?なぜsshdもはや自分のホームディレクトリがあるのか​​気にしないのですか?

答え1

これは、説明したよりも少し複雑です(質問に完全に答えるために重要な詳細を多く省略しました)。しかし、ソースコード良い出発点は次のとおりです。

  • 公開鍵認証を実行した場合にのみ失敗します。
  • 親ディレクトリは重要であり、次の場合にのみ「受け入れ」ます。
    • 大丈夫ですか?sshdstat()
    • ディレクトリはログインしたユーザーまたはrootLinux(platform_sys_dir_uid()処理担当)が所有します。
    • 他のユーザーはそのディレクトリに書き込むことはできません(所有者には書き込みビットのみを設定できます)。

これは基本的に最初の2点には適していますが、3番目の点には合いません。また、ラウンドで変更したり気づかなかったりする他のいくつかの点もあります。サーバーでデバッグログをオンにして調査します(または編集された質問に投稿します)。

関連情報