IT/잡다구리

[Linux] 파일질라에서 특정 계정 상위 디렉토리 접근 불가하게 막기 Chroot

월공 2020. 11. 9. 15:45
728x90
300x250

Port 22 필수

우선 계정이 먼저 필요하겠지요~!

#아이디 생성
useradd test

#test 라는 아이디의 비밀번호 설정
passwd test

#계정 정상적으로 생성되었는지 확인
cat /etc/passwd

# test 라는 계정의 기본 디렉토리 변경, TTTT 폴더는 미리 만들어둡니다, 아래 명령어 실행하고나서 만들어도 상관없음
usermod -d /var/html/www/TTTT test

 

 vi /etc/ssh/sshd_config

위 파일을 열면 아랫줄과 같은 내용이 있는데

Subsystem      sftp    /usr/libexec/openssh/sftp-server

이녀석을 #주석처리 해주고

Subsystem sftp internal-sftp  로 대체해줍니다!

 

또 맨 하단에 아래와 같이 추가를 해줍니다

Match User test 
  ChrootDirectory /var/www/html 
  ForceCommand internal-sftp 
  X11Forwarding no 
  AllowTCPForwarding no 
#수정하고나면 sshd 재시작을 잊지않고 해주셔야합니다.
systemctl restart sshd

혹시라도 재시작이 안될 경우 당황 하지마시고 journal journalctl -xe  라는 명령어를 쳐서 뭐가 문제인지 파악하시면 되겠습니다. 사실 config 같은건 수정하기전에 미리 원본 복사해두는게 제일 좋습니다

 

위 절차를 밟으면 SFTP 로 접속했을때 아예 /var/www/html 그 이상으로 경로 조정이 안되는걸 확인하실수 있습니다.

 

이렇게 하고나서 권한 설정을 살짝 손봐주셔야합니다.

 chown root:test /var/www/html/TTTT 
 chmod 775 /var/www/html/TTTT

이렇게 해주시면 TTTT 폴더내부에서는 자유롭지만 그외 html 폴더의 다른 폴더에 접근은 되더라도 다운을 하거나 건드릴수 없습니다

 

 

마지막으로 root 계정은 상관없는데 새로 만든 계정으로 파일 업로드시 계속 600으로 들어가는 문제가 있었는데

vi /etc/login.defs

에서 UMASK 077 로 되있는 부분을 022 로 수정하니 잘들어갑니다.

728x90
300x250