Go to main content
Oracle® Solaris 11.3 での UUCP および PPP を使用したシリアルネットワークの管理

印刷ビューの終了

更新: 2015 年 10 月
 
 

UUCP /etc/uucp/Permissions ファイル

/etc/uucp/Permissions ファイルは、ログイン、ファイルアクセス、およびコマンド実行に関するリモートコンピュータのアクセス権を指定します。リモートコンピュータがファイルを要求する権限と、ローカルマシンでキューに入れられたファイルを受け取る権限を制限するオプションがあります。また、リモートマシンがローカルコンピュータ上で実行できるコマンドを指定するオプションもあります。

UUCP 構造のエントリ

各エントリは 1 行の論理行で、行末にバックスラッシュ (\) がある場合は次の行と継続していることを示します。エントリは、スペースで区切られたオプションから構成されます。各オプションは、次の形式の名前と値のペアです。

name=value

values はコロンで区切ってリストとすることもできます。オプション指定の中では、スペースは使用できないので注意してください。

コメント行はポンド記号 (#) で始まり、その行の改行文字までの全部分を占めます。空行は無視されます (複数行エントリの中の空行も同じです)。

    Permissions ファイルのエントリの種類を次に示します。

  • LOGNAME – リモートマシンがローカルマシンにログインする (呼び出す) ときに有効になるアクセス権を指定します。


    注 - リモートマシンがローカルマシンを呼び出すとき、固有のログインと検証可能なパスワードを使用しないかぎり、そのリモートマシンの識別情報は正確なものとはなりません。
  • MACHINE – ローカルマシンがリモートコンピュータにログインする (呼び出す) ときに有効になるアクセス権を指定します。

LOGNAME エントリには –LOGNAME オプションが含まれます。MACHINE エントリには –MACHINE オプションが含まれます。1 つのエントリに両方のオプションを含めることもできます。

UUCP の考慮事項

    Permissions ファイルを使用して、リモートコンピュータに付与されているアクセスのレベルを制限するときは、次のことを考慮に入れる必要があります。

  • リモートコンピュータが、UUCP 通信を目的としてログインするために使用するすべてのログイン ID は、1 つの LOGNAME エントリだけに含まれている必要があります。

  • 呼び出されたサイトの名前が MACHINE エントリにない場合、そのサイトには次に示すデフォルトのアクセス権または制約が適用されます。

    • ローカルの送信要求と受信要求は実行される

    • リモートコンピュータは、ローカルコンピュータの /var/spool/uucppublic ディレクトリにファイルを送信できます。

    • リモートコンピュータがローカルコンピュータで実行するために送信するコマンドは、デフォルトのコマンドのどれかでなければなりません (通常は rmail)。

UUCP –REQUEST オプション

リモートコンピュータがローカルコンピュータを呼び出し、ファイルの受信を要求したときに、その要求を承認することも拒否することもできます。–REQUEST オプションは、リモートコンピュータがローカルコンピュータからのファイル転送の設定を要求できるかどうかを指定します。REQUEST=yes は、リモートコンピュータがローカルコンピュータからのファイル転送を要求できることを指定します。REQUEST=no は、リモートコンピュータがローカルコンピュータからのファイルの受信を要求できないことを指定します。REQUEST=no は、–REQUEST オプションを指定しなかった場合に使用されるデフォルト値です。–REQUEST オプションは、LOGNAME エントリ (リモートコンピュータがローカルコンピュータを呼び出す場合) と、MACHINE エントリ (ローカルコンピュータがリモートコンピュータを呼び出す場合) のどちらにも使用できます。

UUCP –SENDFILES オプション

リモートコンピュータは、ローカルコンピュータを呼び出して作業を完了したあとで、ローカルコンピュータによリモートコンピュータ用にキューに入れられたその作業を取得しようとすることがあります。–SENDFILES オプションは、ローカルコンピュータが、リモートコンピュータ用にキューに入れた作業を送信できるかどうかを指定します。

文字列 SENDFILES=yes は、リモートコンピュータが –LOGNAME オプションに指定されている名前の 1 つを使用してログインしていれば、ローカルコンピュータがリモートコンピュータ用にキューに入れた作業を送信できることを指定します。/etc/uucp/Systems の Time フィールドに Never を入力してある場合は、この文字列の使用は必須です。その場合、ローカルマシンは受動モードに設定され、相手のリモートコンピュータへの呼び出しを開始することはできなくなります。詳細は、UUCP /etc/uucp/Systems ファイル を参照してください。

文字列 SENDFILES=call は、ローカルコンピュータがリモートコンピュータを呼び出したときにかぎり、ローカルコンピュータのキュー中のファイルを送信することを指定します。call の値は –SENDFILES オプションのデフォルト値です。MACHINE エントリはリモートコンピュータへ呼び出しを送る場合に適用されるものなので、このオプションが意味を持つのは LOGNAME エントリの中で使用した場合だけです。MACHINE エントリでこのオプションを使用しても無視されます。

UUCP –MYNAME オプション

このオプションを使用すると、hostname コマンドから戻される TCP/IP ホスト名以外に、固有の UUCP ノード名をローカルシステムに与えることができます。たとえば、偶然にほかのシステムと同じ名前をローカルホストに付けてしまった場合などに、–Permissions ファイルの MYNAME オプションを設定できます。自分の所属組織が widget という名前で認識されるようにするとします。すべてのモデムが gadget というホスト名を持つマシンに接続されている場合は、gadgetPermissions ファイルに次のようなエントリを含めることができます。

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 Optionで述べる UUCP VALIDATE オプション オプションを使用するようにしてください。

UUCP –READ オプションと –WRITE オプション

これらのオプションは、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 ディレクトリには多数の重要なシステムファイルが入っています。したがって、このディレクトリにファイルを送出する権限はリモートユーザーには付与しない方が賢明です。

UUCP –NOREAD オプションと –NOWRITE オプション

–NOREAD オプションと –NOWRITE オプションは、–READ–WRITE オプションまたはデフォルトに対する例外を指定します。次のエントリは、/etc ディレクトリ (およびこの下の各サブディレクトリ) の中のファイルを除くすべてのファイルの読み取りを許可しています。このパス名は接頭辞であることを忘れないでください。

READ=/ NOREAD=/etc WRITE=/var/spool/uucppublic 

このエントリは、デフォルトの /var/spool/uucppublic ディレクトリへの書き込みだけを許可します。–NOWRITE–NOREAD オプションと同様に機能します。–NOREAD オプションと –NOWRITE オプションは、LOGNAME エントリと MACHINE エントリのどちらにも使用できます。

UUCP –CALLBACK オプション

    –LOGNAME エントリの中で CALLBACK オプションを使用すると、呼び出し側システムがコールバックするまで、トランザクションを一切行わないことを指定できます。–CALLBACK を設定する理由を次に示します。

  • セキュリティー – マシンをコールバックすることで、それが正しいマシンであることを確認できます。

  • 課金 – データの伝送を長時間行うときに、その長時間の呼び出しの料金を課すマシンを選択できます。

文字列 CALLBACK=yes は、ファイル転送を行う前に、ローカルコンピュータがリモートコンピュータをコールバックしなければならないということを指定します。

–CALLBACK オプションのデフォルトは CALLBACK=no です。CALLBACKyes に設定する場合は、呼び出し側に対応する MACHINE エントリの中で、以後の通信に影響を与えるアクセス権を指定する必要があります。これらのアクセス権は、LOGNAME の中や、リモートマシンがローカルホストに対して設定している LOGNAME エントリの中では指定しないでください。


注 -  2 つのサイトが互いに –CALLBACK オプションを設定すると、通信が開始されません。

UUCP –COMMANDS オプション


Caution

注意  -  –COMMANDS オプションは、システムのセキュリティーを低下させる恐れがあります。このオプションは十分に注意して使用してください。


–COMMANDS オプションは、リモートコンピュータがローカルコンピュータ上で実行できるコマンドを指定するために、MACHINE エントリの中で使用できます。uux プログラムは、リモート実行要求を生成し、それらの要求をリモートコンピュータに転送するためにキューに入れます。ファイルとコマンドはターゲットコンピュータに送られて、リモート実行されます。MACHINE エントリは、ローカルシステムが呼び出しを行う場合にかぎり適用されるという規則がありますが、このオプションは例外です。

–COMMANDSLOGNAME エントリの中では使えないという点に注意してください。–MACHINE エントリの中の COMMANDS は、ユーザーがリモートシステムを呼び出すのか、リモートシステムがユーザーを呼び出すのかに関係なく、コマンド権限を定義します。

リモートコンピュータがローカルコンピュータ上で実行できるデフォルトのコマンドは、文字列 COMMANDS=rmail となります。MACHINE エントリの中でコマンド文字列を使用した場合は、デフォルトのコマンドよりも優先されます。たとえば、次のエントリは、COMMAND のデフォルトをオーバーライドして、owlravenhawkdove という名前の各コンピュータが、rmailrnewslp の各コマンドをローカルコンピュータで実行できるようにします。

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 という値を含めると、エントリに指定されたリモートコンピュータから、すべてのコマンドが実行できます。この値を使用した場合は、リモートコンピュータにローカルマシンへのフルアクセスを与えることになります。


Caution

注意  - これは、通常のユーザーが持っているよりもはるかに多くのアクセス権を与えることになります。この値を使用するのは、両方のマシンが同じサイトにあり、緊密に接続されていて、ユーザーが信頼できる場合に限定するようにしてください。


ALL が追加された文字列を次に示します。

COMMANDS=/usr/local/rnews:ALL:/usr/local/lp 

    この文字列は、次の 2 点を示しています。

  • ALL の値は文字列の中のどこでも使用できます。

  • 要求されたコマンドに rnewslp コマンドのフルパス名が指定されていない場合は、デフォルトではなく、rnewslp それぞれに指定されているパス名が使用されます。

–COMMANDS オプションで cat uucp などのように、潜在的な危険性のあるコマンドを指定するときは、–VALIDATE オプションを使用するようにしてください。UUCP リモート実行デーモン (uuxqt) により実行する場合、ファイルを読み書きするコマンドは、どれもローカルセキュリティーにとって危険性のあるものとなります。

UUCP –VALIDATE オプション

マシンのセキュリティーにとって危険性があると考えられるコマンドを指定するときには常に、–COMMANDS オプションとともに –VALIDATE オプションを使用します。–VALIDATE は、コマンドアクセスを開放する方法としては –ALL より安全ですが、COMMANDS オプションのセキュリティーのレベルを補強するだけのものです。

–VALIDATE は、呼び出し側マシンのホスト名と、そのマシンが使用しているログイン名とを相互にチェックするものであり、呼び出し側の識別情報について、ある程度の検証機能を備えています。この例では、widget または gadget 以外のマシンが Uwidget としてログインしようとすると、接続は拒否されます。

LOGNAME=Uwidget VALIDATE=widget:gadget 

–VALIDATE オプションを使用する場合、権限が与えられたコンピュータは UUCP トランザクション用に固有のログインとパスワードを持っていなければなりません。この検証処理では、このエントリに対応するログインとパスワードを保護することが重要な条件の 1 つです。部外者がこの情報を入手してしまうと、–VALIDATE オプションはセキュアではなくなります。

UUCP トランザクションについて、特権を持つログインとパスワードをどのリモートコンピュータに付与するかについては、十分に検討してください。ファイルアクセスとリモート実行の権限をリモートコンピュータに与えるということは、そのリモートコンピュータのすべてのユーザーに対して、ローカルコンピュータに対する通常のログインとパスワードを与えるのと同じことです。したがって、リモートコンピュータに信頼のおけないユーザーがいると判断した場合は、そのコンピュータには特権的なログインとパスワードは付与しないようにしてください。

次のような LOGNAME エントリは、eagleowl、または 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 を実行できることを示しています。

最初のエントリでは、リストされているコンピュータのどれかを呼び出す場合に、実際には eagleowlhawk のいずれかを呼び出すということを理解しておく必要があります。したがって、eagleowl、および hawk のいずれかのスプールディレクトリに置かれるファイルはすべて、それらのコンピュータのいずれかによって置かれます。あるリモートコンピュータがログインし、この 3 つのコンピュータのどれかであることを主張した場合、その実行ファイルもこの特権スプールディレクトリに入れられます。したがって、ローカルコンピュータでは、そのコンピュータが特権ログイン uucpz を持っていることを検証する必要があります。

UUCP OTHER 用の MACHINE エントリ

特定の MACHINE エントリに記述されていないリモートマシンについて、異なるオプション値を指定したい場合があります。これが必要になるのは、多数のコンピュータがローカルホストを呼び出し、コマンドセットがそのたびに異なるような場合です。次の例に示すように、このようなエントリでは、コンピュータ名として OTHER という名前を使用します。

MACHINE=OTHER \ 
COMMANDS=rmail:rnews:/usr/local/Photo:/usr/local/xp 

ほかの MACHINE エントリに記述されていないコンピュータについても、MACHINE エントリに使用できるすべてのオプションを設定できます。

UUCP の MACHINE エントリと LOGNAME エントリの結合

共通オプションが同じである場合、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 ファイルは、効率的で管理しやすくなります。

UUCP の転送

一連のマシンを介してファイルを送信するときは、中間マシンの COMMANDS オプションの中に –uucp コマンドが含まれていなければなりません。次のコマンドを入力した場合、マシン willow がマシン oak に対して uucp プログラムの実行を許可する場合にかぎり、この転送操作は正常に機能します。

% uucp sample.txt oak\!willow\!pine\!/usr/spool/uucppublic

oak もローカルマシンに uucp のプログラムの実行を許可している必要があります。最終宛先マシンである pine は、転送動作を行わないため、uucp コマンドを許可する必要はありません。通常、マシンはこのように設定されていません。