# rpcclient

## Name

rpcclient -- MS-RPC 関数を発行するクライアントツール

## Synopsis

rpcclient [-A authfile] [-c <command string>] [-d debuglevel] [-h] [-l logfile] [-N] [-s <smb config file>] [-U username[%password]] [-W workgroup] [-N] {server}

## DESCRIPTION

このツールは Samba の一部である。

rpcclient は Samba の MS-RPC 機能をテストするために 開発されたユーティリティである。 これは開発と安定というサイクルを何度か行なってきている。 システム管理者の多くがこのツールを用いて UNIX ワークステーションから Windows NT クライアントを管理するスクリプトを記述している。

## オプション

server

  接続先のサーバを NetBIOS 名で指定する。 サーバは SMB/CIFS サーバである必要がある。 この名前の解決には `smb.conf(5)` ファイルで指定された name resolve order パラメータが用いられる。

-A filename

  このオプションは、 接続時のユーザ名とパスワードを読みだすファイルを指定する。 ファイルは以下の形式で記述する

      		username = <値>
      		password = <値>
      		domain   = <値>

  ファイルのパーミッションの設定を行なって 意図しないユーザにアクセスを禁止しておくことを 忘れないように。

-c 'command string'

  実行するコマンド(以下で記述するもの)をセミコロンで区切って指定する。

-d debuglevel

  debuglevel を設定する。 これは 0 から 100 までの値をとる。 Samba Team にバグレポートを送る際には、 この値を 100 に設定すること(`BUGS.txt` を参照のこと)。

-h

  コマンドラインオプションの概要を出力する

-l logbasename

  ロギングに用いるファイル名を指定する。 ファイル名には .client という拡張子がつけられる。 このファイルがクライアント側から削除されることは決してない。

-N

  rpcclient がパスワードを問い合わせないようにする。 通常 rpcclient はパスワードプロンプトを表示する。 -U オプションも参照のこと。

-s smb.conf

  `smb.conf` ファイルの場所を指定する。

-U username[%password]

  SMB ユーザ名もしくはユーザ名とパスワードを指定する。

  %password が指定されていなかった場合は、 パスワードプロンプトが表示される。 なお、クライアントは、USER 環境変数の値、ついで LOGNAME環境変数の値を確認し、 いずれかが設定されていれば、 値を大文字にしたものを初期値として保持している。 これらの変数が設定されていなかった場合は、 ユーザ名として `GUEST` が設定されている。

  更に、 ユーザ名とパスワードを平文で含む認証情報ファイルを 利用することも可能である。 このオプションは、 管理者がコマンドラインや環境変数から認証情報を入力することのできない スクリプトでの用途を主眼として提供されている。 この方法を利用する場合は、 ファイルのパーミッションの設定を行い、 意図しないユーザにアクセスを禁止しておくことを 忘れないように。 詳細は-A オプションを参照のこと。

  パスワードをスクリプトに含む場合は慎重に行なうこと。 多くのシステムにおいて、 ps コマンドによって 実行中プロセスのコマンドラインを 確認することが可能である。 安全のためには rpcclient が常にパスワードプロンプトを表示するようにして、 直接パスワードを入力するようにしておくこと。

-W domain

  指定したユーザが所属する SMB ドメインを指定する。 これは smb.conf で設定された デフォルトのドメイン名を上書きする。 指定されたドメインがサーバのNetBIOS名と同じ場合、 クライアントのログファイルに、 (ドメインのSAMでなく) サーバのローカルなSAMが用いられたことが記録される。

## コマンド

LSARPC

- lsaquery

- lookupsids - リストされた SID をユーザ名に解決する。

- lookupnames - リストされたユーザ名を SID に解決する。

- enumtrusts

SAMR

- queryuser

- querygroup

- queryusergroups

- querygroupmem

- queryaliasmem

- querydispinfo

- querydominfo

- enumdomgroups

SPOOLSS

- adddriver <arch> <config> - プリンタドライバ情報をサーバに登録するために AddPrinterDriver() RPC の呼び出しを行なう。 ドライバファイルは getdriverdir コマンドが返却したディレクトリ中に予め存在している必要がある。 arch に設定できる値は getdriverdir コマンドで取得できる値になる。 config パラメータでは以下の形式のファイルを指定する

      		Long Printer Name:\
      		Driver File Name:\
      		Data File Name:\
      		Config File Name:\
      		Help File Name:\
      		Language Monitor Name:\
      		Default Data Type:\
      		Comma Separated list of Files

  空のフィールドには、"NULL" を入力しておくこと

  Samba は、 双方向通信をサポートしているローカルプリンタでのみ利用可能な Print Monitor のサポートを行なわない。 このフィールドは必ず "NULL" にしておくこと。 別の NT プリントサーバにコマンドを発行する場合、 ドライバの Print Monitor を事前にインストールしていないと、 RPC に失敗する。

- addprinter <printername> <sharename> <drivername> <port> - 別のサーバ上にプリンタを追加する。 このプリンタは自動的に共有される。 このコマンドを実行する前に、 プリンタドライバをサーバ上にインストールして ( adddriver を参照のこと)、 portを 適切なポート名にしておく (enumportsを参照) 必要があることに注意。

- enumdata - サーバ上にあるプリンタの設定情報を一覧する。 Windows NT クライアントの場合、 これらの情報はレジストリに格納されているが、 Samba サーバの場合、 プリンタ用の TDB ファイル中に格納されている。 このコマンドは、 Microsoft Platform SDK 中にある GetPrinterData() 関数に相当する。 (このコマンドは現在実装されていない)

- deldriver - すべてのアーキテクチャ用の指定されたプリンタドライバを削除する。 これは、既存のドライバファイルをサーバから削除するわけではなく、 サーバのドライバのリストからエントリだけを削除するものである。

- enumjobs <printer> - 指定されたプリンタのジョブおよびその状況を表示する。 このコマンドは、Microsoft Platform SDK 中の EnumJobs() 関数に相当する。 (このコマンドは現在実装されていない)

- enumports [level] - 指定された info level でEnumPorts() 関数を呼び出す。 現在、info level 1 と 2 のみがサポートされている。

- enumdrivers [level] - EnumPrinterDrivers() を実行する。 これは全てのアーキテクチャ用の インストールされたドライバの一覧を表示する。 フラグとオプションの詳細については、 Microsoft Platform SDK のドキュメントを参照のこと。 現在、info level 1, 2, 3 のみがサポートされている。

- enumprinters [level] - EnumPrinters() を実行する。 これは共有されているインストール済プリンタの一覧を表示する。 フラグとオプションの詳細については、 Microsoft Platform SDK のドキュメントを参照のこと。 現在、info level 0, 1, 2 のみがサポートされている。

- getdata <printername> - 指定されたプリンタの設定情報を取得する。 詳細な情報に付いては、 enumdata コマンドを参照のこと。 このコマンドは Microsoft Platform SDK 中の GetPrinterData() に相当するものである。 (このコマンドは現在実装されていない)

- getdriver <printername> - 指定されたプリンタのプリンタドライバの情報 (ドライバファイル、設定ファイル、関連するファイルなど)を取得する。 このコマンドは Microsoft Platform SDK 中の GetPrinterDriver() に相当するものである。 現在、info level 1, 2, 3 のみがサポートされている。

- getdriverdir <arch> - GetPrinterDriverDirectory() RPC を発行して、 SMB 共有名と 指定された arch 用のプリンタドライバの格納されてている サブディレクトリとを取得する。 archに指定できる値は、 "Windows 4.0" (for Windows 95/98), "Windows NT x86", "Windows NT PowerPC", "Windows Alpha_AXP", "Windows NT R4000" である。

- getprinter <printername> - 現在のプリンタ情報を取得する。 このコマンドは Microsoft Platform SDK の GetPrinter() に相当する。

- openprinter <printername> - 指定したプリンタに対して、 OpenPrinterEx() と ClosePrinter() RPC を実行する。

- setdriver <printername> <drivername> - SetPrinter() コマンドを実行して、 既にインストールされているプリンタ用のプリンタドライバを更新する。 更新されるプリンタドライバは、 プリントサーバ上に適切にインストールされている必要がある。

  インストールされているプリンタやドライバの一覧を 取得する方法に付いてはenumprinters や enumdrivers コマンドも参照のこと。

GENERAL OPTIONS

- debuglevel - 現在の debug level を設定する。 これはログ情報の書き込みに影響する。

- help (?) - コマンドの全てと、 幾つかのコマンドに付いてのより詳細な説明を表示する。

- quit (exit) - rpcclientを終了させる。

## BUGS

rpcclient は開発者のテストツールとしての利用を念頭に置いているため、 あまり動作が安定していない部分(コマンドラインの解析など)もある。 不正なパラメータを解析しようとすると、 失敗してコアダンプするのは既知の不具合である。

Luke Leighton のオリジナルの rpcclient マニュアルページより:

"警告! SMB 上の MSRPC コードは ネットワークトレースを行なうことで開発中である。 オリジナルの開発者(Microsoft)からは、 SMB 上で MSRPC がどのように動作するか、 個々の MSRPC サービスがどのように動作するかについての情報は 提供されていない。 これらのサービスに関する Microsoft の実装も、 場所によってはかなり風変わりであることが明らかになっている。

Samba への実装も同様に場あたり的な面がある。 多くのサービスの実装が解明されるにつれて、 smbd(8) や rpcclient(1) への実装も可能になってきているが、 幾つかのコマンドやサービスについての互換性はない。 なお、Microsoft に対して送られたレポートによって 発見されたり報告されたりした問題がサービスパックで修正されているが、 これにより結果として互換性が損なわれることがある。"

## バージョン

このマニュアルページは Samba バージョン 2.2 用である。

## AUTHOR

オリジナルの Samba ソフトウェアと関連するユーティリティは、 Andrew Tridgell によって作成された。現在 Samba は Samba Team によって、 Linux カーネルの開発と同様の オープンソースプロジェクトとして開発が行なわれている。

オリジナルの rpcclient マニュアルページは Matthew Geddes と Luke Keneth Casson Leighton によって作成され、 Gerald Carter によって書き直された。 Samba 2.2 における DocBook 形式への変換は、 Gerald Carter によって行なわれた。

## 日本語訳

- 高橋 基信(monyo@samba.gr.jp)