사용자의 로그인에 비밀번호가 없는데 왜 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()처리 담당) 가 소유합니다.
    • 다른 사용자는 해당 디렉토리에 쓸 수 없습니다(소유자에 대해서는 쓰기 비트만 설정할 수 있음).

이것은 기본적으로 처음 두 점에는 적합하지만 세 번째 점에는 맞지 않습니다. 또한 라운드에서 변경하거나 눈치채지 못하는 몇 가지 다른 사항도 있을 것입니다. 서버에서 디버그 로깅을 켜고 조사합니다(또는 편집된 질문에 게시합니다).

관련 정보