[an error occurred while processing this directive]
▲('A`) /FTPソフトのお勉強をしています。(まずはpure-FTPd編)

第212日目:▲('A`) /FTPソフトのお勉強をしています。(まずはpure-FTPd編)

どうも、▲('A`)/です。
えーと、最近はモニターサーバのユーザさんからの要望が色々頂きまして、
鯖子J( 'ー`)しから「あれやって!」「これ使える様にして!」とばしばし
鞭打たれています・・・なんだかなあ。

さて、モニタ様からの要望の1つにこんな案件を頂きました。
大まかに言ってしまうと、以下の通りです。

FTPアカウント(ユーザ) user1について

/home ------ user1 +
                   |_ public_html +-- ore_sennyou(d) <-- 俺様(user1)専用で使う
                 |
                 +-- hoge1(d) <-- ユーザ hoge1に使わせる
                 |
                 +-- hoge2(d) <-- ユーザ hoge2に使わせる

・user1、hoge1、hoge2はそれぞれ別のパスワードでFTPサーバにログインする。 ・hoge1は ディレクトリhoge1より上の階層には移動できない様にする。 ・同じくhoge2は ディレクトリhoge2より上の階層には移動できない様にする。 ・user1はhoge1、hoge2の中のデータを操作(更新、追加、削除)できる様にする。 ・hoge1、hoge2はFTPのみ利用可能。Telnet、SSHは使えない様にする。

えーと、この要望を実現する方法としては、以下のソフトを使ってみる、
というのが答えになるかな、と。
1) ProFTPDを導入する
2) vsftpdを導入する
3) pure-FTPdを導入する

えーと、只今お勉強していますよー▲('A`)
まず、FreeBSDには標準でFTPサーバ(ftpd と言います。)を持っています。
で、昔Linuxを触った人はwu-FTPDというのを見かけたかと思いますが、
こいつではありませんので、間違えないでね。
まあ、今ではLinuxではwu-FTPD以外のFTPソフトを使う傾向にあります
wu-FTPDでセキュリティホールが見つかるので、もっと「かっちり」したのを
使う傾向があります。まあ、古いサーバだとwu-FTPDを使っていたりします。
で、操作性やセキュリティ面で改良を重ねたものが上の3つのソフトです。
無料で使えます。
(FreeBSDのportsには他にも収録されています。ココで見つけて下さい。)

で、今日は pure-FTPd というソフトを使ってみようと思います。
ProFTPD とか vsftpd ってよく聞くソフトですが、pure-FTPd ってあまり
聞かないんですよねえ・・・(知らないのはいつもの通り、 ▲('A`) だけ
かもしれません。。。)

で pure-FTPd ってBSDライセンスで開発されたソフトですよ。
(本家サイトはこちらになります。)
で、FreeBSDのportsで公開されているMakefileの説明を見ると、こう書かれています。
Pure-FTPd is a fast, production-quality, standard-conformant FTP server,
based upon Troll-FTPd.
さて、ちょっと怪しい知識で▲('A`)が意訳してみますよ。
「Pure-FTPdは、とにかく速くて、製品の域に達した、標準となるFTPサーバで、
Troll-FTPdを元ネタとして開発しています。」、よっと。

間違っていたら、各自脳内で正しい内容に置き換えてね。

で、pure-FTPdの特徴は本家サイトの下記の個所にずらずらと箇条書きで書かれています。
「A high flexibility for ISPs and hosting services.」

ポイントとしては、 ・PAMやLDAPなどの認証が利用できる事
・バーチャルユーザ(FTPのみ利用できる限定的なアカウント)が作れる事
・SSLやTLS等で認証時の通信を暗号化できる事
・ディスク使用量や帯域を制限したりできる事
・chroot機能が使える事
・データベースシステム(MySQL、PostgreSQL)を使ってのユーザ管理ができる事
その他色々・・・

えーと、Linuxの事はあまり詳しく無いのですが、ProFTPDやvsftpd(頭のvsって、
Very Secureって意味なんですね)なども同じ様な機能が搭載されているようで、
ディストリビューションによってはデフォルトのFTPソフトでこれらを使って
いる様です。

今回はたまたま、pure-FTPdに出会ったので今日の日記はpure-FTPd編として書きます。
次回はProFTPDについて書こうかなと思います。
(ProFTPDについては先日むむむさんがごにょごにょと対応されていて、2chのサーバを
急遽リブートしなければならない事がありまして・・・最新版を入れないといけないのね。)
で、余力があればvsftpdについても触れてみようかな、と思いますが、どうも
設定自体が「ガチガチ」な様で、Linuxの皆さんも難儀している様です、ハイ。

で、今回はこういうFTPサーバの設定もお手軽にできるツールとかあるのかな、と
探っていますので、更新スピードが遅くなるかも、です。
(まあ、root権限握っていれば、なんでもないのですが、一般ユーザだと、
できる事は制約されるでしょうから・・・まあ、一般だから何でもかんでも
赦しちゃうと、「サーバ動かなくなりました!」という事態になる危険も
あるのでして、、、利便性と管理面とのせめぎあいという事ですね。)

まあ、一般的にどう使えばいいの、というご紹介から今回は日記を書きますので
よろしくです。

えーと、ではインストールですが、今日は portsから入れます。
いつものpkg_addからバイナリを入れると、認証(PAM、LDAP)とかDBシステム
(MySQL、PostgreSQL)のサポートが含まれていないのです。
なので、ソースから入れます。
portsを設置していない人はcvsupやsysinstall等を使って最新のportsを
まず入手して下さい。
で、入手したら、以下の呪文を唱えて下さい。
cd /usr/ports/ftp/pure-ftpd
make config
make install clean

呪文はこれだけです。
で、make configの処で以下の様な画面が表示されます。

この画面がデフォルトの設定だと思って下さい。
で、ここからはお好みですが、▲('A`)の方では以下のパラメータをオンにしてみました。
LDAP、MySQL、PAM、PGSQL、TLS、PERUSERLIMITS、UTF8、LARGEFILE


で、こうなりました。
で、make install clean と叩いてENTERキーを押すと、まずLDAPを指定した事で
OpenLDAPをインストールしようとします。
その設定の画面が以下の通りです。

ここで、SASL認証(プロトコルでの認証の仕組み)をサポートする、を以下の様に
選択します。

そうすると、cyrus-saslの設定画面が出ます。

ここではMySQLとPostgreSQLで使える様にパラメータを以下の様に設定します。

そうすると、PostgreSQL-clientの設定画面が表示されます。

えーと、ここでご注意を。
ここで入ってくるのはPostgreSQLのclientシステムだけです。
画面上でも判ると思いますが、serverシステムでしか指定できない
項目とかもありますので。
(そもそも、PostgreSQLを採用していなければ、スキップでもいいのですが・・・)
で、▲('A`)の場合、既にサーバにはportsからMySQLをインストール済みですので、
MySQLに関する設定画面は表示されません。

で、その後は色々なパッケージを取得しに行ったり、ソースを展開して
コンパイルしたりという処理が進んで、最後はこんなメッセージが表示されます。

さて、では設定です。
今回はバーチャルユーザが使えて、chrootが有効になれば最低限の機能は使えるので
こういう風にします。

1) /etc/rc.confに起動の為のパラメータを記述する。
/etc/rc.conf に以下のパラメータを記述して下さい。
pureftpd_enable="YES"
こうする事で、サーバ起動時にFreeBSDのrcユーティリティ(デーモンの起動)が
/usr/local/etc/rc.dにあるpureftpdを参照し、起動します。

2) pure-ftpd.conf を設定します。
さて、次にpure-ftpdの基本的な設定を書いたpure-ftpd.conf を作ります。
pure-ftpd.conf の雛型は /usr/local/etc/pure-ftpd.conf.sample と
いう名前で作られるので、コピーして pure-ftpd.conf という名前で
作りましょう。
で、何も弄らない時の内容はコチラの通りです。
さて、ここでは下記のパラメータの処を2個所修正します。

1) # PureDB user database (see README.Virtual-Users)

# PureDB /etc/pureftpd.pdb

PureDB /usr/local/etc/pureftpd.pdb


2) # If you want simple Unix (/etc/passwd) authentication, uncomment this

# UnixAuthentication yes

UnixAuthentication yes

1)はバーチャルユーザの設定情報がどこに格納されているかを
示しています。
で、ここで注意する点はサンプルでの記述のままで、コメントを
外しても正しく動かないという事です。なぜなら設定情報を
格納している pureftpd.pdb は /usr/local/etcの下にあるからです。
次に2)は通常のアカウント(FreeBSDだと adduser で作成したアカウント)に
ついては設定情報は/etc/passwdを参照していいのか?というのを
指定します。
通常FreeBSD標準のFTPでは/etc/passwd(厳密にいうと/etc/pwd.db)を参照し
ユーザ認証をおこなっています。
もし、2)を有効にしないで1)だけを有効にすると、通常のアカウントに
ついてもpureftpd.pdbに登録しなければならなくなります。
それは正直面倒ですので、2)も有効にしておきましょう。

では pure-ftpdを起動しましょう。
サーバを再起動すれば簡単なのですが、サーバ全体を再起動したくない時は
こうやります。
/usr/local/etc/rc.d/pure-ftpd start
再起動の時には start を restart と変えて下さい。停止の時は stop です。

では、次にバーチャルユーザの設定といきます。
まず、日記の先頭に書きましたuser1と、hoge1、hoge2を例にして書きます。

最初にadduserでuser1を作成します。
ユーザ名はuser1、所属するグループはusersとします。
で、ホームディレクトリは/home/users1とします。

さて、次にhoge1、hoge2を設定します。
まずは/home/users1/public_html の中にディレクトリを作成します。

mkdir /home/users1/public_html/hoge1
mkdir /home/users1/public_html/hoge2
次にpure-ftpdのコマンド(pure-pw)を使ってユーザを登録します。

pure-pw useradd [バーチャルユーザの名前] -u [バーチャルユーザ用のuid] -g [バーチャルユーザ用のgid] -d [バーチャルユーザのホームディレクトリ] -m

で、-u でusers1を -g でuser1と同じグループに指定する事で hoge1 と hoge2 は
users1のディレクトリ内のフォルダを使える様になるのです。
通常はFTP専用のユーザとグループを予め作っておけ、と解説サイトでは書かれて
いるのですが、こうする事で簡単に設定できます。
で、最後の方についている -m ですが、これはバーチャルユーザの情報を
/usr/local/etc/pureftpd.passwdに追加して、自動的に/usr/local/etc/pureftpd.pdbに
追加する事を指定します。
で、このコマンドを実行するとパスワード入力が2回要求されます。
2回目は確認の為の入力です。
で、このコマンドでホームディレクトリを指定していますが、当然上位の
ディレクトリにはアクセスできない様になっています。
これは便利です。

pure-pw useradd hoge1 -u users1 -g users -d /home/users1/public_html/hoge1 -m
pure-pw useradd hoge2 -u users1 -g users -d /home/users1/public_html/hoge2 -m

念の為ここで、/usr/local/etc/pureftpd.pdbの更新をしておきましょう。
pure-pw mkdb

pure-pwコマンドは他にもこんな機能があります。
(pure-pw --helpで詳細が出ますので、確認しておくと良いでしょう。)

pure-pw list
登録されているバーチャルユーザの一覧を表示する

pure-pw show バーチャルユーザの名前
該当のバーチャルユーザの詳細情報を表示する

pure-pw userdel バーチャルユーザの名前
該当のバーチャルユーザを削除する

pure-pw passwd バーチャルユーザの名前
該当のバーチャルユーザのパスワードを変更(再設定)する

pure-pw usermod バーチャルユーザの名前 -n ファイル数の上限数
-N 使用領域の上限(MB)
該当のバーチャルユーザのquotaを設定する

※後はダウンロード&アップロードの帯域制限とかもできます。
-t でダウンロードの帯域の上限幅(Kbps)、-Tでアップロードの
帯域の上限幅(Kbps)を設定できます。

※usermodコマンドで各制限をリセットするにはパラメータのみ
記述すれば良いです。例えば使用領域の上限をリセットしたいなら
pure-pw usermod バーチャルユーザの名前 -T
のみで良いのです。

例えば、quota設定についてはどの様になっているのかを解説します。
最初にバーチャルユーザを作成した時に -N で上限を指定しなかった場合には
こうなっています。
# pure-pw show hoge1

Login              : hoge1
Password           : $2a$07$9gUg/UP7NBiCf2hLcxMijuWL.k3ahPvKYQHBB9NLEPIg7O1pNs/zK
UID                : 1002 (users1)
GID                : 1000 (users)
Directory          : /home/users1/public_html/hoge1/./
Full name          : 
--------------------------------------------
Download bandwidth : 0 Kb (unlimited) 
Upload   bandwidth : 0 Kb (unlimited)
Max files          : 0 (unlimited)
Max size           : 0 Mb (unlimited)  <-- 制限無し!
--------------------------------------------
Ratio              : 0:0 (unlimited:unlimited)
Allowed local  IPs : 
Denied  local  IPs : 
Allowed client IPs : 
Denied  client IPs : 
Time restrictions  : 0000-0000 (unlimited)
Max sim sessions   : 0 (unlimited)

# 

で、その後でpure-pw usermod で10MBを上限として設定すると、こうなります。
# pure-pw show saba

Login              : hoge1
Password           : $2a$07$9gUg/UP7NBiCf2hLcxMijuWL.k3ahPvKYQHBB9NLEPIg7O1pNs/zK
UID                : 1002 (users1)
GID                : 1000 (users)
Directory          : /home/users1/public_html/hoge1/./
Full name          : 
Download bandwidth : 0 Kb (unlimited)
Upload   bandwidth : 0 Kb (unlimited)
Max files          : 0 (unlimited)
Max size           : 10 Mb (enabled)  <-- 注目!
Ratio              : 0:0 (unlimited:unlimited)
Allowed local  IPs : 
Denied  local  IPs : 
Allowed client IPs : 
Denied  client IPs : 
Time restrictions  : 0000-0000 (unlimited)
Max sim sessions   : 0 (unlimited)

# 

うん、意外と設定は思ったよりも難しくないや。
ただ、pure-pwコマンドはスーパーユーザモードでないと使えませんので、
あしからず。
で、webmin等の様なコントロールパネルのソフトは見当たりません。
情報を求めていますので、よろしくです。

さて、さて、次はProFTPdをやってみますか。次回はwebminとセットで
日記に書けたらなあ、と思っています。
それでは、また。▲('A`)/

【追記 11/24 17:15】
どうも、▲('A`)/です。
えーと、さっきメールをチェックしたら、なんかいやーなメールが社内の
メーリングリストに流れていました。
どうやら明日raichoがリブートテストをやるらしい」と。
えーと、、、ね。なんだかなあ、と思う訳ですよ。

raichoは確かにSSDからブートはできる様になっていますです。
ただ、Apacheまでは立ち上がりませんよ。要は片肺になる訳ですし、容量の少ないSSDで
データが移せる(退避できる)様にする為の最低限のものしか入っていないからです。
(SATA側のHDDが壊れてアクセスも何にもできない状態を想定して作ってますから。)

まあ、root兄弟(・∀・)(´・ω・`)やあぶらみくん( `э´)の方で当日の作業詳細を
考えてくれるでしょう、きっとね・・・

211日目に戻る。   213日目に続く。

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目

いま一番お得なページ! 解析
[an error occurred while processing this directive]