728x90
개요
사실상 권한 UGO(User, Group, Other) 를 수정해서 권한을 수정하는건 리눅스 관리자 사용자는 대부분 다 알고 있다.
하지만 나는 SFTP를 사용할 때 특정 사용자가 특정 디렉토리에 가둬 상위 디렉토리 접근을 막고 싶었다.
여기서 이 글을 쓰는 이유가 있다. 모든 글들을 보면 /home/사용자계정홈디렉토리
에 하라고 나와있다.
하지만 난 /appstore/webstore/ftpfile/
이처럼 복잡한 경로에 가두고 싶었다.
그런데 이게 안된다.
뭐 때문인지 모르겠지만 어떤 내용을 보면 상위 디렉토리가 root 여야 한다. 권한이 755여야한다. 모든 의견을 수립해 다해봤다. 근데 안된다.
결론은 로그를 보니 pam_unix
sshd 정책 관련해서 어떤 무언가가 막고 있는 것 같다. 조금 더 파서 어떤 영향을 받는지 테스트를 해보고 싶은데 상용 서버라서 테스트는 못했지만
추후 클라우드에서 테스트해보고 다시 한번 적겠다. 겸사겸사 chroot 사용방법이나적는다.
sftp chroot 조건 사항
- 홈 디렉토리는 /home/{사용자계정} 아래 있어야 한다.
- 홈디렉토리의 소유자는 root여야 한다. 그룹은 사용자계정의 그룹이 되어야 한다.
- chroot경로 이하에 생성되는 모든 파일도 동일하다.
- 사용자 홈 디렉토리의 권한은 755여야 한다.
- ssh-key 즉 퍼블릭키로 로그인하려면 chroot설정 전, 키 교환 먼저 후에 진행하는 것이 편하다.
sftp chroot 설정 방법
sftp 사용 계정 생성
useradd -d /home/sftpuser sftpuser
사용자 홈 디렉토리 권한 및 소유자 변경
chmod 755 /home/sftpuser
chown root /home/sftpuser
chroot 설정
해당 설정에서 디렉토리에 cloudfile로 잡는 이유는 사용자 홈 디렉토리로 잡게 되면 .ssh 파일 등 숨겨진 파일들도 컨트롤할 수 있어서 1 Deps 더 만드는 게 좋다.
vi /etc/ssh/sshd_config
...
Match User sftpuser
ChrootDirectory /home/sftpuser/cloudfile
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
ssh 서비스 재 시작
systemctl restart sshd
위 말한 것처럼 ssh 공유키로 패스워드 없이 로그인하게 하려면 위 chroot설정을 키를 공유한 후에 설정하면 된다.
물론 키를 복사해서 다른 서버에 넣으면 되긴 하는데 복잡하니까 미리 하는게 좋다.
#블로그
728x90
'Linux' 카테고리의 다른 글
톰캣(Tomcat) 버전 가리는 방법 (0) | 2024.10.25 |
---|---|
[Network] 자주 사용하는 주요 포트 및 프로토콜 (1) | 2024.09.10 |
[Infra] HTTPS, SSL 도메인 인증서 교체 방법 및 주의 사항 (2) | 2024.09.03 |
[NGINX] NGINX설치 방법 (Linux) (0) | 2024.08.27 |
[WEB] X-Forwarded 헤더는 무엇일까? (0) | 2024.08.07 |