![ChrootDirectory를 기본 디렉터리 내의 하위 디렉터리로 변경합니다.](https://linux55.com/image/119161/ChrootDirectory%EB%A5%BC%20%EA%B8%B0%EB%B3%B8%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EB%82%B4%EC%9D%98%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A1%9C%20%EB%B3%80%EA%B2%BD%ED%95%A9%EB%8B%88%EB%8B%A4..png)
내 시스템에서 "/etc/ssh/sshd_config"만 사용하여 홈 디렉터리로 루트가 지정된 사용자를 만들고 있습니다. 잘 작동하지만 ChrootDirectory
홈 디렉토리를 /home/%u/%u
또는 로 만들고 싶습니다 /home/%u/public
.
/home/%u
두 가지 방법을 모두 시도했지만 이 작업을 수행하고 FlashFXP 또는 FileZilla(작동함)와 같은 FTP 클라이언트를 사용하여 연결할 때 항상 연결이 거부되는 것 같습니다.
"ChrootDirectory /home/%u"로 설정하면 하위 디렉터리에 액세스할 수 있으므로 권한은 괜찮습니다. 그럼 내가 뭘 잘못했나요?
답변1
man sshd_config
:
ChrootDirectory는
인증 후 chroot(2)에 대한 디렉토리 경로 이름을 지정합니다. 세션 시작 시 sshd(8)는 경로 이름의 모든 구성 요소가 다른 사용자나 그룹이 쓸 수 없는 루트가 소유한 디렉터리인지 확인합니다.
사용자를 SFTP로 제한하면 아무런 트릭 없이 홈 디렉터리(하위 디렉터리 제외)를 사용할 수 있습니다.
ssh나 scp 대신 sftp를 사용하는 특별한 경우에는 ChrootDirectory %h 또는 ChrootDirectory /some/path/%u를 사용할 수 있습니다. 이 디렉터리를 포함하는 파일 시스템은 nodev 및 nosuid 또는 noexec 옵션을 사용하여 마운트해야 합니다. 디렉터리의 소유자는 사용자여야 합니다. 경로의 다른 구성 요소에 대한 소유권은 일반적인 조건을 충족해야 합니다. 이 디렉토리에는 다른 파일이 필요하지 않습니다.
SFTP는 다음을 사용하여 제한할 수 있습니다 ForceCommand internal-sftp
.