proftpd

最終更新日:2009-12-15

作業メモ

Ubuntu9.04 に proftpd を入れてみた時の作業メモです。

まずはインストールから

sudo aptitude install proftpd

最初にinetd 起動にするか、スタンドアロン起動するか聞かれるので答える。 とりあえずスタンドアロン起動で。

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
以下の新規パッケージがインストールされます:
  libcap1{a} proftpd proftpd-basic{a} proftpd-mod-ldap{a} proftpd-mod-mysql{a} proftpd-mod-pgsql{a}
0 個のパッケージを更新、 6 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。
1520kB のアーカイブを取得する必要があります。 展開後に 2916kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y
拡張状態情報を書き込んでいます... 完了
取得:1 http://jp.archive.ubuntu.com jaunty/main libcap1 1:1.10-14build1 [9156B]
取得:2 http://jp.archive.ubuntu.com jaunty/universe proftpd-basic 1.3.1-17ubuntu1 [697kB]
取得:3 http://jp.archive.ubuntu.com jaunty/universe proftpd-mod-mysql 1.3.1-17ubuntu1 [203kB]
取得:4 http://jp.archive.ubuntu.com jaunty/universe proftpd-mod-pgsql 1.3.1-17ubuntu1 [203kB]
取得:5 http://jp.archive.ubuntu.com jaunty/universe proftpd-mod-ldap 1.3.1-17ubuntu1 [213kB]
取得:6 http://jp.archive.ubuntu.com jaunty/universe proftpd 1.3.1-17ubuntu1 [195kB]
1520kB を 2s 秒でダウンロードしました (617kB/s)
パッケージを事前設定しています ...
未選択パッケージ libcap1 を選択しています。
(データベースを読み込んでいます ... 現在 142064 個のファイルとディレクトリがインストールされています。)
(.../libcap1_1%3a1.10-14build1_i386.deb から) libcap1 を展開しています...
未選択パッケージ proftpd-basic を選択しています。
(.../proftpd-basic_1.3.1-17ubuntu1_i386.deb から) proftpd-basic を展開しています...
未選択パッケージ proftpd-mod-mysql を選択しています。
(.../proftpd-mod-mysql_1.3.1-17ubuntu1_i386.deb から) proftpd-mod-mysql を展開しています...
未選択パッケージ proftpd-mod-pgsql を選択しています。
(.../proftpd-mod-pgsql_1.3.1-17ubuntu1_i386.deb から) proftpd-mod-pgsql を展開しています...
未選択パッケージ proftpd-mod-ldap を選択しています。
(.../proftpd-mod-ldap_1.3.1-17ubuntu1_i386.deb から) proftpd-mod-ldap を展開しています...
未選択パッケージ proftpd を選択しています。
(.../proftpd_1.3.1-17ubuntu1_all.deb から) proftpd を展開しています...
man-db のトリガを処理しています ...
libcap1 (1:1.10-14build1) を設定しています ...

proftpd-basic (1.3.1-17ubuntu1) を設定しています ...
システムユーザ `proftpd' (UID 119) を追加しています...
新しいユーザ `proftpd' (UID 119) をグループ `nogroup' に追加しています...
ホームディレクトリ `/var/run/proftpd' は作成しませんでした.
システムユーザ `ftp' (UID 120) を追加しています...
新しいユーザ `ftp' (UID 120) をグループ `nogroup' に追加しています...
ホームディレクトリ `/home/ftp' を作成しています...
`/usr/share/proftpd/templates/welcome.msg' -> `/home/ftp/welcome.msg.proftpd-new'
 * Starting ftp server proftpd

proftpd-mod-mysql (1.3.1-17ubuntu1) を設定しています ...
proftpd-mod-pgsql (1.3.1-17ubuntu1) を設定しています ...
proftpd-mod-ldap (1.3.1-17ubuntu1) を設定しています ...
proftpd (1.3.1-17ubuntu1) を設定しています ...
libc6 のトリガを処理しています ...
ldconfig deferred processing now taking place
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
拡張状態情報を書き込んでいます... 完了

なんか ftp ユーザが珍しくホームディレクトリ付きで追加されてるのがちょっと気になる。

とりあえずどんな感じでインストールされたかバージョンなどをチェック。

$ aptitude show proftpd
パッケージ: proftpd
状態: インストール済み
自動的にインストールされた: no
バージョン: 1.3.1-17ubuntu1
優先度: 任意
セクション: universe/net
メンテナ: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
展開サイズ: 233k
依存: proftpd-basic, proftpd-mod-mysql, proftpd-mod-pgsql, proftpd-mod-ldap
説明: versatile, virtual-hosting FTP daemon
 ProFTPd is a powerful replacement for wu-ftpd. This File Transfer Protocol daemon supports hidden directories, virtual hosts, and per-directory ".ftpaccess" files. It uses a single main configuration file, with a syntax similar
 to Apache.

 Because of the advanced design, anonymous-FTP directories can have an arbitrary internal structure (bin, lib, etc, and special files are not needed). Advanced features such as multiple password files and upload/download ratios
 are also supported.

 This is a convenience transitional package used to install all provided modules, so you can safely remove it after upgrading. You should alternatively install proftpd-basic and one or more of the other proftpd-mod-* packages if
 you need advanced features.
ホームページ: http://www.proftpd.org/

インストールされたファイルもチェック。

$ dpkg -L proftpd
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/proftpd
/usr/share/doc/proftpd/copyright
/usr/share/doc/proftpd/changelog.gz
/usr/share/doc/proftpd/changelog.Debian.gz

ファイルが全然ない。。。 proftpd-basic のほうがメインかな?

$ dpkg -L proftpd-basic
/.
/etc
/etc/init.d
/etc/init.d/proftpd
/etc/cron.monthly
/etc/cron.monthly/proftpd
/etc/default
/etc/default/proftpd
/etc/pam.d
/etc/pam.d/proftpd
/etc/proftpd
/etc/ftpusers

 *snip*

man proftpd も確認。FILESのところ見ると設定ファイル /etc/proftpd/proftpd.conf なことがわかるね。

FILES
       /usr/sbin/proftpd
       /etc/proftpd/proftpd.conf
       /usr/bin/ftpwho
       /usr/bin/ftpcount
       /usr/bin/ftptop
       /usr/sbin/ftpshut
       /var/log/xferlog
       /var/run/run/proftpd.pid
       /var/run/run/proftpd.scoreboard

/etc/proftpd/proftpd.conf を読んでみる。 DefaultRoot ディレクティブとか MasqueradeAddress ディレクティブとか、 必要そうな設定についてコメント付きで載っているね。

後半のほうに anonymous ユーザの設定がコメントアウトしてのってる。 これがインストール時に作られた ftp ユーザを使うのか。。。

とりあえずユーザを指定してログインしてみたいので DefaultRoot ディレクティブのところを設定してみる。

# Use this to jail all users in their homes
# DefaultRoot                   ~

以上のようにあるので以下のような行を追加。

DefaultRoot                     ~/public_html

sudo /etc/init.d/proftpd restart して再起動。

自分のホームディレクトリに public_html ディレクトリを作って適当なファイルを置いて、ftpでログインしてみる。

$ mkdir ~/public_html
$ touch ~/public_html/test
$ ftp localhost

Connected to localhost.
220 ProFTPD 1.3.1 Server (Debian) [::ffff:127.0.0.1]
Name (localhost:nak2k): 331 Password required for nak2k
Password:
230 User nak2k logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 nak2k    nak2k           0 Nov 28 16:17 test
226 Transfer complete
ftp>

自ユーザでログインできて、ルートディレクトリの指定も確認できたのでとりあえずはOK。

今回はここまで確認することが目的だったのでサービス起動を停止、initスクリプトも無効化する。

$ sudo service proftpd stop
 * Stopping ftp server proftpd
   ...done.
$ sudo update-rc.d -f proftpd remove
 Removing any system startup links for /etc/init.d/proftpd ...
   /etc/rc0.d/K50proftpd
   /etc/rc1.d/K50proftpd
   /etc/rc2.d/S50proftpd
   /etc/rc3.d/S50proftpd
   /etc/rc4.d/S50proftpd
   /etc/rc5.d/S50proftpd
   /etc/rc6.d/K50proftpd

See also.