2009년 10월 13일 화요일

리눅스&페도라 FTP 서버 구축 및 사용법

우선 리눅스 OR 페도라를 설치하면서 필요없을 것 같아서 FTP서버를 설치 하지 않았다고 하자.그럼 설치를 새로 해주고 설정등을 잡아주고 FTP서버를 기동시켜야 한다.그리고 설치는 했으나 사용을 하지 않는다고 재워 놓았다면

 

#rpm -qa |grep proftpd                  를 입력하여 패키지 파일을 검색해 보고 있으면

 

#rpm -ivh 패키지파일이름                  을 입력하여 설치를 하자.

 

없으면 rpm 파일이라던지 다른 소스 파일을 다운받아서 설치 하도록하자.소스파일 다운 받을 수 있게 친절하게 알려준 블로그나 지식자료들이 오래되어서 그 서버들이 제대로 동작을 안하는 데가 많았다.

본좌는 돌다 돌다 헤메다 헤메다 여기서 다운받다.. http://www.proftpd.org에 접속하면 아래와 같은 그림이 나온다.빨간색으로 표시 해놓은 [gz] 파일을 클릭하여 다운 받도록 한다.

 

 

(위의 사이트에서 빨간색으로 표시된 부분을 클릭하면 알아서 다운로드 창이 뜬다.그러나 약간 서버가 불안해서 안될때도 있다)


[bz2]파일을 선호하면 그것을 다운받아도 된다.개인적인 취향이니 그건 각자가 알아서 선택하도록 한다. 파일을 다운받아 놓을 폴더로 이동한다.


# cd /usr/local/src/               <-- 난 요기다 다운받았다.

 

각자 소스파일을 받아서 활용하는 곳으로 받아서 풀어주길 바란다.이것도 저것도 모르는 초보라면 그냥 따라 해주실 바란다.그리고 압축을 풀어야 하는데 다운 받은 폴더로 이동을 해서 아래와 같은 명령어를 입력해주도록 한다.

 

 

# tar xvfz proftpd-1.3.1.tar.gz

 

(P.S:
압축을 푸는 진행과정이 모니터에 주루룩 올라가면서 나오게 된다.그리고 여기서 TIP하나! Tab 키를 사용하게 되면 긴 소스파일 이름을 다 입력하지 않아도 되므로 자주 활용하도록하자.사용법은 위의  proftpd-1.3.1.tar.gz 을 입력할려고 한다고 하자.그럼 앞의 명령어들을 다 이렇게 다 써놓고

# tar xvfz pro   까지만 입력하고 tab키를 누르게 되면 나머지 소스 파일명이 알아서 입력이 된다.단 주의 사항은 같은 이니셜이 있다면 입력되지 않고 같은 이니셜을 가지고 있는 파일명들이 화면으로 보여준다.그렇게 되면prof 까지 쓰고 다시 tab키를 누르게 되면 나머지 부분이 자동으로 입력되게 된다. )

 

 

자 이제 압축을 다 풀었다면 압축을 풀어 놓은 proftpd 폴더로 이동합니다. 위의 경로에 다운 받으셔서 압축을 풀으셨다면 proftp파일의 경로는 아래와 같을 것이다.

 

# cd /usr/local/src/proftpd-1.3.1            <-- 해당경로로 이동

 

해당경로에서 아래와 같이 쓰자.

 

# ./configure \
--prefix=/usr/local/proftpd \
--enable-autoshadow

 

 

그리고 설정이 잡히면

 

make && make install

 

명령을 순서대로 차례 차례 내리도록 하자.

그리고 설정을 잡아 주셔야 하네~~.. 설정을 잡기위해서 해당 설정파일(proftpd.conf) 을 열어 주자.

 

# vim /usr/local/proftpd/etc/proftpd.conf

 

(PS:
여기서부턴  http://blog.naver.com/ljhamway/150025243686 의 약속의 땅님의 블로그 글을 참고 수정하여 내용을 적었습니다.)

 

------------------------------------------------------------------------------------------
proftpd.conf 설정 내용 확인
------------------------------------------------------------------------------------------

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName   "ProFTPD Default Installation"
ServerType   standalone

-----부연설명----------------------------------------------------------------
보통 ServerType 은 standalone방식과 inetd방식이 있습니다.
ftp나 대형서버같은 경우는 항상 ftp를 열어둬야 겠지만, 저같이 스터디용~서버에 ftp사용자를 막아놓고 일부분만 허용하시는
분은 xinetd로 사용하는것이 서버에 과부하를 줄일수 있는 한가지 방법이겠죠
standalone로 사용하실분은 특별히 다른 기능을 넣을 필요는 없습니다. 유저와 그룹설정만 바꿔주시고 사용하시면 되고
inetd으로 사용하시려는 분들은 좀 복잡한데..
이방식은 따로 xinetd를 설치하셔야 합니다 (페도라 코어4의 기준에는 xinetd가 설치가 되어있지를 않습니다. ) 설치하시기전에
혹시나 설치가 되어 있는지 확인은 하셔야죠^^
RPM으로 설치가 되어 있다면..
RPM -qa | grep xinetd  로 검색하시면 뭔가 나올거에요 안나오면 RPM으로는 설치 안된거고
find /-name xinetd.* 하셔서 관련 파일이 있으면 아마도 설치가 되어 있을것입니다.

설치가 안되있는것을 확인 하셨다면... 그냥 yum으로 설치하시면 되요

yum install xinetd

설치가되셨다면 그다음에는 ....
xinetd가 기동시 불러들이는 폴더는 /etc/xinetd.d/폴더 입니다 일단 이 폴더로 이동을 해봅시다.
그후 proftp가 xinetd로 불려질수 있겠끔 아래의 내용으로 파일을 하나 생성하셔야 합니다

ervice ftp
{
       flags           = REUSE
       socket_type     = stream
       instances       = 50
       wait            = no
       user            = root
       server          = /usr/sbin/proftpd

       bind            = <the-ip-you-wish-to-bind-to>
       log_on_success  = HOST PID
       log_on_failure  = HOST RECORD
}


(PS:

이 부분에서 서버용으로 쓸려고 했기때문에  그래픽으로 보여주는 x-windowd를 설치하지 않아서 standalone방식으로 사용을 하게 되었다.기회가 될 때 이부분은 다시 수정해서 쓰도록 하겠다.부족한 부분과 필요한 부분은 따로 자료를 검색해 봐주길 바란다.)

 

----------------------------------------------------------------------------------
proftpd.conf 내용 계속 ......
-----------------------------------------------------------------------------------

DefaultServer   on

# Port 21 is the standard FTP port.
Port    21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask    022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances   30
# Set the user and group that the server normally runs at.
User    nobody
Group    nogroup <--이렇게 되어 있으면 nobody로 바꾸세요

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
#DefaultRoot ~
DefaultRoot ~ !root (root를 제외한 접속자들이 상위로 기어올라 가지 못하게 하는 부분입니다)


# Normally, we want files to be overwriteable.
<Directory /*>
  AllowOverwrite  on
</Directory>

# A basic anonymous configuration, no upload directories.
<Anonymous ~ftp>
  User    ftp
  Group    ftp
  # We want clients to be able to login with "anonymous" as well as "ftp"
  UserAlias   anonymous ftp

  # Limit the maximum number of anonymous logins
  MaxClients   10

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin   welcome.msg
  DisplayFirstChdir  .message


  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>

</Anonymous>
//설정내용 끝 (자세한 설정은 다른 분들것도 참조하세요)----------------------------

 

 

 

자 이제 설정을 마쳤으니 데몬을 돌려서 우리가 원한 FTP가 동작하는 것을 확인해봐야 하지 않을까?

 

# /usr/local/proftpd/sbin/proftpd  

(xinetd 로 운영하시면 /usr/local/proftpd/sbin/proftpd start)

 

 - warning: unable to determine IP address of 'localhost.localdomain'  
   (OR  warning: unable to determine IP address of '자신의 호스트네임')
 - error: no valid servers configured
 - Fatal: error processing configuration file '/usr/local/proftpd/etc/proftpd.conf'


그럼 부분 위와 같은 드러운 에러 내용을 만나게 돈다.여기 저기 자료를 찾던중 약속의 땅님의 블로그에서 실마리를 찾게 되었다.아래와 같이 명령어를 입력하고 엔터를 치게되면

 

# vim /etc/hosts


-----------------------------------------------
hosts 설정
-----------------------------------------------
# Do not remove the following line, or various programs
# that require network functionality will fail.
::1     localhost.localdomain   localhost

-----------------------------------------------
설정 마침
-----------------------------------------------

 

여기서


::1     localhost.localdomain   localhost         <--- 이부분을 아래와 같이 수정

 

127.0.0.1  localhost.localdomain   localhost

 

주의하실 부분은  도메인을 이용해서 로그인하는 분들께는 추가를 해야할 부분이 있다.

여기서 hostname이 아닌 IP를 이용해서 접속하게 되는데 무슨 소리냐 하면 아래 그림을 보면 리눅스에 접속했을때 사용자@뒤에 붙는것 문자열 중에 IP주소로 쓰여져서 나오는 경우가 있고 아니면 설치를 할때 설정 환경 부분에서 정해준 각자의 호스트 네임으로 문자열이 보여지게 된다.

(사용자 root@ 뒤에 있는 빨간색으로 쳐져있는게 HOSTNAME 이다.)

 

IP주소를 사용 하는 분들은 위의 내용처럼 입력을 하게 되면 에러메세지가 나오지 않고  FTP를 기동 시킬수 있고 HOSTNAME를 사용하는사람들은 아래와 같이 수정하여서 FTP를 기동시키자.

 

예를 들어 호스트 네임이 good 이고  IP주소가 999.999.999.999 이고 도메인이 www.good.com 이라고 하면


-----------------------------------------------


::1     localhost.localdomain   localhost                                                          <--- 이부분을 아래와 같이 수정해 주자.(당연히 이 부분은 지우고 아래의 두 줄만 입력하자.)


-----------------------------------------------


127.0.0.1  localhost.localdomain   localhost
999.999.999.999 
www.good.com  good 

 

라고 수정을 하고 다시 proftpd 를 실행시키면 에러 메세지가 뜨지 않는다. 위 명령어의 의미는

IP 999.999.999.999 와 도메인 www.good.com  과 HOSTNAME good 는 같다라는 명령을 내린것이다.위에서 에러창에 뜬 hostname의 주소를 정해준 거라 생각하면 이해가 쉽게 되겠다.그리고 예를 들어서 good 를 썼으니 오해 없길 바란다.


#/usr/local/proftpd/sbin/proftpd          이렇게 proftp를 실행후 FTP가 돌아가는지 확인할려면

 

#ps -aux | grep proftpd                    라고 입력을 하면 아래와 같은 화면을 볼 수 있다.

 

nobody 23595 0.0  0.4 2465______________________________ proftpd:(accepting connections)
root   22343 0.0  0.6 3009______________________________ grep proftpd

 

 

라는 화면을 볼 수 있다. 보안상 빨간 언더바를 쳐서 나머지 부분을 표시하였다.그러니 황당해 하지말고 nobody 와 root 가 뜨면 성공한 것이다.그리고 우리는 리눅스를 설치할 때 FTP서버를 안 깔았다는 전제하에서 시작한 것이므로 리눅스 명령창에서

 

#setup      을 입력하고 그 다음에 나오는 설정 창에서

 

Firewall configuration 메뉴로 들어가서 커스터 마이즈 메뉴 아래에 [  ] FTP라고 되어 있는 부분을 [ * ] FTP 로 선택해 주자. FTP를 사용하겠다는 인증을 받는 것이므로 중요하다.그리고 나서 클라이언트 프로그램인 LeechFTP 등을 사용하여 쉽게 자료를 올리고 다운 받아 보도록하자.LeechFTP에 대한 사용법은 다음 시간에 다시 하도록 하겠다.

 

급하면 웹을 검색해서 찾아보도록 한다.설정하기가 아주 쉽다.서버프로그램인 proftpd 와 클라이언트 프로그램인 LeechFTP를 잘 구별해서 생각하도록 하자.서버프로그램이 없으면 클라이언트 프로그램을 설치해봐도 아무런 소용이 없다.그리고 FTP관련 기타 명령어는 다음과 같다.


#killall proftpd         //프로세스 죽이기(종료)

# /usr/local/proftpd/sbin/proftpd   //ProFTP 데몬 띄우기


(P.S:

proftp를 죽인후 다시 재생할 땐 안 될 수도 있다. 왜 그러냐면Ftp를 정시키시면 /etc/shutmsg 파일이 생성된다. 이 파일을 지워야 재가동 할 수 있으니 찾아서 지우고 다시 실행하도록 한다.)

 

댓글 없음:

댓글 쓰기