sftp chroot 설정

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 작동함. 휴~

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Comment moderation is enabled. Your comment may take some time to appear.