1. 사용자 추가
adduser [유저명]
만약, ssh는 접근 못하게하고, sftp만 사용하고자 하는 경우에는 뒤에 -s /bin/false 이란 인수를 추가한다.
2. 홈 디렉터리 확인
일반적인 경우에 홈디렉터리는 /home/[유저명] 임. 하지만 chroot를 적용하기 위해서는 이 폴더의 소유자가 root 여야 정상적으로 chroot가 작동.
chown root /home/[유저명]
만약 홈디렉터리의 그룹이 [유저명]이 아니라면 다음과 같이 입력
chown root:[유저명] /home/[유저명]
그리고 권한 변경 (755또는 775또는 777)
chmod 775 /home/[유저명]
3. sshd_config 파일 편집
vi /etc/ssh/sshd_config
그리고 거의 하단에
Subsystem sftp /usr/lib/openssh/sftp-server
부분을 찾아서 앞에 #을 붙여 주석처리하고 다음과 같이 작성
# Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp
그리고 sshd_config 파일 가장 하단에 다음 내용을 추가
Match User [유저명]
ChrootDirectory /home/[유저명]
ForceCommand internal-sftp
X11Forwarding no
AllowTCPForwarding no
만약 지금처럼 유저명으로 진행하는 것이 아니라 그룹 전체로 한다면 다음과 같이 입력
Match Group [그룹명]
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTCPForwarding no
참고로 %h는 홈디렉터리를 뜻함.(홈디렉터리를 대체함) 이 내용은 /etc/passwd에서 확인 및 수정가능
%u 는 인정된 유저를 뜻함.
4. ssh restart 하기
restart ssh
또는
service ssh restart
일단, 참고 http://askubuntu.com/questions/280894/changing-write-permissions-for-jailed-sftp-denies-login
해당 내용 추가함
만약 user 라는 유저명을 chroot로 /home/user 에 가둬두고 싶으면(이미 sshd_config에서는 /home/user로 해야함. 귀찬으면 %h 입력함) 퍼미션 조정이 더 필요함.
일단 /home/user 의 소유자는 root:user 그리고 퍼미션은 무조건 755로만 해야함.
chown root:user /home/user chmod 755 /home/user
그리고 /home/user 디렉터리 안에 적어도 쓰기 가능한 폴더가 하나 존재해야 함. 그래야 접속이 됨.
서브 디렉터리로 www를 만들고 소유자는 root:user 그리고 권한은 775(777도 가능할지 모름)
mkdir www chown root:user /home/user/www chmod 775 /home/user/www
이렇게 하고 나면 정상적으로 choroot 작동함. 휴~

