mysqlを使ってproftpdのアカウント管理

proftpdmysqlはインスト方法は省略します。

まず、proftpdというデータベースを作成して、2つのテーブルを作成。

CREATE TABLE groups (
groupname VARCHAR(30) NOT NULL ,
gid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
members varchar(255) default NULL,
PRIMARY KEY ( groupname ),
UNIQUE KEY gid (gid)
);

CREATE TABLE users (
userid varchar(30) NOT NULL,
password varchar(30) NOT NULL,
uid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
gid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
homedir varchar(255) default NULL,
shell varchar(255) default '/bin/true',
PRIMARY KEY (userid),
UNIQUE KEY uid (uid)
);

でデータベースの作成は終わり。
んで次はproftpdのコンフィグの中身を変える。

/etc/proftpd/proftpd.confで

Include /etc/proftpd/sql.conf

コメントアウトをはずし

んで/etc/proftpd/sql.confを編集する


#
# Choose a SQL backend among MySQL or PostgreSQL.
# Both modules are loaded in default configuration, so you have to specify the \
backend
# or comment out the unused module in /etc/proftpd/modules.conf.
# Use 'mysql' or 'postgres' as possible values.
#
SQLBackend mysql
#
SQLEngine on
SQLAuthenticate on
#
# Use both a crypted or plaintext password
#SQLAuthTypes Crypt Plaintext
#
# Use a backend-crypted or a crypted password
#SQLAuthTypes Backend Crypt
SQLAuthTypes Plaintext
#
# Connection
SQLConnectInfo proftpd@localhost:3306 proftpd proftpd
#
# Describes both users/groups tables
#
SQLUserInfo users userid password uid gid homedir shell
SQLGroupInfo groups groupname gid members

SQLLogFile /var/log/proftpd/sql.log


これで設定ファイルは完成。
plaintextは暗号してない平文なのであまりお勧めはしません。

次にデータベースデータを追加する
グループとユーザを追加。

# /usr/local/mysql/bin/mysql -u root -p proftpd
Enter password: 設定した管理者パスワードを入力

mysql> INSERT INTO groups VALUES ('ftpusers',1000,'');
Query OK, 1 row affected (0.00 sec)

 ※ftpusers = グループ名
 ※1000 = gid

mysql> INSERT INTO users VALUES ('kikuzou',encrypt('test'),1000,1000,'/var/ftp','/bin/true');
Query OK, 1 row affected (0.00 sec)

 ※kikuzou = ユーザ名
 ※test = ユーザのパスワード
 ※1000 = uid
 ※1000 = gid
 ※/var/ftp = ホームディレクト
 ※/bin/true = ユーザのシェル

mysql> exit
Bye
#

んでこれでつなげれるようになりました。

参考サイト

http://kikuz0u.x0.com/memo/hiki.cgi?ProFTPD%A1%A1%A1%C1+MySQL%A4%F2%BB%C8%CD%D1%A4%B7%A4%BF%A5%A2%A5%AB%A5%A6%A5%F3%A5%C8%B4%C9%CD%FD+%CA%D4+%A1%C1

またちょこちょこ躓いたのでデバックの取り方のメモ

emacs /etc/inetd.conf

ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd -d 10 ←デバックレベル10にしてログを吐かせればある程度どこが悪いかわかる


sudo cat proftpd.log

sudo grep -i err proftpd.log

sudo tail -n 50 proftpd.log

mysql -u proftpd -p

sudo tail -f sql.log