Linux Gazette 1999年10月号

コンピュータが熱暴走する危険性も少なくなり過ごしやすい季節になってまいりました。コンピュータにのめりこんでいる人はちょっと散歩でもしましょう。

今後は新しいCPU、チップセット、マザーボードなど一段と早いものが出て来るようです。AMDのAthlonもLinuxのカーネル2.2.12から対応したようですが、マザーボードがもう少し安くなってくれないと。

今月のLinux Gasetteの内容

 


Linux Gazette FAQ

Linux Gazetteの投稿欄には同じような質問が何度となく繰り返されています。ここでは質問される頻度の高いものを集めています。


読者からの投稿


今月のニュース


More 2¢チップ


Linuxの未来(By Husain Al-Mohssen)

90年代にオープンソースが始まりかなり広まりましたがこれからもそうとは限らない。いろいろな場面で困難が待ち構えているかもしれない。

例えばフリーソフトウェアや商用パッケージとの軋轢などだ。利益を前提にしている商用パッケージにとっては大問題だし、その他にもライセンスなどの問題が絡んで来る。またユーザーのニーズによる改善も必要だ。他のOSを真似る必要はないが過度に使いやすさを重要視することもよくない。OSの理解もある程度は必要だ。

今後Linuxが存続するためには今まで言われてきたような事を再度認識する必要がある。標準化は大事な作業だ。公開されるプログラムがRed Hat Linux対応とかいうことのないように。システムをコンポーネント化することも求められるだろう。コンポーネント間の範囲を明確に定義して作業をすればアプリケーションの利用も容易になるはずだ。

以上のことを例として私のLinuxボックスを出来るだけ標準に近づけてみよう。構成はルートファイルに500MB、スワップに64MBを使い、ラムディスクからブートしてスワップファイルをループバックデバイスとしてマウントしている。これはシステムを他のコンピュータに移行することが容易だからだ。一つのディレクトリをコピーすれば済む。アプリケーションはコンパイルしてからインストールする。最初のgccからだ。

/usrディレクトリには諸々のプログラムを置く。プログラムが共通に利用するものは/usr/shareにインストールする。/etcディレクトリは階層化する。例えば/etc/man.confは/etc/utils/man/man.confに、/etc/rc.dは/etc/sys/init/rc.dに移動し互換性を維持するためにシンボリックリンクを張る。

私のシステムではアプリケーションは/optディレクトリにインストールする。例えばKaffeeは/opt/languages/kaffeにKDEは/opt/windows/kdeにインストールする。FHSと似ているかもしれないが実は違う。実行されるbinaryは/opt/binにシンボリックリンクを置いている。理由は単純化でありプログラムとサービスのコンタクトポイントの明確化、コンポーネントのインストール、削除、追加を容易にする事だ。

特徴的なのは/lib/vendorディレクトリだ。このディレクトリはカーネルモジュールとベンダーのドライバ用だ。ベンダー用のドライバの場所が明確に規定されればbinaryでの提供であれ ベンダーの協力が増加するかもしれない。

Linuxは成長し安定した。今後もユーザーの支持を維持しようというなら改善は必須だ。ここで述べたことの他にも改革を継続しなければならない。更にLinuxの標準はオープンで誰でもプログラム、サービスなどの追加ができなければならない。そうすれば1社独占のアプリケーションにも対抗できるものになるだろう。


ユーザーが修正できるLinuxゲーム、Bomberman(By David Fauthoux)

フリーウェアにも新しい定義が必要になるかもしれない。Linuxのゲームがファイルを少し修正するだけで変更できるようになったらどうだろう。そのヒントはhttp://david.fauthoux.free.frにある。
例えばファイルの中に


[Page]=

background=myPicture.gif

と書くだけでバックグラウンドが変更される。その他にもアニメーションを追加することも可能だろう。これを実現するのがAddonのテクニックだ。addonの可能性は限られたものだがそれを利用したユーザーの想像力は無限だ。


Procファイルシステム(Jay Fink)

UN*X OSで面白いのが/procファイルシステムだ。非常に興味深いが又非常に危険でもある。

/procファイルシステムはシステムのメモリの状態をそのまま表示している。カーネルとプロセスの情報だ。

/procファイルシステムにより

などの情報が得られる。

/procファイルシステムはカーネルが変われば形態も変わる。/procシステムに関する詳しいドキュメントは見つからないが初心者が困らないよう管理者権限を有するものだけが修正できるようになっている。

カーネル2.2の/procファイルシステムの数値のディレクトリは走っているプロセスのPID毎の情報を表している。しかしその他の情報は使用しているカーネル毎に違っている。慎重に利用して欲しい。


Graphics Muse(By Michael J. Hammel)

Graphics MuseはLinuxシステムのグラフィックスツールの利用、創造、配布、討論などをするコラムです。

今月はこれといってGraphics Muse用のトピックスが見つかりません。その代わりといってはなんですが、私の新しいウェブサイトの紹介をさせて頂きます。新しいウェブサイトはGraphics-Muse.comで今までの仕事を整理するためにも利用できるだろうと思っています。データベースやCGIが利用できれば便利でしょう。同時期にGimp.comも同じサイトに移すつもりです。LGのMuseに関する記事、Gimp.comの記事もすべてここで閲覧できるようにする予定です。

新しいサイトは予定通りなら10月1日からオープンします。DHTML、つまりCSSとjavascriptを使用しますので対応しているブラウザを使って下さい。Netscapeの4.5以降なら問題ないはずです。Microsoftには一切アクセスしませんからIEに関しては分りません。

とにかく新しいサイトをブックマークに登録するのを忘れないで。


利益の追求(By Brian Marshall)

このコラムではオープンソース、クローズドソースの分析をしている。オープンソースで開発されたAIを利用してクローズドなアプリケーションを開発するというケースを想定してオープンソース、クローズドソースの形態、効果などを検証している。オープンソースとクローズドソースの関わり方などからクローズドソースの可能性、オープンソースの効用などを明らかにするがオープンソースの利用はAIアプリケーションを進歩させ最先端の技術にとっては好ましいと言えるというのが結論のようです。オープンソースとクローズドソースを2段、3段の関わりとして捉えて分析しています。


Sfdiskを使う(By Mark Nielsen)

Sfdiskはスクリプトを使ってハードドライブのパーティションを切るツールです。非常に優れたツールですがfdiskのすべての機能があるわけではありません。

Perlは優れたプログラム言語です。「Expect」はperlのモジュールでマクロのように容易にスクリプトを作成するものです。Expectのほかにも次の2つのモジュールをインストールする必要があります。
IO-Stty-0.02.tar.gz
IO-Tty-0.02.tar.gz

Sfdiskを使ってハードドライブの情報を得る
RedHat 6.0にはSfdiskが標準で組み込まれています。IDEのドライブの
ジオメトリを得るには /sbin/sfdisk -g /dev/hdd
サイズを得るには /sbin/sfdisk -s /dev/hdd
パーティション5のIDを変えるには /sbin/sfdisk --change-id /dev/hdd 5 83
とします。この場合はLinuxのIDにしています。

Sfdiskでパーティションを作成、変更する。
最初に「Test.data」というファイルを作ります。ファイルの形式は
Start, Size, ID, Bootableとなります。
Startはシリンダの始めのナンバー、
Sizeはシリンダの数、
IDはパーティションのタイプ、
Bootableはブータブルのパーティションかどうかです。
例えば最初のパーティションのシリンダ数が136、2つ目のシリンダ数が254でIDはSWAP(82)、3つ目のパーティションが残りのスペースを使用しIDはLinux(82)の時は次のようになります。
1, 136
101, 254, 82
201,, 83, *
次に「/sbin/sfdisk /dev/hdd << Test.data」のコマンドを発効してsfdiskを実行します。例えば「/sbin/sfdisk /dev/hdd」のように。
でも実際に試す場合にはマニュアルに目を通してからにして下さい。

ハードドライブのパーティションを削除する
パーティションを削除するスクリプトは面白半分に使うものではありませんのでここには載せません。必要な方はLinux Gazetteのホームページを御覧下さい。もしこのスクリプトを試してドライブのデータが消滅しても筆者は何の責任もありません。十分注意して自己責任でやって下さい。基本的にはExpectモジュールを使えば作業を自動化できます。「Dufus_Move.pl」というスクリプトを保存して「chmod 755 Dufus_Move.pl」とコマンドを発効します。セカンダリコントローラのスレーブのHDDに対して発効するのなら
./Dufus_Move.pl d
として下さい。

Expectを使ってハードドライブのジオメトリを変える
このスクリプトも危険なスクリプトです。必要な方は直接Linux Gazzetからダウンロードして下さい。このスクリプトはシリンダ数を最大にするものです。まずスクリプトを「Change_Cylinders.pl」として保存します。次に「chmod 755 Change_Cylinders.pl」としてモードを変更してから先程と同じHDDに対してなら
./Change_Cylinders.pl d
とします。


デスクトップのLinux(by nod)

Linuxは誰でも使えるものではありません

コンピュータを手に入れて1年のうち半年以上ネットサーフィンをしているならかなりお宅です。でも「もっと高性能で速くて安定しているOSがフリーで手に入る」というような噂を聞いたらどうしますか? しばらく前に文章を入力しているときにシステムが突然固まってしまったとかインターネットにアクセス中にフリーズしてしまったとかいうような経験のある人はLinuxにたどり着くことでしょう。しかも「UNIXはディスプレイの前に何時間も座っているような人達のものではない」という説明もある。

でもLinuxは初心者が面白半分で使うようなOSではありません。「現在は」です。私は家族のシステムの具合が悪いときには必ず呼ばれて解決してあげています。ただし、Windows95の話です。ユーザーが困っている原因は非常にたわいのないものです。私も実際にLinuxをインストールしてみました。そこで分ったことはLinuxは平均的なユーザーが使えるものではないということです。最新のディストリビューションはパーティションマジックやらブートマジックがバンドルされて使い勝手が向上していると人は言いますが、CD-ROMだけでも4-6枚もあります。Windows 95なら1枚のCDーROMとブート用のフロッピですべてが終了します。しかもGUIは分りやすく自分のディスクもすぐに使えるようになります。プリンタのインストールも簡単で他のデバイスは自動的に認識してくれます。

CalderaのティストリビューションにはKDEがバンドルされていますがCD-ROMとフロッピのアイコンがデスクトップに表示されます。HDDはどこに? IDE接続のZipドライブは? プリンタは動かない。インターネットを検索してようやくzipドライブのインストールの方法は分りました。コンソールで


# dmesg | less

と入力したときは驚きました。システムはzipドライブを既に認識していたのです。ただアイコンも表示せずにマウントさえもしてくれません。ドライブを使用するには自分で入力をしなければならないのです。サウンドカードの認識やプリンタのインストールについては話をする気にはなりません。

インストールが終了してもハードディスクは見えません。ちょっと考えればそれが/(root)だとすぐに気がつくのですが。ドライブの他のパーティションの扱いは優れているのですが普通のユーザーには敷居が高いでしょう。システムが認識していてもユーザーが認識できなれば。

Linuxはユーザーが望むものから離れつつあるという件ですが、例えば最初に「K」をクリックしてみましょう。やたらとたくさんのアプリケーションが表示されます。これがすべて必要でしょうか? 例えばSANEというスキャナ用のアプリケーションがあります。インストールやアンインストールはKRPMを使えば非常に簡単なのですがプログラムの起動方法が分りませんでした。マニュアルを見るといろいろなことが書いてありますがUNIXの達人ならともかく私には言葉すら理解できないときがあります。

これはホームユーザーの話です。企業ならやたらとアプリケーションを集めるだけではなくサウンドの設定や簡単なインストールなどにもっと力をいれるでしょう。MicrosoftはLinuxerからは白眼視されていますが、使いやすさを研究するにはいいターゲットだと思います。ホームユーザーはそもそもオープンであるかどうかよりも使いたいときに簡単に使えるシステムを、アプリケーションのインストールがコマンドの入力無しですむシステムを望むものです。

LinuxとWindowsでファイルをコピーする速度を測定してみました。4ファイルでサイズは149メガバイトあります。結果は


  Linux:  1分47秒

Windows:  2分37秒

明らかにLinuxの方が高速です。Linuxは個々のユーザーのためにあるというのが基本ですがいかんせん私は初心者なので理解するのが大変です。


Linuxのジョーク(By Mike Orr)

今月のジョークはどうやら俳句の特集のようです。例えば

プリンターが使えない。

多分故障だろう。

その辺にペンがないだろうか。


Windows NTがクラッシュした。

私は死のブルースクリーンだ。

でも悲鳴を聞くものはいない。

というような感じです。残りはLinux Gazetteを御覧下さい。。


ホームネットワークのセキュリティ(By JC Pollman、Bill Mote)

ホームネットワークのセキュリティは個人の責任で対処しなければならない。クラッカーやスクリプトを弄ぶ人間が増えて来るともはや「もしも探査されたら」ではなく「いつ探査されるか」という状況だ。モデム経由でアクセスしている時でもポートをスキャンされている。これにはISPの対応は当てにはならない。仮に今日スキャンした者をシャットアウトできたとしても明日は別の人間が現れるかもしれないのだ。

この記事はシステムに既にtcp wrapperとipchainsがインストールされていることを前提とします。つまり、カーネル2.2.0以上でリーガル/プライベートネームを持ち、IPマスカレードを利用してインターネットにアクセスしているというのが前提です。

これだけ多数の人がインターネットにアクセスしていたらまさか自分が探査されるはずがないと安心するのは早い。5年前ならいざしらず。今は少しコンピュータが使える人なら簡単にクラックすることができるツールが簡単に手に入ります。クラックして好奇心を満足させている程度ならまだそれほど危険性はありませんがあなたのシステムを次のクラックの踏台として利用するようになると放ってはおけません。

他人のコンピュータに侵入する方法は限りなく存在する。そのすべての方法に対して本来は対処すべきだが、ここではもっとも多い侵入に対する防御方法を示そう。


  ip spoofing

  tcp wrappers

  ipchains

の3通りだ。

IP Spoofingは要求されたホストに対してパケットを送出することでパケットフィルターを巧妙にすり抜けるために使われる。このIP Spoofingからの防御方法はSource Address Verificationといわれるものでファイアウォールではなくルーティングコードによりなされる。ブート時にSource Address Verificationを起動させれば防げる。initスクリプトから起動するようにしておこう。

プログラムは常に動作しているものとは限らない。inetdは必要なプログラムを必要な時に起動するものだ。ユーザーが他のコンピュータにアクセスしようとするときはIPアドレスとポート番号とがセットで使用される。Inetdはアクセス要求があるとポート番号とサービスから特定のプログラムを起動する。tcp wrappersはプログラムの代わりにtcpdを起動させ、tcpdは規則に基づいてプログラムを起動させるかどうかを決定する。が、欠点はinetdから起動されるプログラムに限られるということだ。Sendmail, apache, namedなどはinetdを使用しておらずtcp wrappersの保護は受けられない。

ipchainsはコンピュータ間の接続で使用されるパケットのヘッダーのto, from, ポートを検査し送出するかしないか、受容するかしないかなどを決定するプログラムだ。これによりコンピュータのセキュリティを確保する。

結論として言えることは必要のないサービスを極力立ち上げないことだ。気を配る範囲が小さくなればそれだけ管理に関わる負担も小さくなる。もし追加するマシンが増えた場合には「hosts.allow」ファイルを修正して対処しよう。


DESにLinuxとJavaでチャレンジ(By Carlos Serrao)

DESはオープンコミュニケーションの場でプライバシを保護するために長い間使われてきた。その間にインターネットの世界も大きくなり10年前には安全と思われて来たものが今はそうではなくなりつつある。今回はDESの強度にJavaとLinuxを使って挑戦する。暗号は通信の秘密を保つために使われる。暗号には暗号化と解読とがあるが、その他に電子署名や電子認証などの方法もある。今回は秘密鍵を使用した暗号、DESに挑戦する。

暗号に挑戦するには暗号文そのものの解読、平文を暗号文の解読に利用する、鍵に対する解読などの方法がある。鍵の堅固さも重要だ。鍵が長くなれば暗号文もより強固になり、同時にCPUパワーも必要になる。鍵の堅固さは処理能力に依存する。処理能力が向上すれば鍵も長くなり暗号文のより強固になる。

1974年にIBMはLUCIFER(後のDES)という暗号のアルゴリズムを開発し、1976年に米国で標準として採用された。それ以来標準として20年以上認められているがまだ最強の暗号アルゴリズムであることは確かだ。
DESはブロック暗号だ。64ビット毎に暗号化する。鍵のサイズは56ビットだ。鍵に基づき配列の変更と置換を16回繰り返す。暗号化の詳細に関しては別の書籍を参照して下さい。

RSAは暗号文に対する解読の方法を開発している。最初のDESに対する解読の試みは1997年1月になされた。56ビットの暗号だ。秘密鍵は同年6月17日に発見された。その後もDESに対するチャレンジが繰り返されたが、DESを解読する方法はインターネット上の分散コンピューティングにある。クライアントーサーバータイプのコンピューティングが最も優れているのだろうが環境設定は困難だ。この場合にはサーバーはクライアントの管理をし暗号解読のハードワークはクライアントが請け負うことになる。このようなアーキテクチャを実現するにはプラットフォームとツールの検討をしなくてはならない。

性能と開発形態からOSはLinux、容易さから言語はJavaを選択する。データベースはフリーのPostgresqlだ。Javaで開発されるサーバーソフトウェアはデータベースとJDBC APIを通して通信する。サーバーはRMIでクライアントのリクエストを受ける。クライアントの暗号解読ツールはJavaで開発される。これにより多数のコンピュータ、プラットフォームがコンテストに参加できコンピューティングパワーを拡大することができる。

DES 56ビット鍵はもはや安全ではない。今日のコンピューティングパワーを持ってすればDES鍵を破ることは可能なのだ。これが可能になったのはLinuxとJavaのおかげだ。


HTML Editor++(By Martin Skjokdebrand)

今回紹介するHTML Editor++は使いやすさと豊富な機能という点では非常に優れています。性格は違いますがAmayaといい勝負です。表やテーブルの作成には限られてはいますがウィザードを使用することができます。3列のボタンやショートカットなどもありますが Linuxの環境ではあまり見かけないsharewareのバナーもあります。Windowsの通例でもある使用期限も30日に設定されている。

Sharewareが別にどうとわけではないのです。現にWindowsのsharewareをいくつか使って(遊んで)います。でも短期間で試した限りではHTML Editor++にいくつかの不具合を見つけました。例えば文書を開いて挿入する場所を指定してハイパーリンクのボタンを押すとテキストのウィンドウが開くクリックボタンがあります。ボタンをクリックすると普通はその場所にテキストとリンクが埋め込まれるはずなのですがどういうわけか文書の最後まで進んでそこにテキストとリンクを挿入します。もう一つ「改行」のボタンを押すと
タグがどこかに挿入されます。

このような問題はドキュメントを最初から書けば起こらないはずです。これはオープンソフトウェアではないので私にもどうしようもありません。それに不安定なのは困ったものです。<p>タグを挿入するだけで落ちてしまいます。HTML Editor++は安定しバグも無くさなければなりませんが多少我慢すればいいソフトです。


Linuxサーティフィケーションプログラム(By Dan York)

1年前のLinux Gazetteに書いた記事がきっかけでとんでもない方向(多分正しい方向)へ進んで来ました。その速度は想像もできないくらいです。ここ1年の間に

など非常にたくさんのことがありました。

このようなことはたくさんの人が密に協力してくれないと成功しません。メーリングリストの参加者、BOFの参加者、資金提供者などたくさんの人がLPIをバックアップしてくれました。協力してくれた人々にここでお礼を申し上げます。ただし、これはまだ始まったばかりです。今後もたくさんの人の協力が必要です。LPIに参加して下さい。我々のサイトhttp://www.lpi.orgを覗いて下さい。