この章では、使用するマシンに合わせてデータベースファイルを変更したあと、UUCP 処理を起動する方法について説明します。この章には、Solaris OS が動作するマシンで UUCP を構成し保守するための、手順と障害の解明についての情報が記載されています。
次の表に、この章で説明する手順の参照先と、各手順についての簡単な説明を示します。
表 25–1 UUCP 管理の作業マップ
作業 |
説明 |
参照先 |
---|---|---|
リモートマシンにユーザーシステムへのアクセスを許可する |
/etc/passwd ファイルを編集し、ユーザーのシステムへのアクセスを許可するマシンを識別するようエントリを追加する | |
UUCP を起動する |
UUCP の起動用に提供されているシェルスクリプトを使用する | |
UUCP を TCP/IP ネットワーク上で有効にする |
/etc/inetd.conf ファイルと /etc/uucp/Systems ファイルを編集し、TCP/IP 用の UUCP を起動する | |
UUCP に起こりがちな問題を解決する |
モデムまたは ACU の異常を確認するための診断手順を実行する | |
送信をデバッグするための診断手順を実行する |
リモートマシンからの UUCP (uucico ) 着信要求が正しく取り扱われるように、各リモートマシンはローカルシステム上にログインを持っていなければなりません。
ユーザーのシステムへのアクセスをリモートマシンに許可するには、次の手順を行なって /etc/passwd ファイルにエントリを追加する必要があります。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
/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 ファイルに追加する必要があります。
ほかのシステムの UUCP 管理者と、ローカルマシン名を調整します。
同様に、ローカルマシン名とパスワードについて、UUCP を介して通信する相手方のすべてのマシンの UUCP 管理者と協議する必要があります。
UUCP には、次に示す 4 つのシェルスクリプトが付属しています。これらのスクリプトは、リモートマシンをポーリングし、転送を再スケジュールし、古いログファイルと成功しなかった転送を整理します。4 つのスクリプトは次のとおりです。
uudemon.poll
uudemon.hour
uudemon.admin
uudemon.cleanup
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 ファイルの適切な行のコメントを解除してください。
uudemon.crontab ファイルは、次の手順に従って起動します。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
/usr/lib/uucp/uudemon.crontab ファイルを編集し、必要に応じてエントリを変更します。
次のコマンドを入力して、uudemon.crontab ファイルを起動します。
crontab < /usr/lib/uucp/uudemon.crontab |
デフォルトの uudemon.poll シェルスクリプトは 1 時間に 1 回 /etc/uucp/Poll ファイルを読み取ります。Poll ファイル内のマシンのどれかに対するポーリングがスケジュールされると、作業ファイル (C.sysnxxxx) が /var/spool/uucp/nodename ディレクトリに入れられます。nodename は、そのマシンの UUCP ノード名です。
このシェルスクリプトは、1 時間に 1 回ずつ uudemon.hour の前に実行されるようにスケジュールされているので、uudemon.hour が呼び出されたときには、作業ファイルが存在しています。
デフォルトの uudemon.hour シェルスクリプトは次のことを行います。
uusched プログラムを呼び出し、スプールディレクトリを検索して未処理の作業ファイル (C.) を見つける。そして、それらの作業ファイルをリモートマシンに転送するためにスケジュールする
uuxqt デーモンを呼び出し、スプールディレクトリを検索して、ローカルコンピュータに転送済みで、転送時に処理されなかった実行ファイル (X.) を見つける
デフォルトでは、uudemon.hour は 1 時間に 2 回実行されます。リモートマシンに対する呼び出しが頻繁に失敗すると予測される場合は、このスクリプトの実行頻度を増やすこともできます。
デフォルトの uudemon.admin シェルスクリプトは次のことを行います。
p オプションと q オプション付きで uustat コマンドを実行する。q は、キューに入っている作業ファイル (C.)、データファイル (D.)、および実行ファイル (X.) の状態を報告する。p は、ロックファイル (/var/spool/locks) 中に列挙されているネットワークプロセス用のプロセス情報を表示する
デフォルトの uudemon.cleanup シェルスクリプトは次のことを行います。
/var/uucp/.Log ディレクトリから個々のマシンに関するログファイルを取り出し、それらをマージし、ほかの古いログ情報とともに /var/uucp/.Old ディレクトリに入れる
7 日以上経過している作業ファイル (C.)、7 日以上経過しているデータファイル (D.)、および 2 日以上経過している実行ファイル (X.) を、スプールファイルから削除する
配送できなかったメールを送信元に戻す
TCP/IP ネットワーク上で UUCP を実行するには、この節で説明するようにいくつかの変更が必要になります。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
/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 デーモンは、認証のためにリモートマシンがログインとパスワードを送ることを想定しているので、getty や login と同様に、ログインとパスワードを要求します。
/etc/inet/services ファイルを編集し、次のように UUCP 用のポートを設定します。
uucp 540/tcp uucpd # uucp daemon |
このエントリを変更する必要はありません。ただし、マシンがネームサービスとして NIS または NIS+ を実行する場合は、/etc/services の /etc/nsswitch.conf エントリを変更して、まず files、次に nis または nisplus が検査されるようにする必要があります。
UUCP が有効になっているか確認します。
# svcs network/uucp |
UUCP サービスは、サービス管理機能によって管理されます。このサービスの状態は、svcs コマンドを使用して確認できます。サービス管理機能の概要については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」を参照してください。
(省略可能) 必要に応じ、次のように入力して UUCP を有効にします。
# inetadm -e network/uucp |
UUCP の設定が終われば、その後の保守は簡単です。この節では、セキュリティー、保守、およびトラブルシューティングに関連する UUCP の作業について説明します。
デフォルトの /etc/uucp/Permissions ファイルは、UUCP リンクに関する最大限のセキュリティーを提供します。デフォルトの Permissions ファイルには、エントリは入っていません。
定義する各リモートマシンについて、次に示す追加パラメータを設定できます。
ローカルマシンからファイルを受け取る方法
読み取り権と書き込み権が与えられるディレクトリ
リモート実行に使用できるコマンド
典型的な Permissions のエントリは次のようになります。
MACHINE=datsun LOGNAME=Udatsun VALIDATE=datsun COMMANDS=rmail REQUEST=yes SENDFILES=yes |
このエントリでは、システム内の任意の場所ではなく、通常の UUCP ディレクトリとの間でのファイルの送信と受信が可能となります。また、ログイン時に UUCP ユーザー名の認証が行われます。
UUCP の保守に必要な作業の量はさほど多くはありません。ただし、How to Start UUCP で述べたように、「UUCP の起動方法」 ファイルが正しい場所に置かれているか確認するとともに、メールファイルと公開ディレクトリが次第に大きくなることに注意する必要があります。
UUCP のプログラムとスクリプトが生成する電子メールメッセージは、すべてユーザー ID uucp に送信されます。管理者がユーザー uucp として頻繁にログインしていないと、メールが蓄積され、ディスク空間を浪費していることに気付かない場合があります。この問題を解決するには、/etc/mail/aliases の中に別名を 1 つ作り、root か自分自身、そしてほかの UUCP 保守責任者に、電子メールを転送します。aliases ファイルを変更したあとで、newaliases コマンドを実行するのを忘れないようにしてください。
ディレクトリ /var/spool/uucppublic は、UUCP がデフォルトでファイルをコピーできる場所として、すべてのシステムに対して提供されているディレクトリです。すべてのユーザーが、/var/spool/uucppublic への移動と、このディレクトリ内のファイルの読み書きを行う権限を持っています。しかし、このディレクトリのスティッキービットが設定されているため、このディレクトリのモードは 01777 です。したがって、ユーザーには、このディレクトリにコピーされ uucp に所有されているファイルを削除することはできません。 このディレクトリからファイルを削除できるのは、root または uucp としてログインした UUCP 管理者だけです。このディレクトリ内に無秩序にファイルが蓄積するのを防ぐために、定期的にファイルを削除する必要があります。
このような保守作業がユーザーにとって不都合な場合は、セキュリティーのために設定されているスティッキービットを削除するのではなく、uuto と uupick を使用するよう各ユーザーに推奨してください。uuto と uupick の使い方については、uuto(1C) のマニュアルページを参照してください。このディレクトリのモードの制限の度合を強めて、特定のユーザーグループに使用を限定することもできます。ユーザーによってディスク空間が使い切ってしまわれないように、そのディスクへの UUCP アクセスを拒否することもできます。
ここでは、UUCP に関する一般的な問題を解決するための手順について説明します。
モデムや ACU で、適正に動作していないものがないかどうかを、いくつかの方法で検査できます。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# uustat -q |
特定の回線を介した呼び出しを行い、その試行に関するデバッグ情報を表示します。
この回線は、/etc/uucp/Devices ファイル内で direct として定義されていなければなりません。回線が自動ダイアラに接続されている場合は、コマンド行の終わりに電話番号を追加する必要があります。または、デバイスを direct として設定する必要があります。次のように入力します。
# cu -d -lline |
line は /dev/cua/a です。
特定のマシンに接続できない場合は、Uutry と uucp を使用して、そのマシンに対する通信を検査できます。
スーパーユーザーになるか、同等の役割を引き受けます。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# /usr/lib/uucp/Uutry -r machine |
machine には、接続できないマシンのホスト名を指定します。このコマンドは次のことを行います。
デバッグ機能を指定して転送デーモン (uucico) を起動する。root としてログインしていれば、さらに多くのデバッグ情報が得られる
デバッグ出力を /tmp/machine に送る
次のように入力すると、デバッグ出力を端末に表示する
# tail -f |
出力を終了するには Control-C キーを押します。この出力を保存する場合は、/tmp/machine から出力内容をコピーします。
Uutry を使用しても問題の原因がわからない場合は、ジョブをキューに入れてみます。
# uucp -r file machine\!/dir/file |
転送するファイルの名前を指定する
コピー先のマシンの名前を指定する
相手のマシンのどこにファイルを転送するかを指定する
次のコマンドを入力します。
# Uutry |
それでも問題が解決できないときは、ご購入先へお問い合わせください。デバッグ出力は問題の診断に役立つため、保存しておいてください。
Uutry で -x n オプションを使用して、デバッグのレベルを増減することもできます。n はデバッグレベルを指定します。Uutry のデフォルトのデバッグレベルは 5 です。
デバッグレベル 3 では、接続がいつどのように確立されたかについての基本的な情報は提供されますが、転送について提供される情報は多くはありません。一方、デバッグレベル 9 では、転送処理に関するすべての情報が網羅されます。デバッグは転送の両端で行われるという点に注意してください。比較的大きいテキストについて 5 より高いレベルのデバッグを行いたい場合は、相手サイトの管理者に連絡して、いつレベルを変更するか決定してください。
特定のマシンと接続しようとすると障害が発生する場合は、Systems ファイルの中の情報が最新のものであることを確認してください。マシンに関する次の情報が、最新でない可能性があります。
UUCP のエラーメッセージには、 ASSERT と STATUS の 2 つの種類があります。
プロセスが異常終了した場合は、ASSERT エラーメッセージが /var/uucp/.Admin/errors に記録されます。この種類のメッセージには、ファイル名、sccsid、回線番号、およびテキストが含まれています。この種類のメッセージが送られるのは、通常、システムに問題がある場合です。
STATUS エラーメッセージは /var/uucp/.Status ディレクトリに格納されます。このディレクトリ内には、ローカルコンピュータが通信しようとした各リモートマシンについて、それぞれファイルが作られます。これらのファイルには、試行した通信と、その通信が成功したかどうかについての状態情報が入っています。