예전에 링크해 놓은 글은 날아갔고… 3년이나 지난 시점이지만, 최근에 다시 리눅스에 FTP 서버를 구축할 일이 생겨서 몇 마디 적어 놓는다. 최근에 라즈베리 파이를 샀기 때문이다.
일단 라즈비안(데비안 기반 라즈베리 파이 전용 OS)이니 vsftpd를 아래 명령어로 가볍게 설치했다.
sudo apt-get install vsftpd
이놈이 ftp 서버들 중에 보안이 좋다고 한다. 이놈으로 구축을 해 보니 실제로 졸라 성가시다.
데비안의 경우 설정파일 위치는 /etc/vsfptd.conf
다.
익명 사용자 접속
난 대용량 파일을 친구한테 전달할 때 FTP를 쓰곤 한다. 그래서 익명 접속을 허용해야 한다. 익명 접속 허용은 이 글을 참고했다 : Set up an anonymous FTP server with vsftpd in less than a minute
사실 익명 접속 허용은 따로 설정할 것도 없이 그냥 된다. 그런데 이놈이 어떤 폴더를 가리키는지 알 수가 없다.
기본적으로 익명 접속을 하면 vsftpd는 /var/ftp
폴더를 가리킨다. anon_root
를 이용하면 익명 사용자가 접속하게 되는 폴더를 변경할 수 있다고 씌어 있는 글들이 있는데 그냥 저것만 해준다고 되는 게 아니다. chroot 설정을 해 줘야 한다고 나오는데, 거기까진 귀찮아서 안 했다.
익명 사용자의 폴더는 그럼 어떻게 사용하는 게 편할까? 폴더를 연결해 버리자. mount
에 --bind
옵션을 주면 폴더를 마운트해 버릴 수 있나 보다.
sudo mount --bind /my/data/folder /var/ftp/public
이렇게 데이터 폴더를 /var/ftp/public
에 연결해 버리면 간단하다. ln -s
는 소용 없다. 심볼릭 링크를 FTP가 따라가지 않고 그냥 파일 하나로 취급한다.
주의점! 마운트할 때 /var/ftp
에 바로 마운트해 버리면 안 된다! 그러면 또 chroot 설정을 요구한다. 반드시 하위 폴더로 마운트한다.
쓰기 가능한 로그인 사용자 접속
앞서 소개한 글에서는 local_enable=NO
로 설정하라고 했다. 그런데 저걸 YES
로 설정하는 게 편하더라. 그럼 로컬 유저로 ftp 로그인을 할 수 있게 된다.
물론 root
와, 슈퍼 유저 권한을 획득하는 명령인 sudo
명령을 사용할 수 있는 계정은 ftp 로그인을 막는 게 좋겠다. ftp 전용 사용자를 생성해서 사용하려고 한다. 그래서 우선 사용자를 추가하자.
sudo adduser ftpuser
위 명령을 내린 다음 질문에 잘 답하면 된다. room number 혹은 방번호도 물어 보는데, 70-80년대 유닉스는 대형 컴퓨터에 여러 사람이 사용하던 컴퓨터라는 사실을 떠올려 보면 왜 저런 걸 물어 보는 지 알 수 있을 거다. 오늘날 사이트 회원가입할 때 주소 물어보는 거랑 비슷한 거다. 역시 필수사항이 아니면 주소도 가라로 적거나 비워 두는 것처럼 adduser
가 하는 질문에도 비밀번호를 제외하고는 답할 의무가 없다. 그냥 엔터 막 치면 된다.
다음으로는 write_enable=YES
로 만들자. 이거 예쓰로 만든다고 익명 사용자가 쓰기 가능해지는 거 아니니 안심하라.
여기까지 하면 컴퓨터 사용자 계정으로 FTP에 막 로그인할 수 있게 된다.
블랙리스트 만들기
자, 설정에 아래 줄을 추가해 주자.
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
userlist_enable=YES
는 사용자 목록 기능을 사용하겠다는 거다.
userlist_deny=YES
는 사용자 목록 기능을 사용하는데, 블랙리스트 기능으로 사용하겠다는 거다. 이걸 NO
로 하면 화이트리스트가 된다.
userlist_file=/etc/vsftpd.user_list
는 사용자 목록 파일 위치를 알려 주는 거다. 알려 줬으니 파일을 만들자.
자기가 좋아하는 에디터로 위 파일을 편집하자.
sudo nano /etc/vsftpd.user_list
그리고 한 줄에 아이디 하나씩 적으면 된다. 지금 우리는 블랙리스트로 사용하기로 했으니 두 개를 적어 준다.
root
pi
이렇게 슈퍼유저 권한이 있는 사용자 둘을 적어 주고, 나간다. (pi
는 라즈베리 파이의 기본 사용자 계정이다.) sudo
명령을 사용할 수 있는 사용자는 역시 슈퍼 유저 권한이 있는 것으로 이해해야 한다. 방금 만든 ftpuser
는 sudo
를 사용할 수 없다.
여튼간에, 이렇게 설정하고 vsftpd를 재시작하자.
sudo /etc/init.d/vsftpd restart
그리고 접속하면 된다.
기타 신경쓸 것
방화벽 혹시 켜져 있을 지도 모른다. 방화벽 설정을 해야 할 지도.
공유기 쓴다면 포트포워드나 DMZ를 사용하라. DMZ는 모든 포트를 개방하게 되니 좀 무섭다. 귀찮아도 포트포워드를 사용하자.
나머지 추천 글
이 글도 괜찮은 것 같다 : [KLDP] vsFTPd 설정
댓글 남기기