최근에 다음과 같은 해결 방법을 찾았습니다.
/ etc / ssh / sshd_config :
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
디렉토리 권한 :
root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*
이제 /home
만족은 요구 사항 ChrootDirectory
과는 제한된 사용자로 나열 할 수는 없지만, sftponly
사용자는 자신의 홈 디렉토리가 (평소와 같이 설정된 경우에 로그인 할 수 없습니다 /home/$LOGNAME
) : chroot 된 환경에서 홈 디렉토리는 없습니다 내부에 /home
있지만 바로 아래 루트 ( /
).
해결 방법 1
제한된 사용자의 집을 chroot 아래에 나타나는 방식으로 설정하십시오.
root@server:~ # usermod -d /username username
동굴 1
제한되지 않은 사용자 또는 일부 관리 스크립트가 bash의 물결표 확장을 사용 ~username
하여 /username
지금 확장되는 것처럼 의미하는 것은 아닙니다.
또한 sftponly
사용자 를 만드는 관리자는 기본이 아닌 집을 사용해야합니다. 스크립트로 해결할 수 있습니다. 관리자가 사용해야하는 것을 기억하십시오.
해결 방법 2
이것은 이전에 사용했던 이전의 대안입니다.
root@server:~ # ln -s . /home/home
그것은 /home
자신의 디렉토리 이름 으로 심볼릭 링크를 만드는 것 입니다. 이제 chroot에서 chroot /home/username
가없는 것과 동일한 디렉토리를 가리 킵니다. sftp로 로그인 한 제한된 사용자의 경우으로 나타납니다 /username
. 이 디렉토리는 소유자 (제한된 사용자)에게 쓸 수 있습니다. 제한된 사용자는 형제의 부모 또는 홈 디렉토리를 이름으로 나열 할 수 없습니다.
sftponly
사용자의 특별한 점 은 sftponly
그룹에 참여하는 것 입니다. 해결 방법 1보다 다루기가 더 쉽다는 것을 알았습니다.
동굴 2
- 홈 디렉토리에 이름이 'home'인 사용자를 가질 수 없습니다
/home/home
/home
계층 구조 를 통과 하고 심볼릭 링크를 따르는 스크립트에주의해야합니다 .
chroot
사용자가 자신의 에드ChrootDirectory
? 그들이 접근 할 수 있습니까?