rc. d から起動 「このスクリプトは、、ローカル・ファイルシステムのマウ ント " か完了していることか、実行条件である」 NetBSD 箱か起重加寺 = に PPPoE によるコネクションを 確立するようにしたい場合は、 /etc/rc. d 以下に PPPOE というように言当主するのです。 用のスクリプトを準備するのがよいでしよう。 具イ勺な条件節は、スクリプトのなかに NetBSD では、 /etc/rc. d 以下に、起動 (startup)/ # PROVIDE : シャットダウン (shutdown) スクリプトを配置します。 # REQUIRE : # BEFORE : rc ( 起動時 ) からはスクリプトの引数として start が、 # KEYWORD : rc. shutdown ( シャットダウン時 ) からはスクリプトの引 という 4 つの条件で言当します。 これらの条件の意床は、 数として stop か渡され、各スクリプトかま行されます。 そのため、この start と stop の処理を言当主することが ・ PROVIDE: 推奨されます。このようなことがイ去として決められてい このスクリプトの実行によって満たされるキーワード るので、それに従ってスクリプトを書いておけば、スマー ・ REQUIRE: トなコントロールが可能です。 このスクリプトの実彳叔こ満たされていなければならな いキーワード 己述方法 ・ BEFORE: 詳しい当は rc や rc. d のオンライン・マニュアル、そ BEFORE で記述されるキーワードか満たされる前に して /etc/rc. d にあるスクリプトを参照してください。 本スクリプトを実行する それではさっそく、 RP-PPPoE 起動スクリプト /etc/ ・ KEYWORD: rc ・ d/rppppoe を作成しましよう。 /bin/sh のスクリプ rcorder の—k と -s オプションの引数で用いるための トなので、 キーワード # ! /bin/sh となっています。ちょっと分かりにくいですね。たとえ ば、スクリプト・ファイル A が、 は定石として、 # ! /bin/sh # PROVIDE : rppppoe # PROVIDE : mikan # REQUIRE mountcritremote syslogd # REQUIRE : て 1 go を言当主してください。この 2 行は # でコメントアウトされ スクリプト・ファイル B が、 ていますが、スクリプトを実行する順番を決定する際の判 # ! /bin/sh 材オ料として rcorder から参照されます。 # PROVIDE : rlngo # REQUIRE : ichigo ) 頂番の決定、 rcorder スクリプト・ファイル C が、 /etc/rc. d には、多数のスクリプトが入っています。実 # ! /bin/sh 行するのはファイル名のアルファベット順ではなく、スク # PROVIDE : ichigo リプト間の依存生を考慮したものでなければなりません。 # REQUIRE : たとえば、ローカル・ファイルシステムをマウントして となっているとすると、スクリプト・ファイル A は、 いないのに Web サーバーを起動しようとしても、サーバ ・アプリケーションを保存した領域がマウントされてい ・実行するには、キーワード、、 ring 。 " カヾたされている ないので起動できませんし、ネットワークの言殳定がすんで 必喫がある (REQUIRE:) いないうちに起動けるとイ合が生しることもあります。 ・スクリプト・ファイル A の実行によって、、、 mikan というキーワードか満たされる (PROVIDE:) そこで、各スクリプトに、 85 UNIX MAGAZINE 2001.9
こでは、インストール先を、 /usr/local/tsp とし、 OS は netbsd としました。それでは tspc の make を実行します。小さいプログラムですので、 make には 1 ー c % make target=netbsd a11 分もかかりません 14 gcc gcc gcc gcc gcc gcc gcc —Wa11 —Wa11 —Wa11 —Wa11 -Wa11 -Wa11 -Wa11 —Wa11 —Wa11 -Wa11 —Wa11 tspc . c ー 0 xmltsp . c . C config. c 10g ・ c ー 0 . /tspc . 0 ー 0 . /xmltsp. 0 ー 0 . /network. 0 ー 0 . /config. 0 ・ / 10g ・ 0 —c protocol. c ー 0 . / p て 0t0C01 —c xmlparse. c ー 0 . /xmlparse auth. c ー 0 . /auth. 0 —c md5c . c ー 0 . / md5c . 0 —c base64. c ー 0 . / base64.0 . 0 . 0 . /tspc . 0 . /xmltsp. 0 . /network. 0 . /config ・ 0 ・ / 10g ・ 0 ・ / protocol. 0 . /xmlparse. 0 cp README /usr/10ca1/tsp/temp1ate/README mkdir —p /usr/local/tsp/template lnstalling templates End of tspc installation cp .. /bin/tspc. conf /usr/local/tsp/bin/tspc cp ・・ /bin/tspc /usr/local/tsp/bin/tspc mkdir —p /usr/local/tsp/bin lnstalling tspc Generating basic configuration file mkdir —p /usr/local/tsp installdir=/usr/local/tsp insta11 # make target=netbsd % su 先のディレクトリと、アーキテクチャを指定します。 make カ院了したらインストールします。インスト Generating basic configuration fi1e . /bin/tspc . /auth. 0 . /md5c . 0 . /base64.0 ー 0 . conf ーノレ tunnel . sh cp checktunnel. sh /usr/local/tsp/template/check checktunnel. bat /usr/local/tsp/template/check cp s01aris8. sh /usr/10ca1/tsp/temp1ate/s01aris8. cp openbsd. sh /usr/local/tsp/template/openbsd. sh cp netbsd. sh /usr/local/tsp/template/netbsd. sh cp linux. sh /usr/local/tsp/template/linux. sh cp freebsd4. sh /usr/10ca1/tsp/temp1ate/freebsd4. tunnel . bat cp windowsNT-2K. bat /usr/local/tsp/template/wind owsNT—2K . bat lnstalling man pages mkdir —p /usr/10ca1/tsp/man/man5 mkdir —p /usr/10ca1/tsp/man/man8 cp man5/tspc. conf . 5 /usr/10ca1/tsp/man/man5 cp man8/tspc.8 /usr/10ca1/tsp/man/man8 TO View man pages man —M /usr/local/tsp/man tspc man —M /usr/local/tsp/man tspc . conf これで、インストールは完了です。次に、 tspc の成疋 をおこないます。上記のインストール・ディレクトリとし た場合、設疋ファイル tspc. conf の芻旧杉は、 /usr/local/tsp/bin/tspc . conf に作成されます。この成疋ファイルに、自らのアカウント 情報を設定します。これらのユーサー情報は、 Freenet6 にユーサー登録したあとで送られてきたメールに記載され ています。 アカウントの作成については、前回の記事を参照してい ただき、 ・ http://www.freenet6.net/cgi-bin/new-account. # userid=anonymous 置き換えます。 を、 tspc. conf 中の userid=" と く /CUT AND PASTE TO TSPC . CONF> userid=unxmaganet く CUT AND PASTE TO TSPC . CONF> こでは、 Freenet6 からの当素メール ( 抜枠 ) にある、 からアカウントを作成してください。 sh sh cp 14 p asswd = # The passwd must be empty if userid is # passwd= userid=unimaganet alphanumeric value that is dns legal. # the userid can be anonymous or any = ・ # if userid iS not anonymous . anonymous or an alphanumeric string Pentium III 850MHz でね・・ UNIX MAGAZINE 2001.9 " の剥と 91
図 17 root でインストールする % su Password : # pwd # make install ← rp-pppoe-3. l/src で実行 # cd src /usr/tmp/rp¯pppoe—3.1 Type 'make instaII ' mkdir —p /usr/sbin /usr/bin/install —c /usr/bin/install —c if test —x licensed ppoe—server—control as root tO insta11 the software . —m 755 -s pppoe /usr/sbin —m 755 —s pppoe—server /usr/sbin —only/pppoe—server—control then /usr/bin/install —c —m 755 —s licensed—only/p /usr/sbin; fi if test -x pppoe—relay ; then /usr/bin/install —c -m 755 —s pppoe—relay /usr/sbin; fi if test -x pppoe—sniff ; then /usr/bin/install -c —m 755 —s pppoe—sniff /usr/sbin /usr/bin/install —c —m 644 .. /man/pppoe . conf . 5 /usr/man/man5 mkdir —p /etc/ppp mkdir —p /etc/ppp/plugins echo " # Directory created by rp—pppoe for kernel—mode plugin" > /etc/ppp/p1ugins/README Type 'adsl—setup' t0 configure the software . 次に、オンテマンド接続あるいは糸断妾続のどちらの 接続かを指定します。常日妾続状態の場合は、、 n 。 " を、そ れ以外の場合は、回線が切断するまでのアイドル時間を秒 単位で入力します。 DO you want the 1ink tO come up 0 Ⅱ demand, or st ay up continuously? If you want it tO come up on demand, enter the id1e time in seconds after wh ich the link should be dropped. If you want the link t0 stay up permanently, enter ' Ⅱ 0 ) (tWO le tters , lower—case . ) NOTE : Demand—activated links do not interact wel 1 with dynamic IP addresses . You may have some problems with demand—activated links . > > > Enter the demand value (default Ⅱ 0 ) : @nifty の ADSL サーピスは完全固定制でつなぎつば なしにするので、、、 n 。 " と指定します。 > > > Enter the demand value (default Ⅱ 0 ) : Ⅱ 0 次は、 DNS サーノヾーの設定です。利用する ISP のプラ イマリ DNS サーバーの IP アドレスを指定します。もし、 PPP て提供される DNS サーバーアドレスを使用し、か つ、 /etc/resolv. conf を RP-PPPoE で更新する場合は、 server" を指定します。自分て管理 (/etc/resolv. conf) する場合は、何も入力せすにリターンキーを押します。 UNIX MAGAZINE 2001.9 DNS x. ConsuIt your operating system manuals fO て d Sorry, firewalling is 0 Ⅱ ly supported under Linu F IREWALL I NG ますが、それ以外の OS ではスキップします。 Linux では、このあとファイアウォールの設定に移り > > > P1ease re—enter your PPPoE password : > > > P1ease enter your PPPoE password : PASSWORD 最後に、ユーサー名に対するパスワードを入力します。 > > > Enter the DNS information here : server /etc/resolv. conf か書き換えられるので注意してくださ するので、、、 server" と入力します。この場合、自重加勺に 今回は@nifty から PPP で指示される DNS を利用 > > > Enter the DNS information here : what you are doing and not modify your DNS setup. If you just press enter, 工 wi11 assume you know 11 lower—case) here . r i11 provide DNS addresses' y DNS server. If your ISP claims that 'the serve PIease enter the IP address of your ISP' s primar 83
VMware 図 13 Linux への VMware コンソールのインストール # tar xzf VMware—cons01e—I . 0.1 ー 1098. tar ・ gz # cd vmware—console—distrib # . /vmware—install . pl You must read and accept the End User License Agreement to continue . Thank you ・ DO you accept? (yes/no) yes ( VMware のライセンス条件が表示されるので、一読して、 q " を入力する ) Press enter tO display it . [/usr/local/share/man] successfully. You can decide tO remove this software from your system at any The installation 0f VMware—cons01e 1 . 0.1 build ー 1098 for Linux completed want? [yes] is going tO create it, including needed parent directories. IS this what you The path "/usr/local/doc/vmware—console" does not exist currently. This script [/usr/local/doc/vmware—console] ln which directory dO you want tO insta11 the documentation files? ln which directory d0 you want t0 install the manual files? want? [yes] IS g01ng tO create it , = including needed parent directories. ls this what you The path "/usr/local/lib/vmware—console" does not exist currently. This script [/usr/local/lib/vmware—console] 工Ⅱ which directory dO you want to install the library files? [/usr/bin] /usr/local/bin 工Ⅱ which directory d0 you want t0 install the binary files? lnstalling the content Of the package. Creating a new installer database uslng the tar2 format . time by invoking the following command: "/usr/local/bin/vmware—uninstall—console. pl" 図 14 ESX サーパー上の仮想 PC に盛する言聢 VMware 肥 mo Lll iiJ.ad.jp Port: Password muser ・ assword 166 ワードを入力します。 Web インターフェイスにログインするときと同レヾス すべての欄に入力して [Connect] ボタンをクリックす ると、真っ白だった VMware コンソールのウインドウ か図 15 のように変化します。 Linux 版の VMware コンソールでは、上記のすべて の設定項目をコマンドライン・オフションて指定すること もできます。詳しくは、ヘルプメッセージ ( ー h オプショ ンで表示されます ) を参照してください。 VMware コンソールの GUI は Workstation とはは、 同しです。異なる点は、イ反想 PC を設定するインターフェ イス (Configuration Editor) がないことくらいなので、 使い方については説明しません。 UNIX MAGAZINE 2001.9
特集リ N ー X の基礎知識 0 これらク讚致をもつ ed は、いざというときに強力なツ ⅵと同様、 ed もははすべての UNIX システムに含まれ ているが、上記のような端末を使うことのない現在では、 ールとなる。本文でもいくっかの例を挙げて説明している すでに役目を終えた過去の遺物なのだろうか。いや、そん が、ⅵや Emacs などのスクリーン・エデイタが使えな い状況、たとえば /usr ファイルシステムか破壊されてし なことはない。 多くの UNIX では、 ed は /bin/ed として実装されて まったり、遠隔地から細い回線を経由してシステムの設定 ファイルを編集しなけれはならない場合には、絶大な威力 いる。つまり、 root パーティションに置かれているので を発揮する。さらに、 ed はコンパクトに作られているた ある。また、多くの UNIX の ed コマンドではライプラ リか清勺にリンクされている。たとえば、私の使っている め、プートフロッピーに収めておくこともできる。このよ うな悪条件であっても、 ed さえ使えれは管理イ 1 璞に大き NetBSD の ed を file コマンドて十ヾてみると、 な章をきたさずにすむ。事実、私自身も ed に救われた % file /bin/ed /bin/ed: ELF 32-bit LSB executable , ケースはたくさんある。 lntel 80386 , version 1 (SYSV) , statically 今回は、以 . E に挙げた 3 つのエデイタのうち、 ed と linked, stripped ⅵの基本的な使い方を説明する (Emacs については、次 号で紹介する ) 。ェデイタを自在に扱えるようになれは、 と表示される。言い換えれは、共有ライプラリを必要とせ UNIX 上での作業をスムーズに進めることができる。と す、単独で動くということである ( 共有ライプラリを用い くに、システム管理に携わっている場合は、ぜひとも ed て作成された ed をもつシステムもあるが、たいていは、 の使い方を憶えるべきであろう。 それらのライプラリも root ファイルシステムに置かれて いる ) 。 工デイタ ( ⅵ編 ) たんなるテキストエデイタですが、テキストを効率的に編 1 ・算機管理の仕事は、 OS やアプリケーションのインス 集するために十分すぎるほどの機能をもっています。 トール、マシンの起動シャットダウンだけではありませ ん。 UNIX システムを・商に正しく利用するためには、パ 一方の Emacs は、きわめて多彩な機能をもつ工ディ タです。 Emacs Lisp という言語で、書かれた成疋ファイ スワード・ファイルやホストファイルをはしめ、さまざま ルを読み込むことにより、各種文書クメ囁集、電子メールや な設定ファイルを書き換える必要があります。そこで、以 NetNews の読み書き、 web ページの閲覧などしつにさま 下ではファイルの編集作業に不可欠なエデイタについて説 ざまなことができます。その意味では、、、ファイル編集環 明します。 境 " と呼ぶはうがふさわしいかもしれません。 UNIX ュー ーロにエデイタといっても、ワーフロ並みの機能をもつ サーの多くが Emacs を利用しています。 ものから、テキストを編集する機能だけに絞ったものまで こでとりあげる ed やⅵ、そして Emacs などの工 いろいろあります。こク寺集では、それらのなかから、 デイタにはいくつかの不頁があり、それぞオし彳少に違うと vi : すべての UNIX システムにかならす存在するエデイタ ころがあります。たとえば、同しⅵという名前のコマン Emacs : 独自の言語を用いて自由にカスタマイズできる ドでもバージョンが異なっていたり、同様な機能をもつ別 咼機能工デイタ のプログラムに置き換わっていたりします。以下に示す例 と表示されるメッセージか違ったり、新たな機能か追加さ の 2 つをとりあげます。 れている場合もあるでしよう。説明にあたっては、これら vi は、 UNIX の管理者なら、かならすある程度は使え の相違をできるかぎり意識せすにすむように心がけたつも るようになってほしいエデイタの 1 つです。基本的には 一三い 24 UNIX MAGAZINE 2001.9
図 32 NAT の典型的な竟例 PPPoE ルータ a. b. c. d ppp0 (ISP からのアドレス ) xDSL 接続 PC PC fxp0 ( プライベート・アドレス ) 192.168.0.1 192.168.0.0 / 24 PC これで、図 31 のログか示すように、 PPP リンクか不 したあとに tspc カ躾行さ 6b 。 11e につながる工鼬竟カ斫等 られます。 ーっいでに IPNA すも・・・・・・ - ・・一 IPv6 の特集なので「 NAT はねー ーだろ」と厳し いつつこみが入りそうですが、ついでなので NAT の成疋 も書いておきます。 NetBSD で IPv4 NAT を利用する 場合は、 /etc/ipnat. conf に map pppO w. x. y. z / 24 ー > a. b. c . d / 32 portmap tcp/udp 40000 : 60000 map ppp0 w. x. y. z / 24 ー > a. b. c . d / 32 と記述します。 ppp0 は、外側のアドレスのイ寸加されたイ ンターフェイス名です。殞則とは、 ISP など , 材妾続された ネットワークを指します。 w. x. y. z は内側のアドレス、た とえばフライベート・アドレスなどです。 a. b. c. d は外側 のアドレス、たとえは ISP から割り当てられるアドレス などです。 重加勺に外 ( 則のアドレス仕記の例なら pppO の a. b. c. d) か変化する場合は、 map pppO w. x. Y. 2 / 24 ー > 0 / 32 portmap tCP/udP 40000 : 60000 map ppp0 w ・ x. Y. z / 24 ー > 0 / 32 と省略できます。もし、図 32 のような接続形態とするな map pppO 192.168.0.1 / 24 ー > 0 / 32 tcp/udp 40000 : 60000 map pppO 192.168.0.1 / 24 ー > 0 / 32 portmap ら、 /etc/ipnat. conf は、 UNIX MAGAZINE 2001.9 となります。 ipnat を開始するときは、 /etc/rc. conf に ipnat=YES を追加すれは起重加こ ipnat か有効になります。 そして、さきほどの /etc/ppp/ip-up に ipnat のリス タートを実行しておくようにしておけはよいでしよう。 # ! /bin/sh # Start TSPc /usr/local/tsp/bin/tspc —f /usr/local/tsp/bin/tspc . conf # restart ipnat /etc/rc . d/ipnat restart これで、 PPPoE ルータ兼 IPv6 トンネル自動設定 NetBSD 箱か完成しました。 ー Pv6 フォワーディングは一 とりあえす xDSL ルータが NetBSD でできたわけで すが、 こまででは、 IPv4 的にはフォワーディングし ていますが、 IPv6 的にはフォワーディングできていませ ん。つまり、今回の NetBSD 箱は、 IPv4 的にはルータ、 IPv6 的にはホストとなっています。 たしかに、 Freenet6 を利用した場合、 / 48 のアドレス か取得できるのですから、 tspc. conf の設定に #for / 48 forwarding #host—type=router in tspc. conf host—type=router #prefix1en=48 in tspc . conf prefixIen=48 #if-prefix=YOUR_NETWORK_INTERFACE in tspc. conf if—prefix=fxpO と記述すれは、 tspc を使用した IPv6 ルータとして機能 するはずですが、どうもうまくいきません。やってみると 分かりますが、 tspc から呼び出されるスクリプト上で、い くつかのエラーが発生します 16 。これらを修正したとして も、割り当てられる / 48 の IPv6 アドレスが、 6bone に 対して経路広報されないために実質的には使えません。 これは Freenet6 のサポート 17 へ間い合わせています。 進展があったら報告します。 16 経路の設正、 rtadvd. conf のこインターフェイス (if-prefix) へ のアドレス設定の 3 カ所でエラーになり、修正が必要。 17 E-mail: tsp-support@freenet6.net 95
図 29 Ju1 XX 08 : 38 : 52 pppoe /netbsd: Ju1 Ju1 XX 08 : 38 Ju1 XX 08 : 38 : 52 pppoe /netbsd : Ju1 Ju1 XX 08 : 38 Ju1 Ju1 XX 08 : 38 Ju1 Ju1 XX 08 : 38 Ju1 XX 08 : 38 Ju1 XX 08 : 38 Ju1 カーネルか起動したあと RP-PPPoE か起動 XX 08 : 38 XX 08 : 38 XX 08 : 38 XX 08 : 38 XX 08 : 38 Ju1 XX 08 : 38 Ju1 XX 08 : 38 size=8192 : 52 pppoe : 52 PPP0e : 52 PPP0e : 52 PPP0e : 52 PPP0e : 52 PPP0e : 51 PPP0e : 53 PPP0e : 53 pppoe : 53 PPP0e : 53 PPP0e : 53 PPP0e : 54 PPP0e /netbsd: /netbsd : /netbsd : /netbsd: /netbsd: /netbsd : boot device : wdO て 00t 0 Ⅱ wdOa dumps on wdOb て 00t file system type: ffs wsdisp1ayO : screen 1 added ( 80X25 , wsdisp1ayO: screen 2 added ( 80X25 , wsdisp1ay0 : screen 3 added ( 80X25 , wsdisp1ayO : screen 4 added ( 80X25 , wsmuxl : connecting tO wsdispIayO Ⅱ 0 core dump Vt100 emulation) Vt100 emulation) Vt100 emulation) Vt100 emulation) 図 30 RP-PPPoE の再起動 カーネル起動 rc & / etc / ℃ . d / * スクリプト実行 /etc/rc. d/rppppoe (RP-PPPOE) 実行 RP-PPPoE によって ppp0 に ISP からの 旧アドレスが割り当てられる rc 」 oc 実行。 pppO に割り当てられたアドレスをもとに・ tspc が F 「 eenet6 へトンネルを作成 られる ( 動的アドレス割当てのときはアドレスが変わる ! ) pppd 再起動。 pppO に旧 P からの旧アドレスが割り当て ttys のセットアップ、 pppd がハングアップ・シグナルを受信 pppdC156] : pppd 2.4.0 started by root, uid 0 /netbsd: IP Fi1ter: v3.4.9 pppoe [ 165 ] : PPP session is pppd[156] : Connect : pppO く一一 > /dev/ttyp0 pppd [ 156 ] : Using interface pppO ューサー・モードに切り替わるときです。言い換えれは、 これは、 rc スクリプトの実行か終了したあと、マルチ 切ることなく、そのあとでハングアップします。 クカ寉立してアドレスまで割り当てられますが、期待を裏 と、ハングアップしてしまいます。場合によっては、リン Ju1 XX 08 : 38 : 56 pppoe pppdC156] : Hangup (SIGHUP) しかし、 PPP リンクか確立する前に す ( 図 29 ) 。 り、 RP-PPPoE か起動して、リンクを確立しようとしま みると、カーネルががって rc スクリプトの起動か始ま こで、 RP-PPPoE の挙動をプート後に追いかけて ん。 initialized. Defau1t = pass a11 , Logging = enable 3500 pppoe [ 165 ] : Interface=t1pO HWaddr=XX: XX:XX:XX:XX:XX Device=/dev/bpfO Buffer tspc のトンネル無効 ところが、 tspc の起動を rc.local などに if [ —f /usr/local/tsp/bin/tspc. conf ] ; /usr/local/tsp/bin/tspc —v -f /usr/local/tsp/bin/tspc. conf then のように書いて自動起動しようとしてもうまくいきませ UNIX MAGAZINE 2001.9 プートか進んで、 NetBSD/i386 (pppoe ・ unimaga. net) (ttyE0) このときに ・モードに移った瞬川です。 と出た直後、シングルューサー・モードからマルチューザ login: 93 実行されるタイミングによっては発生しません ) 。 立する前にハングアップする場合もあります。このため、 してしまいました。どうしてでしようか (ppp リンクを確 が出力されています。せつかくの PPP セッションカ鮗了 Ju1 XX 08 : 38 : 56 pppoe pppd [ 156 ] : Hangup (SIGHUP)
図 1 PureFTPd のコン / くイル $ . /configure —-with—throttling $ make $ su # make install し ) える。 —with—ratios PureFTPd は http://www.pureftpd.org/から入手 できる。 RPM パッケージや deb パッケージなども用意 されているので、インストールは上如勺簡単だろう。ソー スコードからでも configure を使って make できるので、 さほど難しくはない。コンパイルの例を図 1 に示す。 PureFTPd は自前でもデーモンとして重川乍させること ができるが、 inetd などから起動するのが一般的だろう。 /etc/inetd. conf に以下のような行を追加して、 inetd に SIGHUP を送ればインストールは完了だ ( 誌面の都合上、 て折り返しています。以下同様 ) 。 ftp stream tcp nowait root - /usr/sbin/pure—ftpd /usr/sbin/pure-ftpd 簡単な使い グインしてみよう。ューザーのホーム・ディレクトリが オプションを追加したらふたたび FTP サーバーにロ pure—ftpd —A けるだけでよい。 PureFTPd でこれをおこなうには、—A オプションを付 は cd できなくなるので、安全匪が高まるというわけだ。 たユーサーは自分のホーム・ディレクトリより上の階層に コールである。こうすれは、 FTP サーバーにログインし ディレクトリを任意のディレクトリに変更するシステム おこなわれている。 chroot は、そのプロセスのルート・ ム・ディレクトリに chroot してしまうということがよく は FTP サーバーにログインすると、そのユーサーのホー スでは、これはセキュリティ的にマズい。そこで、通常 するためだけに FTP サーバーを開放しているなどのケー ーならまだいいが、ハ VW のコンテンツをアップロード トリにアクセスできてしまう。よはど信用しているユーザ ーにログインすると、そのユーサーはすべてのディレク ます、 chroot の機能を使ってみよう。通常、 FTP サー それでは簡単な使い方をみていこう。 68 ルート・ディレクトリになっていることが分かるだろう。 wu-ftpd などは chroot してしまうと、 /bin/ls などにア クセスできなくなるので、 chroot 先のディレクトリ以下 に ls を用意しないとファイル一覧が表示されない。しか し PureFTPd には ls が内蔵されているので、特別なこ とをする必要はない。 PureFTPd は外部コマンドをいっ さい呼び出すことがないからだ。 コンテンツのアップロードにだけ FTP を利用している 場合、 anonymous ログインは不要だ。このような場合は —E オフションを使う。このオフションは anonymous ロ グインを禁止する。 pure—ftpd —A —E 逆に、 anonymous だけ許可したい場合は一 e オフショ ンを使う。 PureFTPd は、デフォルトではすべてのユーサーにロ グインを許可する。しかし nobody や bin 、 daemon と いった牛朱なユーサーはセキュリティ上ログインさせたく ないだろう。このような場合は一 u オプションを使う。こ のオプションは、引数の数字以下の UID をもっューサー のログインを許可しないというものだ。一般的な Linux システムであれば &€—u 100 " としておけばよいだろう。 pure—ftpd —A —E —u 100 通常の使用では、上記のような設定がもっとも一難勺な ものだろう。このまま運用してもまったく間題はない。 —with—ftpwho anonymouStTP PureFTPd で anonymous FTP をおこなうための条 件は次の 2 つだけた : ・ ftp というューサーが存在する。 ・ ftp というューサーのホーム・ディレクトリか存在する。 つまり、 /etc/passwd に ftp:x: 14 : 50 :FTP User:/home/ftp: UNIX MAGAZINE 2001.9
S ー a 就加 9 Up lPv6 ( 5 ) 図 31 いったんハングアップし、再度 ppp リンク、 tspc 実行 08 : 38. Ju1 XX 08 : 38 Ju1 XX 08 : 39 Ju1 XX 08 : 39 Ju1 XX 08 : 39 Ju1 XX 08 : 39 Ju1 XX 08 : 39 Ju1 XX 08 : 39. Ju1 XX 08 : 39. Ju1 XX 08 : 39. Ju1 XX 08 : 39. Ju1 XX 08 : 39 Ju1 XX 08 : 39 Ju1 XX 08 : 39 Ju1 XX 08 : 39 Ju1 XX Ju1 XX Ju1 XX Ju1 XX e . conf— Ju1 XX size=8192 Ju1 XX 08 : 38 : 56 08 : 38 : 56 08 : 38 : 56 08 : 38 : 56 08 : 38 : 56 adsl. pid ・ pppoe PPPO e PPPO e PPPO e : 57 PPP0e : 02 PPP0e : 02 PPP0e : 02 PPP0e : 05 PPP0e : 05 pppoe : 05 PPP0e : 05 PPP0e ・ 05 PPP0e ・ 05 PPP0e ・ 05 PPP0e ・ 05 PPP0e : 02 PPP0e : 02 PPP0e pppoe PPPd [ 156 ] : Hangup (SIGHUP) pppoe [ 165 ] : Sent PADT pppd [ 156 ] : M0dem hangup pppoe PPPd [ 156 ] : Connection terminated. pppd [ 156 ] : Chi1d process /usr/sbin/pppoe —p /var/run/pppo (pid 164 ) terminated with signal 1 —I t1p0 —T 80 —U —m 1412 ・ 57 pppoe PPPd[156] : Exit . adsl—connect : ADSL connection 10St ; attempting re—connection. pppd [ 243 ] : pppd [ 243 ] : pppoe [ 245 ] : pppd [ 243 ] : pppoe [ 245 ] : pppd [ 243 ] : pppd [ 243 ] : pppd [ 243 ] : pppd [ 243 ] : TSPC1ient : TSPC1ient : TSPC1ient : TSPC1ient : pppd 2.4.0 started by て 00t , uid 0 Using interface ppp0 Interface=t1pO HWaddr=XX : XX : XX : XX : XX : XX Device=/dev/bpfO Buffer Connect : pppO く一一 > /dev/ttyp0 PPP session is 3501 10Ca1 IP address aa . bb . cc . dd remote IP address aa . bb . cc . ee primary DNS address aa. bb. dd. ff secondary DNS address aa. bb. dd ・ gg ma1n : TSP C1ient Version 1 . 0.0 lnitializing main: tspc ー Tunne1 Server Protoc01 C1ient main : Loading configuration file main : Connecting tO server ttys のセットアップ これは、シングルューサー・モードからマルチューサー る RP-PPPoE ( 正確には、 PPPoE カ剛卩き出した pppd) トアップをおこないます。このときに、 tty を使用してい モードに移る際に、 init が /etc/ttys に従って ttys のセッ こで、ハングアッフ・シグナルの前後で PPP によっ このとき RP-PPPoE は、自重加勺に接続をやりなおし pppd [ 156 ] : Connect : pppO く に対して、ハングアッフ・シグナル (HUP) を送るために ます。 ー > /dev/ttyp0 Ju1 XX 08 : 38 : 53 pppoe pppd か落ちます。 94 イ勺です ( 図 30 ) 。 したアドレスに依存する tspc などにとってはけっこう致 アドレスは、多くの場合異なるため、 PPP によって取得 IP アドレスと、再度 pppd か起動した際に取得した IP つまり、 rc スクリプトの処理中に取得した ISP からの レスを取得しなおすからです。 いる場合、 pppd がハングアッフ・シグナルとともにアド れは、 PPP によって ISP カ加勺にアドレスを割り当てて て取得したアドレスが変化するという間題があります。 RP-PPPoE は再起動するので、ネットワーク接続に間 題はありませんが、 tspc による IPv6 over IPv4 トンネ ルか構築できなくなります 15 で、どうするか ? UNIX MAGAZINE 2001.9 15 tspc を起動・す・る必要があります。 # chmod a + x /etc/ppp/ip—up おきます。 そして、忘れずに実行可能にして ( 実行ビットを立てて ) /usr/local/tsp/bin/tspc. conf /usr/local/tsp/bin/tspc —f # Start TSPc # ! /bin/sh /etC/PPP/iP-UP を次のように作成します。 立したときに自重加勺に起動すればよいわけです。そこで、 したがって、 tspc は、 RP-PPPoE によってリンクか不寉 す。 ンクの確立を完了したあとに pppd によって実行されま 述します。 /etc/ppp/iP-UP は、 pppd が正常に PPP リ するのではなく、 /etc/ppp/iP-UP に起動スクリプトを記 たアプリケーションを起動する際は、 rc. local などに配置 そこで、このような RP-PPPoE の実行結果に依存し
図 2 pure-uploadscript て呼び出されるスクリプト # ! /bin/sh echo " $ 1 uploaded" ー /bin/mail ¯s upload pure-ftpwho —c のように -c オプションを付ければ、 Content-Type ヘッ ダ付きの HTML 形式で出力される。 CGI として使用す るときにイ甦リだろう。 pure-uploadscript PureFTPd はファイルのアップロードが成功した場 合、任意のコマンドを実行することができる。アップロ ードされたファイル名を管理者にメールしたりするときに イ甦リに利用できる。この機能を使うには、 PureFTPd の configure 時に一—with—uploadscript オフションを付け てコンパイルする必がある。 ー 0 オプションを付けた PureFTPd は、起重加寺に / var / run/pure-ftpd.upload.pipe という名前付きパイプを生 成する。 PureFTPd はファイルのアップロードが成功す ると、この名前付きパイプにアップロードされたファイル 名を書き込む。 pure-uploadscript はこの名前付きパイプ を監視し、パイプに何かか書き込まれると外部プログラム を実行する。 このように回りくどいことをしているのは、 PureFTPd には、自分自身はいかなる外部プログラムも実行しないと いう言ホリシーがあるからだ。こういった努力に報いる ためにも、 pure-uploadscript から実行されるスクリプト は権限の少ないユーサーで実行するようにしよう。 ー。オフション付きの PureFTPd を起動したら、 root になって pure-uploadscript を以下のように実行する。 pure—uploadscript -B ーて /usr/local/sbin/pure—mail —u 500 /usr/local/sbin/pure-mail は図 2 に示すようなもの -u はスクリプトを実行するときの実効ューザー ID の 指定である。権限の小さなユーザーを新たに作成して、そ 70 カウントするためのツールである。実行すると、現在のロ pure-mrtginfo は、 MRTG を利用してユーサー数を pure-mrtginfo のユーサー ID を指定する。 $ 1 " ftpadmin 図 3 MRTG の言聢 Target Cftp-users] MaxBytes [ftp—users] : YLegend [ftp—users] : LegendI Cftp—users] : LegendO Cftp—users] : users : 1000 ' /usr/sbin/pure—mrtginfo ' UNIX MAGAZINE 2001.9 おわり = に けていただいた。ありがとう、そしてお疲れさまでした。 いろいろとご苦労も多かっただろうが、よくぞここまて続 J が、このはど活動を停止してしまった。たいへん残今だ うになっている私の貴重な情報ソースだった Freshmeat- 新しいフリー・ソフトウェアを試すのがなかば趣未のよ ☆ FTP サーバーのはうか 1 いているように思う。 のもいいが、小規模なサイトではこういったシンプルな しつに小気味よい。高機能で巨大な ProFTPD を使う PureFTPd は ftp. KU3G. org でも使用しているが、 カ咄ているかもしれない。 いるようなので、本誌が店頭に並ぶころには安定した 1.0 ろ機能か周定してきてバグフィックスのほうに力が入って だが、 0.98 あたりが安定して使えるのでお薦めだ。そろそ というわけでもない。原稀卍 ( 筆点 : での最新版は 0.99pre ジョンが出てきたりするので、つねに最新版を使えはいい さらに進化する可帽生がある。一方、動作か不安定なバー PureFTPd はまだ開発か始まったはかりなので、今後 Linux でないと重川乍しないかもしれない。 ができる。これは Linux の /proc を利用しているため、 の成疋ファイルに図 3 のように記述す川ま言求をとること グインユーサー数を MRTG の形式で出力する。 MRTG Tit1e [ftp—users] : FTP users