FTPサーバの導入
『LAN上のNASにアクセス制限をかけるためにubuntuをDHCPサーバにしたいから静観』する旨の犯行表明を受けて、Ubuntu に FTPサーバ立てておこうと思い立った今日この頃。
ちなみに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
GUI な CUI。もちろんコマンドラインで表示、更新も可能。
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 = 再起動