파일 서버의 액세스를 제한하기 위해 다음 구성을 설정했습니다.
파일 서버에서(Debian Wheezy)
data-reader
이름이 지정된 그룹에 집도 없고 쉘도 없는 사용자를 만듭니다data
.- 루트가 소유한 디렉터리와 그룹이 액세스할 수 있는 하위 디렉터리를 만듭니다
/somewhere/share/
./somewhere/share/data/
data
- 다음 구성을 추가합니다
/etc/sshd_config
.Match group data ChrootDirectory /somewhere/share ForcedCommand internal-sftp X11Forwarding no AllowTcpForwarding no
이렇게 하면 data-reader
SFTP를 사용하여 디렉터리의 파일만 읽을 수 있습니다 /somewhere/share/data
. 좋아요
클라이언트에서(또 다른 데비안)
sftp data-reader@<server_ip>
서버에 접속하는데 사용됩니다 . SFTP 콘솔에서 읽기 전용 액세스를 위해 SFTP 명령에 또는 등을 사용할 수 있지만 /somewhere/share/data
다른 경로는 볼 수 없습니다. 좋아요! 이것이 내가 원하는거야.ls
get
하지만다음은 좋은 명령 목록입니다 help
.
! Escape to local shell
내가 달리면
!ls /
/
실제로 서버에 있는 모든 파일을 볼 수 있어요! 모든 파일의 내용을 볼 수 있습니다. 하지만 나는 그것을 원하지 않습니다. 사용자가 자신의 디렉토리를 종료할 수 없도록 하고 싶습니다.
이 "escape" 명령에 대한 액세스를 제한하는 방법이 있습니까?
당신의 도움을 주셔서 감사합니다.
답변1
로컬 쉘로 탈출한다는 것은 사용자가 이제 클라이언트에 쉘을 가지고 있다는 것을 의미합니다.아니요서버에서. 두 시스템의 /tmp에 있는 파일(다른 이름!)을 터치하면 차이점을 확인할 수 있습니다.