Solaris のシステム管理 (第 3 巻)

第 26 章 UUCP の管理

この章では、ご使用のマシンに合わせてデータベースファイルを変更したあと、UUCP 操作を起動する方法について説明します。この章には、Solaris 環境が動作するマシンで UUCP を構成し保守するための、手順と障害の解明についての情報が記載されています。

UUCP 管理の作業マップ

表 26-1 で、この章で説明する手順の記載場所と各手順について簡単に説明します。

表 26-1 作業マップ: UUCP 管理

作業 

説明 

参照個所 

リモートマシンにユーザーシステムへのアクセスを許可する 

/etc/passwd ファイルを編集し、ユーザーのシステムへのアクセスを許可するマシンを識別するようエントリを追加する

「UUCP ログインの追加方法」

UUCP を起動する 

UUCP の起動用に提供されたシェルスクリプトを使用する 

「UUCP の起動方法」

UUCP を TCP/IP ネットワーク上で有効にする 

/etc/inetd.conf ファイルと /etc/uucp/Systems ファイルを編集し、TCP/IP 用の UUCP を起動する

「TCP/IP 用 UUCP の起動方法」

UUCP に起こりがちな問題を解決する 

モデムまたは ACU の異常を確認するための診断ステップ。 

送信に関するデバッグを行うための診断ステップ 

「モデムまたは ACU の障害確認方法」

「送信に関するデバッグ方法」

UUCP のログインの追加

リモートマシンからの UUCP (uucico) 着信要求が正しく取り扱われるように、各リモートマシンはローカルシステム上にログインを持っていなければなりません。

UUCP ログインの追加方法

ユーザーのシステムへのアクセスをリモートマシンに許可するには、次の手順を行なって /etc/passwd ファイルにエントリを追加する必要があります。

  1. /etc/passwd ファイルを編集し、システムにアクセスを許可するマシンを識別するためのエントリを追加します。

    UUCP 接続でのシステムへのアクセスを許可するリモートマシンについて、一般的に、次のように、エントリを /etc/passwd ファイルに入力します。


    Ugobi:*:5:5:gobi:/var/spool/uucppublic:/usr/lib/uucp/uucico 

    リモートマシンのログイン名は慣例的に、そのマシン名の前に大文字の U を付けたものです。8 文字を超える名前は使用できないので、一部を短縮した名前や省略名を使用しなければならない場合もあります。

    例に示したエントリは、Ugobi からのログイン要求に /usr/lib/uucp/uucico が応答することを示しています。ホームディレクトリは /var/spool/uucppublic です。パスワードは /etc/shadow ファイルから取得されます。パスワードとログイン名は、リモートマシンの UUCP 管理者と協議して決める必要があります。リモート側の管理者は、ログイン名と暗号化されていないパスワードを含む正しいエントリを、リモートマシンの Systems ファイルに追加する必要があります。

  2. 他のシステムの UUCP 管理者と、ローカルマシン名を調整します。

    同様に、ローカルマシン名とパスワードについて、UUCP を介して通信する相手方のすべてのマシンの UUCP 管理者と協議する必要があります。

UUCP の起動

UUCP には、次に示す 4 つのシェルスクリプトが付属しています。これらのスクリプトは、リモートマシンをポーリングし、転送を再スケジュールし、古いログファイルと成功しなかった転送を処理します。

UUCP を円滑に運用するには、これらのスクリプトを定期的に実行する必要があります。Solaris の全体インストールを行なった場合は、これらのスクリプトを実行するための crontab ファイルが、インストールプロセスの一環として自動的に /usr/lib/uucp/uudemon.crontab の中に作成されます。全体インストールでない場合は、UUCP パッケージをインストールするときにこのファイルが作成されます。

UUCP シェルスクリプトは手動でも実行できます。次に示すのは、uudemon.crontab のプロトタイプです。このファイルは、マシンの運用の都合に合わせて適宜変更することができます。


#
#ident  "@(#)uudemon.crontab    1.5     97/12/09 SMI"
#
# This crontab is provided as a sample. For systems
# running UUCP edit the time schedule to suit, uncomment 
# the following lines, and use crontab(1) to activate the
# new schedule.
#
#48 8,12,16 * * * /usr/lib/uucp/uudemon.admin
#20 3 * * * /usr/lib/uucp/uudemon.cleanup
#0 * * * * /usr/lib/uucp/uudemon.poll
#11,41 * * * * /usr/lib/uucp/uudemon.hour


注 -

デフォルトでは、UUCP の操作は無効にされています。UUCP を有効にするには、タイムスケジュールを編集し、uudemon.crontab ファイルの適切な行のコメントを解除してください。


UUCP の起動方法

uudemon.crontab ファイルは、次の手順に従って起動します。

  1. スーパーユーザーになります。

  2. /usr/lib/uucp/uudemon.crontab ファイルを編集し、必要に応じてエントリを変更します。

  3. 次のように入力します。


    crontab < /usr/lib/uucp/uudemon.crontab
    

uudemon.poll シェルスクリプト

デフォルトの uudemon.poll シェルスクリプトは、1 時間に 1 回 /etc/uucp/Poll ファイルを読み取ります。Poll ファイル内のマシンのどれかに対するポーリングがスケジュールされると、作業ファイル (C.sysnxxxx) が /var/spool/uucp/nodename ディレクトリに入れられます。nodename は、そのマシンの UUCP ノード名です。

このシェルスクリプトは、1 時間に 1 回ずつ uudemon.hour の前に実行されるようにスケジュールされているので、uudemon.hour が呼び出されたときには、作業ファイルが存在しています。

uudemon.hour シェルスクリプト

デフォルトの uudemon.hour シェルスクリプトは次のことを行います。

デフォルトでは、uudemon.hour は 1 時間に 2 回実行されます。リモートマシンへの呼び出しの失敗の頻度が高いと予測される場合は、このスクリプトの実行頻度を増やすこともできます。

uudemon.admin シェルスクリプト

デフォルトの uudemon.admin シェルスクリプトは次のことを行います。

uudemon.cleanup シェルスクリプト

デフォルトの uudemon.cleanup シェルスクリプトは次のことを行います。

TCP/IP を介した UUCP の実行

TCP/IP ネットワーク上での UUCP を実行するには、この節で説明するようにいくつかの変更が必要になります。

TCP/IP 用 UUCP の起動方法

  1. /etc/inetd.conf ファイルを編集し、次のエントリがコメントマーク (#) で始まっていないことを確認します。


    uucp stream tcp nowait root /usr/sbin/in.uucpd in.uucpd 

  2. /etc/uucp/Systems ファイルを編集し、対象のエントリが次のフィールドを持っていることを確認します。

    System-Name Time TCP Port networkname Standard-Login-Chat

    典型的なエントリは次のようになります。


    rochester Any TCP - ur-seneca login: Umachine password: xxx

    networkname フィールドには、TCP/IP ホスト名を明示的に指定できます。これは、一部のサイトにとっては重要な点です。上の例に示したサイトの UUCP ノード名 rochester は、TCP/IP ホスト名 ur-seneca と違っています。rochester という TCP/IP ホスト名を持ち、UUCP を実行する別のマシンがあっても問題はありません。

    Systems ファイル内の Port フィールドには - を指定します。これは、uucp と指定するのと同じです。ほとんどの場合、networkname はシステム名と同じで、Port フィールドは - となります。これは、services データベースから標準 uucp ポートを使用することを意味します。in.uucpd デーモンは、認証のためにリモートマシンがログインとパスワードを送ることを想定しているので、gettylogin と同様に、ログインとパスワードを要求します。

  3. /etc/inet/services ファイルを編集し、次のように UUCP 用のポートを設定します。


    uucp 540/tcp uucpd # uucp daemon

    このエントリを変更する必要はありません。ただし、マシンがネームサービスとして NIS または NIS+ を実行する場合は、/etc/services/etc/nsswitch.conf エントリを変更して、まず files、次に nis または nisplus が検査されるようにする必要があります。

UUCP のセキュリティと保守

UUCP の設定が終われば、その後の保守は簡単です。この節では、セキュリティ、保守、および障害追跡に関連する UUCP の作業について説明します。

UUCP のセキュリティの設定

デフォルトの /etc/uucp/Permissions ファイルは、UUCP リンクに関する最大限のセキュリティを提供します。デフォルトの Permissions ファイルには、エントリは入っていません。

定義する各リモートマシンについて、次に示す追加パラメータを設定できます。

典型的な Permissions のエントリは次のようになります。


MACHINE=datsun LOGNAME=Udatsun VALIDATE=datsun 
COMMANDS=rmail REQUEST=yes SENDFILES=yes

このエントリでは、(システム内のどこかからではなく、通常の UUCP ディレクトリとの間での) ファイルの送信と受信が可能となり、ログイン時に UUCP ユーザー名の認証が行われます。

日常の UUCP の保守

UUCP の保守に必要な作業の量はさほど多くはありません。「UUCP の起動方法」で述べたように、crontab ファイルを正しい場所に配置してあることを確認する以外に注意する必要があるのは、メールファイルと公共ディレクトリが大きくなるという点だけです。

UUCP に関連する電子メール

UUCP のプログラムとスクリプトが生成する電子メールメッセージは、すべてユーザー ID uucp に送られます。管理者がユーザー uucp として頻繁にログインしていないと、メールが蓄積されている (このためディスク空間を浪費している) ことに気付かない場合があります。この問題を解決するには、/etc/mail/aliases の中に別名を 1 つ作り、root か自分自身、そして他の UUCP 保守責任者に、電子メールをリダイレクトします。aliases ファイルを変更したあとで、newaliases コマンドを実行するのを忘れないようにしてください。

UUCP 公共ディレクトリ

ディレクトリ /var/spool/uucppublic は、UUCP がデフォルトでファイルをコピーできる場所として、すべてのシステムに対して提供されているディレクトリです。すべてのユーザーが、/var/spool/uucppublic への移動、その中のファイルの読み書きを行う権限を持っています。しかし、スティッキビットが設定されているため、このディレクトリのモードは 01777 です。したがって、ユーザーには、このディレクトリにコピーされ uucp に所有されているファイルを削除することはできません。このディレクトリからファイルを削除できるのは、root または uucp としてログインした UUCP 管理者だけです。このディレクトリ内に無秩序にファイルが蓄積するのを防ぐために、定期的に整理する必要があります。

このような定期的な整理がユーザーにとって面倒な場合は、スティッキビットを削除するよりも、各ユーザーに uutouupick を使用するよう奨励してください。スティッキビットはセキュリティのために設定されています (uutouupick の使い方については、uuto(1C) のマニュアルページを参照してください)。このディレクトリのモードの制限の度合を強めて、たとえば特定のユーザーグループだけに使用を限定することもできます。だれかがディスク空間を使い切ってしまうことが望ましくないのであれば、そのディスクへの UUCP アクセスを拒否することもできます。

UUCP の障害追跡

ここでは、UUCP に関する一般的な問題を解決するための手順について説明します。

モデムまたは ACU の障害確認方法

モデムや ACU で、適正に動作していないものがないかどうかを、いくつかの方法で検査できます。

  1. 次のコマンドを実行し、接続障害の回数と理由を表示します。


    uustat -q
    

  2. 特定の回線を介した呼び出しを行い、その試行に関するデバッグ情報を表示します。

    この回線は、/etc/uucp/Devices ファイルの中で direct として定義されていなければなりません (回線が自動ダイヤラに接続している場合は、コマンド行の終わりに電話番号を追加するか、デバイスを direct として設定する必要があります)。次のように入力します。


    cu -d -lline
    

    line/dev.cua/a です。

送信に関するデバッグ方法

特定のマシンに接続できない場合は、Uutryuucp を使用して、そのマシンに対する通信を検査できます。

  1. 次のように入力し、接続を調べます。


    /usr/lib/uucp/Uutry -r machine
    

    machine には、接続に問題のあるマシンのホスト名を指定します。このコマンドは次のことを行います。

    1. デバッグ機能を指定して転送デーモン (uucico) を起動する。root としてログインしていれば、さらに多くのデバッグ情報が得られる

    2. デバッグ出力を /tmp/machine に送る

    3. 次のように入力すると、デバッグ出力を端末に表示する


      tail -f
      

      出力を終了するには Control-c キーを押します。この出力を保存したい場合は、/tmp/machine から出力内容をコピーします。

  2. Uutry を使用しても問題の原因が分からない場合は、次のように入力して、ジョブをキューに入れてみます。


    uucp -r file machine¥!/dir/file
    

    file には転送したいファイル、machine には転送先のマシンを指定します。/dir/file には、相手のマシンのどこにファイルを転送するかを指定します。r オプションを指定すると、ジョブはキューに入りますが、転送は開始されません。

  3. 次のように入力します。


    Uutry
    

    それでも問題が解決できないときは、ご購入先へお問い合わせください。デバッグ出力を保存しておいてください。これは問題の診断に役立ちます。

Uutry-x n オプションを使用して、デバッグのレベルを増減することも考えてみてください。n はデバッグレベルを指定します。Uutry のデフォルトのデバッグレベルは 5 です。

デバッグレベル 3 では、接続がいつどのように確立されたかについての基本的な情報は提供されますが、転送自体について提供される情報は多くはありません。これに対して、デバッグレベル 9 では、転送処理に関するすべての情報が網羅されます。デバッグは転送の両端で行われるという点に注意してください。比較的大きいテキストについて 5 より高いレベルのデバッグを行いたい場合は、相手サイトの管理者に連絡して、デバッグを行う時期について同意を得てください。

UUCP /etc/uucp/Systems ファイルの検査

特定のマシンと接続しようとすると障害が発生する場合は、Systems ファイルの中の情報が最新のものであることを確認してください。マシンに関する次の情報が、最新でない可能性があります。

UUCP エラーメッセージの検査

UUCP のエラーメッセージには、ASSERTSTATUS の 2 つの種類があります。

基本情報の検査

次のコマンドを使用して、基本的なネットワーク情報を検査するために使用できます。