본문 바로가기
개발자의 삶/Server

[라즈베리파이] FTP 서버 만들기

by 나.R.D.(Rule Destoryer) 2016. 2. 26.

우선 라즈베리파이를 ftp 서버를 만들기 위한 간단한 순서를 적어보았다.



 ① vsftp 설치

 ② 계정 생성

1) 계정 생성 : adduser

2) 비밀번호 변경 : passwd

3) 관리 폴더 생성 : mkdir

 ③ vsftp 권한 설정

1) vsftpd.conf

2) vsftp_user_conf



제일 먼저 FTP 서버로 만들어줄 vsftp를 설치하자.

* 설치는 root로 하자. 맨날 귀찮게 sudo 를 앞에 붙여주는 것도 귀찮은 일이다.



 $ apt-get install vsftpd

 



두 번째, 계정 생성 및 비밀번호 변경을 한다.



여기서 잠깐!


계정 생성시, 디렉토리도 같이 지정을 해주기 위해 -D 옵션을 주면 더욱 편리하게 진행할 수 있다.

아래와 같은 추가 작업이 필요하지 않아진다.



 $ /home/downuser



공유할 폴더를 생성한다.


처음에 권한 때문에 많이 헤맸는데... 아.. 다 필요없다.

그냥 루트권한으로 만들어도 디폴트 설정으로 충분히 ftp 다운로드가 가능하다.


세 번째는 아까 전 설치 한 vsftp 를 설정해보자.

다 필요 없고, 내가 생성한 계정만 권한 주는 부분만 보자.



 $ vi /etc/vsftpd.conf


 ...

 anonymous_enable=NO # 익명 로그인 허용 여부, 사용 시 사용자 이름을 모두 익명 처리

 ...

 #write_enable=YES # 로컬 사용자 쓰기 허용 여부

 ...

 chroot_local_user=YES # 로컬 사용자 사용 여부

 chroot_list_enable=YES # 제외 목적 설정 여부

 chroot_list_file=/etc/vsftpd.chroot_list # 제외할 사용자 정보

 ...

 local_root=/usr/ftp # ftp 홈 경로

 ...

 local_enable=YES # 로컬 사용자 로그인 허용 여부

 ...

 #user_config_dir=/etc/vsftpd_user_conf # 사용자별 설정 재정의

 ...

 


chroot_local_user 는 내 로컬 계정을 활성화해주는 부분인 것 같은데, 해석을 잘못 했는 지 보안상 문제가 되는 것.... 하지 말아야 되는 건가? 추후 이 부분은 더 확인할 필요가 있을 듯 하다.

vsftpd.chroot_list 에 해당 계정을 넣었을 때 root의 힘을 얻는 것을 허용하는 부분인 듯하다. 이 부분을 설정하면 상위 디렉토리도 조회가 가능해진다.


..... 영어도 감으로 해석하는 수준이라 어쩔 수 없다. 나에겐 구글 번역기가 있으니까 말이다.


user_config_dir 는 로컬 유저를 모두 풀어놨기 때문에 계정별 권한 등에 대한 부분을 재정의 하는 부분인 듯 싶다.


(출처 : https://security.appspot.com/vsftpd/vsftpd_conf.html )


그 다음 FTP 다운로드를 위한 가장 핵심 설정은 아래와 같다.

필자는 다운로드만 가능한 계정을 만들면 되기 때문에 아래와 같이 설정을 해주었다.


$ vi /etc/vsftpd_user_conf/downuser


 

local_root=/home/downuser

cmds_allowed=ABOR,ACCT,ALLO,APPE,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MODE,NLST,NOOP, OPTS,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,RNFR,RNTO,SITE,SIZE,SMNT,STAT,STOU,STRU,SYST, TYPE,USER,XCUP,XCWD,XPWD













위와 같이 vsftpd_user_conf 디렉토리 안에 사용자계정으로 파일을 만들어주면 된다.


어렵게 찾은 만큼 출처는 잘 보이도록... 가장 핵심 설정

(출처 : http://egloos.zum.com/sakuragis/v/5740235)


이렇게 설정을 하니 ftp로 접속이 잘 되는 것을 확인할 수 있다.



처음에 라즈베리파이가 토렌트 서버로 사용할 목적 중 하나 이기에


다운로드만 가능한 계정을 만들어서 다운로드 되자마자


사용자가 ftp에 접속해서 다운로드할 수 있도록 설정을 하기 위해


다운로드 계정(downuser)의 홈루트인 /home/downuser 에 local_root 를 설정하였으나,


아래와 같이 500 error 를 빵빵 터트리면서



접속이 되지 않는 것이 아닌가!!!!!!


그래서 이렇게 저렇게 설정을 바꿔가면서 찾은 해결방법은 의외로 생각보다 간단했다.


글을 다시 수정했기 때문에 지운 부분을 제외하고 천천히 설정한다면 필자와 같은 문제는 생기지 않을 것이다.


아... 시간 낭비.... 그래도 알았으니 된거다.

반응형

댓글