図 1 透昼磁皀のデモ用パッチ * * * tn-gw ・ c ・ org 1998 / 08 / 28 13 : 57 : 57 1998 / 10 / 17 13 : 11 : 57 tn¯gw. c 1 . 1 40 , 47 extern char *index ( ) ; #endif / * SYSV * / + #include 十 #include #ifndef く arpa/inet . h> "firewall . 五 " BSIZ * * * 323 , 328 * * * * 325 , 341 exit(l); struct sockaddr_in sys10g(LLEV, "exit host = %. 512S / %. 20S Ⅱ 0 auth" ,rladdr, dst ; riaddr) ; int len sizeof (dst) ; len; getsockname(), (struct sockaddr*)&dst , &len) ; strcpy(dest, strcat(dest, while (argc > 1 ) { 図 2 昼磁皀のデモ用ルール inet—ntoa(dst . sin—addr) ) ; # ローカルホストからの接続は tel Ⅱ etd を起動 netacl—telnetd: permit—hosts 127 . 0 . 0.1 —exec /usr/libexec/telnetd netacl—telnetd: permit-hosts 192 .168.255. * —exec /usr/local/etc/tn—gw # ファイアウォール内部からの接続は許可、 netacl から tn—gw を起動 netacl—telnetd: permit-hosts 192.168.255.1 —exec /usr/libexec/telnetd netacl—telnetd: permit—hosts 192.168.1.100 —exec /usr/libexec/telnetd # tn—gw のルール # ファイアウォール外部からの接続は拒否 tn-gw: permit—hosts * 最後に、プロキシー・サーバーの設正ファイルをデモ用 に変史します。図 2 のルールを netperm-table に言当主し てください。 これでデモの準備は完了です。 ます、実験用言 1 算機から pepper に telnet でログイン UNIX MAGAZINE 1998 ユ 2 します。当然ですが、 IP バケットがファイアウォールを 越えられないため、実験用計算機から pepper に telnet で直接接続することはできません ( 図 3 ー b ) 。ただし、 tn- gw の中継機能を使って pepper にアクセスすることは可 能です ( 図 3- c ) 。 39
図 2 login. conf 部 staff:\ : ignorenologin:\ : ignoretime : \ : requirehome@: \ : accounted@ : \ :path=&/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\ :umask=022:\ : tc=standard : 定がないユーサーは、 default キーのエントリカ甘旨定され たものとみなされます。ューザー ID が 0 のユーサーの場 合は、指定がなければ root キーのエントリカ甘旨定された ものとみなされます。 こでは設定の言物日には立ち入りませんが、概要を把握 するために I 。 g ⅲ . c 。 nf の一部を見てみましよう ( 図 2 ) 。 このエントリは、システムの管理者 (staff) クラス のユーサーへの適用を念頭において作られています。 ig- norenologin や ignoretime は真偽値の特匪です。通常、 /etc/nologin ファイルがあると、ユーザーはそのシステ ムにログインできません。しかし、 ignorenologin カ甘旨定 されている場合には、このファイルを無視します。一方の ignoretime については、マニュアルにも記載がなく、ど のような働きをするものなのかは分かりませんでした。 次の requirehome と accounted も真イ為イ直の牛罸生てす。 こちらは、、@" カ咐いているので、これらの特性が適用さ れないことを意味します。 requirehome カ甘旨定されてい る場合、ホーム・ディレクトリがないとログインできませ ん。しかし、 requirehome@ と指定されていればホーム・ ディレクトリがなくてもログインできます。つまり、シス テムに障害か起きてホーム・ディレクトリがなくなって も、ログインクラス staff に属するユーザーならログイン を許すという設疋です。 マニュアルによれは、 accounted@はこのクラスのユー サーには時間による課金をしないことを意味すると書かれ ています。次の path や umask では、ログイン直後のパ ス変数や umask の値を指定しています。最後に、 tc 工ン トリを使って標準的なユーザー用の standard 工ントリを 読み込んでいます。 ログインクラスや 10gⅲ . conf ファイルの読込みに は、専用のライプラリ関委羊を利用します。詳細は、い gin. conf や login-cap のマニュアルページを参照してく ださい ( 本誌 10 ~ 11 月号の「 UNIX の玉手箱」でも詳 70 しく説明されています ) 。 有効期限 新たに追加された、、パスワード変更時刻 " と、、アカウン トの有効期限 " により、これまでより厳密なアカウントの 管理が可能になりました。パスワード変更時刻は、パスワ ードを変更しなけ川まならない期限を指定するフィールド で、 1970 年 1 月 1 日 0 時 (GMT) からの秒数で指定し ます。何も指定されていなかったり 0 か指定されている 場合には、このフィールドは無効になります。つまり、パ スワードの有刻測限はなく、いつまでも有効になります。 アカウントの有効期限も 1970 年 1 月 1 日 0 時 ( GMT ) からの秒数で指定します。指定した期限を過ぎるとログイ ンできなくなり、期限切れを示す下記のようなメッセージ カ俵示されます。 % telnet localhost Trying 127.0.0.1. Connected to localhost . Escape character iS FreeBSD (hostname . domainname) (ttypl) アカウントの有効月限カ墹近に迫ってきた場合には、そ の旨を警告するメッセージカ咄力されます ( 図 3 ) 。 アカウントの有測限は、システム管理者でなけれは変 更できません。もしこれらのメッセージが出力されたら、 管理者に相談しましよう。 一方、パスワードの変史刻が設定されている場合には どうでしようか。変更日リか近くなると、アカウントの有 期限の場合と同様に警告メッセージが出力されます。た login : logname Sorry your account has expired. Connection closed by foreign host . UNIX MAGAZINE 1998.12
連載 / コミュニケーション用サーパーのインストールと運用 これは、より柔軟にメールを処理したいときに便利です。 各種のメール自動処理プログラムを用いて、次のような処 理をおこなうことかできます。 ・メールを自重加勺に仕分けする。 特定のメッセージに自莇区送する。 ・自動登録機能などをもったメーリングリストを運営す る。 工イリアス・ファイルの更新 sendmail は、多くのメールのェイリアス処理を効率的 にこなすため、ェイリアスを定義したテキストファイルを 毎回読む代わりに、データベース・ライプラリを利用しま す ( どのようなデータベース・ライプラリを使用するかは sendmail のコンパイル時に決定されます ) 。 データベース・ライプラリでは、もとのテキストデータ に対して、高速に検索できる構造をした別のファイルを作 ります。たとえは、 NDBM ライプラリを利用する場合に は aliases ・ pag と aliases. dir というファイルが作成され、 Berkeley DB ライプラリを利用する場合には aliases. db というファイルが作成されます 5 。検索が必要なときには これらのファイルを用います。 ですから、ェイリアス・ファイルを編集して変更した 場合には、データベース・ライプラリの作るファイルも更 新しなければなりません。そのためには、 sendmail に -bi オプションを付けて起動します ( 表 2 参照 ) 。あるいは、 sendmail をインストールしたときに newaliases という コマンド名でシンポリック・リンクカ男長られるので、この 名前で実行しても同じことか可能です。ただし、 :include: で外部のファイルを参照している場合にそのファイルの内 容を変更したときや、 . forward の内容を変更した場合に は、これを実行する必要はありません。 私の経験では、データベース・ファイルがまだ存在し ない状態で newaliases を実行すると、 1 回目はなぜか工 ラーのようなメッセージが出力されるが、もう 1 度 new- aliases を実行すると間題なく実行できる、ということが ありました。新たに sendmail を利用する場合や、違うデ 5 sendmail に - d(). 1 というオプションを付けて力すると、コンパイル 時のオプションか表示されます。これにより、 sendmail がどのタイプ のテタベース・ライプラリを使っているかを石忍できます。 36 ータベース・ライプラリを使い始めた場合などには、 new- aliases を 2 回続けて実行してみてください。 ループの回避 ェイリアス・ファイルによって変換されたアドレスかや はり口一カルに受信すべきアドレスであった場合、変換後 のアドレスについても再度ェイリアス・ファイルが適用さ れます。この作業は、そオび丿ま変換できなくなるところま て繰り返されます。ですから、ェイリアス・ファイルでは ルーフ。か当ーするような定義をしてはいけません。 よくあるのが、 . forward で次のような記述をしてしま う場合です ( ューサー名が koyama だとします ) 。 koyama , /usr/lib/mh/slocal -user koyama" これは、 MH に付属の slocal というプログラムを用い て自重加勺に仕分けをすると同時に、念のために仕分け前の メールをスプールに残しておく設定ですが、このままでは うまくいきまぜん。 1. koyama が koyama と /usr/lib/mh/slocal ・ の 2 つに展開される。 2. そのそれぞれについて、再度ェイリアスの処理がおこな われるため、 koyama に展開されたものが、もう 1 度 koyama と /usr/lib/mh/slocal ・・・ " の 2 つに 展開される。 3. さらに同じことか繰り返される。 実際には sendmail によってループの存在か検出さ このェイリアス設定自体が無効扱いになるので、不幸なル ーフ事故は起こらすにすみます。しかし、工イリアスか無 効になるため、けっきよく slocal は 1 回も起動しません。 こういう場合は次のようにします。 \koyama, /usr/lib/mh/slocal ¯user koyama" 先頭に、、 \ " を付けると、そのアドレスについてはそれ 以 E 工イリアスの展開がなされません。これにより、はし めの目的が達成できます。 必須工イリアス sendmail では、以下の 2 つのメールアドレスに対する ェイリアスをかならす定義しなくてはなりません。 UNIX MAGAZINE 1998.12
述があるはすです。この部分の if 文のプロックのなかに 則々回と則回は、 DNS (Domain Name System) に 次の 1 行を追加します。 goto 文を挿入したので、その次 関連する設疋について説明しました。プロキシー・サーバ ーの設定からすこし離れますが、今回から 2 回に分けて、 の 2 行は永遠に実行されす、メモリを消費するだけのプロ グラムになるような気がします。しかし、細かいことは気 FWTK に透過機能を追加する方法を紹介します。 にせす、そのままさきに進みましよう。 - 透過機能の実装 if (ipforwarding goto ours ; / * added for FWTK * / ipstat ・ ips—cantforward 十十 ; 本論に入る則に、言葉を定義しておきましよう。英語で m—freem(m) ; は transparency や transparent 、 transparent proxy などといわれていますが、日本語ではどう訳されているの 変更カ鮗ったら、ファイルを保存してエデイタを終了 でしようか。 Web て調べたところ、、、透 ; 顳勺にアクセス " します。そして、以下のようにカーネルを明冓築します。 とか、、透過接続 " 、あるいは、、透過性 " などと呼ばれてい るようです。どうも綣ーした名称はなさそうなので、この # cd /usr/src/sys/compi1e/FW/ # make depend 連載では、、茴機能 " ということにします。 # make 言葉だけで説明するより、竹喋を進めながらま早するは (FreeBSD の場合 ) うが感 : 勣勺に把握しやすいと思うので、簡単なデモをしな # mv /kernel /kernel .01d がら透過機能の概要を紹介していきます。 # cp kernel /kernel (BSD/OS の場合 ) 透過機能のデモ # mv /bsd /bsd. 01d # cp bsd /bsd ます、カーネルのソースコードに含まれる次のファイル をエデイタで開きます。ファイルの変更は root の権限で 次に、 tn-gw. c に図 1 のパッチを当てて tn-gw を再コ おこないます。 ンパイルします。 usr/src/sys/netinet/ip- input. c 冫王思、 このファイルでは関数 ipintr() カ綻義されていますが、 そのなかに次のような部分があります。 if (ipforwarding ipstat . ips—cantforward 十十 ; m—freem(m) ; } else FreeBSD 、 BSD/OS 2.1 と 3.1 のいすれにも同じ記 フプイアウォ = ルの作り方 1 崎 } else このパッチはデモ用の tn-gw を作るためのものです。オ リジナル・ファイルはあとで使うので、かならす残しておいて ください。 コマンド行での一当里の操作の例を示します。 # cd /usr/local/src/fwtk/tn-gw/ # patch —p くノヾッチファイル # make 38 UNIX MAGAZINE 1998.12
連載 /FreeBSD ノートー② 図 1 CAM によるソフトウェア成 dump cat file system syste m call inte rface SCSI driver CD-ROM X PT Adaptec driver AHA -2740 tape SC200 Symbios driver デバイスのうち一日勺に利用できなかったり、重川勧鮟定 しないものもあるので注意が必要である。 CAM によるソフトウェアの構成を図 1 に示す。 SCSI コントローラが複数接続され、それぞれに SCSI 機器が 接続されている状況を想定している。 CD-ROM やテー プなどの各 SCSI 機器に対応するドライバと、 SCSI コ ントローラに対応するドライバが用意されているのが分か る。この 2 つのあいだでデータのやりとりを媒介するのが XPT (transport) で、 CAM で規定されているコマンド とその ) 芯答ク辰分けをおこなう。 FreeBSD の CAM 関連のソースコードは /usr/src/ sys/cam に、 SCSI ドライノヾは /usr/src/sys/cam/scsi に、 SCSI コントローラのドライバは対応するバスのディ レクトリ (PCI なら /usr/src/sys/pci) に置かれている。 CAM の規格をまとめた文書「 lnformation Tech- nology ー SCSl-2 Common Access Meth0d Trans- port and SCSI lnterface M0dule 」は、 ANSI (Amer- ican National Standards lnstitute 、 http://www. ドラフト段階のも ansi ・ org/) から入手できる。また、 のが ftp://ftp.symbios.com/pub/standards/io/tl()/ drafts/cam/ に置かれているので参考になる。 去も匠では ATAPI (IDE を拡張した記慮装置用のイン ターフェイス ) が、従来 SCSI か使われていた用途にも進 出してきている。 FreeBSD でもハードディスクや CD ー ROM のほかに、 100MB フロッピーディスクの LS ー 120 58 や Zip ドライプ、 CD ー R やテープなど、サポートされる テンヾイスか増えてきている。とはいえ、汎用のバスである SCSI にくらべて拡張や柔軟性に欠けるので、用途はど うしても限られてしまう。 最近のマザーポードは ATAPI を内蔵しているものも 多い。性能にくらべて安価であることから、 j 尺肢として の魅力を増してきている。 ELF への移行 3. O-RELEASE では、実行形式のデフォルトが a. out 形式から ELF 形式に移行した。 a. out 形式という名称は コンパイラ出力のデフォルトである a. out に由来してお り、歴史はたいへん古い。一方、 ELF は、、 Executable and Linking Format" の略で、上ヒ較的ムも丘になって定め られた統一規格にもとづいて作られている。 a. out と ELF は、機能にこれといって差があるわけで はないが、去も丘の UNIX の世界では ELF が三ⅱ充になっ てきている。それにともない実行形式に関連する各種のプ ログラム、なかでも GNU の binutils ノヾッケージが ELF のみにヌ寸応するようになった。 FreeBSD ではこれまて豸虫 自に a. out 対応をおこなってきたが、負担が大きいため 3.0 を機会に ELF へと移行することになった。 a. out と ELF は互換性がなく、実行時のライプラリ の形式も違う。そのため、両方の形式のプログラムを実行 するにはそれぞれに対応するライプラリを準備する必要が ある。 3. O-RELEASE ではカーネルが両方の形式に対応 し、さらに /usr/lib/aout というディレクトリを作成し て a. out 形式のライプラリを用意することで a. out 形式 のコマンドの実行を可能にしている。 これにともない、パッケージ・コレクションも ELF に 移彳丁することになった。鄲点では移行していないものも あるが、これは過渡期的な状態で、いすれはすべて ELF 形式で用意される。 なお、カーネル自体は現在 a. out 形式で作成されてい る。カーネルを読み込んで実行を移すプートローダか対応 してい川まよく、通常のプログラムを実行する欟冓とは無 関係である。そのため、カーネルが a. 。 ut かどうかという ことと、そのカーネルで a. 。 ut か夫行できるかということ は直接の関係がない。 現在はプートローダが ELF に対応していないためカー UNIX MAGAZINE 1998.12
連載 / IJN Ⅸ知恵袋ーの 図 2 フォントエンジンによる表現力い MagiC POint フォントエンジンが .. プトが付属しているので、コンパイルやインストールで問 題が生しることはないと思います。次に VFlib をインス トールしてください。 VFlib は FreeType をリンクする ので 4 、 FreeType のインストールか完了してからコンノヾ イルします。なお、 VFlib にはバージョン 3 とバージョン 2 の 2 つの系列があります。 MagicPoint が対応している のはバージョン 2 ですから、この系列の去辭斤のものを利用 してください。責斤バージョンは 2.40.0 です。 VFlib に も configure スクリプトが伺属しています。 アウトラインフォント・エンジンがインストールできた ら、必なアウトライン・フォントを入手します。去も丘は 商用の TrueType フォントが上交的安価に入手できるの で、それを購入してもよいでしよう。ただし、とりあえす 英語に関しては x 刊属のピットマップ・フォントを使い 5 日本言韶 ) みフリーのアウトライン・フォントを使えばある 程度の品質か得られます。通称「渡辺フォント」と呼はれ る日本語アウトライン・フォントが ftp://ftp.jp.freebsd .org/FreeBSD/distfiles/watanabe-vf.tar.Z から無償 で入手できます。アーカイプを展開して得られるファイル を、 VFlib の設定ファイルである vfontcap 内でオ旨定さ れた位置へコピーしてください。 vfontcap は、とくに指 定しなければ、、 /usr/local/share/VFlib/ バージョン番 号 /vfontcap" にインストールされています。デフォルト の vfontcap に指定されている渡辺フォントのパス名は、 /usr/local/share/fonts/watanabe-font/ です。 $ uncompress —c watanabe—vf . tar. Z ー tar xf $ cp mincho. vf 1 mincho . vf2 - /usr/local/share/fonts/watanabe-font 最後に MagicPoint をインストールします。 Magic- Point にも configure スクリプトが伺属しています。 con- figure スクリプトを実行すると lmakefile が生成されま す。 xmkmf を使って Makefile を生成したあと、 make を実行してください。 sh configure $ xmkmf —a make 4 FreeType をリンクしない設定にもできますが、あえてそうする理由が ないかぎり FreeType をリンクしておいてかまいません。 5 X には Adobe や Bitstream のアウトライン・フォントが伺属して います。これらのアウトライン・フォントを使ってきれいな英才 : を出 力することもできます。 ある日 Magic POint フォントエンジンか .. ーない日 —BDF フォント —Sony NEWS 用べクトルフォント —FontWave フォント —HBF フォント 英語のプレゼンテーションしかおこなわないなら、 FreeType だけを準備すれば大丈夫です。日本語も使うの であれば VFIib もインストールしましよう。 FreeType と VFIib は http://www.se.hiroshima-u ・ ac ・ jp/&kakugawa/VFIib/ から入手できます。このペー ジには、アウトラインフォント・エンジンに関するさまざ まな情幸にのリンクや、各工ンジンの去斤版が収められて いる FTP サーバーへのリンクがあります 3 まず FreeType をインストールします。 FreeType の 最啼斤バージョンは 1.1 です。近いうちに 1.2 が出るよう ですが、いまのところバージョン 1.2 はプレヒ、ユー リースしかありません。 FreeType には configure スクリ 3 ただし、原稀卍印引点では FTP サーバーへのアクセスがうまくいきませ んでした。 112 UNIX MAGAZINE 1998.12
トがもつ経路テープルのエントリも更新しなけれはなりま せん。経路テープルの管理には 2 不鶤頁の去があります。 1 つは勺な里と呼はれるもので、ホストの管理者が手 動で経路テープルを操作します。 FreeBSD や BSD/OS では、経路テープルを操作す るコマンドは (/sbin/)route です (SoIaris の場合は、 /usr/sbin にあります ) 。 route コマンドはいくっかのサ プコマンドをもち、経路テープルに対して経路情報の追加 や削除、変更、検索などの操作をおこなうことかできます。 詳しい利用ガ去はオンライン・マニュアル route(8) な どを見てください。経路情報窈助日と削除については、以 下のような使い方になります。 route s 社 6C07 れ 7 れ 0 れ d —net des れ佖 0 れ 9 佖 e 0 リ subcommand は操作の種類 ( サプコマンド ) で、追加 の場合は、、 add" 、削除の場合は "delete" を指定します。 dest 佖 0 れにはデスティネーションのネットワーク・ア ドレスを、四 t には対応するゲートウェイの IP ア ドレスを指定します。デフォルト経路の場合は、 destina- 。れの部分に、、 default" を指定します。 たとえば、経路テープルに新たな経路清報を追加するに は以下のように実行します。この例では、、、デスティネー ションが 192.168.5.0 というネットワークにある場合、 192.168.1.1 というゲートウェイ 0 ンヾケットを送る " とい う経路情報を追加しています ( 誌面の都合上、て折り返 168.1. 1 連載 / IJN Ⅸの玉手箱ー① bash# 目 add net 192.168.5.0 : gateway 192. default 192. 168. 1 . 1 bash# route add -net 192 . 168.5.0 しています。以羽司様 ) 。 default 192. 168. 1 . 1 bash# route delete -net 192. 168.5.0 一方、糸各情報を削除するには次のように実行します。 netstart ファイルです。 SoIaris の上昜合は /etc/rc2. d/S69inet に 7 FreeBSD の場合は / etc / rc. conf ファイル、 BSD/OS ならは・ / etc / OS の起動設定ファイル 7 に言当しておきます。デフォル たびに route コマンドを実行するのは面倒なので、通常は 経路テープルを青 J に管理する場合、マシンを起ける bash# ■ delete net 192.168.5.0 : gateway 192.168.1.1 88 記します。 ト経路も含め、 FreeBSD や BSD/OS の起動設定ファイ ルで経路を設定するガ去はあとて紹介します。 経路テープルのもう 1 つの管理ガ去は動的な褌里と呼ば (/sbin/)routed というデーモン・プログラムか経路 テープルを管理します 8 。 routed には大きく分けて 2 つ のモードがあります。 1 つは経路情報をネットワーク内に 共するモード 9 、 もう 1 つは提供される経路情報を、、聴 く " だけのモード (listen モード ) です。 多くの場合、経路情報を提供するデーモンはネットワー ク上に 1 つだけ存在します。残りのホストは routed を listen モードて起動し、提供される糸習各情報を聴いて経路 テープルを自勺に管理します。ー殳に、提供される経路 情報にはデフォルト経路も含まれるため、その他のホスト は routed を listen モードで起動しておけは、個々のホ ストで経路情報を静的に管理する必要はありません。 routed を listen モードて ) 起動するには、 -q オプシ ョンを付けるだけです。通常、 routed デーモンはマシンの 起重加芋に自重加勺に起動されます。 FreeBSD や BSD/OS に関しても、 /etc/rc. conf や /etc/netstart などの成疋 routed デーモンを使う " ことと、、 listen モ ファイルに ードて起動する " ことを記しておけば、あとは何もする 必がありません。もちろん、 route コマンドを使って経 路テープルを操作したり、 routed を起動できるのはスー パーユーサーのみです。 経路情報の管理形態にかかわらす、現在の経路テープ ルを確認するには netstat コマント 10 を使います。 net- stat は経路テープルだけでなく、現在の接続状態や糸兤目青 報ネットワーク・インターフェイスに関する情報など、 ネットワークの状態についてのさまざまな情報を表示する ことができます。多くのオプションがありますが、経路 テープルを確認するには一 rn オプションを指定します 11 たとえは、則記の nullpc で、、 netstat -rn" を実行する と、図 3 のようになります。 8 経路テープルを管理するデーモンとしては、 routed のはかに gated な どもあります。 Solaris なら /usr/sbin/in. routed です。これらの デーモンを糸して、ーモンとも呼びます。 9 ネットワークに対して糸各↑帯匱を流すだけでなく、ほかの routed と経 路情報を交換することもできます。 10 FreeBSD や SoIaris では /usr/bin 、 BSD/OS では /usr/sbin に置かれています。 11 - r だけを指定すると、ゲートウェイの IP アドレスなどを名前に変換し てします。 UNIX MAGAZINE 1998.12
ワークステーションのおと一 0 B . 11.00.01 B . 11 B . 11 B . 11 B . 11 B . 11 図 3 /usr/sbin/swlist の実行結果 XSWGRI 100 UXCoreMedia—J B . 11.00 HPUXJpn32RT HPUXEng32RT B4580AA B3911DB B3911CB B3907CA B3899BA B3392BA 64—bitDevLibs B . 11.00 # Bund1e(s) : B. 11.00.38 HP-UX Extension Pack, Apri1 1998 HP-UX Japanese Media Kit Japanese HP—UX 32—bit Runtime Environment Eng1ish HP—UX 32—bit Runtime Environment B . 11.00.01 HP—UX 11.00 Software Transition Kit HP aC + + Compi1er ( S700 ) HP C + + Compi1er ( S700 ) HP FORTRAN Compi1er and associated products ( S700 ) HP C/ANSI C Deve10per ) s Bund1e for HP-UX 11.00 ( S700 ) HP—UX Deve10per ' s T001kit for 11.0 Cross PIatform DeveIopment Kit .00 .00 .00 .00 .00 B . 11.00 ます。ただし、 CPU か遅かったりメモリか少ないと性 96 で、、、 Source Depot Type:" で、、 Local CD-ROM" を します。今回はローカルの CD-ROM ドライプを使うの で、インストールするソフトウェアがどこにあるかを指定 Source" というタイトルのウインドウが開きます。 swinstall コマンドを起動すると、最初に、、 Specify mount -F hsfs /dev/dsk/cOt4dO /SD—CDROM 、、 mkdir /SD-CDROM" として作ります ) 。 おきます (/SD-CDROM ディレクトリがない場合は ROM を /SD-CDROM ディレクトリにマウントして います。その則に、次のようにして、 Application"CD- インストールには、 /usr/sbin/swinstall コマンドを使 めに読んでおけは、間違うことはないはずです。 よるソフトウェアの管眦に目をとおしておきます。まじ トウェアです。インストールの前に、マニュアル「 SD に OS のインストールか終ったら、次はオプション・ソフ swinstall を使う ます ( 図 2 ) 。 る config や install. 10g などのファイルに言当求されてい そのマシンの /var/opt/ignite/local ディレクトリにあ Ignite-UX での設定は、 HP-UX のインストール後、 ストールした B132L では 30 分ほどて終りました。 ールを始めます。マシンの生能にもよりますが、私がイン これらの項目を確認したら、、、 G 。 ! " を選んでインスト 11.0 は正しく動きません。 かを確認します。これが選はれていないと、 HP-UX ・ Software タブで、、 General Patches" か選ばれている 能力イ氏下する場合があります。 " が /SD-CDROM 選ぶと、 Source Depot Path. になっているはすです。 /SD-CDROM はデフォルトの 成疋ですが、 swinstall コマンドのオプションで変えるこ ともできます。 次に、 Actions メニューの、、 Add New Codeword を開き、インストールするソフトウェアのパスワード (Codeword) を入れます。購入したオプション・ソフト ウェアには、かならす Codeword か書かれた紙が付いて いるはすです。紛失しないように注意しましよう。 Codeword を入力すると、インストール可能なソフト ウェアの一覧が表示されます。ここでマークを付け、 Ac- tions メニューから、、 lnstall" を選ぶと、インストールす るソフトウェアの前処理カ始まります。この処理か終った ら [OK] ボタンを押します。これで、インストールか始ま ります。 インストールの記録は、 /var/adm/sw ディレクトリ に残っています。どのようなソフトウェアがインストー ルされているかは、 /usr/sbin/swlist コマンドで分かり ます ( 図 3 ) 。 今回は、 HP-UX 11.0 のインストール上の注意点を簡 単にまとめてみました。この記事を書くためにマニュアル を読み返してみましたが、竹喋に必喫な事柄はちゃんと書 かれています。私のように、とりあえすインストールを始 めて分からなくなったらマニュアルを読むのでは、かえっ て時間か駄になるような気がします。 ☆ UNIX MAGAZINE 1998.12 ( さかした・しゅう ASTEC)
プログラミング・テクニック 14 図 5 パスワード・ファイルー里 (/usr/src/usr ・ sbin/vipw/pw-util. c 部 ) void pw—edit (notsetuid) int notsetuid ; int pstat ; char *P , *editor ; if ( ! (editor = getenv("EDITOR") ) ) editor _PATH_V I ; if ()p = strrchr(editor, ' / ' ) ) ) else p = editor; if ( ! (editpid = vfork())) { if (notsetuid) { (void)setgid(getgid()) ; (void)setuid(getuid()) ; execlp (editor , p , tempname , NULL) ; -exit(l); editpid = waitpid(editpid, (int *)&pstat, if (editpid pw—error(editor, 1 , 1 ) ; else if (WIFSTOPPED (pstat) ) raise(WSTOPSIG(pstat) ) ; for ( ; WUNTRACED ) ; else if (WIFEXITED (pstat) & & WEXITSTATUS (pstat) break ; else pw—error (editor , 1 , 1 ) ; editpid = その他のプログラムでの変更 このように、 vipw を使えば master. passwd をエディ タで編集できます。しかし、パスワードの変史時刻やア カウントの有期限を指定するには、 1970 年からの秒数 を当しなけれはなりません。そのたびにいちいち手イ乍業 で計算するのではたまりません。ある日時を指定すると、 1970 年からその時刻までの秒数を計算するようなプログ ラムを作ることもできます。しかし、システムの作成者も そのあたりは心得ていて、より簡単にこれらのフィールド を指定できるコマンドか準備されています。 たとえば、 vipw のところで触れた chpass コマンド を使えは、より分かりやすい記法で日イ寸が指定できます。 chpass コマンドで任意のユーザーのパスワード情報を変 更する場合は root の権限で実行します。引数には、パス ワード・エントリを変史したいユーサーのログイン名を指 UNIX MAGAZINE 1998 ユ 2 定します。すると、指定したユーサーに関する情報を 1 つ のファイルとして編集できるようになります。 #Chang1ng user database information for logname . Login: logname Password: * 1003 Gid [ # or name] : 1001 Change [month day year] : Oct0ber 23 , Exp i re [month day ye ar] : C1ass: standard Home directory : /home/logname S e11 : /bin/csh Fu11 Name : User & Location: Office Phone: Home Phone : 1998 chpass では、編集後に各フィールドか正しい値になっ ているかを十ヾ、パスワード・ファイルに 0 当求できる形式 73 に変換します。このプログラムでは、年月日が一信己の順番
次に、ファイアウォール・ホストをリプートして新し いカーネルを起動します。 # sync # sync # sync # reboot UNIX MAGAZINE 1998.12 Escape character iS Connected tO sugar. raccoon. doubutsu. CO ・ JP ・ Trying 192.168.1.100. pepper% telnet sugar net でオ妾続しようとすると、次のように拒否されます。 ためしに pepper からファイアウォール・ホストに tel - イアウォールに穴カ鯛いてしまったのでしようか・ はすなのに、図 3 ー d では telnet に成功しています。ファ 機から pepper へは telnet で直接アクセスできなかった ファイアウォールを越えられないためでした。実験用引算 図 3 ー b で telnet の接続に失敗したのは、 IP バケットが たしかにイ叫リですが、何かおかしいと思いませんか。 ちょっと待てよ れを、、透勺 " と呼ぶようです。 カ硬えるわけです。日本のファイアウォール市場では、 らにいえばファイアウォールの存在を意識せずに telnet これは便利ですつまり、プロキシー・サーバー セスも可能です。 pepper だけではなく、その他の言算機への telnet アク 実行 " することなく、いきなり pepper に接続できます。 ろが、改造後は、、 tn-gw に接続し、 connect コマンドを ドモードで connect コマンドを実行していました。とこ ォール・ホスト上の tn-gw に接続し、 tn-gw のコマン クセスする場合、匿する前は図 3 ー c のようにファイアウ ファイアウォールの向こうにある計算機に telnet でア でアクセスすると、今度は接続できました ( 図 3 ー d ) 。 こで、もう 1 回夫馬用計算機から pepper に telnet # make insta11 # cd /usr/local/src/fwtk/tn-gw/ てて再コンパイルした tn-gw をインストールします。 ファイアウォール・ホストか起動したら、パッチを当 ( 詳しくは彳します ) 。 みえますが、ネットワーク機能が大きく変わっています こでプートしたカーネルは、なんの変化もなさそうに 一方を第 - 広可の - ド Connection closed by foreign host . pepper% こで、 netperm-table の次のルールをコメントアウ トし、 tn-gw を起動しないように設定を変更します ( 誌面 の都合上、て折り返しています ) 。 netacl—telnetd: permit—hosts 192.168.255. * 疇 - —exec /usr/local/etc/tn—gw ふたたび実験用言 t 算機から pepper に telnet でアクセ スすると、図 3- b のようなタイムアウトによる失敗ではあ りませんが、やはり接続できません。 どうやら tn-gw に関係がありそうですが、本当に tn- gw が telnet の接続を中継しているのでしようか。 ファイアウォール・ホスト上には、図 3 ー d を実行した ときのログか求されています。 Oct 17 23 : 55 : 47 sugar netacl [ 12394 ] : permit host=exp. raccoon. doubutsu. CO. jp / 192.168.255.2 service=telnetd execute=/usr/local/etc/tn—gw Oct 17 23 : 55 : 47 sugar tn ー gw [ 12394 ] : permit host=exp ・ raccoon. doubutsu. co. jp / 192.168.255.2 use Of gateway Oct 17 23 : 55 : 47 sugar tn—gw [ 12394 ] : permit host=exp ・ raccoon. doubutsu. co. jp / 192.168.255.2 destination=192. 168 . 1 . 20 Oct 17 23 : 55 : 47 sugar tn ー gw [ 12394 ] : connected host=exp ・ raccoon. doubutsu. co ・ jp / 192.168.255.2 destinatio Ⅱ = 192. 168. 1 .20 Oct 17 23 : 55 : 51 sugar tn ー gw [ 12394 ] : exit host=exp. raccoon. doubutsu. CO. jP/192.168.255.2 dest = 192. 168 . 1 .20 in=78 out = 42 user=unauth duration=4 これを見ると、 netacl から tn-gw か起動さ tn-gw が pepper ( 192.168.1.20 ) に接続しています。 telnet ポ ートにバケットか届くと、ファイアウォール・ホスト上 で tn-gw か起動されています。そして、誰かが telnet の接続要求先は pepper だと判断し、コマンドモードの connect を実行したようです。 さしあたり、ファイアウォールに穴はなく、 tn-gw が 接続を中継したことは分かりました。しかし、 「実験用言 t 算機から送出されるバケットは pepper 宛やの に、なんでファイアウォール・ホスト上で tn - gw か起動 すんねん ? 」 「誰が connect コマンドを実行してるんや ? 」 という新たな疑問カヾ孚かびます。 41