
나는 sftp 사용자를 위한 chroot 설정에 대한 6개의 다른 튜토리얼을 따랐지만 감옥에 갇힌 사용자는 여전히 상위 디렉토리를 탐색할 수 있습니다. 내 권한이 올바르게 설정되지 않은 것 같습니다. 이 부분이 튜토리얼마다 가장 많이 달라지는 부분이기 때문입니다. 지금까지 내가 한 일은 다음과 같습니다.
1) 기본 OpenSSH 버전이 4.3인 CentOS 5.6을 사용하고 있으므로 최신 5.x 버전을 수동으로 설치했습니다. 이제 sshd -v를 실행하면 OpenSSH_5.9p1, OpenSSL 0.9.8e-fips-rhel5가 반환됩니다.
2) /etc/ssh/sshd_config를 편집하여 하위 시스템 sftp를 내부 sftp로 변경하고 다음을 추가했습니다.
Match user guest
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
3) SSHD를 다시 시작했습니다.
4) 홈 디렉토리 /var/www/uploads/guest를 사용하여 "guest"라는 사용자를 생성했습니다.
5) /var/www/uploads는 모드 755의 root:root가 소유합니다.
6) /var/www/uploads/guest는 모드 755의 guest:root가 소유합니다.
Mac에서 Transmit sftp 클라이언트를 사용하여 게스트 사용자로 로그인했습니다. 기본적으로 사용자의 홈 디렉터리가 열리지만 그런 다음 디렉터리 수준을 탐색하고 서버의 다른 디렉터리를 찾아볼 수 있습니다.
일부 튜토리얼에서는 /var/www/uploads의 모드가 700 또는 750이어야 한다고 말합니다. 이렇게 하면 여전히 게스트 사용자로 로그인할 수 있지만 기본적으로 서버 루트 디렉터리가 표시되고 다른 모든 디렉터리를 찾아볼 수 있습니다.
다른 튜토리얼에서는 게스트 사용자의 쉘을 /bin/false로 변경해야 한다고 말합니다. 이렇게 하면 게스트 사용자로 전혀 로그인할 수 없습니다. 전송에 "서버에서 사용자 이름 또는 비밀번호가 허용되지 않았습니다"라는 메시지가 표시되고 비밀번호를 입력한 후 명령줄 SFTP 클라이언트에 "연결이 닫혔습니다"라는 메시지가 표시됩니다.
나는 모든 것을 시도한 것 같습니다. 누군가 누락된 부분을 볼 수 있습니까?
답변1
ChrootDirectory는 홈 디렉터리보다 한 수준 위를 가리켜야 하는 것 같습니다.
그래서 손님의 집은/var/www/uploads/guest, 그런 다음Chroot디렉토리다음을 가리켜야 한다/var/www/업로드
그럴 수도 있습니다.... 또 다른 생각이 떠올랐습니다.
최신 openssh를 수동으로 설치했습니다. 이전 버전을 제거하셨나요? 새 버전은 어디에 설치되었나요? 때때로, 조심하지 않으면 새 항목이 에 설치됩니다./usr/로컬/대신에/usr, 이는 SFTP 지원 서버가 다음에서 구성 파일을 읽고 있음을 의미합니다./usr/local/etc/ssh/...예상했던 것 대신에/etc/ssh/...
적어도 확인해 볼 것이 있습니다.
답변2
나는 똑같은 문제로 어려움을 겪었지만 chrooted 디렉토리를 설정하여 해결했습니다.모든 상위 디렉토리뿐만 아니라다음 권한이 있는
1) 소유자를 루트로 변경:
sudo chown root [directory]
2) 모든 그룹 쓰기 권한 제거:
sudo chmod 755 [directory]
안타깝게도 이는 루트가 소유하지 않은 폴더로 직접 이동할 수 없다는 것을 의미한다고 생각합니다. 그러나 이에 대해 누군가가 나를 고칠 수 있다면 기뻐할 것입니다!