SW 개발

공유를 위한 VSFTP 설정 : 계정추가부터 디렉토리 설정까지

. . . 2015. 12. 28. 12:22
반응형
  • 잡담
    • 마크다운으로 글 수정완료 (190821)
    • 로그인관련하여 잘못된내용 수정

홈서버에 FTP 를 통한 공유를 할 일이 있어서 구글링한 자료를 정리한다.

계정추가

FTP 계정은 따로 추가하는것이 아니라 리눅스의 계정과 연결된다. 때문에 일반적인 리눅스 계정 추가와 동일한방법으로 계정을 추가한다.

sudo adduser 추가할계정

  • 참고로 passwd 에 대한내용은 반드시 설정한다. 그래야 FTP 로그인시 passwd 를 입력후 로그인까지 된다.

상위디렉토리 제한 및 home 디렉토리 설정

vsftp 의 기본설정은 각 계정이 상위계정으로 바로 접근이 가능하다. 때문에 공유를 위해서 추가한 계정이 엉뚱한 폴더로 접근할 수 있기 때문에 상위 폴더로의 이동을 막아야한다.

vsftp 서비스 설정을 다음과 같이 설정한다.

sudo vi /etc/vsftpd.conf

# 수정할것
user_sub_token=$USER
local_root=/home/$USER/ftp_home

chroot_local_user=YES
chroot_list_enable=NO

위와같이 설정하면 일단 모든 계정이 상위디렉토리로의 이동이 불가능하다. chroot_list_enable=YES 로 할경우 특정계정만 상위디렉토리로 이동이 가능한데, 매번 ftp 계정을 추가할 때마다 list 파일을 수정해야하기 때문에 그냥 모든계정을 불가능으로 설정후 쓰는게 맞는것 같다.

local_root=/home/$USER/ftp_home 부분이 홈 디렉토리 설정이다. vsftp 가 접근가능하기 위해서는 디렉토리의 소유자가 ftp:ftp 이어야 하는데.. home 디렉토리 전체를 소유자를 바꾸는건 무리가 따른다. 때문에 특정 폴더를 vsftp 접근용으로 설정하게 한다. 위의 설정은 /home/계정명/ftp_home 을 ftp 용 폴더로 설정하였다. (해당 폴더는 다음과 같이 설정)

sudo mkdir /home/계정명/ftp_home
sudo chown ftp:ftp/home/계정명/ftp_home

해당 계정 로그인막기

일반 리눅스 계쩡으로 생성했기 때문에 ssh 로의 로그인이나 리눅스 로그인이 가능하다. 단순히 ftp 용 공유계정이므로 로그인을 막아야한다. passwd 파일을 다음과 같이 수정한다.

sudo vi /etc/passwd

계정명:x:1004:1004:,,,:/home/계정명:/usr/sbin/nologin

위와같이 할경우 ftp 용으로만 사용가능하며, 리눅스 시스템 접근은 불가능하다.

심볼릭링크 관련 수정하기

공유용 ftp 이다보니, 일일이 해당 계정으로 복사해서 데이터를 공유하기가 번거롭다. 때문에 공유를 하기위한 파일을 심볼릭링크로 사용하면 편하지만... 위에서 상위디렉토리의 이동을 막았기 때문에 불가능하다.

우회하는 방법으로 공유하고자 하는 폴더를 아예 마운트해버린다.

마운트 하는방법은 다음과 같다.

mount --bind \[공유하고자하는 파일,폴더\] \[가상으로 공유할 경로\]

위의 설정은 재부팅하면 안되므로.. fstab 이나, init script 쪽에 넣어준다.

반응형