Ubuntu 18.04 버전을 중심으로 작성한 문서입니다.
처음으로 FTP 서버를 구축해보면서 몇가지 시행착오를 겪으며 최종 정리를 하겠습니다.
우선 vsftpd를 이용하면 간단하게 FTP 환경을 구성하고 설정 할 수 있습니다.
전체적으로 간략하게 필요한 명령어 및 구성은 아래와 같습니다.
vsftpd 설정 가이드 |
sudo apt install vsftpd |
sudo nano /etc/vsftpd.conf listen=YES |
sudo nano /etc/vsftpd.chroot_list user_id 추가 ctrl+x >> y >> enter (편집한 내용 저장) |
sudo nano ftpusers root >> #root (root를 주석처리 함으로 ftp에 root계정 접근 허용) ctrl+x >> y >> enter (편집한 내용 저장) |
ufw allow 21/tcp |
ufw allow 50000:51000/tcp |
ufw reload |
위 순서로 진행하면 21번 포트로 FTP 접속이 허용됩니다.
WinSCP나 파일질라등을 통해서 FTP 접속이 원활하게 이루어지는지 확인해 보십시오.
그러면 각 명령어마다 간단한 설명을 붙여보겠습니다.
sudo apt install vsftpd |
vsftpd를 설치합니다. |
sudo nano /etc/vsftpd.conf |
||
vsftpd의 설정을 편집하는 작업입니다. 저는 간단하게 nano 편집기를 사용했지만, vim이나 다른 기타 편집기로 편집하셔도 무방합니다. |
||
listen=YES | ipv4로 들어오는 요청을 수락합니다. |
|
local_enable=YES | 로컬 계정 사용자의 접속을 승인합니다. | |
write_enable=YES | 사용자가 파일을 쓸 수 있습니다. FTP에 파일을 업로드 하기 위해서 필요합니다. |
|
local_umask=022 | 로컬 계정 사용자가 생성한 파일에 대한 권한 설정 부분입니다. |
|
connect_from_port_20=YES | 20번 포트로도 접속을 허용하겠다는 의미입니다. |
|
chroot_local_user=YES | 로컬유저가 root경로로 접근하는 것을 허용합니다. 특정 프로그램 실행을 통해 자동으로 로그나 데이터를 업로드하는 경우, 허용해주는 것이 편리합니다. |
|
chroot_list_enable=YES |
chroot를 할 수 있는 유저 목록을 관리합니다. | |
chroot_list_file=/etc/vsftpd.chroot_list | /etc 경로 아래에 vsftpd.chroot_list라는 파일이 없다면, 그냥 해당 경로에 직접 파일을 생성하고 원하는 계정명을 입력하면 됩니다. |
|
utf8_filesystem=YES | utf8 인코딩을 사용합니다. | |
pasv_enable=YES | FTP는 Active mode와 Passive mode가 존재하는데, passive mode도 사용한다는 의미입니다. python의 ftplib를 이용해서 파일을 업로드 시킬때 passive mode가 꺼져있으면 접속이 안되어서, passive mode를 enable하고, 해당 포트도 방화벽에서 같이 열어두어야 합니다. |
|
pasv_min_port=50000 | passive mode로 접근할 포트 하한 범위 | |
pasv_max_port=51000 | passive mode로 접근할 포트 상한 범위 |
sudo nano /etc/vsftpd.chroot_list |
위에서 chroot_list를 사용하기로 했다면, 해당 파일에 사용자 계정명을 입력해주어야 합니다. |
sudo nano ftpusers |
vsftpd.conf 파일의 설정에 따라서 ftpusers의 내용이 정반대가 될 수 있음을 주의하셔야 합니다! 기본 설정에서는 ftpusers 내부에 있는 계정명은 접근이 불가합니다. root 계정을 이용해서 FTP에 접근하고 싶다면, root 앞에 #을 붙여 주석처리하고 저장하시면 됩니다. |
ufw allow 21/tcp ufw allow 50000:51000/tcp ufw reload |
ubuntu 18.04(아마도 16.04버전 부터)는 ufw를 이용해서 간단하게 방화벽 설정을 바꿀 수 있습니다. 해당 커맨드들을 통해 21번, 50000~51000(passive 연결)을 허용하고, 방화벽을 다시 읽어와서 바로 적용 할 수 있습니다. |
저는 파이썬 코드를 이용해서 오디오 특징 추출을 진행하고,
그 결과를 FTP 서버에 업로드 하기 위해서 FTP 서버를 구축했습니다.
WinSCP로 접속이 잘되는데도 파이썬 코드를 실행하면 접속이 안되거나, 파일 업로드 및 다운로드가 안되어서 반나절을 고생했습니다.. ㅠㅠ
vsftpd를 이용하면 정말 쉽게 FTP 환경을 구축할 수 있습니다!
인터넷 검색 활용도 좋지만 우선 vsftpd.conf 파일 내부의 주석부터 꼼꼼히 읽어보는게 중요한 것 같습니다...
설명을 제대로 읽지도 않고 무작정 하라는대로 따라만했더니 문제가 생길때 어디서부터 손대야될지를 몰라 더 고생한 것 같습니다... 쉬워보이는 문제도 역시 그 원리를 알고 풀어야 진정 내 것이 되는 것 같습니다.
하지만, 저도 아직 초급 개발자로서 혹시 잘못된 내용이 있다면 댓글로 알려주시면 최대한 빠르게 읽고 수정하겠습니다.
그리고,
python을 이용해서 ftp를 활용하는 것에 대해서도 조만간 정리해서 올리도록 하겠습니다.
감사합니다!
'Linux' 카테고리의 다른 글
Windows와 Linux 에서 작성한 .sh 파일의 차이 (0) | 2020.08.06 |
---|