'proftpd'에 해당되는 글 3건
- 2008/10/16 proftpd + mysql 사용자 인증 (ubuntu)
- 2008/10/10 proftpd + mysql 가상계정 ftp 운영 관련 문서
- 2008/08/05 proftpd 에서 업로드시 파일생성 시간이 틀릴때.
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 ftpgroup2001 같은 숫자는 본인의 서버에 맞게 절적하게 설정하면 된다.
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
-s /bin/false 처럼 계정에 shell 을 사용하지 않기 때문에
proftpd.conf 에서
RequireValidShell off처럼 옵션값을 넣어준다.
5) mysql 유저정보 테이블 생성.
CREATE TABLE ftpgroups (다음과 같다. (Quota 설정을 사용하지 않았다)
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';
6) 테스트용 계정 입력.
위 생성한 테이블에 알맞는 계정 정보를 입력하면 끝이다.
INSERT INTO `ftpgroups` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');homedir 만 주의해서 입력해주면 된다.(나머지는 알맞는 값 입력, userid,passwd 는 달라야 겠죠.)
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, '', '');
7) 퍼미션을 꼭 맞춰줘야 하는가?
위 예제에서는 uid, gid 를 2001 로 퍼미션을 맞춰줬는데, 다른 값(2005) 으로 넣어줘도 이상은 없다.
다만 위처럼 계정정보에 없어서 uid, gid 가 그대로 나온다.
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
# 따로 정리할 필요까지는 없을 듯(특이사항에 대한 포스팅을 할지도...)
업로드시에 파일생성 시간이 로컬과 틀릴때 옵션에 해주어야 할 것.
TimesGMT off
SetEnv TZ :/etc/localtime이렇게 해주면 로컬시간과 같아진다.UTF-8 로 바꾸는 것은 서버를 갈아엎을때 해야 겠다. ^^;;;






Recent Comment