MySQLでProFTPDの認証(mod_sql_mysql)

MySQLを利用してProFTPDの認証を行う方法を調べ、うまくいったようなので公開しておきます。以下ではVinelinux2.6r4でテストしてみました。

ProFTPDのインストール

VineLinuxでMySQLを使って認証するにはソースからインストールする必要があります。

  1. The ProFTPD Project: Downloading and mirror sitesproftpd-1.2.10rc1.tar.gzをダウンロードします。
  2. 解凍します。
    $ tar zxvf proftpd-1.2.10rc1.tar.gz
  3. configureします。
    $ ./configure \
    --prefix=/usr \
    --exec-prefix=/usr \
    --mandir=/usr/share/man/man8 \
    --sysconfdir=/etc \
    --with-includes=/usr/include/mysql \
    --with-libraries=/usr/lib/mysql \
    --with-modules=mod_wrap:mod_sql:mod_sql_mysql
  4. makeします。
    $ make
  5. 事前にVine標準のproftpdをアン・インストールしておきます。
    $ su
    # rpm -e proftpd
  6. コンパイルしたProFTPDをインストールします。
    # make install
  7. 起動スクリプトのインストールをします。
    # cp contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd
    # chmod 755 /etc/init.d/proftpd
    # /sbin/chkconfig proftpd on

MySQL, ProFTPDの設定

  1. MySQLのテーブルを作成します。また、このデータベースのアクセス権を適切に設定しておいてください。
    CREATE TABLE groups (
      `groupname` varchar( 30 ) NOT NULL default '',
      `gid` smallint( 5 ) unsigned NOT NULL default '2000',
      `members` varchar( 255 ) default NULL ,
      PRIMARY KEY ( `groupname` ) ,
      UNIQUE KEY `gid` ( `gid` )
    ) TYPE = MYISAM ;
    
    CREATE TABLE users (
      `userid` varchar( 30 ) NOT NULL default '',
      `passwd` varchar( 30 ) NOT NULL default '',
      `uid` smallint( 5 ) unsigned NOT NULL default '2000',
      `gid` smallint( 5 ) unsigned NOT NULL default '2000',
      `homedir` varchar( 255 ) default NULL ,
      `shell` varchar( 255 ) default '/bin/true',
      PRIMARY KEY ( `userid` ) ,
      UNIQUE KEY `uid` ( `uid` )
    ) TYPE = MYISAM ;
    		
  2. /etc/proftpd.confの設定をします。
    ServerName "ProFTPD Server"
    ServerType standalone
    DefaultServer on
    Port 21
    User nobody
    Group nobody
    
    # ドット・ファイルを含め、すべてのファイルを表示したい時に指定
    ListOptions "-a"
    
    SQLConnectInfo DATABASE_NAME@localhost MySQL_USER MySQL_PASS
    SQLAuthenticate on
    
    # SQLAuthTypesをBackendにするとMySQLのPASSWORD関数で暗号化される
    SQLAuthTypes Plaintext
    
    # SQLMinUserUID, SQLMinUserGID未満のユーザーは
    # ログインユーザーはSQLDefaultUID, SQLDefaultGIDの値として動作する。
    SQLMinUserUID 500
    SQLMinUserGID 100
    
    # ユーザーディレクトリが存在しなければ自動的に生成する
    SQLHomedirOnDemand on
    
    # 以下はVineの初期値と同じにしました。
    # 必要なら適当に変更してください。
    Umask  022
    TimesGMT  FALSE
    MaxInstances  30
    User		  nobody
    Group		  nobody
    
    		

なお、ここで書かれたようにProFTPDをバージョンUPするとNLSTのオプション指定ができなくなります。ffftpなどではLISTコマンドでファイル名を取得するように設定してください。

MySQLのページ トップへ

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org