がらくたネット

アフィリエイト広告を利用しています


ProFTPD

ProFTPD

ProFTPDについて 本家サイト

LIMIT LOGINってのはserver configかVirtualHostかAnonymousコンテキストしか有効ぢゃないのだよ。これにはまった。 その他のLIMITブロックはどこでも使えるんだけどねー。LOGINはスペシャルコマンドなんだ!って記述があったさ。

SL6で

SL6でのお話をメモ

proftpdはepelリポジトリにある

yum install proftpd --enablerepo=epel
chkconfig proftpd on

設定ファイル達

/etc/blacklist.dat
/etc/dhparams.pem
/etc/ftpusers ログインを拒否するユーザ一覧
/etc/pam.d/proftpd 認証設定ファイル
/etc/proftpd.conf 本体設定ファイル
/etc/sysconfig/proftpd 設定ファイル

デフォルトのままで、一般ユーザがログインしたらホームディレクトリがトップディレクトリになる

mod_wrapを有効にしてユーザ毎のアクセスコントロールを設定できる

vi /etc/proftpd.conf
 LoadModule mod_wrap.c
 TCPAccessFiles ~/etc/ftp.allow ~/etc/ftp.deny
~(チルダ)をつけるとユーザ毎のホームディレクトリを指し示す
 
cat ~/etc/ftp.deny
proftpd: all
 
cat ~/etc/ftp.allow
proftpd: xxx.xxx.xxx.xxx
ファイルがなければ、制限なし

ログファイルの件

ServerLog [path]を設定するとサーバに関する全てが出力されるね ExtendedLog [path]を設定するとカスタムログファイルが出力されるね

RPMパッケージの作成

CentOS 5.5の環境で作成してみる。OS最小インストール+開発環境のみ選択直後の状態。 rootユーザで実行する。純粋な環境で実行するためにRPMパッケージの追加等もリポジトリは利用せずDVDを利用する。

  1. 必要なパッケージをDVDからインストール
    mount /dev/cdrom /mnt
    cd /mnt/CentOS
    rpm -ihv mysql-devel-5.0.77-4.el5_4.2.i386.rpm mysql-5.0.77-4.el5_4.2.i386.rpm perl-DBI-1.52-2.el5.i386.rpm
    rpm -ihv postgresql-devel-8.1.18-2.el5_4.1.i386.rpm postgresql-8.1.18-2.el5_4.1.i386.rpm
  2. ソースファイルをダウンロード
    wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3b.tar.bz2
  3. 展開してspecファイルを取り出す
    tar jxf proftpd-1.3.3b.tar.bz2
    cp proftpd-1.3.3b/proftpd.spec /usr/src/redhat/SPECS
  4. ソースファイルをコピー
    cp proftpd-1.3.3b.tar.bz2 /usr/src/redhat/SOURCES
  5. パッケージ作成
    cd /usr/src/redhat/SPECS
    rpmbuild -ba --with mod_tls --with mod_sftp --with mod_radius --with mod_ldap \
     --with mod_wrap --with mod_wrap2 --with mod_wrap2_file --with mod_wrap2_sql \
     --with mod_sql --with mod_sql_mysql --with mod_sql_postgres \
     --with mod_rewrite --with mod_ifsession --with mod_facl --with mod_quotatab \
     --with mod_quotatab_file --with mod_quotatab_sql --with mod_ban --with mod_ctrls_admin --with mod_site_misc \
     --with ipv6 --with ctrls --with dso --with lastlog --with nls proftpd.spec
  6. パッケージは/usr/src/redhat/RPMS/i386に作成されるので適宜インストールする

x86_64の場合、proftpd.specのconfigure行に細工が必要かも

220行目に挿入
--with-pkgconfig=/lib64/pkgconfig \
pkgconfig/proftpd.pcを探しにいくのだけども、どうもパスがおかしくなる。
Defaultではlib/pkgconfigなんだけど、specファイルではprefixに/usrが指定されていてlibdirが/usr/lib64に設定される。
この結果、/usr/lib/pkgconfigを探しにいくんだけど実際には/usr/lib64/pkgconfigにあるんだよね。

contrib

ソースファイルのcontribディレクトリにはサードパーティ製モジュール等がある。ここにftpasswd等の便利なツールがあるのでインストールしておくのが良いとおもわれる。RPMやソースからのインストールでも自動的にはインストールされないので手動でインストールしてあげる。

cd contrib
install -m 0755 ftpasswd /usr/bin
install -m 0755 ftpmail /usr/bin
install -m 0755 ftpquota /usr/bin
これらは全てPerlスクリプトで記述されている。