パソコン関係のメモと趣味のページ

Pure-FTPd本家のREAD ME.Virtual-Usersの日本語訳です。機械翻訳を基に自分なりに変更したものです。よくわからないまま意訳しているような部分もありますので、あくまで参考程度ということで(^ ^;


■VIRTUAL USERS(仮想ユーザ)


Pure-FTPdは、バージョン0.99.2から仮想ユーザ(Virtual user)をサポートしています。

仮想ユーザは、パスワード、名前、uid、ディレクトリーなどと共に、ユーザのリストを格納する単純なメカニズムです。それはちょうど/etc/passwdに似ています。しかし、それは/etc/passwdではありません。それはFTPのためにのみに存在する異なるファイルです。

それは、あなたがシステム・アカウントを台無しにせずに、容易にFTPのみのアカウントを作成することができることを意味します。

さらに、仮想ユーザ・ファイルはユーザーごとに、quota(ファイル数の最大値と容量の最大値を制限するなどの割り当て)、帯域幅などを格納することができます。システム・アカウントはこれをすることができません。それらがすべてchrootされ、それらが自分のホームディレクトリーを持つ限り、何千もの仮想ユーザが同じシステム・ユーザを共有することができます。

したがって、仮想ユーザを使用する前に行うとよいことはこのためのシステム・ユーザを作ることです。もちろん、「nobody」(しかしrootではない)のようにどんな既存のアカウントも使用することができます。しかし、専用のアカウントの方がよいでしょう。

「ftpgroup」グループおよび「ftpuser」ユーザを作りましょう。

Linux/OpenBSD/NetBSD/Solaris/HPUX/多くの他のUnixのようなシステム:
groupadd ftpgroup useradd -g ftpgroup -d /dev/null -s /etc ftpuser

FreeBSD:
pw groupadd ftpgroup pw useradd ftpuser -g ftpgroup -d /dev/null -s /etc

その後、仮想ユーザのメンテナンスはすべて"pure-pw"のコマンドでできます。さらに、望めば、手動でファイルを編集することができます。

仮想ユーザを格納するファイルは、1人のユーザ当たり1行のラインを持っています。これらのラインは次の構文を持っています:

<account>:<password>:<uid>:<gid>:<gecos>:<home directory>:<upload bandwidth>:<download bandwidth>:<upload ratio>:<download ratio>:<max number of connections>:<files quota>:<size quota>:<authorized local IPs>:<refused local IPs>:<authorized client IPs>:<refused client IPs>:<time restrictions>

(account、password、uid、gid、home directory)以外のフィールドは空にしておくことができます。

パスワードは、/etc/passwdあるいは /etc/master.passwdの中で使用される、ハッシュ機能と互換性をもちます。あなたのシステムによって、blowfish、md5、multiple-des、simple-des、この順にハッシュされて、暗号化されています。



■CREATING A NEW USER(ユーザの新規作成)


新規のユーザを加えるためには、次の構文を使用してください:

   pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
      -D/-d <home directory> [-c <gecos>]
      [-t <download bandwidth>] [-T <upload bandwidth>]
      [-n <max number of files>] [-N <max Mbytes>]
      [-q <upload ratio>] [-Q <download ratio>]
      [-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]...]
      [-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]...]
      [-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]...]
      [-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]...]
      [-y <max number of concurrent sessions>]
      [-z <hhmm>-<hhmm>] [-m]
アカウント「joe」を作成しましょう。ホームディレクトリは/home/ftpusers/joeとします。「joe」に関連したシステム・アカウントは「ftpusers」です。
pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe

joeのパスワードは2度尋ねられます。

「-d」をつけることで、joeはchrootされるでしょう。あなたがファイルシステムに全体にアクセス権を与えたい場合は、-dの代わりに-Dを使用してください。

「-j」(--createhome)オプションをつけてpure-ftpdを実行すれば、/home/ftpusers/joeを作成する必要はありません。そのスイッチをつけることで、ユーザが初めてログインする場合、ホームディレクトリーは自動的に作成されるでしょう。

「-z」オプションはユーザが認可された時間のみ接続することを可能にします。例えば、-z 0900-1800で、joeは単に午前9時から午後18時まで接続することができるでしょう。警告:認可された時間に接続したユーザは認可された時間の後にセッションを終えることができます。

「-r」と「-R」はユーザがどこから接続することができるかのかを手軽に制限できます。単純なIP/maskによって指定する方法(-r 192.168.1.0/24)、コンマによって区切って多数を指定する方法(-r 192.168.1.0/24,10.1.0.0/16,127.0.0.1/32)、単純なIPアドレスによって指定する方法(-r 192.168.1.0,10.1.1.5)、ホスト名によって指定する方法(-r bla.bla.net、yopcitron.com)などがあります。これらは組み合わせて指定することも可能です。


「-y」は、ユーザが同時に接続できるセッションの数を制限する予定です。''あるいは0は無制限を意味します。頻繁にアクセスのあるサーバではこの機能を指定しないでください。ipごとの範囲を代わりに使用してください。

Ok、「joe」が作成されました。デフォルトでは、仮想ユーザのリストは、/etc/pureftpd.passwdファイル(私の環境Debian/PPCでは/etc/pure-ftpd/pure-ftpd.passwdでした)に格納されます(もちろん-f <file>でこれを交換することができます)。

中身を確認してみましょう:

joe:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftpusers/joe/./:::::::::::::

パスワードは、あなたのシステムが支援する最良の一方通行のハッシュ関数で切り刻まれます。ハッシュはこの順に試みられます:Blowfish、MD5、multiple DES、simple DES



■CHANGING INFO(ユーザ情報の変更)


一旦仮想のユーザが作られたならば、それらの情報を編集することができます。例えば、帯域幅を変更したり、quotasを設定、フルネームを加えたり、ratio比率(1MBをアップしたら5MBゲットできるといった比率)を変更したりできます。

それが新しいものを作成する代わりに既存のアカウントを修正するという点を除いて、「pure-pw usermod」コマンドはちょうど「pure-pw useradd」のように働きます。

それでは、joeにquotaの変更を加えてみましょう。joeを1000個ファイルおよび10メガバイトまでしか持てないように制限します。
pure-pw usermod joe -n 1000 -N 10

/etc/pureftpd.passwdを見てみましょう:

joe:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftpusers/joe/./::::::1000:10485760::::::

あなたが見ることができるとともに、サイズ割り当てはファイル中のバイトで格納されます。



■RESETTING ATTRIBUTES(属性のリセット)


ファイル割り当てをリセットするためには、
pure-pw usermod <user> -n ''

サイズ割り当てをリセットするためには、
pure-pw usermod <user> -N ''

quotaをリセットするためには、
pure-pw usermod <user> -q -Q

ダウンロード帯域幅調節をリセットするためには、
pure-pw usermod <user> -t ''

アップロード帯域幅調節をリセットするためには、
pure-pw usermod <user> -T ''

IPフィルタリングをリセットするためには、
pure-pw usermod <user> <-i,-I,-r or -R> ''

時間制限をリセットするためには、
pure-pw usermod <user> -z ''

同時セッションの数をリセットするためには、
pure-pw usermod <user> -y ''



■DELETING USERS(ユーザの削除)


私たちはjoeをこの時期に削除しないでしょう。joeは素晴らしいガイです:) しかし、参考のために、「pure-pw userdel」を実行してみます。ユーザの削除は単純です。構文は次のとおりです:
pure-pw userdel <login> [-f <passwd file>] [-m]

joeを削除するときは次のようになります:
pure-pw userdel joe

彼のホームディレクトリーは削除されません。削除したい場合は、手動でそれを削除してください。



■CHANGING PASSWORDS(パスワードの変更)


ユーザのパスワードを変更するためには、「pure-pw passwd」を使用してください:
pure-pw passwd <login> [-f <passwd file>] [-m]



■DISPLAYING INFO(情報の表示)


/etc/pureftpd.passwdファイルを読んで、1人のユーザに関する情報を調査することは、okです。しかし、それは人間にやさしいとは言えません。なぜなら「pure-pw show」を使用することができるからです。構文は次のとおりです:
pure-pw show <login> [-f <passwd file>]

joeでやってみましょう:
pure-pw show joe
Login : joe
Password : $1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.
UID : 500 (ftpuser)
GID : 101 (ftpgroup)
Directory : /home/ftpusers/joe/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 1000 (enabled)
Max size : 10 Mb (enabled)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs : 192.168.0.0/16
Denied client IPs : 192.168.1.1,blah.verybadhost.com
Time restrictions : 0900-1800 (enabled)
Max sim sessions : 0 (unlimited)


ホームディレクトリーの終端での/./は、このユーザがchrootされることを意味します。



■COMMITTING CHANGES(変更の適用)


重要:

上記のコマンドで、あるいは手動で/etc/pureftpd.passwdを編集することにより、ユーザを加えて、修正し、削除することができます。しかし、FTPサーバーは、あなたが変更を適用させるまで、(自動的に)変更を適用しないでしょう。

変更の適用は、実際には /etc/pureftpd.passwd(あるいは、あなたが選択したファイル)から新しいファイルが作成されることを意味します。その新しいファイルとはPureDBファイルです。それは/etc/pureftpd.passwdと全く同じ情報を含んでいます。しかし、そのファイルでは、何千ものアカウントがあっても素早くアクセスできるようにするために、アカウントはソートされインデックスを付けられています。PureDBファイルはバイナリー・ファイルですから、見ようとしないか、あるいはあなたの端末が地獄のようにピーッという音を出すでしょう。

/etc/pureftpd.passwdからPureDBファイルを作成しましょう。インデックスを付けられたファイルは/etc/pureftpd.pdb(例によって、好きな名前を選んでください)と呼ばれるでしょう:
pure-pw mkdb

これはデフォルトでは、/etc/pureftpd.passwdを読み、/etc/pureftpd.pdbを作成しますが、別のファイルを読むためには、-fオプションの後に、pdbファイルを加えてください。 例えば:
pure-pw mkdb /etc/accounts/myaccounts.pdb -f /etc/accounts/myaccounts.txt

仮想ユーザ・データベースに行なった修正はすべて自動的に適用されるでしょう:新しいアカウントはすべて同時にアクティブになるでしょう。また、あなたがリターン・キーを打ったとすぐに、すべての削除されたユーザはログインすることができなくなるでしょう。

変更を適用するのにpure-ftpdサーバーを再起動する必要はありません。

さらに、テキストのパスワードファイルに何かを変更(ユーザを加える、パスワードを変更する、ユーザを削除するなど)した後で、自動的に「pure-pw mkdb /etc/pureftpd.pdb」を実行することができます。そうするためには、-mオプションをただ使用してください:
pure-pw passwd joe -m

このコマンドは、joeのpureftpd.passwdの中のパスワードを変更し、*さらに*/etc/pureftpd.pwdへの変更を適用します。



■ENABLING VIRTUAL USERS(仮想ユーザ機能を使用可能にする)


もちろん、仮想ユーザを使用するために、FTPサーバー自体がそれらをサポートできるようにしなければいけません。これは、コンパイルのとき、./configureに--with-puredbのオプションをつけてることによって行われます。(--with-everythingはさらにそれを可能にします。また、バイナリパッケージはそれを含めた形でコンパイルします)

次に、通常のpure-ftpdオプションにこのオプションを加えてください:
  • l puredb:/path/to/puredb_file

長いオプションが可能になる場合、-lの代わりに--loginを使用してもかまいません。

ホームディレクトリーおよびpuredb認証の自動生成するよう、サーバーを実行しましょう:

/usr/local/sbin/pure-ftpd -j -l puredb:/etc/pureftpd.pdb &

「ftp localhost」とコマンド入力してみて、joeとしてログインしてください。



■CONVERTING SYSTEM ACCOUNTS(システムアカウントを移行)


「pure-pwconvert」のツールを使うことで、システム(/etc/passwd)アカウントをすべて仮想のFTPユーザに移行することができます。

それをただ実行してください:

pure-pwconvert >> /etc/pureftpd.passwd

あなたが特権がないユーザとしてそれを行えば、パスワードは書き入れられません。あなたがrootとしてそれを行えば、すべてはコピーされ、さらにハッシュされたパスワードになるでしょう。

ユーザはFTPおよびTelnetアクセスのために異なるパスワードを使用することができるので、FTPアカウントへシステム・アカウントをコピーすることは意味あることです。



■ENVIRONNEMENT VARIABLES(環境変数)


もし定義されれば、PURE_PASSWDFILE環境変数は pureftpd.passwdファイルにデフォルト・パスをセットすることができます。この変数なしでは、それは自動的に /etc/pureftpd.passwdになります。

もし定義されれば、PURE_DBFILE環境変数はpureftpd.pdbファイルにデフォルト・パスをセットすることができます。この変数なしでは、それは自動的に/etc/pureftpd.pdbになります。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます