본문 바로가기
개발/R.Pi3 + Linux

[R.Pi + Linux] Raspberry Pi3 에 FTP(vsftpd) 서버 설치하기

by 똘똘이박사 2016. 11. 6.

· 최초작성 : 2016. 11. 05.

최종수정 : 2016. 11. 05.

· 작성/수정내용 :

  - Raspberry Pi 3 에 FTP(vsftpd) 서버 설치하기




시작하기에 앞서


개발에서 손 땐지 벌써 5년? 7년은 된거 같은데 다시 개발을 하려니까

생각이 하나도 안나네요. 완전 백지 상태가 된것처럼..

 테스트 설정

 - Raspberry Pi3 + vsftpd (ver.3)




# Raspberry Pi3 에 FTP 구축하기


R.Pi3 로 웹 서비스를 할 수 있는 서버를 만들어 볼까 합니다. 

이번에는 FTP 서버를 구축해 봅니다.


vsftpd 설치


리눅스 에서 사용할 수 있는 FTP 서버가 여러종류 있지만

vsftpd를 설치해 보려고 합니다.


우선 패키지를 설치하기 전에 해줘야 할 일이 있죠?

R.Pi에 대한 update와 upgrade 입니다.

이 부분에 대한 내용은 이전 포스팅에서 설명하였으므로 이 포스팅에서 따로 적지는 않을께요.


update와 upgrade가 끝났다면

바로 vsftpd 를 설치 합니다.


  #sudo apt-get install vsftpd




전 이미 설치가 되어 있어서 위와 같이 '이미 최신 번전'이라고 나오네요.


vsftp를 구동하고 ftp 프로그램으로 접속을 해 봅인다.


  #sudo service vsftpd start



ftp 클라이언트 프로그램은 filezilla 를 이용하였습니다.






새사이트를 위 그림과 같이 등록하고 [연결] 버튼을 클릭해 줍니다.


그럼 아래 그림과 같이 ftp 가 성공적으로 연결이 됩니다.





참~~ 쉽죠잉~~~

잉??? 근데 정말 이게 끝인가요???


ftp 화면에서 오른쪽은 디렉토리는 로컬 PC의 구조이고

오른쪽 디렉토리는 R.Pi3의 디렉토리 입니다.


가만보니 뭔가 이상합니다.

Pi로 접속했는데 최상위 /(root) 디렉토리 까지 접근이 가능합니다.


혼자만 쓰는 개인 ftp 서버라면 크게 문제될 것이 없지만

여러명이 사용하는 ftp 서버라면 정말 큰 문제 입니다.


그럼 이제 개임 홈 디렉토리 이상의 상위 디렉토리에 접근하지 못하도록 설정하는 방법을

알아 보도록 하겠습니다.






vsftpd 상위 디렉토리 접근 제한 설정


vsftpd는 vsftpd.conf 라는 설정 파일을 기반으로 움직입니다.

vsftpd.conf 는 보통 /etc/ 아래 있습니다.(버전에 따라 다를 수 있습니다.)

우선 vsftpd.conf 부터 열어 보고 내용을 보도록 할께요.


  #sudo vi /etc/vsftpd.conf





vsftpd.conf 에는 여러가지 설정이 있는데요.

반드시 설정해야 할 것 위주로 어떤 설정값들이 있는지 한 번 보겠습니다.


 anonymous_enable

 NO 

 익명의 사용자 접속 허용 여부

 local_enable

 YES 

 로컬 계정 사용자의 접속 허용 여부

 write_enable

 YES 

 write 명령어 허용 여부

 local_umask 

 022 

 로컬 계정 사용자용 umask

 xferlog_enable 

 YES 

 파일전송로그를 남길 것인지 여부

 xferlog_file 

 log 경로 

(디폴트 /var/log/xgerlog) 

 파일 전송 로그 경로 및 파일명

 xferlog_std_format

 YES 

 xferlog 표준 포멧으로 로그를 남길지 여부 

 chroot_local_user

 YES 

 홈 폴더에서 벗어날  없도록 할 지 여부

 chroot_list_enable YES 

 사용자 홈 디렉토리에서 상위로 접근하지 못하도록 하기 위한 

설정으로, chroot_list 사용여부를 설정하고, 사용시 파일의 경로를 지정한다. 

 chroot_list_file

 chroot list 경로

(디폴트 /etc/vsftpd.chroot_list) 

 pam_service_name

 vsftpd  PAM 파일명을 지정


보통 위와 같이 설정을 하면 된다고 합니다.

이중에서 거의 마지막 항목에 있는 chroot_local_user, chroot_list_enable, chroot_list_file 는 반드시 설정을 해주어야 합니다.

그런데 속성의 설정이 조금 애매한 부분이 있습니다.


암튼 위와 같이 설정을 하고 vsftpd.chroot_list 를 만들어 사용자를 추가 해도 이상하게도 상위 디렉토리 접근이 됩니다.


여기에는 버그가 있습니다.


chroot_local_user 이나 chroot_list_enable 둘 중 하나가 NO 이거나

chroot_list_file 에서 사용자 계정이 빠져 있으면 

FTP 접속 시 아래와 같은 문구를 만나게 됩니다.



응답: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

오류: 치명적 오류: 서버에 연결하지 못함


당연히 접속도 안됩니다.



위 속성에서 chroot_local_user 부분을 NO로 수정을 해야 합니다.


 chroot_local_user=NO


그리고 맨 마지막에 한 줄 더 넣어 줍니다.


  allow_writeable_chroot=YES



vsftpd.conf 를 저장하고 서비스를 재시작합니다.

그리고 ftp에 다시 접속해 보면
아래 그림과 같이 홈디렉토리가 최상위 디렉토리로 나오며
더이상 상위로 이동할 수 없는 것을 확인해 볼 수 있습니다.






반응형