반응형
타 부서에서 이미지 서버로 사용할 장비가 필요하다 해서 다음과 같이 설정했다.
- 이미지 업로드용 계정 생성 : imageuser
- 해당 계정의 /images 경로 생성 : /home/imageuser/images
- 아파치 httpd로 이미지 경로 설정 : /home/imageuser/images
- imageuser 계정은 ssh 접근 막음
- imageuser 계정으로 sftp 연결하면, /home/imageuser 를 루트 디렉토리로 인식함
과정을 정리해보면 다음과 같다.
1. imageuser 계정 생성
계정을 생성하고 암호를 설정한다.
$ useradd imageuser
$ passwd imageuser
2. 업로드할 파일을 보관할 디렉토리 생성
imageuser 계정으로 로그인한 뒤 /home/imageuser에 images 디렉토리를 생성한다.
$ su imageuser
$ cd ~
$ mkdir images
3. sshd_config 설정
/etc/ssh/sshd_config 파일의 설정을 변경하고 sshd를 재시작한다.
# imageuser 계정이 sftp로 연결할 수 있게
Subsystem sftp internal-sftp
# imageuser 계정이 sftp로 연결한 경우, /home/imageuser를 루트디렉토리로 인식하게 설정
Match User imageuser
ForceCommand internal-sftp
ChrootDirectory /home/imageuser
위 설정에서 ChrootDirectory 설정은 /home/imageuser를 루트 디렉토리로 인식하도록 설정한다.
4. 홈디렉토리를 root 소유로 변경하고 접근 권한 변경
Chroot를 적용하기 위해 /home/imageuser를 root 소유로 변경하고 접근 권한을 755로 변경한다.
$ chown root:root /home/imageuser
$ chmod 755 /home/imageuser
http://lists.mindrot.org/pipermail/openssh-unix-dev/2009-May/027651.html
5. imageuser 계정 쉘 접근 차단
/etc/passwd에서 imageuser 계정의 쉘을 /sbin/nologin으로 바꾼다.
imageuser:x:501:501::/home/imageuser:/sbin/nologin
6. sftp로 연결해서 확인
sftp로 연결해서 디렉토리를 확인해보면 /home/imageuser 디렉토리를 루트 디렉토리로 인식하는 것을 알 수 있다.
$ sftp imageuser@imageserver.mycompany.com
imageuser@imageserver.mycompany.com's password: 암호입력
sftp> ls -la
drwxr-xr-x 3 0 0 4096 Jun 17 03:56 .
drwxr-xr-x 3 0 0 4096 Jun 17 03:56 ..
....생략
drwxrwxr-x 4 501 501 4096 Jun 17 08:03 images
sftp> pwd
Remote working directory: /
sftp>