PureFTPdをDebian/PPCに入れてみました。
参考にしたサイト
PureFTPd配布元 http://www.pureftpd.org/project/pure-ftpd
PureFTPdオプション一覧 http://homepage.mac.com/proc/pureftpd/option.html
(いつの間にかサイトを閉鎖されておられました。すごく有用でありがたかったんですが・・・今までありがとうございました)
PureFTPdは、システムにユーザを追加せず、FTP専用のユーザを追加できたり(Virtual User)、1台のPCでアドレスごとに複数のサーバを設定できる?(Virtual Server)機能など、多機能でおもしろいです(よくわかってないけど(^ ^;
chrootしても、別のディレクトリをmount --bindすることでリンクさせることができます。私の環境(Debian 3.1sarge PPC版)では、pureftpd.confというファイルは存在せず(pureftpd.confを編集することで設定すると解説されているサイトが多いので…環境とかバージョンによって違うんでしょうか?)、-Eなどのオプションをつけて起動させることで設定します。またオプションを付けてユーザすることで、ユーザごとの設定ができます。ソースからインストールする場合は、--withや--withoutでオプションをつけてconfigureして、より詳細に自分用にカスタマイズできるようです。
1.インストール
インストールすると、pure-ftpd-commonもインストールされます。スタンドアローンで起動するか、inetd経由で起動するか聞かれます(この項ではスタンドアローンで使用する際の使用法を解説していきます)。あと、なんだったかな、もう1つなんか聞かれますが、こっちは無効にしてても基本的な機能は使えます(^ ^; dpkg-reconfigure pure-ftpd-commonで再設定できます。
いきなり起動している(していなければそれでいいです)ので、ちゃんと設定するまで終了しておきます。
システムを起動するたびにPureFTPdが起動するのを止めるには、/etc/rc2.d以下(私の環境はランレベル2なので)にあるS20pure-ftpdというファイルをリネームします。どんな名前でもいいと思いますが、ここではとりあえずno_S20pure-ftpdという名前に変更します。
# mv /etc/rc2.d/S20pure-ftpd /etc/rc2.d/no_S20pure-ftpd
pure-ftpdをinitedから起動させないようにするには以下のようにすればいいようです。(知らなかった(^_^; 便利)
2.基本的な設定
まず、グループとユーザを追加します。インストールしたときに、端末に追加してるような設定が出ていたような気もしますが(^ ^; 追加できていなかったら、以下。
PureFTPdのVirtualUserではなく、システムのユーザーです。VirtualUserのみでは、ディレクトリに対して細かいアクセス権の設定ができないために追加しておきます(No.4で解説します)。
公開用のディレクトリを用意します。ディレクトリやパーミッションは各自の環境に合わせて設定してください。
ユーザを追加します。システムのユーザではなくて、Virtual Userの追加です。Virtual関係は、pure-pwコマンドで全部できたと思います(^ ^; ここでは、FTP専用のユーザhogeを追加します。
この後、パスワードを2度聞かれますので、入力します。ユーザの追加コマンドでやっているのは、/etc/pureftpd.passwdにユーザ情報を書き込む作業です。私の環境では、/etc/pure-ftpd/pureftpd.passwdでした。順序で言えば、ユーザを追加したあと、/etc/pureftpd.pdbファイル(私の環境では、/etc/pure-ftpd/pureftpd.pdb)に設定を追加して適用させないといけないのですが、-mオプションを追加することで、自動的にやってくれます。-uはuidの指定、-dオプションは、chrootさせるという設定です。ここで、/etc/pure-ftpd/pureftpd.passwdを指定してやらないといけなかったかも・・・わかりしだい書き換えます(^ ^;
3.起動方法
で、起動してみましょう。ここで注意しないといけないのは、デフォルトのまま起動させると、pureftpd.pdbファイルが、/etc/pureftpd.pdbにあると思われてしまうことです。Debianでは、/etc/pure-ftpd/pureftpd.pdbにありましたので、そう指定して起動します。(やらなくてもよかったかも・・・これもわかりしだい書き換えます(^ ^;・・・やらない方を試してないですが、やっておいた方が無難でしょう。
オプションとしては、-E(anonymousユーザのログインを禁止する)、-k 90(ディスク容量が残り90%になったら書き込みを禁止する)、-C 5(同一IPからの接続数を5に限定。数字は任意)などがあります。環境に合わせて設定します。
4.パーミッションの詳細な指定
(2014.09.27追記)
例えば、以下のような構成を取りたいとします。
Publicは、全ユーザーが表示・追加・編集は可能だが、削除は所有者のみできるようにします。
Private配下には、各ユーザーのプライベートなディレクトリを配置して、ディレクトリ内は各ユーザーしか表示・操作できないようにします。
このようなPrivateディレクトリの作成するには、以下のようにします。
まず、システム自体のユーザーをVirtualUser(Pure-ftpd専用のアカウント)ごとに作成します。
上記で追加したユーザーを元にVirtualUserを作成します。ここではVirtualUserとして、ftphogeAとftphogeBを作成しています。それぞれシステムのユーザー、hogeAとhogeBに関連付けています。
Private/hogeAの所有者とパーミッションを変更します。
Publicには、特殊なアクセス権(スティッキービット)を設定します。
(2014.09.27追記終わり)
その他、おもしろいコマンドとしては、pure-ftpwhoがあります。現在ログインしているユーザーをグラフィカルに表示してくれます。
FTPで生のユーザー名とパスワードが流れるのが不安なら、SSL/TLSで暗号化してみてください。データ自体は暗号化されないですが、接続セッションは暗号化されますので、ユーザー名とパスワードは生で流れることはないです。
詳しくは、READ ME.TLS 日本語訳をご覧ください。
(2011.07.18 追記)最近のバージョンだと、どうもデータも暗号化されるっぽいです。ちらっと英語のReadMeを読んだだけなので、違うかもしれませんが・・・。
随時情報は追加します。
参考にしたサイト
PureFTPd配布元 http://www.pureftpd.org/project/pure-ftpd
(いつの間にかサイトを閉鎖されておられました。すごく有用でありがたかったんですが・・・今までありがとうございました)
PureFTPdは、システムにユーザを追加せず、FTP専用のユーザを追加できたり(Virtual User)、1台のPCでアドレスごとに複数のサーバを設定できる?(Virtual Server)機能など、多機能でおもしろいです(よくわかってないけど(^ ^;
chrootしても、別のディレクトリをmount --bindすることでリンクさせることができます。私の環境(Debian 3.1sarge PPC版)では、pureftpd.confというファイルは存在せず(pureftpd.confを編集することで設定すると解説されているサイトが多いので…環境とかバージョンによって違うんでしょうか?)、-Eなどのオプションをつけて起動させることで設定します。またオプションを付けてユーザすることで、ユーザごとの設定ができます。ソースからインストールする場合は、--withや--withoutでオプションをつけてconfigureして、より詳細に自分用にカスタマイズできるようです。
1.インストール
# apt-get install pure-ftpd他にもMySQLでユーザを管理するpure-ftpd-mysqlなどがあるようですが、よくわかりません(^ ^;
インストールすると、pure-ftpd-commonもインストールされます。スタンドアローンで起動するか、inetd経由で起動するか聞かれます(この項ではスタンドアローンで使用する際の使用法を解説していきます)。あと、なんだったかな、もう1つなんか聞かれますが、こっちは無効にしてても基本的な機能は使えます(^ ^; dpkg-reconfigure pure-ftpd-commonで再設定できます。
いきなり起動している(していなければそれでいいです)ので、ちゃんと設定するまで終了しておきます。
# ps auwx | grep pure-ftpdこれでpure-ftpd関係のプロセスが出てきますので、killしましょう。kill 3659とか。
pure-ftpdをinitedから起動させないようにするには以下のようにすればいいようです。(知らなかった(^_^; 便利)
# update-rc.d -f pure-ftpd remove
2.基本的な設定
まず、グループとユーザを追加します。
PureFTPdのVirtualUserではなく、システムのユーザーです。VirtualUserのみでは、ディレクトリに対して細かいアクセス権の設定ができないために追加しておきます(No.4で解説します)。
# groupadd ftpgroup # useradd -g ftpgroup -d /dev/null -s /etc ftpuser
公開用のディレクトリを用意します。ディレクトリやパーミッションは各自の環境に合わせて設定してください。
# mkdir /home/ftp # chown -R root:ftpgroup /home/ftp # chmod 755 /home/ftp
ユーザを追加します。システムのユーザではなくて、Virtual Userの追加です。Virtual関係は、pure-pwコマンドで全部できたと思います(^ ^; ここでは、FTP専用のユーザhogeを追加します。
# pure-pw useradd hoge -m -u ftpuser -d /home/ftp
この後、パスワードを2度聞かれますので、入力します。ユーザの追加コマンドでやっているのは、/etc/pureftpd.passwdにユーザ情報を書き込む作業です。私の環境では、/etc/pure-ftpd/pureftpd.passwdでした。順序で言えば、ユーザを追加したあと、/etc/pureftpd.pdbファイル(私の環境では、/etc/pure-ftpd/pureftpd.pdb)に設定を追加して適用させないといけないのですが、-mオプションを追加することで、自動的にやってくれます。-uはuidの指定、-dオプションは、chrootさせるという設定です。
3.起動方法
で、起動してみましょう。ここで注意しないといけないのは、デフォルトのまま起動させると、pureftpd.pdbファイルが、/etc/pureftpd.pdbにあると思われてしまうことです。Debianでは、/etc/pure-ftpd/pureftpd.pdbにありましたので、そう指定して起動します。
# /usr/sbin/pure-ftpd -E -k 90 -l puredb:/etc/pure-ftpd/pureftpd.pdb &
オプションとしては、-E(anonymousユーザのログインを禁止する)、-k 90(ディスク容量が残り90%になったら書き込みを禁止する)、-C 5(同一IPからの接続数を5に限定。数字は任意)などがあります。環境に合わせて設定します。
4.パーミッションの詳細な指定
(2014.09.27追記)
例えば、以下のような構成を取りたいとします。
ftp - Document(0755) - Public(1777) - Private(0755) - hogeA(0700) - hogeB(0700)Documentは、ftpgroupに所属するユーザーは表示やダウンロード可能だが追加・編集・削除はできないようにします。特に何もしなくてもこうなると思います。
Publicは、全ユーザーが表示・追加・編集は可能だが、削除は所有者のみできるようにします。
Private配下には、各ユーザーのプライベートなディレクトリを配置して、ディレクトリ内は各ユーザーしか表示・操作できないようにします。
このようなPrivateディレクトリの作成するには、以下のようにします。
まず、システム自体のユーザーをVirtualUser(Pure-ftpd専用のアカウント)ごとに作成します。
# useradd -g ftpgroup -d /dev/null -s /etc hogeA # useradd -g ftpgroup -d /dev/null -s /etc hogeB
上記で追加したユーザーを元にVirtualUserを作成します。ここではVirtualUserとして、ftphogeAとftphogeBを作成しています。それぞれシステムのユーザー、hogeAとhogeBに関連付けています。
# pure-pw useradd ftphogeA -m -u hogeA -d /home/ftp # pure-pw useradd ftphogeB -m -u hogeB -d /home/ftp
Private/hogeAの所有者とパーミッションを変更します。
# chown -R hogeA:ftpgroup /home/ftp/Private/hogeA # chmod 700 /home/ftp/Private/hogeAこうしておくと、ftphogeBでログインしたユーザーは、Private/hogeAを表示したり、操作したりできないようになります。(Private/hogeBにも同様の操作を行います)
Publicには、特殊なアクセス権(スティッキービット)を設定します。
(2014.09.27追記終わり)
その他、おもしろいコマンドとしては、pure-ftpwhoがあります。現在ログインしているユーザーをグラフィカルに表示してくれます。
FTPで生のユーザー名とパスワードが流れるのが不安なら、SSL/TLSで暗号化してみてください。
詳しくは、READ ME.TLS 日本語訳をご覧ください。
(2011.07.18 追記)最近のバージョンだと、どうもデータも暗号化されるっぽいです。ちらっと英語のReadMeを読んだだけなので、違うかもしれませんが・・・。
随時情報は追加します。
コメントをかく