ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

FTPサーバの導入

『LAN上のNASにアクセス制限をかけるためにubuntuDHCPサーバにしたいから静観』する旨の犯行表明を受けて、UbuntuFTPサーバ立てておこうと思い立った今日この頃。
ちなみにUbuntu機をゲートウェイサーバとして使ってアクセス制限かけるバヤイ、DHCPデーモンの設定と関係無しに iptables の設定で Firewall をごにゃごにゃしないといけないでつよ。マスクとかよくわかってない小生には高いハードル。


さて自分のこと。
ググったら「proftpd」なるパッケージがヒットしました。
Fedora で遊んでたときは「vsftpd」だったから、コレが標準なモノだと思い込んでたけどいろいろあるらしい。
今回は右へ倣う方針で。

インストール

$ sudo apt-get install proftpd
[sudo] password for ubuntu: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libmysqlclient15off libpq5 mysql-common proftpd-basic proftpd-mod-ldap
  proftpd-mod-mysql proftpd-mod-pgsql update-inetd
提案パッケージ:
  proftpd-doc
以下のパッケージが新たにインストールされます:
  libmysqlclient15off libpq5 mysql-common proftpd proftpd-basic
  proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql update-inetd
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
3704kB のアーカイブを取得する必要があります。
この操作後に追加で 8045kB のディスク容量が消費されます。
続行しますか [Y/n]? 
取得:1 http://jp.archive.ubuntu.com intrepid/main mysql-common 5.0.67-0ubuntu6 [60.7kB]
取得:2 http://jp.archive.ubuntu.com intrepid/main libmysqlclient15off 5.0.67-0ubuntu6 [1841kB]
取得:3 http://jp.archive.ubuntu.com intrepid-updates/main libpq5 8.3.5-0ubuntu8.10 [286kB]
取得:4 http://jp.archive.ubuntu.com intrepid/main update-inetd 4.30 [15.1kB]
取得:5 http://jp.archive.ubuntu.com intrepid/universe proftpd-basic 1.3.1-12ubuntu1 [692kB]
取得:6 http://jp.archive.ubuntu.com intrepid/universe proftpd-mod-mysql 1.3.1-12ubuntu1 [202kB]
取得:7 http://jp.archive.ubuntu.com intrepid/universe proftpd-mod-pgsql 1.3.1-12ubuntu1 [201kB]
取得:8 http://jp.archive.ubuntu.com intrepid/universe proftpd-mod-ldap 1.3.1-12ubuntu1 [212kB]
取得:9 http://jp.archive.ubuntu.com intrepid/universe proftpd 1.3.1-12ubuntu1 [194kB]
3704kB を 4s で取得しました (868kB/s)
パッケージを事前設定しています ...

ここで↓の画面が出た。
スタンドアロン か inetd経由かが選べるらしい。

よほど限られたスペックで無い限りスタンドアロンで十分だと思っちゃうけど…メリットあるのかしらん??
インストールは継続。

未選択パッケージ mysql-common を選択しています。
(データベースを読み込んでいます ... 現在 17592 個のファイルとディレクトリがインストールされています。)
(.../mysql-common_5.0.67-0ubuntu6_all.deb から) mysql-common を展開しています...
未選択パッケージ libmysqlclient15off を選択しています。
(.../libmysqlclient15off_5.0.67-0ubuntu6_i386.deb から) libmysqlclient15off を展開しています...
未選択パッケージ libpq5 を選択しています。
(.../libpq5_8.3.5-0ubuntu8.10_i386.deb から) libpq5 を展開しています...
未選択パッケージ update-inetd を選択しています。
(.../update-inetd_4.30_all.deb から) update-inetd を展開しています...
未選択パッケージ proftpd-basic を選択しています。
(.../proftpd-basic_1.3.1-12ubuntu1_i386.deb から) proftpd-basic を展開しています...
未選択パッケージ proftpd-mod-mysql を選択しています。
(.../proftpd-mod-mysql_1.3.1-12ubuntu1_i386.deb から) proftpd-mod-mysql を展開しています...
未選択パッケージ proftpd-mod-pgsql を選択しています。
(.../proftpd-mod-pgsql_1.3.1-12ubuntu1_i386.deb から) proftpd-mod-pgsql を展開しています...
未選択パッケージ proftpd-mod-ldap を選択しています。
(.../proftpd-mod-ldap_1.3.1-12ubuntu1_i386.deb から) proftpd-mod-ldap を展開しています...
未選択パッケージ proftpd を選択しています。
(.../proftpd_1.3.1-12ubuntu1_all.deb から) proftpd を展開しています...
Processing triggers for man-db ...
mysql-common (5.0.67-0ubuntu6) を設定しています ...
libmysqlclient15off (5.0.67-0ubuntu6) を設定しています ...

libpq5 (8.3.5-0ubuntu8.10) を設定しています ...

update-inetd (4.30) を設定しています ...

proftpd-basic (1.3.1-12ubuntu1) を設定しています ...
grep: /etc/inetd.conf: No such file or directory
システムユーザ `proftpd' (UID 104) を追加しています...
新しいユーザ `proftpd' (UID 104) をグループ `nogroup' に追加しています...
ホームディレクトリ `/var/run/proftpd' は作成しませんでした.
システムユーザ `ftp' (UID 105) を追加しています...
新しいユーザ `ftp' (UID 105) をグループ `nogroup' に追加しています...
ホームディレクトリ `/home/ftp' を作成しています...
`/usr/share/proftpd/templates/welcome.msg' -> `/home/ftp/welcome.msg.proftpd-new'
 * Starting ftp server proftpd
   ...done.

proftpd-mod-mysql (1.3.1-12ubuntu1) を設定しています ...
proftpd-mod-pgsql (1.3.1-12ubuntu1) を設定しています ...
proftpd-mod-ldap (1.3.1-12ubuntu1) を設定しています ...
proftpd (1.3.1-12ubuntu1) を設定しています ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place


ん?apt-get install でサーバ起動まで実施してくれるっぽい。

$ service proftpd status
ProFTPd is started in standalone mode, currently running.

$ ftp localhost
Connected to localhost.
220 ProFTPD 1.3.1 Server (Debian) [::ffff:127.0.0.1]
Name (localhost:ubuntu): ubuntu
331 Password required for ubuntu
Password:
230 User ubuntu logged in
Remote system type is UNIX.
Using binary mode to transfer files.

既存のアカウント/パスワードでログインOKですた。はやーい



むすこ起きたorz あとでまとめなおす

起動/停止/サービス登録

  • 起動
$ sudo /etc/init.d/proftpd start
[sudo] password for ubuntu: 
 * Starting ftp server proftpd
   ...done.
  • 停止
$ sudo /etc/init.d/proftpd stop
[sudo] password for ubuntu: 
 * Stopping ftp server proftpd
   ...done.
  • サービス登録

chkconfig コマンドだと思ったら、Debian 系には存在しないとのこと。
http://perltips.twinkle.cc/node/301

/usr/sbin/update-rc.d を使うらしいデスが、使い方がややこしい。
http://www.annodex.net/cgi-bin/man/man2html?update-rc.d+8


迷ったけど、Runレベルを CUI 設定できるという sysv-rc-conf をインストールすることに。

$ sudo apt-get install sysv-rc-conf
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libcurses-perl libcurses-ui-perl
以下のパッケージが新たにインストールされます:
  libcurses-perl libcurses-ui-perl sysv-rc-conf
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
396kB のアーカイブを取得する必要があります。
この操作後に追加で 1442kB のディスク容量が消費されます。
続行しますか [Y/n]? Y
取得:1 http://jp.archive.ubuntu.com intrepid/universe libcurses-perl 1.23-1 [130kB]
取得:2 http://jp.archive.ubuntu.com intrepid/universe libcurses-ui-perl 0.9603-1 [242kB]
取得:3 http://jp.archive.ubuntu.com intrepid/universe sysv-rc-conf 0.99-6 [24.2kB]
396kB を 0s で取得しました (555kB/s)
未選択パッケージ libcurses-perl を選択しています。
(データベースを読み込んでいます ... 現在 17918 個のファイルとディレクトリがインストールされています。)
(.../libcurses-perl_1.23-1_i386.deb から) libcurses-perl を展開しています...
未選択パッケージ libcurses-ui-perl を選択しています。
(.../libcurses-ui-perl_0.9603-1_all.deb から) libcurses-ui-perl を展開しています...
未選択パッケージ sysv-rc-conf を選択しています。
(.../sysv-rc-conf_0.99-6_all.deb から) sysv-rc-conf を展開しています...
Processing triggers for man-db ...
libcurses-perl (1.23-1) を設定しています ...
libcurses-ui-perl (0.9603-1) を設定しています ...
sysv-rc-conf (0.99-6) を設定しています ...


実行してみた。

$ sudo sysv-rc-conf 


GUICUI。もちろんコマンドラインで表示、更新も可能。

ubuntu@ubuntu:~$ sudo sysv-rc-conf --level 2345 proftpd on
ubuntu@ubuntu:~$ sudo sysv-rc-conf --list proftpd
proftpd        0:off	1:off	2:on	3:on	4:on	5:on	6:off

ちなみにランレベルは以下とのこと。「S」って何だべ
init0 = 停止
init1 = シングルユーザーモード
init2 = マルチユーザーモード
init3 = init2に同じ
init4 = init2に同じ
init5 = init2に同じ
init6 = 再起動