proftpd
作業メモ
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