내가 만든 각 사용자는 고유한 홈 디렉터리를 갖고 있으며 이는 정상적인 현상입니다.
현재 다음과 같이 사용자를 생성합니다.
adduser -d / home / ftp / myUser myUser
내 사용자는 SFTP(내 vps에 설치된 SSH 열기)에 연결해야 하며 내 사용자가 SFTP에 연결할 때 홈 디렉터리를 루트 폴더로 확인해야 합니다.
왜? 다른 애플리케이션이 이 SFTP에 연결 중이며 해당 애플리케이션은 루트 디렉터리에 있는 파일을 고려하지 않고는 파일을 보내거나 읽을 수 없습니다.
어떻게 해야 하나요?
답변1
/etc/ssh/sshd_config
다음 줄을 포함하도록 추가하거나 변경하세요.
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
그런 다음 제한된 사용자 세트를 모두 이 sftpusers
그룹에 추가합니다.
마지막으로 대상 디렉터리의 소유권을 루트로 변경하고 그룹/기타 쓰기 권한을 제거한 후 서버를 다시 시작합니다 ssh
. 이는 chroot가 적용되는 데 필요합니다. 단점은 사용자가 자신의 홈 디렉터리에 어떤 파일도 쓸 수 없다는 것입니다. (그들이 쓸 수 있는 하위 디렉터리를 만들어야 합니다.)
이는 사용자 관점에서 볼 때 이상적인 상황은 아니며 SFTP가 사용할 디렉터리를 파일 시스템의 다른 곳에 만드는 것이 더 나을 수도 있습니다( /home/sftp/$USER
예를 들어 실제 홈 디렉터리와 독립적으로 잠글 수 있음) ChrootDirectory /home/sftp/%u
.
문제가 발생하면(몇 번의 문제 해결 시도 중 첫 번째 시도에 성공할 수 있음) /var/log/auth.log
무엇이 잘못되었는지 알아보기 위해 이 책을 읽어 보십시오.