Contents

System/OS
2003.04.23 10:37

[linux] Proftpd 설치 가이드

조회 수 13019 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
가상 FTP서버 (ProFTPd) 

가상 FTP는 FTP데몬만 잘 설치해 주면 크게 문제가 없다. 


1-1 ProFTPd 설치하기 

CD-ROM이나 각 배포본의 FTP에서 RPM으로 다운로드하든지 
http://www.proftpd.org/ 에서 소스로 받든지 간에 여러분의 자유이다. 
필자는 가상FTP를 테스트할 즈음에는 1.2.0pre6 의 버전의 소스를 다운로드 
하여 설치하였다. 

ftp://linux.sarang.net/ 에 접속하면 RPM으로 다운로드하여 설치할 수 
있다. 

소스를 컴파일하여 설치할 경우 

소스를 컴파일할 디렉토리는 /usr/local/src 이고 설치할 디렉토리는 
/usr/local/proftpd 이다. 

# cp proftpd-1.2.0pre6.tar.gz /usr/local/src/ 
# cd /usr/local/src 
# ls 
proftpd-1.2.0pre6.tar.gz 
# tar zxvf proftpd-1.2.0pre6.tar.gz 
# cd proftpd-1.2.0pre6 
# ./configure --prefix=/usr/local/proftpd  
--sysconfdir=/etc --localstatedir=/var/run  
--enable-autoshadow --datadir=/home/ftp 
# make 
# make install 
# mkdir /home/ftp 

RPM으로 설치하는 경우 

# rpm -Uvh proftpd-1.2.0pre6-1.i386.rpm 


소스를 컴파일하여 설치하든지 RPM으로 설치하여 설치하든지 
/etc/inetd.conf 파일을 다음과 같이 주석을 추가해 주어야 한다. 
즉 웹 호스팅 성격에 맞게 Proftpd를 standalone으로 데몬을 
가동하기 위해서이다. 

-----------/etc/inetd.conf --------------------------------- 
# 중략 
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a 
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd 
# 중략 
---------------------------------------------------------- 

그리고 슈퍼데몬을 재가동한다. 

# /etc/rc.d/init.d/inet restart 
또는 
# killall -HUP inetd 

1-2. /etc/proftpd.conf 

이제 마지막 단계인 ProFTPd 설정파일을 편집해 보자. 

---------/etc/proftpd.conf --------------------------------- 

ServerName "ProFTPD ALZZA Default Installation" 
ServerType standalone # standalone으로 설정 
ServerAdmin ftp@linux.ac.kr 
# sendmail virtualtable 을 보라. 
DefaultServer on 
AuthPAMAuthoritative on 
Port 21 
MaxInstances 30 
User nobody 
Group nobody 


AllowOverwrite on 


##Global 설정 VirtualHost까지 영향을 주므로 자원 낭비가 덜하다. ## 

Umask 022 # 각 VirtualHost마다 따로 정의해도 된다. 
DisplayLogin .welcome.msg 
# 원래는 hidden파일이 아닌 welcome.msg이다. 
DisplayFirstChdir .message 
#User ftp # Global로 넣지 않은 게 좋다. 
#Group ftp # Global로 넣지 않은 게 좋다. 
#MaxClients 10 # Global로 넣지 않는다. 
#MaxClientsPerHost 1 # Global로 넣지 않는다 
UserAlias anonymous ftp 
RequireValidShell off 
# Anonymous 접속허용을 위해서는 off로 꼭 설정. 
ShowSymlinks on 
DefaultRoot ~ !san2 
# 위와 같이 DefaultRoot를 설정하면 그룹 "san2"를 제외하고 모두 
# 일반 유저는 기본 Root가 ~HOME/이 됩니다. 
# 또한 (!)을 없애면 그 반대가 됩니다. 

########Global end ################################### 


User ftp # 모든 Anonymous 에 꼭 넣어주어야 한다. 
Group ftp # 모든 Anonymous 에 꼭 넣어주어야 한다. 
#UserAlias anonymous ftp 
# Global로 설정되어 있으므로 UserAlias는 넣을 필요없다. 
MaxClients 10 "죄송합니다. 최대 인원은 %m명입니다." 
MaxClientsPerHost 1 "호스트당 1회만 접속 가능합니다." 

DenyAll 

# 읽기/쓰기/디렉토리 만들기를 허용하기 위해서는 다음 주석제거. 
#AllowALL 



###### 가상 FTP 호스트설정 부분 ########################## 
# ★★★ 주의 ★★★ 
# ProFTPd는 현재의 버전 1.2.0pre6(8포함)은 이름 기반 가상호스트를 
# 지원하지 않는다.(Anonymous) 
# 아래에 설정한 예는 IP 기반 가상호스트의 예이다. 
##################################################### 



ServerName "ftp.linuxer.com" 
ServerAdmin ftp@linuxer.com 

Umask 002 
MaxClients 10 "죄송합니다. 최대 인원은 %m명입니다." 
MaxClientsPerHost 1 "호스트당 1회만 접속 가능합니다." 


User ftp 
Group com # Umask 002 와 관련이 있다. 

DenyAll 



AllowStoreRestart on 
AllowRetrieveRestart on 
# 위의 2개의 지시자는 이어올리기를 위해서는 추가하십시오. 
# 이때 "on" 지시자 사이는 <탭>를 이용하십시오. 


Order Allow,Deny # 컴마(,)다음에 칸을 빈칸을 띄지 않는다. 
Allow from all 
Deny from 192.168.15.,haker.com 
# C클래스 192.168.15.* 와 haker.com 은 쓰기를 금한다. 



### Umask 에 대해서 생각해 보자 ++++++incoming 디렉토리####### 

# umask 는 새로 생성된 디렉토리나 파일에 대해서 퍼미션을 기본적 
# 으로 적용시킨다. 
# 즉 Global 에서 umask 022로 설정되어 있으므로 Anonymous 가 
# 접속하여 새로 생성시킬 수 있는 
# 디렉토리에 대해서 755의 퍼미션, 그리고 파일에 대해서는 644의 퍼미 
# 션을 준다. 

# 잠깐 디렉토리의 소유자에 관해서도 생각해보자. 
# Anonymous가 새로 생성된 디렉토리가 755이므로 이 디렉토리의 소유자 
# 는 root 나 다른 user가 아니고 "ftp" 소유자가 된다. 
# 즉 UserAlias Anonymous ftp이므로 모든 Anonymous 에 대해서 
# 다른 Anonymous가 생성시킨 디렉토리나 파일을 지우거나 바꿀 수 있다. 

# 한가지 더.....Anonymous가 아닌 일반 유저로 들어왔을 경우를 생각해보자. 
# incoming 디렉토리의 퍼미션이 777로 되어 있더라도 Anonymous 가 생성 
# 된 디렉토리나 파일은 지우거나 바꿀 수 없다.(755이므로) 단, incoming 디렉 
# 토리하에서는 퍼미션이 777이므로 생성할 수 있다. 

# ftp.linuxer.com 에 대해서 관리자는 "com" 유저이다. 관리자가 Anonymous 
# 가 생성한 디렉토리나 파일을 지울 수 없다면 관리자라고 할 수 있겠는가? 
# 여기에 그 해법이 바로 Umask 과 웹호스팅 관리자의 능력에 달려있다. 

# /home/com/vir-ftp 의 소유자는 ftp가 아닌 "com" 의 소유자로 해야하고, 
# incoming 하위 디렉토리 에 대해서 Unamsk 070이나 020으로 설정하면 
# 퍼미션은 707 이나 757 이 된다. 
# 즉 소유자가 누가 되든지간에 Others가 지우거나 생성할 수 있는 것이다. 
# 일반 유저로 들어왔을 경우에 해당한 것이다. 

# 이런 방법이 싫다면 Anonymous Group 정도를 VirtualHost 관리자인 
# "com"으로 대체해도 된다. 
# 그리고 Umask 002로 설정하면 775의 퍼미션을 생성되어 "com"유저가 
# 관리할 수 있다..이때는 com 그룹에 "com"유저가 포함되어 있거나 
# 단독으로 "com" 유저만 포함해야 한다. 
# 이유는 "com" 그룹에 포함된 다른 유저가 피해를 줄 수 있기 때문이다. 
# 또는 User 와 Group 에 적어도 관리자가 포함되어 있어야 한다. 
# 왜냐하면 "com" 유저는 고객이고 "root" 권한을 획득할 수 없기 때문이다. 

# 방법은 여러 가지이다. 

# 이처럼 Anonymous 가 FTP클라이언트로 접속하여 디렉토리를 생성 
# 하고 지울 수 있게 하기 위해서는 소유자와 퍼미션 - incoming 디렉토리 
# 에 대한 접근 정책 - 그리고 Umask 의 순서로 관리해야한다. 
# 예를 들어 아무리 Umask 000으로 설정했더라도 incoming 디렉토리에 
# 대한 쓰기 권한이 없다면 Anonymous 는 쓸 수 없다는 것이다..... 

# 좀더 많은 정보를 원한다면 ProFTPD Reference.html 을 읽어 보기 
# 바란다. 





###### VirtualHost 의 정의 ################### 
# ★★★ 주의 ★★★ 
# ProFTPd는 현재의 버전 1.2.0pre6(8포함)은 이름 기반 가상호스트를 
# 지원하지 않는다.(Anonymous) 
# 아래에 설정한 예는 IP 기반 가상호스트의 예이다. 
##################################################### 



ServerName "ftp.linuxer.net" 
ServerAdmin ftp@linuxer.net 

#Umask 002 
# 주석으로 처리되어 있기 때문에 Global 에서 설정한 022를 따른다. 
MaxClients 10 "죄송합니다. 최대 인원은 %m명입니다." 
MaxClientsPerHost 1 "호스트당 1회만 접속 가능합니다." 


User ftp 
Group ftp 
# ftp.linuxe.com처럼 incoming 디렉토리가 정의되어 있지 않기 
# 때문에Anonymous는 디렉토리를 생성할 수 없고 따로 지정할 필요도 
# 없다. 

DenyAll 




-------------end ------------------------------------------- 

설정파일 편집이 모두 끝났으면 Anonymous가 접근할 수 있는 디렉토리를 
만들어주자. 

# su com 
$ mkdir ~com/vir-ftp 
$ mkdir ~com/vir-ftp/pub incoming 
$ chmod 705 ~com/vir-ftp/pub 
$ chmod 707 ~com/vir-ftp/incoming 
$ su net 
Password : ****** 
$ mkdir ~com/vir-ftp 
$ mkdir ~com/vir-ftp/pub 
$ chmod 705 ~com/vir-ftp/pub 

FTP데몬을 재가동한다. 

# /etc/rc.d/init.d/proftpd restart 

이제 Anonymous 가 접속할 때 보여주는 .welcome.msg 파일도 만들어 
주자. vir-ftp 밑에 이 파일이 존재하면 된다. 

----------~HOME/vir-ftp/.welcome.msg ---------------------- 
환영합니다...... 
ProFTPd Alzza Linux 6.0 2.2.12(안정) 
ftp://%L/ 

o 남은 용량 : %F KB 
o 현 사용자 수 : %N/%M (하나의 호스트당 1명까지 접속 허가합니다) 
o %R의 %u(%U)님이 접속한 
o 현 시각은 %T년입니다. 

Admin-mailto:%E 
-----------end -------------------------------------------- 

위의 결과는 

----------------------------------------------------------- 
환영합니다...... 
ProFTPd Alzza Linux 6.0 2.2.12(안정) 
ftp://ftp.linux.ac.kr/ 

o 남은 용량 : 302868 KB 
o 현 사용자 수 : 2/10 (호스트당 1회 접속만 허가합니다) 
o 192.168.12.5의 UNKNOWN(anonymous)님이 접속한 
o 현 시각은 Tue Sep 14 22:05:36 1999년입니다. 

Admin-mailto:ftp@linux.ac.kr 
----------------------------------------------------------- 
1.2.pre6 버전을 제외한 그 이상의 버전은 "%F KB" 대신 "%f"로 
기입하면 Mb로 출력됩니다. 


이로써 가상 FTP 설정도 모두 끝났다. 


?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
1173 System/OS 해커스랩 깨기.. 후후.. ㅋㅋ file hooni 2013.04.23 18413
1172 Etc 플라스터(Plaster) 수업 내용 secret hooni 2016.05.24 0
1171 Develop 프로그램 문서 관리 (Doxygen) hooni 2013.04.23 16385
1170 Develop 프로그래밍에서 foo, bar 함수의 유래 file hooni 2013.06.25 21252
1169 Develop 프로그래밍 소스 관련 사이트.. hooni 2013.04.23 16485
1168 Develop 페이팔에서 돈 찾기 (Paypal withdraw) file hooni 2014.02.20 11372
1167 Etc 티스토리 테이블 html,css 구문 hooni 2013.11.03 15950
1166 System/OS 콘솔에서 패스워드 걸린 zip 압축하는 명령 hooni 2018.03.02 937
1165 System/OS 컴파일러 수업 자료(교재 : 컴파일러 입문) file hooni 2003.04.23 21966
1164 Develop 캘리포니아 운전면허 족보 file hooni 2017.06.12 734
1163 Etc 캘리포니아 운전면허 문제 file hooni 2017.07.22 974
1162 Develop 최근 논문 자료 (2011/01/03, 만현형한테 보낸거..) secret hooni 2013.04.23 10366
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 98 Next
/ 98