Web taemy's Site
지난번 자료를 보고 설정해 봤다.

ubuntu 에서 설정한 것을 정리한다(특별히 다른 부분은 없다)
ubuntu 버전은 8.04 LTS ( hardy ) 버전이다.

1) 일단 관련 패키지를 설치한다.
apt-get install proftpd-mysql
    만 해주면 관련 패키지 같이 설치된다(proftpd 포함)

2) 관련설정은 /etc/proftpd 에 저장된다.
 proftpd.conf  이외에 sql.conf  라고 sql 인증관련 설정이 따로 있다.
 주석(#) 만 해제해 주면 된다.
 proftpd.conf 에서는
Include /etc/proftpd/sql.conf
 부분을 주석해제해 준다.

3) sql.conf 설정.
SQLBackend      mysql
SQLAuthenticate users* groups*
SQLAuthTypes Crypt Plaintext
SQLConnectInfo ftpuser_db@localhost ftpuserid ftppasswd
SQLUserInfo ftpusers userid passwd uid gid homedir shell
SQLGroupInfo ftpgroups groupname gid members
위와 같은 옵션만 맞춰주면 된다.

4) FTP 접속용 로컬계정 생성.
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
2001 같은 숫자는 본인의 서버에 맞게 절적하게 설정하면 된다.
-s /bin/false  처럼 계정에 shell 을 사용하지 않기 때문에
proftpd.conf 에서
 RequireValidShell              off
처럼 옵션값을 넣어준다.


5) mysql 유저정보 테이블 생성.
CREATE TABLE ftpgroups (
        groupname varchar(16) NOT NULL default '',
        gid smallint(6) NOT NULL default '2001',
        members varchar(16) NOT NULL default '',
        KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';

CREATE TABLE ftpusers (
        id int(10) unsigned NOT NULL auto_increment,
        userid varchar(32) NOT NULL default '',
        passwd varchar(32) NOT NULL default '',
        uid smallint(6) NOT NULL default '2001',
        gid smallint(6) NOT NULL default '2001',
        homedir varchar(255) NOT NULL default '',
        shell varchar(16) NOT NULL default '/sbin/nologin',
        count int(11) NOT NULL default '0',
        accessed datetime NOT NULL default '0000-00-00 00:00:00',
        modified datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY (id),
        UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
다음과 같다. (Quota 설정을 사용하지 않았다)

6) 테스트용 계정 입력.
위 생성한 테이블에 알맞는 계정 정보를 입력하면 끝이다.
INSERT INTO `ftpgroups` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');

INSERT INTO `ftpusers` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'test', 'passwd', 2001, 2001, '/var/proftpd/test2', '/sbin/nologin', 0, '', '');
homedir 만 주의해서 입력해주면 된다.(나머지는 알맞는 값 입력, userid,passwd 는 달라야 겠죠.)


7) 퍼미션을 꼭 맞춰줘야 하는가?
 위 예제에서는 uid, gid 를  2001 로 퍼미션을 맞춰줬는데, 다른 값(2005) 으로 넣어줘도 이상은 없다.
사용자 삽입 이미지
다만 위처럼 계정정보에 없어서 uid, gid 가 그대로 나온다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
# 기본 개념은
 1. FTP 의 계정을 실계정이 아닌 mysql 의 데이터 형태의 가상계정으로 처리한다.
 2. proftpd.conf 에 mysql 관련 설정한다.(mysql connection 정보, 계정테이블 정보)
 3. 계정별 Quote 도 설정 가능하다.

# 대략적인 과정을 보면
 1. mysql 컨넥션(DB)을 FTP 용으로 만든다.
 2. FTP 용 DB 에 계정정보 테이블을 만들고, 사용자 정보를 입력한다.
 3. proftpd 의 mysql 설정을 추가한다.
 4. 입력한 사용자 정보로 FTP 에 접속한다.

# proftpd 만 되는가?
 pure-ftpd 라는 FTP 서버도 지원하는 듯 싶다.(확인필요)

# mysql 만 되는가?
 비슷하게 ldap , pgsql(postgresql) 도 지원하는 듯 하다.(확인필요)

# 관련문서 : proftpd + mysql 설정
 * http://jeonbuk.lug.or.kr/bbs/view.php?&bbs_id=doc&page=&doc_num=21
 * http://jinsnet.com/12
 * http://www.howtoforge.com/proftpd_mysql_virtual_hosting
  * http://www.debuntu.org/how-to-ftp-virtual-host-with-proftpd-mysql
 * http://www.khoosys.net/single.htm?ipg=848

# 따로 정리할 필요까지는 없을 듯(특이사항에 대한 포스팅을 할지도...)

이올린에 북마크하기(0) 이올린에 추천하기(0)
저번 문제때문에 UTF-8 로 바꾸려다가 왠지 일을 만드는 듯 하여, 그냥 proftpd 로 바꾸었다.

업로드시에 파일생성 시간이 로컬과 틀릴때 옵션에 해주어야 할 것.
TimesGMT off
SetEnv TZ :/etc/localtime
이렇게 해주면 로컬시간과 같아진다.

UTF-8 로 바꾸는 것은 서버를 갈아엎을때 해야 겠다. ^^;;;

이올린에 북마크하기(0) 이올린에 추천하기(0)