ProFTPD 설치 방법-

일단, MySQL은 설치되었다고 가정하고…저의 경우에는 RedHat 7.2에
기본적으로 들어있는 RPM 으로 설치를 했습니다.

그다음은 ProFTPD 설치를 합니다.
www.proftpd.org 에 가셔서 1.2.5rc1 버전을 다운받습니다.
압축 푸시고
./configure –prefix=/usr –with-modules=mod_sql:mod_sql_mysql
–with-includes=/usr/include/mysql –with-libraries=/usr/lib/mysql
–sysconfdir=/etc –localstatedir=/var
make
make install

-설정 방법-

그리고 mysql에 database를 만듭니다.
database 이름은 proftp로 짓습니다.
그리고 아래의 테이블을 만듭니다. 아래 테이블은 아래에 있던
ProFTP + MySQL 팁에서 가져왔습니다. 단 한가지 다른 점이 있다면
group 테이블에서 Field 에 gname 을 groupname으로 변경했습니다.
1.2.5rc1에서 Default로 groupname을 찾습니다.

* 테이블명: users
+———+——————+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+——————+——+—–+———+——-+
| userid | char(12) | | PRI | | |
| uid | int(10) unsigned | YES | | NULL | |
| gid | int(10) unsigned | YES | | NULL | |
| passwd | char(63) | YES | | NULL | |
| shell | char(255) | YES | | NULL | |
| homedir | char(255) | YES | | NULL | |
| count | int(10) unsigned | | | 0 | |
| valid | int(10) unsigned | YES | | NULL | |
+———+——————+——+—–+———+——-+

* 테이블명: groups
+———–+——————+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———–+——————+——+—–+———+——-+
| groupname | char(12) | | PRI | | |
| gid | int(10) unsigned | | | 0 | |
| members | text | YES | | NULL | |
+———–+——————+——+—–+———+——-+

그리고 /etc/proftpd.conf 를 아래와 같이 편집합니다.
물론 서버명이나 포트, 디렉토리 같은 부분은 여러분에게
맞게 변경해주시기 바랍니다.

ServerName "r2al3ac's FTP server"
ServerType standalone
ServerIdent on "r2al3ac's FTP server ready…"
ServerAdmin "r2al3ac@hananet.net"
DefaultServer on

Port 21

Umask 022

MaxInstances 30

User nobody
Group nobody

#아래 SQLConnectInfo 문에서 proftp는 데이터베이스명이며 아이디와 비밀번
호는
#여러분의 mysql 설정에 맞게 변경해주시면 됩니다.
#보시면 1.2.4 버전때와는 다른점이 있음을 알 수 있습니다.
SQLConnectInfo proftp@localhost:3306 아이디 비밀번호
SQLAuthTypes Backend
SQLAuthenticate on
SQLUserInfo users userid passwd uid gid homedir
shell
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1
WHERE userid='%u'" users
SQLUserWhereClause "valid = 1"
SQLDefaultHomeDir /var/ftp
DisplayLogin welcome.msg
DisplayFirstChdir .message

DefaultRoot /var/ftp
MaxClients 4
MaxClientsPerHost 1
MaxHostsPerUser 1

RequireValidShell off

AllowRetrieveRestart on
AllowStoreRestart on
AllowOverwrite on

<Directory /var/ftp>
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>

</Limit>
<Limit WRITE>
DenyAll
</Limit>
</Directory>

<Directory /var/ftp/pub/*>
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
</Limit>
</Directory>

<Directory /var/ftp/incoming/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR MKD>
AllowAll
</Limit>
</Directory>

-테스트 하기-

1. mysql에서 proftp 데이터베이스에 users 테이블에 사용자를 하나 등록 시
킵니다. 단, 반드시 valid 값을 1로 주셔야 됩니다. 만약 1이 아닐경우에는
로그인이 되지 않습니다.

2. /usr/sbin/prftpd start 를 쳐서 proftpd 를 실행합니다.

3. ftp 나 ncftp 를 사용해서 1번에서 등록해준 사용자와 비밀번호로 로그인
을 해봅니다.

-만약 안된다면-

proftpd.conf 셋팅에 문제는 없는지 확인해보시고,
포트를 다른 걸로 바꿔보시고,
그래도 안된다면 아래와 같은 방법으로 proftpd를 디버그 모드로 실행해서
어디서 어떻게 잘못되었는지 알아보시기 바랍니다.

/usr/sbin/proftpd -d 5 -n -c /etc/proftpd.conf

이렇게 입력하시면 디버그 모드로 실행이 됩니다.

그리고 터미널 창을 하나 더 열어서 ftp 로 접속을 시도해 보시면
어디서 어떻게 잘못되었는지 알 수 있습니다.

-덧붙이는 말-

위에서 SQLAuthenticate 부분을 on 이라고 해놓았는데, 만약
group 테이블을 사용하지 않으시면 SQLAuthenticate users 로
바꿔서 사용하시면 됩니다.

하지만 on으로 해놓아도 별문제 없이 쓰실수 있습니다.

설정문과 관련해서 자세한 것은 proftpd 문서를 참고하시기
바랍니다. 참고로 proftpd.oops.org 나 www.proftpd.org 문서들은
outdate 되어서 1.2.5rc1 과는 차이가 있으므로 proftpd1.2.5rc1을
다운받으면 안에 첨부된 문서를 참조하셔야됩니다.

출처 : Tong – mapoo님의 FTP통

proftpd와 mysql 연동하여 사용하기

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다