ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 での UUCP および PPP を使用したシリアルネットワークの管理 Oracle Solaris 11.1 Information Library (日本語) |
9. Asynchronous Solaris PPP から Solaris PPP 4.0 への移行 (タスク)
/etc/uucp/Systems ファイルの System-Name フィールド
/etc/uucp/Systems ファイルの Time フィールド
/etc/uucp/Systems ファイルの Type フィールド
/etc/uucp/Systems ファイルの Speed フィールド
/etc/uucp/Systems ファイルの Phone フィールド
/etc/uucp/Systems ファイルの Chat-Script フィールド
/etc/uucp/Systems ファイルでのハードウェアフロー制御
/etc/uucp/Systems ファイルでのパリティーの設定
/etc/uucp/Devices ファイルの Type フィールド
Devices ファイルおよび Systems ファイルの Type フィールド
/etc/uucp/Devices ファイルの Line フィールド
/etc/uucp/Devices ファイルの Line2 フィールド
/etc/uucp/Devices ファイルの Class フィールド
/etc/uucp/Devices ファイルの Dialer-Token-Pairs フィールド
/etc/uucp/Devices ファイルの Dialer-Token-Pairs フィールドの構造
/etc/uucp/Devices ファイル内のプロトコル定義
/etc/uucp/Dialers ファイルによるハードウェアフロー制御の有効化
/etc/uucp/Permissions ファイルは、ログイン、ファイルアクセス、およびコマンド実行に関するリモートコンピュータのアクセス権を指定します。リモートコンピュータがファイルを要求する権限と、ローカルマシンでキューに入れられたファイルを受け取る権限を制限するオプションがあります。また、リモートマシンがローカルコンピュータ上で実行できるコマンドを指定するオプションもあります。
各エントリは 1 行の論理行で、行末にバックスラッシュ (\) がある場合は次の行と継続していることを示します。エントリは、スペースで区切られたオプションから構成されます。各オプションは、次の形式の名前と値のペアです。
name=value
values はコロンで区切ってリストとすることもできます。オプション指定の中では、スペースは使用できないので注意してください。
コメント行はポンド記号 (#) で始まり、その行の改行文字までの全部分を占めます。空行は無視されます (複数行エントリの中の空行も同じです)。
Permissions ファイルのエントリの種類を次に示します。
LOGNAME – リモートマシンがローカルマシンにログインする (呼び出す) ときに有効になるアクセス権を指定する
注 - リモートマシンがローカルマシンを呼び出すとき、固有のログインと検証可能なパスワードを使用しないかぎり、そのリモートマシンの識別情報は正確なものとはなりません。
MACHINE – ローカルマシンがリモートコンピュータにログインする (呼び出す) ときに有効になるアクセス権を指定する
LOGNAME には LOGNAME オプションが含まれ、MACHINE エントリには MACHINE オプションが含まれます。1 つのエントリに両方のオプションを含めることもできます。
Permissions ファイルを使用して、リモートコンピュータに付与されているアクセスのレベルを制限するときは、次のことを考慮に入れる必要があります。
リモートコンピュータが、UUCP 通信を目的としてログインするために使用するすべてのログイン ID は、1 つの LOGNAME エントリだけに指定されていなければならない
呼び出されたサイトの名前が MACHINE エントリにない場合、そのサイトには次に示すデフォルトのアクセス権または制約が適用される
リモートコンピュータがローカルコンピュータを呼び出し、ファイルの受信を要求したときに、その要求を承認することも拒否することもできます。REQUEST オプションは、リモートコンピュータがローカルコンピュータからのファイル転送を要求できるかどうかを指定します。REQUEST=yes は、リモートコンピュータがローカルコンピュータからのファイル転送を要求できることを指定します。REQUEST=no は、リモートコンピュータがローカルコンピュータからのファイルの受信を要求できないことを指定します。REQUEST=no は、REQUEST オプションを指定しなかった場合に使用されるデフォルト値です。REQUEST オプションは、LOGNAME エントリ (リモートコンピュータがローカルコンピュータを呼び出す場合) と、MACHINE エントリ (ローカルコンピュータがリモートコンピュータを呼び出す場合) のどちらにも使用できます。
ローカルコンピュータを呼び出す作業を完了したあとで、リモートコンピュータはローカルコンピュータのキュー中のリモートコンピュータ用の作業を受け取ろうとすることがあります。 SENDFILES オプションは、ローカルコンピュータが、リモートコンピュータ用にキューに入れた作業を送信できるかどうかを指定します。
文字列 SENDFILES=yes は、リモートコンピュータが LOGNAME オプションに指定されている名前の 1 つを使用してログインしていれば、ローカルコンピュータがキューに入れた作業を送信できることを指定します。/etc/uucp/Systems の Time フィールドに Never を入力してある場合は、この文字列の使用は必須です。その場合、ローカルマシンは受動モードに設定され、相手のリモートコンピュータへの呼び出しを開始することはできなくなります。詳細は、「UUCP /etc/uucp/Systems ファイル」 を参照してください。
文字列 SENDFILES=call は、ローカルコンピュータがリモートコンピュータを呼び出したときにかぎり、ローカルコンピュータのキュー中のファイルを送信することを指定します。call の値は SENDFILES オプションのデフォルト値です。MACHINE エントリはリモートコンピュータへの呼び出しを送る場合に適用されるものなので、このオプションが意味を持つのは LOGNAME エントリの中で使用した場合だけです。MACHINE エントリでこのオプションを使用しても無視されます。
このオプションを使用すると、hostname コマンドから戻される TCP/IP ホスト名以外に、固有の UUCP ノード名をローカルシステムに与えることができます。たとえば、偶然にほかのシステムと同じ名前をローカルホストに付けてしまった場合などに、Permissions ファイルの MYNAME オプションを指定できます。自分の所属組織が widget という名前で認識されるようにするとします。すべてのモデムが gadget というホスト名を持つマシンに接続されている場合は、gadget の Permissions ファイルに次のようなエントリを含めることができます。
service=uucico systems=Systems.cico:Systems dialers=Dialers.cico:Dialers \ devices=Devices.cico:Devices service=cu systems=Systems.cu:Systems \ dialers=Dialers.cu:Dialers \ devices=Devices.cu:Devices
これで、システム world は、あたかも widget にログインしているかのようにマシン gadget にログインできます。ローカルマシンから world マシンを呼び出したときにも、world が widget という別名で認識するようにする場合は、次のようなエントリを作成します。
MACHINE=world MYNAME=widget
MYNAME オプションによってローカルマシンが自分自身を呼ぶこともできるので、このオプションはテスト目的にも利用できます。しかし、このオプションはマシンの実際の識別情報を隠す目的にも使用できてしまうので、「UUCP VALIDATE オプション」で述べる VALIDATE オプションを使用するようにしてください。
これらのオプションは、uucico がファイルシステムのどの部分を読み書きできるかを指定します。READ オプションと WRITE オプションは、MACHINE エントリと LOGNAME エントリのどちらにも使用できます。
次の文字列に示すように、READ オプションと WRITE オプションのどちらも、デフォルトは uucppublic ディレクトリです。
READ=/var/spool/uucppublic WRITE=/var/spool/uucppublic
文字列 READ=/ と WRITE=/ は、Other 権を持つローカルユーザーがアクセスできるすべてのファイルにアクセスできる権限を指定します。
これらのエントリの値は、コロンで区切ったパス名のリストです。READ オプションはリモート側からのファイル要求のためのものであり、WRITE オプションはリモート側からのファイル送出のためのものです。値の 1 つは、入力ファイルまたは出力ファイルのフルパス名の接頭辞でなければなりません。公開ディレクトリのほかに /usr/news にもファイルを送出する権限を付与するには、WRITE オプションに次の値を指定します。
WRITE=/var/spool/uucppublic:/usr/news
パス名はデフォルトのリストに追加されるものではないので、READ オプションと WRITE オプションを使用するときはすべてのパス名を指定する必要があります。たとえば、WRITE オプションでパス名として /usr/news のみを指定した場合、公開ディレクトリにファイルを送出する権限は失われます。
リモートシステムがどのディレクトリに読み書きのアクセスができるかは、注意して決定しなければなりません。たとえば、/etc ディレクトリには多数の重要なシステムファイルが入っています。したがって、このディレクトリにファイルを送出する権限はリモートユーザーには付与しない方が賢明です。
NOREAD オプションと NOWRITE オプションは、READ と WRITE オプションまたはデフォルトに対する例外を指定します。次のエントリは、/etc ディレクトリ (およびこの下の各サブディレクトリ) の中のファイルを除くすべてのファイルの読み取りを許可しています。このパス名は接頭辞であることを忘れないでください。
READ=/ NOREAD=/etc WRITE=/var/spool/uucppublic
このエントリは、デフォルトの /var/spool/uucppublic ディレクトリへの書き込みだけを許可しています。NOWRITE も NOREAD オプションと同じ形で働きます。NOREAD オプションと NOWRITE オプションは、LOGNAME エントリと MACHINE エントリのどちらにも使用できます。
LOGNAME エントリの中で CALLBACK オプションを使用すると、呼び出し側システムがコールバックするまで、トランザクションを一切行わないことを指定できます。CALLBACK を設定する理由を次に示します。
文字列 CALLBACK=yes は、ファイル転送を行う前に、ローカルコンピュータがリモートコンピュータをコールバックしなければならないということを指定します。
CALLBACK オプションのデフォルトは CALLBACK=no です。CALLBACK を yes に設定する場合は、呼び出し側に対応する MACHINE エントリの中で、以後の通信に影響を与えるアクセス権を指定する必要があります。これらのアクセス権は、LOGNAME の中や、リモートマシンがローカルホストに対して設定している LOGNAME エントリの中では指定しないでください。
COMMANDS オプションは、リモートコンピュータがローカルコンピュータ上で実行できるコマンドを指定するために、MACHINE エントリの中で使用できます。uux プログラムは、リモート実行要求を生成し、それらの要求をリモートコンピュータに転送するためにキューに入れます。ファイルとコマンドはターゲットコンピュータに送られて、リモート実行されます。MACHINE エントリは、ローカルシステムが呼び出しを行う場合にかぎり適用されるという規則がありますが、このオプションは例外です。
COMMANDS は LOGNAME エントリの中では使えないという点に注意してください。MACHINE エントリの中の COMMANDS は、ローカルシステムがリモートシステムを呼び出すのか、リモートシステムがローカルシステムを呼び出すのかに関係なく、コマンド権限を定義します。
リモートコンピュータがローカルコンピュータ上で実行できるデフォルトのコマンドは、文字列 COMMANDS=rmail となります。MACHINE エントリの中でコマンド文字列を使用した場合は、デフォルトのコマンドよりも優先されます。たとえば、次のエントリは、COMMANDS のデフォルトをオーバーライドして、owl、raven、hawk、dove という名前の各コンピュータが、rmail、rnews、lp の各コマンドをローカルコンピュータで実行できるようにします。
MACHINE=owl:raven:hawk:dove COMMANDS=rmail:rnews:lp
上記で指定した名前に加えて、コマンドのフルパス名も指定できます。たとえば、次のエントリは、rmail コマンドがデフォルトの検索パスを使用することを指定しています。
COMMANDS=rmail:/usr/local/rnews:/usr/local/lp
UUCP のデフォルトの検索パスは、/bin と /usr/bin です。リモートコンピュータが、実行するコマンドとして rnews または /usr/local/rnews を指定した場合は、デフォルトのパスに関係なく /usr/local/rnews が実行されます。同様に、実行される lp コマンドは /usr/local/lp です。
リストに ALL という値を含めると、エントリに指定されたリモートコンピュータから、すべてのコマンドが実行できます。この値を使用した場合は、リモートコンピュータにローカルマシンへのフルアクセスを与えることになります。
注意 - これは、通常のユーザーが持っているよりもはるかに多くのアクセス権を与えることになります。この値を使用するのは、両方のマシンが同じサイトにあり、緊密に接続されていて、ユーザーが信頼できる場合に限定するようにしてください。 |
ALL が追加された文字列を次に示します。
COMMANDS=/usr/local/rnews:ALL:/usr/local/lp
この文字列は、次の 2 点を示しています。
要求されたコマンドに rnews や lp コマンドのフルパス名が指定されていない場合は、デフォルトではなく、rnews や lp それぞれに指定されているパス名が使用される
COMMANDS オプションで cat や uucp などのように、潜在的な危険性のあるコマンドを指定するときは、VALIDATE オプションを使用するようにしてください。UUCP リモート実行デーモン (uuxqt) により実行する場合、ファイルを読み書きするコマンドは、どれもローカルセキュリティーにとって危険性のあるものとなります。
VALIDATE オプションは、マシンのセキュリティーにとって危険性があると考えられるコマンドを指定するときに、COMMANDS オプションといっしょに使用します。VALIDATE は、コマンドアクセスを開放する方法としては ALL より安全ですが、COMMANDS オプションのセキュリティーのレベルを補強するだけのものです。
VALIDATE は、呼び出し側マシンのホスト名と、そのマシンが使用しているログイン名とを相互にチェックするものであり、呼び出し側の識別情報について、ある程度の検証機能を備えています。この例では、widget または gadget 以外のマシンが Uwidget としてログインしようとすると、接続は拒否されます。
LOGNAME=Uwidget VALIDATE=widget:gadget
VALIDATE オプションを使用する場合、権限が与えられたコンピュータは UUCP トランザクション用に固有のログインとパスワードを持っていなければなりません。この検証処理では、このエントリに対応するログインとパスワードを保護することが重要な条件の 1 つです。部外者がこの情報を入手してしまうと、VALIDATE オプションはセキュアではなくなります。
UUCP トランザクションについて、特権を持つログインとパスワードをどのリモートコンピュータに付与するかについては、十分に検討する必要があります。ファイルアクセスとリモート実行の権限をリモートコンピュータに与えるということは、そのリモートコンピュータのすべてのユーザーに対して、ローカルコンピュータに対する通常のログインとパスワードを与えるのと同じことです。したがって、リモートコンピュータに信頼のおけないユーザーがいると判断した場合は、そのコンピュータには特権的なログインとパスワードは付与しないようにしてください。
次のような LOGNAME エントリは、eagle、owl、または hawk としてのいずれかのリモートコンピュータがローカルコンピュータにログインする場合に、そのコンピュータがログイン uucpfriend を使用している必要があることを指定します。
LOGNAME=uucpfriend VALIDATE=eagle:owl:hawk
部外者が uucpfriend を入手したとすれば、簡単に偽装することができます。
それでは、MACHINE エントリの中でだけ使用される COMMANDS オプションに対して、このエントリはどのような効果を持つのでしょうか。このエントリは、MACHINE エントリ (および COMMANDS オプション) を、特権ログインに対応する LOGNAME エントリにリンクします。このリンクが必要なのは、リモートコンピュータがログインしている時点では、実行デーモンはまだ動作していないためです。実際に、このリンクはどのコンピュータが実行要求を送ったのかを認識しない非同期プロセスです。ここで問題になるのが、 実行ファイルがどこから送られてきたのかを、ローカルコンピュータがどのようにして知るかという点です。
各リモートコンピュータは、ローカルマシン上にそれぞれ専用スプールディレクトリを持っています。これらのスプールディレクトリの書き込み権限は、UUCP プログラムだけに与えられています。リモートコンピュータからの実行ファイルは、ローカルコンピュータに転送されたあとに、このスプールディレクトリに入れられます。uuxqt デーモンが動作するときには、スプールディレクトリ名を使用して、Permissions ファイルから MACHINE エントリを見つけ、COMMANDS リストを取得します。Permissions ファイル内に該当するコンピュータ名が見つからない場合は、デフォルトのリストが使用されます。
次の例は、MACHINE エントリと LOGNAME エントリの関係を示しています。
MACHINE=eagle:owl:hawk REQUEST=yes \ COMMANDS=rmail:/usr/local/rnews \ READ=/ WRITE=/ LOGNAME=uucpz VALIDATE=eagle:owl:hawk \ REQUEST=yes SENDFILES=yes \ READ=/ WRITE=/
COMMANDS オプションの値は、リモートユーザーが、rmail と /usr/local/rnews を実行できることを示しています。
最初のエントリでは、一覧表示されているコンピュータのどれかを呼び出す場合に、実際には eagle、owl、hawk のどれかを呼び出すということを理解しておく必要があります。したがって、eagle、owl、および hawk のスプールディレクトリに置かれるファイルはすべて、それらのコンピュータのどれかによって置かれます。あるリモートコンピュータがログインし、この 3 つのコンピュータのどれかであることを主張した場合、その実行ファイルもこの特権スプールディレクトリに入れられます。したがって、ローカルコンピュータでは、そのコンピュータが特権ログイン uucpz を持っていることを検証する必要があります。
特定の MACHINE エントリに記述されていないリモートマシンについて、異なるオプション値を指定したい場合があります。これが必要になるのは、多数のコンピュータがローカルホストを呼び出し、コマンドセットがそのたびに異なるような場合です。次の例に示すように、このようなエントリでは、コンピュータ名として OTHER という名前を使用します。
MACHINE=OTHER \ COMMANDS=rmail:rnews:/usr/local/Photo:/usr/local/xp
ほかの MACHINE エントリに記述されていないコンピュータについても、MACHINE エントリに使用できるすべてのオプションを設定できます。
共通オプションが同じである場合、MACHINE エントリと LOGNAME エントリを結合して、単一のエントリにすることができます。たとえば、次の 2 セットのエントリは、同じ REQUEST、READ、WRITE オプションを共有しています。
MACHINE=eagle:owl:hawk REQUEST=yes \ READ=/ WRITE=/
および
LOGNAME=uupz REQUEST=yes SENDFILES=yes \ READ=/ WRITE=/
この 2 つのエントリを結合したものを次に示します。
MACHINE=eagle:owl:hawk REQUEST=yes \ logname=uucpz SENDFILES-yes \ READ=/ WRITE=/
MACHINE エントリと LOGNAME エントリを結合することによって、Permissions ファイルは、効率的で管理しやすくなります。
一連のマシンを介してファイルを送信するときは、リレー (中継) マシンの COMMANDS オプションの中に uucp コマンドが含まれていなければなりません。次のコマンドを入力した場合、マシン willow がマシン oak に対して uucp プログラムの実行を許可する場合にかぎり、この転送操作は正常に機能します。
% uucp sample.txt oak\!willow\!pine\!/usr/spool/uucppublic
oak もローカルマシンに uucp のプログラムの実行を許可している必要があります。最終宛先マシンである pine は、転送動作を行わないため、uucp コマンドを許可する必要はありません。通常、マシンはこのように設定されていません。