FTP(File Transfer Protocol)
인터넷 상에서 파일을 주고 받을 때 많이 사용하는 전송방식입니다.
파일 전송에 촛점을 맞추고 있기에, 다른 프로토콜(http, scp 등)에 비해 속도면에서 우위를 가지고 있으며, 이어받기 등의 부가옵션도 지원합니다.
FTP 역시 SSH와 마찬가지로 서버와 클라이언트로 구성되어 있습니다.
리눅스에서 사용되는 FTP 서버의 종류로는 vsftpd, proftpd, atftpd, tftpd 등이 있으며, 과거에는 proftpd를 많이 사용하였으나, 최근에는 보안이 강화된 vsftpd (very secure FTP daemon)를 기본으로 사용하는 추세입니다.
하모니카 리눅스에서 apt-get 명령을 통해 쉽게 FTP 서버를 설치할 수 있습니다.
■ VSFTP 설치
① 먼저, 지원되는 FTP server 패키지를 확인해 봅니다.
$ apt search ftp | grep server
================================================================================
p atftpd - advanced TFTP server
p atftpd:i386 - advanced TFTP server
v ftp-server -
v ftp-server:i386 -
p ftpd - File Transfer Protocol (FTP) server
p ftpd:i386 - File Transfer Protocol (FTP) server
p ftpd-ssl - FTP server with SSL encryption support
p ftpd-ssl:i386 - FTP server with SSL encryption support
p gesftpserver - sftp server submodule for OpenSSH
p gesftpserver:i386 - sftp server submodule for OpenSSH
v globus-gridftp-server-control-d -
v globus-gridftp-server-control-d -
p globus-gridftp-server-dbg - Globus Toolkit - Globus GridFTP Server Deb
p globus-gridftp-server-dbg:i386 - Globus Toolkit - Globus GridFTP Server Deb
p globus-gridftp-server-progs - Globus Toolkit - Globus GridFTP Server Pro
p globus-gridftp-server-progs:i38 - Globus Toolkit - Globus GridFTP Server Pro
p inetutils-ftpd - File Transfer Protocol server
p inetutils-ftpd:i386 - File Transfer Protocol server
p libglobus-gridftp-server-contro - Globus Toolkit - Globus GridFTP Server Lib
p libglobus-gridftp-server-contro - Globus Toolkit - Globus GridFTP Server Lib
p libglobus-gridftp-server-contro - Globus Toolkit - Globus GridFTP Server Lib
p libglobus-gridftp-server-contro - Globus Toolkit - Globus GridFTP Server Lib
p libglobus-gridftp-server-contro - Globus Toolkit - Globus GridFTP Server Lib
p libglobus-gridftp-server-contro - Globus Toolkit - Globus GridFTP Server Lib
p libglobus-gridftp-server-dbg - Globus Toolkit - Globus GridFTP Server Deb
p libglobus-gridftp-server-dbg:i3 - Globus Toolkit - Globus GridFTP Server Deb
p libglobus-gridftp-server-dev - Globus Toolkit - Globus GridFTP Server Dev
p libglobus-gridftp-server-dev:i3 - Globus Toolkit - Globus GridFTP Server Dev
p libglobus-gridftp-server6 - Globus Toolkit - Globus GridFTP Server
p libglobus-gridftp-server6:i386 - Globus Toolkit - Globus GridFTP Server
p libnet-tftp-perl - Perl module for accessing TFTP servers
p nordugrid-arc-gridftpd - ARC GridFTP server
p nordugrid-arc-gridftpd:i386 - ARC GridFTP server
i A openssh-sftp-server - secure shell (SSH) sftp server module, for
p openssh-sftp-server:i386 - secure shell (SSH) sftp server module, for
p pure-ftpd - Secure and efficient FTP server
p pure-ftpd:i386 - Secure and efficient FTP server
p pure-ftpd-common - Pure-FTPd FTP server (Common Files)
p pure-ftpd-ldap - Secure and efficient FTP server with LDAP
p pure-ftpd-ldap:i386 - Secure and efficient FTP server with LDAP
p pure-ftpd-mysql - Secure and efficient FTP server with MySQL
p pure-ftpd-mysql:i386 - Secure and efficient FTP server with MySQL
p pure-ftpd-postgresql - Secure and efficient FTP server with Postg
p pure-ftpd-postgresql:i386 - Secure and efficient FTP server with Postg
p python-pyftpdlib - Python FTP server library
p tftpd - Trivial file transfer protocol server
p tftpd:i386 - Trivial file transfer protocol server
p tftpd-hpa - HPA's tftp server
p tftpd-hpa:i386 - HPA's tftp server
p twoftpd - a simple secure efficient FTP server (prog
p twoftpd:i386 - a simple secure efficient FTP server (prog
p twoftpd-run - a simple secure efficient FTP server
p uec-provisioning-tftpd - the UEC Provisioning TFTP server
p vsftpd - lightweight, efficient FTP server written
p vsftpd:i386 - lightweight, efficient FTP server written
② 설치하고자하는 패키지(vsftpd)를 확인한 뒤, 아래 apt-get 명령으로 설치합니다.
$ sudo apt-get install vsftpd
================================================================================
[sudo] password for user:
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
vsftpd
0개 업그레이드, 1개 새로 설치, 0개 제거 및 276개 업그레이드 안 함.
111 k바이트 아카이브를 받아야 합니다.
이 작업 후 361 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://ftp.daum.net/ubuntu/ trusty-updates/main vsftpd amd64 3.0.2-1ubuntu2.14.04.1 [111 kB]
내려받기 111 k바이트, 소요시간 0초 (487 k바이트/초)
패키지를 미리 설정하는 중입니다...
Selecting previously unselected package vsftpd.
(데이터베이스 읽는중 ...현재 275580개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../vsftpd_3.0.2-1ubuntu2.14.04.1_amd64.deb ...
Unpacking vsftpd (3.0.2-1ubuntu2.14.04.1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
vsftpd (3.0.2-1ubuntu2.14.04.1) 설정하는 중입니다 ...
vsftpd start/running, process 4081
Processing triggers for ureadahead (0.100.0-16) ...
③ vsftpd 서비스 데몬을 시작합니다.
$ sudo service vsftpd restart
vsftpd stop/waiting
vsftpd start/running, process 4127
④ 클라이언트에서 접속해봅니다. (알ftp, 파일질라 등)
####################
# [참고] FTP 서버 추가 설정 #
####################
FTP server 설치 및 구동은 쉽게할 수 있지만, 좀 더 고급지게(?) 사용하기 위해서는 몇 가지 추가 설정이 필요합니다.
vsftpd 서버에 대한 대부분의 설정은 /etc 밑에 있는 vsftpd.conf 파일에서 정의합니다.
$ sudo vi /etc/vsftpd.conf
■ 익명 사용자 접속 (anonymous_enable)
익명 사용자 접속이란, FTP 접속 시 특정 ID 계정으로 인증받고 접속하는 것이 아니라, 익명(anonymous)의 권한으로 접속하게 되는 경우를 말합니다. 일반적으로 공개(public)된 서버에서 사용하는 방식이며, vsftpd의 기본값은 "NO"이므로, 익명 사용자의 접속은 차단되어 있습니다. 만약 익명접속을 허용한다면 "YES"로 변경합니다.
anonymous_enable=NO
■ 기본 접속 경로 지정
vsftpd를 설치하면 "ftp"라는 이름의 사용자가 기본 등록되고, 이 사용자의 기본 접속 경로는 /srv/ftp 입니다.
(이 경로를 기본 경로로 사용해도 좋지만, 대부분 기본으로 설정하고자하는 경로가 다를 것이므로...)
예를들어 /var/ftp 라는 경로를 기본 경로로 사용하고자 한다면, 아래와 같이 해당 경로에 맞는 디렉터리를 만들고 ftp 사용자의 기본 경로를 바꾸면 됩니다.
$ sudo mkdir /var/ftp
$ sudo usermod -d /var/ftp ftp
※ 위 경로는 "익명(anonymous)" 사용자 접속 시의 기본 경로이며,
FTP 접속 시 서버에 등록된 다른 계정으로 접속한다면,
해당 계정의 홈 경로로 접속되므로 위 경로는 크게 고려치 않아도 됩니다.
(예: "hamonikr"라는 계정으로 접속 시, /home/hamonikr 경로로 접속됨)
■ 계정 사용자 접속
서버에 등록된 계정 사용자들의 접속 가능 유무를 설정하는 것으로, 기본값은 "YES" 입니다.
공개(public) 서버에서 익명(anonymous) 접속만 허용하고, 일반 계정 사용자의 접속은 제한한다면, 해당 값을 "NO"로 수정하면 됩니다.
local_enable=YES
■ 업로드 허용
ftp로 접속한 후, 파일 업로드(write)를 허용할지를 설정하는 것으로, 기본값은 "YES" 입니다.
만약 파일 업로드를 하지 못하도록 제한하고자 한다면, "NO"로 수정하고, 앞에 있는 주석(#)을 지워줍니다.
#write_enable=YES
■ 사용자 계정 상위 디렉터리 이동 제한
FTP로 접속 한 사용자가 자신의 경로 위로 이동하지 못하도록 제한하는 것으로, 기본값은 "YES" 입니다.
#chroot_local_user=YES
■ FTP 접속을 거부할 계정 등록
서버에 등록된 여러 사용자 계정 중에서 FTP 접속을 차단할 계정이 있다면, 아래 파일에 ID를 별도로 등록해 줍니다.
$ sudo vi /etc/ftpusers
baduser1
baduser2
...
■ FTP 서비스 재시작
모든 설정을 마쳤다면, 서비스 데몬을 재시작해야 설정된 내용이 적용됩니다.
$ sudo service vsftpd restart
[요약] FTP 서버 구축
① ssh 서버 설치
$ sudo apt-get install vsftpd
② ssh 서비스 구동
$ sudo service vsftpd restart
③ vsftpd 추가 설정
$ sudo vi /etc/vsftpd.conf
--------------------------------------------------------------
# 개인 서버 구축 가이드 - 전체 목록
[개인 서버 구축 가이드] ① SSH 서버 (openssh-server)
[개인 서버 구축 가이드] ② FTP 서버 (vsftpd)
[개인 서버 구축 가이드] ③ 파일 공유 서버 (samba-초급)
[개인 서버 구축 가이드] ④ 파일 공유 서버 (samba-중급)
[개인 서버 구축 가이드] ⑤ 파일 공유 서버 (samba-고급)
[개인 서버 구축 가이드] ⑥ 파일 공유 서버 (nfs)
[개인 서버 구축 가이드] ⑦ 파일 공유 서버 (autofs)
[개인 서버 구축 가이드] ⑧ DB 서버 (mariadb)
--------------------------------------------------------------
간단하지만 핵심적인 내용을 명확하게 정리해 주셨네요.
클라우드 서비스를 무료로 사용하는 것이 쉬워진 환경에서 직접 FTP 서버를 구축해서 자신의 시스템을 사용하실 분이 대중적인 관점에서 그렇게 비중이 높지는 않지만, 특별한 용도로 자신만의 FTP 서버를 구축해서 사용해야 할 필요성이 있을 때가 분명하게 있습니다.
복잡한 서버 책을 참고하실 필요없이, 이 정도 자상하고 명확한 설명이면 어느 정도 컴퓨터 사용해 보신 분이면 이해해서 바로 FTP 서버 구축해서 적절하게 자신의 용도에 맞게 사용할 수 있으리라 보입니다.
개인 보다는 주로 공공 단체와 종교 기관, 학교, 학원 등과 같은 곳에서 자체 FTP 서버를 구축해서 보안 관리하면서 사용하시면 유익하게 사용하실 수 있겠네요.
참고로 개인적으로 학원, 종교 단체, 학교에서 예전에 다양한 리눅스 배포판의 FTP 서버를 구축해서 관리해 보았는데, 생각보다 많은 실제 사용자분들이 좋다고 하시더라구요.
솔직히 사용하시는 분은 리눅스로 구축했는지도 전혀 모르지만 말입니다. 최종 사용자 입장에선 윈도우, 리눅스 뭐 이런 것이 그렇게 중요하지 않죠. 그저 사용하기 쉽고, 접근성이 편하고, 보안성이 완벽하고, 뭐 새로운 것 배울 필요없이 사용할 수 있다면 제일 좋아하지요.
과거에는 클라이언트는 당연히 윈도우즈를 서버는 리눅스였지만, 최근에는 서버와 클라이언트 모두 리눅스로 적목하는 곳도 점점 많아지고 있는 중이라는 좋은 소식이 많아지고 있습니다. 아주 특수한 경우를 제외하고는 말입니다.
당연하지요. 리눅스 데스크탑도 정점 발전해서 아주 특수한 분야를 제외하곤 충분히 사용할 수 있기 때문이죠. ㅋㅋ
legoboss님의 서버 강의를 열심히 익히시고, 혹시 시간되시면 좀더 전문적으로 알고 싶으신 분은 제가 게시판에 소개한 "리눅스는 이것이다"라는 유튜브 강의 (엄청나게 자상하게 설명했음)을 통해 리눅스와 리눅스 서버의 세계에 푹 빠져보시길 바랍니다. 많은 도움이 되실 것이라 확신합니다.
설령 서버 구축과는 거리가 멀고 관심이 전혀 없으신 분이더라도, 리눅스를 좀더 잘 알고 사용하면 데스크탑 용도로만 사용하는데도 많은 도움이 되니 차분하게 장기적인 시간을 가지고 익혀보고 관심 가져보면 손해 볼 것이 전혀 없습니다. 거기다 알려드린 모든 소프트웨어와 강의는 무료입니다.
오직 당신의 열정과 시간만 투자하시면 됩니다. 거기다 자상하게도 안내해 드리는 마음 마음씨 착한(!) 전문가(!)들이 이 곳 커뮤니티에서 정성껏 돕고 있으니 이 얼마나 즐거운 일입니까?
즐겁게 리눅스 라이프를 즐기시길...