티스토리 뷰

이번 글에서는 ftp 서버를 설치하는 방법을 설명하려 한다. Apache Web Server 가 http 프로토콜을 이용하여 서버와 클라이언트 사이에 파일을 주고 받는 것이라면, ftp 서버 역시 파일을 주고 받는 역할을 한다. 물론, Apache Web Server 의 역할 중에 중요한 부분은 사용자가 정적파일(HTML, CSS, JavaScript 등)을 요청(request)하면 그 파일을 서버의 저장소에서 찾은 다음, 다시 요청한 클라이언트에게 발송(response)하는 것이다.
반면, ftp 는 File Transfer Protocol이 약자로, TCP/IP 환경에서 파일을 전송하기 위한 프로토콜이다. 클라이언트가 요청하는 파일은 정적파일에 한하지 않고 여러 파일들을 업로드/다운로드까지 할 수 있는 서비스를 말한다. 주로 http 프로토콜은 서버로 부터 정적파일을 클라이언트 컴퓨터로 다운로드 받아서 클라이언트 컴퓨터에 설치돼있는 http 클라이언트 툴, 즉 웹 브라우저가 실행하는 방식이다. ftp 는 파일서버라고 보면 크게 벗어나지 않을 듯 하다. 이 기종간에 제공되는 명령어를 이용해서 원격 컴퓨터간에 파일을 주고 받는 기능을 제공하고, 더구나 로그인하지 않아도 사용할 수 있는 익명계정(Anonymous)도 다운로드 할 수 있게 만든 서비스를 말한다.

ftp 를 두 파트로 구별하여 한쪽은 자료를 쌓아놓고 언제든지 클라이언트에게 파일을 제공할 수 있는 서버가 있어야 하고, 또 한쪽은 필요한 파일을 요청하는 클라이언트가 있어야 하겠다. 먼저 클라이언트 쪽의 툴은 여러가지가 있다. 일반 웹브라우저를 사용해서 되고, 전용 ftp 클라이언트 툴을 써도 된다. 전용 ftp 클라이언트 툴중에 현재 가장 일반적으로 윈도우즈에서 사용하고 있는 프로그램은 ws_ftp(http://www.ipswitch.com/, Shareware), cuteFTP(http://www.globalscape.com/, Shareware), ALFTP(http://www.altools.co.kr/Main/Default.aspx, 개인사용자만 Freeware), FileZilla(http://filezilla-project.org/, Freeware) 등이 있다.

이번엔 서버쪽으로 가보자. 서버쪽 프로그램 즉 ftp 서버 프로그램은 예전에 많이 사용했던 과거 ftp 서버 프로그램하면 떠올랐던 프로그램이 바로 ProFTPD 였다. RedHat Linux 7.x 까지 주로 사용했지만, RedHat Enterprise Linux 가 출시되면서 VsFTPD 가 기본 프로그램으로 포함됐다. 그래서 지금은 vsFTPD(Very Secure FTPD) 가 많이 사용되고 있다.

vsFTPD 는 ProFTPD 에 비해 속도와 보안, 성능이 뛰어나다. 또한 안정성을 보장할 수 있는 훌륭한 ftp 서버용 소프트웨어다. 리눅스뿐만 아니라, Solaris, FreeBSD, HP-UX, IRIX 등 거의 모든 유닉스 계열의 운영체제에서 사용이 가능하다. 요새 새로 구축되는 ftp 사이트들은 대부분 ProFTPD 대신 vsFTPD 를 사용하고 있는 추세이다.

다음은 vsFTPD 를 사용하고 있는 사이트들이다.
-ftp.redhat.com                         -ftp.suse.com                           -ftp.debian.org
-ftp.openbsd.org                       -ftp.freebsd.org                         -ftp.gnu.org
-ftp.gnome.org                          -ftp.kde.org                               -ftp.kernel.org
-rpmfine.net                             -ftp.linux.org.uk                         -ftp.gimp.org
-ftp-stud.fht-esslingen.de          -gd.tuwien.ac.at                        -ftp.sunet.se
-ftp.ximian.com                        -ftp.engardelinux.org                  -ftp.sunsite.org.uk
-ftp.isc.org

vsFTPD 를 설치하는 방법은 크게 3가지다. 첫째는 rpm을 다운로드 받아서 설치하는 것이고, 둘째는 소스를 직접 다운로드받아서 컴파일하고 install 하는 방식이다. 마지막으로 세번째방법은 가장 쉬운 설치방법으로 yum 으로 설치하는 것이다. yum 으로 설치하는 것은 다음 글에서 설명하기로 하고 이번 글에서는 직접 소스를 다운로드받아서 컴파일하고 필요한 설정을 모두 수동으로 설정하는 가장 어려운 방식부터 설명하려고 한다.

먼저, ftp 사이트에 업로드/다운로드가 자유롭게 수행하기 위해서 서버는 SELINUXdisabled 돼야 한다. root 계정으로 switch 하자.


vi 에디터를 이용해서 /etc/sysconfig/selinux 파일을 오픈한다.

vi /etc/sysconfig/selinux

그리고 약 6번째 줄 정도에 가면 아래의 그림처럼 SELINUX 가 있는데 초기값은 enforcing 이다. 이 값을 disabled 로 변환한다.

SELINUX=disabled


저장 후 변경된 SELINUX를 적용하기 위해 재부팅한다.

reboot


재부팅후 root 관리자로 switch 하고 일단 vsFTPD 가 설치되있는지 검사부터 하자.

rpm -qa | grep vsftpd



설치가 안되어 있으니 이제부터 본격적으로 vsFTPD를 설치하자.
먼저, vsFTPD 프로그램을 다운로드 받기 위해 http://vsftpd.beasts.org 사이트를 방문한다.


왼쪽 프레임에 있는 메뉴중 4번째인 [Download vsftpd] 링크를 클릭한다. 그럼 http://vsftpd.beasts.org/#download 로 방문하게 된다.


[Download / support] 섹션에서 첫째줄에 있는 링크인 ftp://vsftpd.beasts.org/users/cevans/ 를 클릭한다.


아래로 쭉 스크롤하여 이 글을 쓰고 있는 현재 가장 최신버전인 [vsftpd-2.2.2.tar.gz] 를 찾고 찾았으면 링크를 클릭하자.


저장하기 위해 [OK] 버튼을 클릭한다.


다운로드가 끝났다. 다운받은 파일을 확인해보고, 이 파일을  /usr/local/src에 복사한다.

cp ./Downloads/vs*  /usr/local/src/

왜 그러냐면, vsFTPD 를 yum 으로 설치할 때와 달리 소스를 다운받아서 컴파일하고 install 해서 설치하는 방법은 특정한 디렉토리가 없다. 그래서 다운로드 받아서 압축을 풀고 거기서 install 하면 바로 그 디렉토리가 프로그램 폴더가 되는 거다. 그래서 별도로 다른 곳으로 복사해서 거기서 작업을 하는게 좋다. 필자는 마침 비어있는 /usr/local/src 디렉토리를 이용하기로 했다. 여러분들은 다른 곳에 해도 당근 된다.


해당하는 디렉토리로 이동한다. 그리고 압축을 풀자.

 tar xvfz vsftpd-2.2.2.tar.gz



압축이 모두 풀렸으면 압축 푼 디렉토리로 이동한다.

cd vsftpd-2.2.2


install 을 생성하기 위해 make 하자.

make


이제 make install 로 설치에 들어간다.

make install


설치가 모무 끝났다. 위의 그림을 보고 눈치빠른 분들을 눈치채셨겠지만, 설치된 데몬파일의 경로는 /usr/local/sbin/vsftpd 이고, 환경설정파일은 vsftpd.conf 이다.

그 다음, 환경설정파일을 /etc/ 디렉토리로 복사한다.

 cp vsftpd.conf /etc/vsftpd.conf

그리고 /etc 밑에 vsftpd 라는 디렉토리를 생성한다.

mkdir /etc/vsftpd

방금 복사한 vsftpd 환경설정 파일을 생성한 디렉토리안으로 링크를 걸자. 이렇게 하는 이유는 yum 으로 설치할 때는 이런 환경설정들이 자동으로 되는 반면, 소스컴파일해서 설치하면 일일히 수동으로 해야하기 때문이다.

ln -s /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf


vsFTPD 서비스도 인증이 필요할 수 있다. anonymous가 기본계정이지만, 특정한 계정만이 ftp 서비스로 로그인하게 하려면 인증작업이 필요한 거다. 두가지 인증방법이 있는데, PAM 방법과 vsFTPD 자체적 방법이다. PAM 방식을 이용하기 위해서는 vsftpd.pam 을 사용하기 때문에 /etc/pam.d 디렉토리로 복사한다.

cp RedHat/vsftpd.pam /etc/pam.d/vsftpd

방문자 기록 등 로그가 필요하기 때문에 로그파일도 복사한다. 로그파일명은 vsftpd.log 이다.

cp RedHat/vsftpd.log /etc/logrotate.d/vsftpd


anonymous 계정으로 ftp 서버에 들어오면 기본 디렉토리는 /var/ftp 디렉토리다. 그런 디렉토리가 애초 없기 때문에 생성해 줘야 한다.

cd /var
mkdir -p ftp/pub


또한 anonymous 계정을 위해 권한을 부여하자. anonymous 사용자의 접속이름인 ftp 를 사용한다.

chown ftp.ftp /var/ftp/pub


그 다음은 서비스 시작하고 중지하고 재시작하기 위한 시작 스크립트를 작성하자. 이 파일의 이름과 위치는 /etc/init.d/vsftpd 이어야 한다.

vi /etc/vsftpd/vsftpd.conf


vi 에디터를 이용해서 아래와 같이 코딩하자. 아래 전부를 복사해서 붙여넣으면 된다.

#!/bin/bash
#
# vsftpd      This shell script takes care of starting and stopping
#             standalone vsftpd.
#
# chkconfig: 35 60 50
# description: Vsftpd is a ftp daemon, which is the program \
#              that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -x /usr/local/sbin/vsftpd ] || exit 0

RETVAL=0
prog="vsftpd"

start() {
        # Start daemons.

        if [ -d /etc/vsftpd ] ; then
                for i in `ls /etc/vsftpd/*.conf`; do
                        site=`basename $i .conf`
                        echo -n $"Starting $prog for $site: "
                        daemon /usr/local/sbin/vsftpd $i
                        RETVAL=$?
                        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
                        echo
                done
        else
                RETVAL=1
        fi
        return $RETVAL
}

stop() {
        # Stop daemons.
        echo -n $"Shutting down $prog: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $RETVAL



시작 스크립트를 실행하기 위한 권한변경하자.

chmod 700 /etc/init.d/vsftpd


방화벽에  ftp(21) 포트 추가 후 
 버튼을 클릭하여 적용하자. 그래야 다른 컴퓨터에서 접근할 수 있지 않겠는가?

system-config-firewall


이제 vsftpd 서비스를 시작한다. 방법은 2가지 중 하나를 사용하면 된다.

service vsftpd start  or  /etc/init.d/vsftpd start


이제 서비스가 잘 되고 있는지 테스트하자. 브라우저를 열고 주소를 이렇게 적는다.

ftp://localhost or ftp://IP


anonymous 가 기본적으로 허용되기 때문에 별도로 계정을 묻지 않는다. 이번엔 IE 로 들어가보자. 브라우저에 따라 그림이 다르게 나타나는 것을 알 수 있다.



pub 디렉토리로 들어가보자. 그리고 다운로드도 받아보자. 현재 필자의 pub 에는 google 의 chrome 설치파일을 넣어놨다.


혹시 아래 그림과 같이 나타나면 /var/ftp/pub 디렉토리가 없어서 그런거다. 디렉토리를 생성하고 ftp 계정에게 권한을 부여하면 된다.



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함