lnterix - みる会図書館


検索対象: UNIX MAGAZINE 2004年6月号
11件見つかりました。

1. UNIX MAGAZINE 2004年6月号

連載 /Services for UNIX ーー② 図 8 Windows のアーキテクチャと lnterix サプシステム 中枢 / 機能サプシステム 環境サプシステム ユーザーモード カーネルモード マネージャーが用意されており、 Win32 サプシステム ハードウェア抽象化層 ( HAL ) Windows カーネル lnterix サプシステム これらを使用することで 表 3 lnterix サプシステムを構成するファイル W ⅲ 32 環境から lnterix アプリケーションを実行できま す。また、 ksh (Korn シェル ) などの lnterix のシェルか らは、 Win32 アプリケーションを実行できます。 図 8 には W ⅲ 32 サプシステムと lnterix サプシステ ムが示されていますが、 SFU を導入する前の Windows 2000 では、 lnterix サプシステムの代わりに POSIX サ プシステムが提供されています。 Windows 2000 では、 SFU の導入により POSIX サプシステムが lnterix サプ システムに置き換えられます。 lnterix の構成 lnterix は、 lnterix サプシステム、関連ユーティリティ、 そして lnterix 上で動作するアプリケーションを開発する ためのソフトウェア開発キット (SDK: Software Devel- opment Kit) の 3 つで構成されています。 前回に SFU の導入方法を解説しましたが、セットアッ プで選択するコンポーネントのうち、、、 Base ユーティリ ティ " lnterix GNU ユーティリティ " lnterix GNU SDK" lnterix SDK" の 4 つが lnterix の関連コンポー ネントになります。、、 Base ユーティリティ " が lnterix サ プシステムと関連ユーティリティ、 lnterix GNU ユー ティリティ " が関連ユーティリティのうち GNU のライセ ンス (GPL) のもとで提供されるもの、、、 lnterix SDK' が SDK 、、、 lnterix GNU SDK" が SDK のうち GPL で 提供されるものになります。 GNU 関連のユーティリティ UNIX MAGAZINE 2004.6 ファイル名 PSXSS. EXE PSXDLL. DLL POSIX. EXE PSXRUN. EXE PSXDRV. SYS lnterix サプシステム・サー . バー lnterix サプシステム・クライアント DLL lnterix サプシステム・コンソールセ ッション・マ不一シャー lnterix サプシステム 不一ジャー lnterix サプシステム・ ほかのコンポー ドライバ ・セッションマ や SDK は GPL への同意が必要なため、 117 lnterix サプシステムを構成するファイルは表 3 の 5 つ リマップ・ファイルなどもサポートしています。 フェイス、 SystemV のプロセス間通信、擬似鋿末、メモ ています。そのほかにも、ソケット、 BSD 4.4 インター lnterix サプシステムは、基本的に POSIX. 1 に準拠し が用意されているので、それらを起動してもよいでしよう。 きます。また、バッチファイルとして csh. bat と ksh. bat 作成される、、 Windows Services for UNIX" から起動で れのシェルも、 SFU 導入後にプログラム・フォルダとして ので、対話型シェルとしてはこちらをお薦めします。いず ます。日本語をサポートしているのは Korn シェルのみな います。シェルは C シェルと Korn シェルカ甘是供されてい lnterix 関連ユーティリティは 350 個以上が用意されて のパッケージの *sources*interix に納められています。 のユーティリテイやライプラリのソースファイルは、 SFU ネントとは別に導入するようになっています。なお、 GNU

2. UNIX MAGAZINE 2004年6月号

連載 /Services for UNIX $ fileinfo psxss . exe 図 9 lnterix サプシステムのファイル蒲報 psxss . exe 8 . 0 . 1969 . 1 $ fileinfo -k a11 psxss . exe psxss . exe CompanyName Microsoft Corporation Fi1eDescription lnterix Subsystem Server Fi1eVersion 8 . 0 . 1969. 1 Interna1Name psxss . exe Lega1Copyright (C) Microsoft Corporation. A11 rights reserved. Origina1Fi1ename psxss . Microsoft Windows Services fo て UNIX ProductName ProductVersion 8 . 0 . 1969. 1 図 10 POSIX. EXE と PSXRUN. EXE 旧 te 「 ix 非コンソー丿レ アプリケーション PSXRUN. EXE 旧 terix サプシステム (PSXSS) ューザーモード カーネルモード 抦 terix コンソー丿レ アプリケーション Windows カーネル です。 PSXSS. EXE はサプシステム本体、 PSXDLL. DLL は lnterix 用のアプリケーションから利用される基本インタ ーフェイスを実装した DLL です。プロセスやスレッド管 理、基本入出力処理は PSXDLL. DLL で実装されており、 lnterix アプリケーションは libpsxdll. a をリンクすること でこのなかの関数を使用できます。また、 PSXDRV.SYS は lnterix サプシステムで使用する入出力ドライバです。 これらの lnterix サプシステムのファイルの情報は、 file ー ⅲ fo ユーティリティで表示できます ( 図 9 ) 。 POSIX. EXE と PSXRUN. EXE POSIX. EXE と PSXRUN. EXE は、 lnterix アプリ ケーションを実行するための W ⅲ 32 コマンド・ユーティ リティです ( 図 10 ) 。 POSIX. EXE は、コンソールの入 出力をおこなう lnterix アプリケーションを実行するとき に使います。コンソール入出力を必要とする lnterix アプ 118 Win32 コンソー丿レ Win32 サプシステム (CSRSS) リケーションを実行する際は、コマンド・プロンプトから アプリケーションを直接起動するか、アプリケーション実 行イメージのパスを引数として POSIX. EXE を実行する 必要があります。 コマンド・プロンプトから lnterix アプリケーションを 起動した場合は、 lnterix サプシステムによって POSIX. EXE が起動されます。 POSIX. EXE はアプリケーショ ンを起動したコマンド・プロンプトのコンソールを継承し、 そのコンソールを通じてアプリケーションの入出力をおこ ないます。 POSIX. EXE を明示的に指定して起動した場合は、同 様に継承できるコンソールがあればそれを通じて入出力を おこないます。コンソールがない ( 工クスプローラなどか ら POSIX. EXE を起動した ) 場合は、新たにコンソール を生成し、 lnterix アプリケーションからの入出力と結びっ けます。 具体例として、 lnterix の標準シェルである Korn シェ UNIX MAGAZINE 2004.6

3. UNIX MAGAZINE 2004年6月号

連載 /Services for UNIX 図 13 ロケールデータの参照 $ ls —F /usr/share/locale ASCII_ EUC-JP_ POSIX/ SJ 工 S_@ _ASCII _EUC-JP _SJIS@ _eucJP@ windows eucJP_@ ー 932 $ ls —F /usr/share/localedef/ charmaps/ src/ $ ls —F /usr/share/localedef/charmaps ASCII . cm EUC-JP . cm windows—932. cm $ ls —F /usr/share/localedef/src L . POSIX L. ja—JP. EUC—JP L. win-ja_JP 環境からプロセスを生成するだけですが、必要なデータを 引数で渡すことで、 lnterix と Win32 のプロセス間で簡 単なデータ交換がおこなえます。たとえば、 lnterix 上の 、、プロセス I " が W ⅲ 32 上の、、プロセス W" とデータ奐 をおこなう必要がある場合は、 W ⅲ 32 上の、、プロセス W" から POSIX. EXE や PSXRUN. EXE で lnterix 上の 、、プロセス 12" を呼び出し、その際に必要なデータを引数と して渡すことができます。、、プロセス 12" は lnterix 上の プロセスなので、、、プロセス I" と一ヨ殳の UNIX 上のプロ セス間通信がおこなえます。 逆に、 lnterix 環境から Win32 上のアプリケーショ ンを利用する場合は、 lnterix から W ⅲ 32 アプリケー ションをそのまま実行できます。ただし、 Windows 標 準のコマンドは %WINDIR% (%SYSTEMROOT%) や %WINDIR%*system32 (%SYSTEMROOT%* system32) に配置されていますが、これらを実行するに は PATH 変数に追加するか実行時に明示的に PATH を 指定しなければなりません。また、コマンド・プロンプト (CMD. EXE) にはいくつかの内部コマンドがあります。 lnterix では、これらの Windows 標準コマンドを実行す るために、 runwin32 コマンドが用意されています。 run- win32 コマンドは、 PATH 操作をすることなく、 lnterix から W ⅲ d 。 ws 標準コマンドを実行できます。たとえば、 次のコマンドは lnterix のシェルから XCOPY を実行し ています。 $ runwin32 xcopy testl test2 さらに lnterix では、よく使用する Windows コマン ドについては、 /usr/contrib/win32/bin に runwin32 を使ったスクリプトがあらかじめ用意されています。その UNIX MAGAZINE 2004.6 j a—JP. EUC—JP/ ja—JP. SJIS@ ja—JP.eucJP@ win—ja—JP. WiⅡd0買Sー932/ i Ⅱ dows ー 932 unicode—mb—maps/ は /usr/contrib/win32/bin にあるスクリプトの一部で 用できるかは wvisible コマンドで判定できます。図 15 ンを起動できるか、つまりウインドウ・ステーションを利 また、スクリプトの実行環境で GUI アプリケーショ 、 Windows-GUI" と判別されます。 ます。 GUI アプリケーションの場合は、図 14 のように 行ファイルが GUI アプリケーションかどうかを判別でき します。 lnterix では、 file コマンドを使うことにより、実 GUI アプリケーションを呼び出すスクリプトの実行に失敗 していてウインドウ・ステーションカ坏リ用できない場合は、 しかし、 Telnet 経由でログオンしていたり、バッチで動作 ず、すべての W ⅲ 32 アプリケーションを呼び出せます。 していれば、 GUI アプリケーションかどうかにかかわら から使用する場合、 Windows のデスクトップにログオン ます。 W ⅲ 32 アプリケーションを lnterix のスクリプト ンと呼ばれる Windows のデスクトッフ境が前提になり ン ( GUI アプリケーション ) は、ウインドウ・ステーショ W ⅲ 32 でウインドウを生成するようなアプリケーショ などになります。 から実行する場合のコマンド名は、 wmore 、 wtype 、 wping けたスクリプトが用意されています。したがって、 lnterix /contrib/win32/bin にはファイル名の先頭に、、 w " を付 dows 側の標準コマンドを lnterix から利用するため、 /usr ping などです。これらと同一のファイル名をもつ W ⅲー terix にも用意されています。たとえば、 more や type 、 一部の Windows コマンドは、同一のファイル名で 11 ト ます。 lnterix のシェルからそのまま実行できるようになってい るようになっています。たとえば、上記の XCOPY も ため、 runwin32 コマンドを個別に使わなくても実行でき 123

4. UNIX MAGAZINE 2004年6月号

連載 /Services for UNIX ー - ② ディレクトリになります。ルート・ディレクトリの下には、 、、 /bin" や、、 /usr" などの UNIX で一・般的なディレクトリ カ己置されています。それ以外にも、特殊な未をもっデ ィレクトリがいくっか用意されています。 lnterix のシングルルート・ファイルシステムを実見する 特徴的なディレクトリが、、 /dev/fs" です。 Windows の 各ドライプは、この、、 / dev / fs " の下に配置されています。 たとえば、 C ドライプは、、 / dev / fs / C " 、 D ドライプは 、、 /dev/fs/D" としてアクセスできます。 また、 Windows ネットワークへのアクセスは、、、 / net ' ディレクトリからおこなえます。 Windows では、ネット ワークで共有化された他のコンピュータ上のディレクトリ にアクセスする場合、ネットワーク・ドライプを割り当て たり、沙名前付け規則 (UNC) を使用します。 UNC は ¥¥サーバー名¥共有名 " の形式で、ネットワーク・ドラ イプを割り当てることなくディレクトリやファイルにアク セスできます。、、 / net " ディレクトリは、 lnterix からこ れと同様のアクセスを可能にします。 lnterix から、、 ls /net" を実行すると、ネットワーク 上でファイルやプリンタを共有しているコンピュータの名 前カ汐リ挙されます。、、 ls /net/computer" を実行すると、 computer という名前のコンピュータ上にある共有ディレ クトリの一覧が表示されます。そして、、、 /net/computer /share/file" の形式で、 share という共有ディレクトリ上 の file というファイルにアクセスできます。これらの操作 は、通常の Windows ではそれぞれ表 5 のようにおこない ます。 また、 UNIX と同様にプロセス情報を、、 /proc" ディレ クトリで取得できます。図 12 は、 lnterix で、、 /proc" デ ィレクトリを列挙し、プロセス ID (PID) が 3896 のプロ セスの糸 t 情報を取得した例です。 lnterix の日本語対応 lnterix サプシステムはロケールを扱うことができ、さ らにワイド文字 (Wide Character) をサポートしていま す。サポートしているロケールと文字セットは表 6 のとお りです。 日本語対応の文字セットとしては、 EUC-JP (eucJP) と Shift JIS をサポートしています。 Shift JIS は、 Win- dows のコードベージ 932 の文字セットカそのまま使われ UNIX MAGAZINE 2004.6 表 5 lnterix から共有ティレクトリへアクセスする方法と通常の Windows でのアクセス方法 lnterix からのアクセス ls /net ls /net/computer ls /net/computer/share cat /net/computer=> /share/file Ⅵみ in32 からのアクセス net View net view **computer dir **computer*share type **computer=+ *share*file ています。また、 Unicode もサポートしているので、 iconv コマンドで Unicode との変換もおこなえます。ロケール 情報を扱うために locale コマンドが用意されているほか、 localedef コマンドでロケールを追加することも可能です。 lnterix カ材票準で備えているロケールデータは、図 13 のよ うに、、 /usr/share/locale" で見ることができます。 lnterix のユーティリティのうち、日本語に対応してい るものを以下に示します。 basename cat chgpath chgrp chmo d chown cp dat e df dirname du echo egrep fgrep find grep head host- name iconv id ksh less ln locale logname ls man mkdir more mv ntpath2posix posixpath2nt pwd rm rmdir sed tail test unixpath2win winpath2unix iconv コマンドでは、 EUC-JP と Shift JIS 、 Unicode の変換がおこなえます。また、 ntpath2posix 、 posixpath 2nt 、 unixpath2win 、 winpath2unix は、 UNIX/POS- IX 形式のパス名と Windows 形式のパス名を変換します。 これについては彳杢します。 また、 lnterix でアプリケーションを開発する際は、ワ イド文字用に用意されたシステムコール (wcs—xxxx とい う名前の 27 個の関数 ) や、ワイド文字を扱えるシステム コール ( 60 個の関数 ) が使えます。後者には wcslen iswupper() などがあります。 Win32 環境との連携 lnterix と W ⅲ 32 は別のサプシステムなので、それら で動作するアプリケーションは直接連携することはできま せん。たとえば W ⅲ 32 環境であれば、ローカルマシン上 で利用できるプロセス間通信には DDE やメモリマッピン グなどがありますが、 W ⅲ 32 環境と lnterix 環境のあい だではこのような手法は利用できません。ローカルマシン 上の通信であっても、ソケットなどのネットワークに対応 121

5. UNIX MAGAZINE 2004年6月号

連載 /Services fo 「 UNIX ーー② リックしても、拡張子がないので実行可能ファイルと認識 されません。しかし、ファイル名を ksh. exe に変更すると 実行できるようになります。 コンソール入出力を必要としない lnterix アプリケー ションは、 PSXRUN. EXE で起動します。 PSXRUN. EXE は、 UNIX のデーモンのように対話的な処理を必要 としないアプリケーションや、 X クライアント・アプリケー ションの起動に使います。 たとえば、 xcl 。 ck の起動は次のようにおこないます 3 。 psxrun. exe —u /bin/ksh ー 1 —c - "/usr/X11R6/bin/xc10ck —display 10ca1host:O" PSXRUN. EXE の引数、、一 u " と、、一 c " 、そして、、一 p ( ここでは使っていませんが ) は POSIX. EXE の引数で /p" と同じものです。 PSXRUN. EXE ある、、 / u にのみ用意されている引数としては、コ " があります。 れはログファイルを指定する引数です。 PSXRUN. EXE の場合はコンソール入出力がおこなわれないので、アプ リケーションからのエラー出力などを保存するために使い ます。 lnterix の新機能 SFU 3.5 に含まれる lnterix の新機能としては、国際化 対応が挙げられます。じつは SFU 3.0 日本語版でも ln- terix サプシステムの国際イは寸応はおこなわれていました が、その半年ほと揃にリリースされた英語版は対応してい ませんでした。そのため、同じ lnterix 上で動作するアプ リケーションであっても、日本語版と英語版のあいだに互 換性はなく、とくに SFU 3.0 日本語版の lnterix 上で開 発したアプリケーションは英語版では動作しないという制 限がありました。今回の SFU 3.5 は当初から lnterix の 国際化が進められていたため、英語版と日本語版のあいだ に機能面での差はなくなっています。 もう 1 つの大きな特徴として、 POSIX 準拠のスレッ ドである pthread への対応力擎げられます。 SFU 3.0 の lnterix はスレッドに対応していなかったので、 UNIX 上 でスレッドを使用していたアプリケーションを移植するの は困難でした。 lnterix カ噺たに pthread をサポートし たことで、マルチスレッド対応アプリケーションの移植が 3 SFU の lnterix は X クライアント環境を提供していますが、 X サー 120 バーは用意されていません。 表 4 更新されたユーティリティとライブラリ ユーティリティおよびライブラリ SFU 3.0 X11 sendmail GCC BIND gdb ftp X11R5 8.11.5 2.7.2 8.1.2 4.16.1 SFU 3.5 X11R6.6 8.12.8P1 3.3 9.2.2 5.3 3.2 可能になったほか、高いパフォーマンス能力が要求される アプリケーションの開発にスレッドを使えるようになりま 0 lnterix のもう 1 つの改良は、付属ユーティリティなど のバージョンアップです。 lnterix には管理者やユーザー がすぐに使えるユーティリティが含まれていますが、 SFU 3.5 ではそれらのバージョンカ噺しくなっています。たと えば、 GCC はバージョン 2.7.2 から 3.3 に、 X11 は R5 か ら R6 に変更されています。バージョンか哽新されたユー ティリテイやライプラリの一覧を表 4 に示します。なお、 X11 については従来どおり R5 も提供されています。 シングルルート・ファイルシステム UNIX ユーザーが Windows を使用する際に戸惑うこ との 1 つがディレクトリの構造でしよう。物理的なディス クや各ディスクのパーティションごとに、、 C : " や、、 D : " の ようにドライプ文字が決められ、各ドライプの下にディレ クトリ ( フォルダ ) カ乍成されます。つまり、ドライプご とに複数のルートがあるのが Windows の特徴です。ただ し、 Windows 2000 や Windows XP 、 Windows Server 2003 では、 NTFS に、、リバースポイント " という UNIX のシンポリック・リンクに似た機能が実装されており、ド ライプを別のディレクトリのサプディレクトリとしてマウ ントできます。 / をルートとするディレクトリ構 UNIX の場合は、 造をもちます。物理的なディスクやパーティションカ夏数 あっても、 / をルートとするパスを指定することでディ レクトリやファイルにアクセスできます。 lnterix では、 UNIX と同じ方法でファイルやディレク トリにアクセスできるようにするため、シングルルート・ ファイルシステムという、、 / " をルートとするディレクトリ 構造を実現しています。ルートは SFU をインストールし たディレクトリ、つまり環境変数 % SFUDIR % で示される UNIX MAGAZINE 2004.6

6. UNIX MAGAZINE 2004年6月号

連載 /Services for UNIX 図 14 file コマンドによる半拐リ /dev/fs/C/WINDOWS/system32/notepad. exe: Windows NT PE format (EXE) , executable not stripped lntel $file /dev/fs/C/WINDOWS/system32/notepad. exe Windows—GUI DOS executable (EXE) 図 15 wvisible コマンドを使用したスクリプト ( 抜粋 ) case "$(file $PROG)" in *Windows—GUI*) wvisible Ⅱ errmsg " ${PROG} " *Windows—CUI* ー *NT—native*) doscmd ${cmd} " $@" esac 図 16 パスの変換 $winpath2unix " c : *ascii*unixmag /dev/fs/C/ascii/unixmag $unixpath2win /dev/fs/C/ascii/unixmag C:*ascii*unixmag すが、 file コマンドと wvisible コマンドを使ってアプリ ケーションの動作の可否を判定しています。 すでに解説したように、 lnterix では UNIX と同等のフ ァイルアクセスを実現するために、シングルルート・ファイ ルシステムを提供しています。 Windows アプリケーショ ンとの連携には UNIX/POSIX 形式のパスと Windows 形式のパスの変換が必要になりますが、 lnterix にはそのた めに unixpath2win と winpath2unix という 2 つのコ マンドが用意されています。図 16 は、 Windows 形式の c:*ascii*unixmag と UNIX/POSIX 形式の /dev/fs/ C/ascii/unixmag をそれぞれ変換しています。 Win32 環境との連携では、ほかにもシンポリック・リ ンクやファイル名の大文字 / 小文字の判別などに注意する 必要があります。いずれも lnterix 環境ではサポートして いますが、 w ⅲ 32 竟からは正しく扱えません。 lnterix 以外の UNIX コマンド SFU には、 lnterix で提供される UNIX 環境に加え、 Win32 のネイティフュ境で使えるコマンドも用意されて います。 Win32 環境でそれらが優先的に使われるように するため、 %SFUDIR%*cornmon に配置されています。 用意されているコマンドは、以下のとおりです。 basename cat chgrp chmod chown cp cut date diff dirname du egrep fgrep find grep head iconv kill ⅲ 124 ls mkdir more mv nice Od paste printenv printf ps pwd renice rm rmdir sdiff sed sleep sort split strings su tail tee top touch tr uname uniq uudecode uuen- COde Vi wait Ⅵ℃ WhiCh xargs iconv コマンドは lnterix 環境にもありますが、 W ⅲ 32 環境から使える UNIX コマンドとしても用意されていま す。 lnterix 環境の iconv はロケールの文字セットを引数 にしますが、Ⅵⅱ n32 環境の iconv は Windows のコード ページを使った変換になります。 932 が Shift JIS のコー ドベージ、 20932 が EUC-JP のコードベージになります。 下の例では、 Shift JIS のファイルを EUC-JP に変換し ています。 C:*>iconv -f 932 -t 20932 sjis . txt eucjp. txt また、 dos2unix と unix2dos の 2 つのコマンドは、 Windows 形式のテキストファイルと UNIX 形式のテキ ストファイルを変換します。こ存じのとおり、 Windows 形式のテキストファイルは改行コードに CR と LF を使い ますが、 UNIX では LF のみを改行コードにしています。 dos2unix は Windows 形式のテキストファイルを UNIX 形式に、 unix2dos は逆に UNIX 形式のテキストファイル を Windows 形式にします。 今回は、 NIS サーバーとパスワード同期の解説、そし て lnterix の概説をおこないました。 NIS サーノヾーやパス ワード同期は、設定を誤るとセキュリティ上の問題が発生 することもあります。設定の前に付属のドキュメントをよ く読み、テストをおこなうようにしてください。 次回は、 lnterix 上でのアプリケーション開発と、 SFU を使ううえでのさまざまなヒントを紹介します。 ( おいかわ・たくや マイクロソフトプロダクトディベロップメント ) ☆ UN 工 X MAGAZ 工 NE 2004.6

7. UNIX MAGAZINE 2004年6月号

連載 /Services for UNIX ー② 図 7 / ヾスワード同期の言綻 ファイル ( E ) 作 ) 表示ウインドウ こ」 M ロ OSO 幵 Mndon•s 阯Ⅳ往 Microsoft Windo«s Seryices ー町 IJNIX ヘルプ 」 NFS サーハー ・ NFS ゲートウュイ Telnet サ曰ー PCNFS サーハー ユーサー名マッビング バスワード同期 芒ー NE サーハー ローカ儿コンピュータ上のパスワード同期 詳覊定 既定 以下の設定が、 IJND< コンビュータとの適信のために Wmdows S により使用されます。 再驍み込み適用の。 ~ 」② IJND( を実行するコンビュータ加収ワド同期をするように成された場合も、これらの正が既定の設定として使用されます。譱定 ] タブを使用し て、特定の LIND< コンビュータのための %ndows 設定を変更してください。 既定のポートまたは暗号化キーを変更する場合、 LIND< と W 柄問の同期のたこ構成さす l_l ト膿コンビュータが、新しいポートまたは暗号化キーを 使用するように構成される必要があります。 バスワド同期の方向 マ Wndows を実行するコンビュータから IJ ト似を実行するコンビュタへパスワードを同期する 「 LI ト似を実行するコンビュータから Wmdows を実行するコンビュータへパスワードを同期する 0 セキ 1 リティの構成 バスワード同期は強力な晴号化を使用します。 U ト似コンビュータからのバスワード変更メッセージ音号化を解除する似こ次のキーを使用します。このキ ーはこのコンビュータの SYNC HOSTS 工ンド丿のキーとバスワードを同期するそれぞれの LIND{ コンビュータと一致している必要かあります。断規 ] をグル りして新、キーを生成するカ、新し、キーを入力してください。 暗号化音号化解除キー ( 砂 木ートの構成 ABCDZ*efgh$12345 バスワード変更のためにパスワード同期加ルスンするポートです。この値は、この工′ビュータの /etc/ssoconf ファイルにある SYNC_HGTS 工ン籾と、こ のコンビュータと同期するそれそれの IJND< コンビュータと一致している必要があります。 ポート番号 0 : バスワード同期の再試行回数 再試行回数 ( 尠 再行の問隔 0 グの作底 20 同期の糖果は自勒的にログに記録されます。途中のステップや同 4 物試行などのログを記録す引こは、下のチ 1 ッりボックスをオンにしてください。 「冊なログを有嬾こする ( ) ツールからおこないます ( 図 7 ) 。残念ながら、コマンドラ インでの設定手段は提供されていません。 パスワード同期の対象ユーザーの設疋は、 UNIX 側では sso. conf 内の SYNC-USERS 工ントリでおこないます。 を付けてユーザー名を記入するこ SYNC-USERS に とで、そのユーザーをパスワード同期の対象から外すこと ができます。次の例は、 root をパスワード同期の対象外に しています。 SYNC_USERS=—root Windows 側での対象ユーザーの設定は、 Password- PropAllow と PasswordPropDeny という 2 つのグルー プを使っておこないます。前者に含まれるユーザーはパス ワード同期をおこない、後者に含まれるユーザーは同期の 対象外となります。こちらも、 Administrator などはパ スワード同期の対象外にすることカ雛奨されています。 Windows での UNIX 王の実現ー lnterix lnterix は、 UNIX の操作に慣れたユーザーに UNIX 環 境を提供するためのものです。これまでにも、 Windows 上に UNIX 環境を実現するソフトウェアはありました。 有名なものとしては、 Red Hat の Cygwin や、バージョ 116 ン 2.0 までの SFU に含まれていた MKS Toolkit など が挙げられます。これらは、 W ⅲ 32 サプシステムの上の 、 Vin32 アプリケーションとして UNIX をエミュレーショ ンしています。一方の lnterix は、 Windows のカーネル 上に UNIX 環境を実現しているのカ寺徴です。 じつは、 Windows (Windows NT 系 ) の以前のバー ジョンは、 POSIX サプシステムを標準で備えていました。 しかし、かなり限られた機能しか実現されておらず、より高 度な機能をもつ SFU の lnterix カ甘是供されるようになっ たため、 Windows XP 以降はこのサプシステムを備えて いません。 Windows の OS アーキテクチャは、図 8 のような概 念図をもとに説明できます。通常の Windows のアプリ ケーションは Win32 アプリケーションと呼ばれ、ユー ザーモードに実装された Win32 サプシステムで動作しま す。 lnterix は、これと同様にユーザーモードで実装され たサプシステムで UNIX のインターフェイスを実現して います。したがって、 lnterix サプシステムでは Win32 アプリケーションは動作しませんし、 Win32 サプシステ ムからも lnterix 向けのアプリケーションを直接動作さ せることはできません。ただし、 lnterix には後述のよう に POSIX. EXE や PSXRUN. EXE というセッション・ UNIX MAGAZ 工 NE 2004.6

8. UNIX MAGAZINE 2004年6月号

ー② ルをみてみましよう。プログラム・フォルダ Windows 連載 /Services for UNIX を指定することもできます ( 誌面の都合上、で折り返し 、、 / u " を使わずに Windows 形式のパス す。次のように、 、、 / u " は、 POSIX 形式でパスを指定することを指示しま シェルを対話型で実行することを指示する引数です。 、、 /bin/ksh ー 1 " カそれに該当します。なお、、、一には Korn 実行イメージへのパスと引数を指定します。この例では、 POSIX. EXE の、、 / c " は、起動するアプリケーションの C : *WINDOWS*system32*posix. exe /u /c /bin/ksh ー 1 トのプロバティは次のようになっています 2 Services for UNIX" にある、、 Korn SheII" ショートカッ ています。以下同様 ) 。 2 この場合の C:*WINDOWS*system32 は、 Windows をインス イメージの形式として、サプシステムや実行の形式に合 able Executable) と呼ばれます。 PE ヘッダには実行 Windows の実行イメージのフォーマットは PE (Port- terix のコンソール・アプリケーションを実行できます。 EXE を実行しなくても、コマンド・プロンプトから ln- ただし、さきほども説明しましたが、明示的に POSIX. C:*>posix /p %sfudir%*bin*ksh /c ー 1 することができます。 、コ " を引数として次のように起動 話型で起動したければ、 への引数だけを指定します。たとえば、 Korn シェルを対 きます。この場合、、、 / c " には lnterix アプリケーション POSIX. EXE は、、、 / p " でパスだけを指定することもで C : *>ksh ー 1 う場合は、次のように、、一 1 " を引数として実行します。 わけではないので、 Korn シェルを対話型シェルとして使 ksh. bat は対話的に使用することだけを目的としている posix /u /c /bin/ksh % 1 % 2 % 3 % 4 % 5 % 6 % 7 % 8 % 9 ります。 うに POSIX. EXE で ksh が実行されるように指定してあ bat からおこなうこともできます。 ksh. bat には、次のよ Korn シェルの起動は、 %SFUDIR%*common*ksh. %sfudir%*bin*ksh ー 1 C : *WINDOWS*system32*posix. exe /c 疇 - UNIX MAGAZ 工 NE 2004.6 トールしたディレクトリです。 図 11 ls コマンドの PE ヘッダの表示列 ( 一部省略 ) C : *>dumpbin/headers %sfudir%*bin*ls OPTIONAL HEADER VALUES subsystem (Posix CUI) checksum size Of headers SIZe Of image Win32 subsystem version lmage verslon operating system version file alignment section alignment image base ( 00400000 t0 0041EFFF) 17000 base of data 1000 base of code entry point ( 00401078 ) size Of uninitialized data size Of initialized data SIZe Of COde linker verSIOn magic # (PE32) 7 0 400 1F000 0 19.90 0 .00 4 .00 200 1000 400000 1078 1400 4400 15A00 5 . 12 10B 119 %SFUDIR%*BIN*ksh を工クスプローラでダブルク いかぎり実行イメージとして認識されません。たとえば、 プローラなどからの起動では、拡張子を EXE などにしな 生成時に PE ヘッダから判別できます。しかし、工クス ず、アプリケーションが対応するサプシステムはプロセス す。実際にはコマンド・プロンプトからの起動にかぎら るように POSIX. EXE のインスタンスを自動生成しま は、 POSIX サプシステム (PSXSS. EXE) 上で動作す ンソールであるコマンド・プロンプトから起動された場合 断します。、、 POSIX CUI" 形式のものが W ⅲ 32 のコ メージの形式をもとにどのサプシステムで起動するかを判 プリケーションを直接起動した場合、 Windows は実行イ コマンド・プロンプトから lnterix のコンソール・ア メージであることが分かります。 ているので、 ls コマンドは、、 POSIX CUI " 形式の実行イ これを見ると、、、 subsystem (Posix CUI)" と書かれ で動作する ls コマンドの PE ヘッダを表示した例です。 DUMPBIN. EXE で確認できます。図 11 は、 lnterix 上 実行イメージの形式は、 Visual Studio に含まれている CUI " のいずれかカ書き込まれています。 わせて、、 Windows GUI" 、 Windows CUI" 、、 POSIX

9. UNIX MAGAZINE 2004年6月号

2004 年 6 月 1 日発行 ( 毎月 1 回 1 日発行 ) 第 19 巻第 6 号通巻 212 号昭和 63 年 9 月 5 日第三種郵便物認可 ユニックス・マガジン 定価 1100 円 MAGAZINE 接インターネットと世界のすきま R 日 0 のアプリケーション ーーーカンファレンス支援システム 国立天文台のネットワケ 乗鞍コロナ観測所の衛星ネットワク接を一 へテな環境の基礎知識 ユーサ上とグループの扱い UkIX と Windows HP のリN隊0S HP-UX と Linux プロクラミング・テクニック 4 ハ P 6 の設定をおこなうための関数 UNIX Communication Notes 情報共有のホータルサイトを作る一一 XOOPS Services for UNIX アカウントの集中管理、 lnterix pe 活用のヒジト UN Ⅸユーサーのための pe Scri 誠活用法

10. UNIX MAGAZINE 2004年6月号

連載 /Services for UNIX 図 12 プロセスの縮十情報の取得例 $ ls /proc 0 1008 1024 1060 1092 1120 1152 1153 1208 1268 128 129 1292 1340 1352 1524 1568 1604 1620 1652 1684 1772 1876 1900 2108 2168 2224 2236 2264 2288 2364 2380 2436 2500 2520 2584 259 268 2680 2704 psinfo% 280 2844 2992 3064 3080 3164 321 3316 340 3416 3456 3568 3580 3616 3648 3732 stat% 3752 3832 3848 3852 3864 3896 3980 3984 4 4024 420 584 708 732 760 835 status% 892 897 908 980 992 $ ls -F / proc / 3896 cmdline% eIlVIron0/o $ cat /proc/3896/stat argv0 pid ppid pgid ruser user rgroup group utime stime cutime CStime tty state flags etime vslze wslze sid InpSX natpid natsid lllce wchan sttime C : *WINDOWS*System32*wbem*wmiprvse . exe 3896 1604 0 66834 010512 66834 010512 131616 020220 131616 020220 1081688067 0 2 0 3896 0 0 4206592 23134208 32789931 0 3 S00 110 120 110 120 openfdcount 0 表 6 サポートしているロケー ロケー丿レ POSIX (C) ja-JP. EUC-JP ja-JP. eucJP win-j a-JP. windows-932 ja-JP. SJIS 丿レ POSIX (C) ロケール EUC-JP を文字セットとする日本語ロケール SJIS (Shift JIS) を文字セットとする日本語ロケール。 win-ja-JP. windows-932 へのシンポリッ Windows のコードベージ 932 (Shift JIS) を文字セットとする日本語ロケール eucJP を文字セットとする日本語ロケール。 ja-JP. EUC-JP へのシンポリック・リンク ク・リンク したプロセス間通信を利用する必要があります。 一方、すでに説明したように、 POSIX. EXE や PSX- 122 RUN. EXE を使うことで、从ⅱ n32 環境から lnterix の この 2 つのコマンドはⅥーⅲ 32 プロセスを生成できます。 UNIX MAGAZINE 2004.6