rpcclient — MS-RPC 関数を発行するクライアントツール
rpcclient [-A authfile] [-c <command string>] [-d debuglevel] [-h] [-l logfile] [-N] [-s <smb config file>] [-U username[%password]] [-W workgroup] [-N] [-I destinationIP] {server}
このツールは Samba(7) の一部である。
rpcclient は Samba の MS-RPC 機能をテストする ために開発されたユーティリティである。 これは開発と安定というサイクルを何度か行なってきている。 システム管理者の多くがこのツールを用いて UNIX ワークステーションから Windows NT クライアントを管理するスクリプトを記述している。
接続先のサーバを NetBIOS 名で指定する。 サーバは SMB/CIFS サーバである必要がある。 この名前の解決には smb.conf(5 ) ファイルで指定された name resolve order パラメータが用いられる。
実行するコマンド (以下で記述するもの) をセミコロンで区切って指定する。
IP address は接続先の サーバのアドレスを指定する。記述方法は、標準的な "a.b.c.d" のフォーマットで指定する。
通常、クライアントは上記の name resolve order パラメータで指定された名前解決の機能を使用して NetBIOS 名をルックアップし、SMB/CIFS サーバを特定する。 このパラメータを使用することで、クライアントに対し強制的に 指定された IP Address にサーバがあると認識させ、接続したリソースの NetBIOS 名コンポーネントを無視させることができる。
このパラメータにデフォルトの値はない。 もしこの値が指定されていないのなら、上で述べたようにクライアントが 自動的に判別する。
プログラムのバージョン番号を表示する。
サーバーが必要とする詳細な設定を含む設定ファイルを指定する。 このファイルには、 サーバーが提供するサービスに関する記述や、 どの printcap ファイルを利用するかといった情報が含まれている。 詳細は smb.conf を参照のこと。 デフォルトの設定ファイルの名前は、コンパイル時に決定される。
デバッグレベルを debuglevel に設定する。 debuglevel は、0 から 10 までの整数である。 このパラメータを指定しないときのデフォルト値は 0 である。
この値を大きくするほど、 サーバーの動作に関するより詳細な情報がログファイルに記録される。 レベル 0 では、致命的なエラーと重大な警告のみが記録される。 レベル 1 は日々の運用に適しており、 少量の稼働状況に関する情報を生成する。
1 より上のレベルは大量のログが生成されるので、 問題解決の時にのみ使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されており、 莫大な量のログデータが生成される。 そのほとんどは非常に謎めいた内容となっている。
ログ/デバッグファイルのファイル名。 拡張子として ".client" が追加される。 ログファイルはクライアントによって削除されることはない。
このオプションを指定すると、 クライアントはユーザーへのパスワード入力要求をしなくなる。 パスワードが必要ないサービスにアクセスするときに有用である。
コマンドラインにパスワードが指定されておらず、 このオプションも指定されていないと、 クライアントはパスワードを要求する。
Kerberos による認証を試みる。 アクティブディレクトリ環境でのみ有効である。
接続に使用するユーザー名とパスワードを指定したファイル filename から読み込む。 ファイルの形式は次の通り:
username = <value> password = <value> domain = <value>
ファイルのパーミッションを確認し、 ほかのユーザーから参照されないように注意すること。
SMB のユーザー名、またはユーザー名とパスワードを指定する。
パスワードとして %password を指定しないと、 ユーザーにパスワードの入力を求める。 このオプションが指定されていない場合、 クライアントは環境変数 USER, LOGNAME の有無を順番に調べ、 設定してあるならその値を大文字にしてユーザー名として使用する。 それらが設定されていなければ、GUEST をユーザー名として使用する。
このほかに、 平文のユーザー名とパスワードを記述した認証ファイルを使用するオプションがある。 このオプションは主にスクリプト向けに用意されており、 認証情報をコマンドラインや環境変数に含めたくない場合に有用である。 このオプションを利用するときは、 ファイルのパーミッションを確認し、 ほかのユーザーから参照されないように注意すること。 詳細は -A オプションを参照のこと。
パスワードをスクリプトに含める場合は注意すること。 多くのシステムでは、実行中のプロセスのコマンドラインは ps コマンドで参照することができてしまう。 安全のため、 クライアントが必ずパスワードを要求するようにして、 パスワードを直接入力するようにしておくこと。
Samba 自身の NetBIOS 名を指定する。 このオプションは、 smb.conf の netbios name パラメータの設定に相当する。 コマンドラインの指定は、 smb.conf 内の設定よりも優先される。
NetBIOS スコープを指定する。 NetBIOS スコープは、 クライアントが通信用の NetBIOS 名を生成するときに利用される。 NetBIOS スコープの詳細な利用方法については、 RFC 1001 と RFC 1002 を参照のこと。 NetBIOS スコープは、ごく稀にしか利用されない。 NetBIOS システム全体を運営している管理者が、 そのシステム内の相手と通信する場合にのみ、 このパラメータを設定する。
ユーザー名の SMB ドメインを指定する。 このオプションは、smb.conf 内のデフォルトのドメイン設定よりも優先される。 ドメイン名としてサーバーの NetBIOS 名を指定すると、 クライアントは (ドメインの SAM ではなく) サーバーのローカル SAM を使用してログオンを試みる。
クライアントのソケットに設定する TCP のソケットオプション。 指定できる値については、 smb.conf マニュアルページ中の socket options パラメータを参照のこと。
コマンドラインオプションの要約を表示する。
info policy を問い合わせる。
リストされた SID をユーザ名に解決する。
リストされたユーザ名を SID に解決する。
信頼するドメインの一覧を表示する。
特権の一覧を表示する。
特権の名前から機能を取得する。
LSA の SID の一覧を表示する。
SID の 特権を一覧表示する。
SID の 権限を一覧表示する。
権限を持ったアカウントの一覧を表示する。
アカウントに権限を追加する。
アカウントから権限を取り除く。
名前から特権の値を取得する。
LSA セキュリティオブジェクトを問い合わせる。
プライマリドメインの情報を取得する。
DFS
DFS をサポートしているか問い合わせる。
DFS の共有を追加する。
DFS の共有を削除する。
DFS の共有の情報を問い合わせる。
DFS の共有の一覧を表示する。
サーバ情報を問い合わせる。
共有を一覧表示する。
開いているファイルを一覧表示する。
リモートサーバの時間をフェッチする。
ユーザ情報を問い合わせる。
グループ情報を問い合わせる。
ユーザが所属するグループを問い合わせる。
グループに所属するメンバーを問い合わせる。
アライアスに属するメンバーを問い合わせる。
ユーザ情報の一覧を表示する。
ドメイン情報を問い合わせる。
ドメインユーザを一覧表示する。
ドメイングループを一覧表示する。
アライアスグループを一覧表示する。
ドメインユーザを作成する。
名前をルックアップする。
名前をルックアップする。
ドメインユーザを削除する。
SAMR セキュリティオブジェクトを問い合わせる。
ドメインのパスワード情報を取得する。
ドメインをルックアップする。
プリンタドライバ情報をサーバに登録するために 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 に失敗する。
別のサーバ上にプリンタを追加する。このプリンタは自動的に共有される。 このコマンドを実行する前に、プリンタドライバをサーバ上にインストール して (adddriver を参照のこと)、port を有効なポート名にしておく (enumports を参照) 必要があることに注意。
すべての アーキテクチャ用の指定されたプリンタドライバを削除する。これは、 ドライバファイル自体をサーバから削除するわけではなく、 サーバのドライバのリストからエントリだけを削除するものである。
サーバ上にある プリンタの設定情報を一覧表示する。Windows NT クライアントの場合、 これらの情報はレジストリに格納されているが、Samba サーバの場合、 プリンタ用の TDB ファイル中に格納されている。このコマンドは、 Microsoft Platform SDK 中にある GetPrinterData() 関数に相当する。 (このコマンドは現在実装されていない)
キーから プリンタデータを一覧表示する。
指定されたプリンタのジョブおよびその状況を表示する。 このコマンドは、Microsoft Platform SDK 中の EnumJobs() 関数に相当する。
プリンタキーを 一覧表示する。
指定された info level でEnumPorts() 関数を呼び出す。現在、info level 1 と 2 のみがサポートされている。
EnumPrinterDrivers() を実行する。これは全てのアーキテクチャ用の インストールされたドライバの一覧を表示する。フラグとオプションの 詳細については、Microsoft Platform SDK のドキュメントを参照のこと。 現在、info level 1, 2, 3 のみがサポートされている。
EnumPrinters() を実行する。これは共有されている インストール済プリンタの一覧を表示する。フラグとオプションの詳細に ついては、Microsoft Platform SDK のドキュメントを参照のこと。 現在、info level 1, 2, 5 のみがサポートされている。
指定されたプリンタの設定情報を取得する。 詳細な情報に付いては、enumdata コマンドを参照のこと。 このコマンドは Microsoft Platform SDK 中の GetPrinterData() に相当するものである。
キー名とともに プリンタドライバデータを取得する。
指定されたプリンタのプリンタドライバの情報 (ドライバファイル、 設定ファイル、関連するファイルなど) を取得する。このコマンドは Microsoft Platform SDK 中の GetPrinterDriver() に相当するものである。 現在、info level 1, 2, 3 のみがサポートされている。
GetPrinterDriverDirectory() RPC を発行して、SMB 共有名と指定された アーキテクチャ用のプリンタドライバの格納されてているサブディレクトリを 取得する。arch に指定できる値は、 "Windows 4.0" (for Windows 95/98), "Windows NT x86", "Windows NT PowerPC", "Windows Alpha_AXP", "Windows NT R4000" である。
現在のプリンタ情報を取得する。このコマンドは Microsoft Platform SDK の GetPrinter() に相当する。
print processor ディレクトリを取得する。
指定したプリンタに対して、OpenPrinterEx() と ClosePrinter() RPC を実行する。
SetPrinter() コマンドを実行して、既にインストール されているプリンタ用のプリンタドライバを更新する。 更新されるプリンタドライバは、プリントサーバ上に適切にインストール されている必要がある。
インストールされているプリンタやドライバの一覧を取得する方法に ついては enumprinters や enumdrivers コマンドも参照のこと。
フォームを追加する。
フォームを設定する。
フォームを取得する。
フォームを削除する。
フォームを 一覧表示する。
プリンタのコメントを 設定する。
REG_SZ プリンタデータを設定する。
Rffpcnex テストを実行する。
rpcclient は開発者のテストツールとしての利用を 念頭に置いているため、あまり動作が安定していない部分 (コマンドラインの解析など) もある。無効なパラメータを解析しようとすると、 失敗してコアダンプするのは既知の不具合である。
Luke Leighton のオリジナルの rpcclient マニュアルページより:
警告! SMB 上の MSRPC コードは ネットワークトレースを行なうことで開発されている。オリジナルの開発者 (Microsoft) からは、SMB 上で MSRPC がどのように動作するか、 個々の MSRPC サービスがどのように動作するかについての情報は提供されていない。 これらのサービスに関する Microsoft の実装も、場所によってはかなり風変わりで あることが明らかになっている。
同様に Samba への実装も場あたり的な面がある。 多くのサービスの実装が解明されるにつれて、smbd (8) や rpcclient(1) は、幾つかのコマンドやサービスにおいてバージョン間の互換性が なくなることもありうる。なお、開発者が発見された問題は Microsoft に対してレポートが送られ、報告された問題はサービスパックで修正されているが、 その結果互換性が損なわれることがあるかもしれない。
オリジナルの Samba ソフトウェアと関連するユーティリティは、 Andrew Tridgell によって作成された。現在 Samba は Samba Team によって、 Linux カーネルの開発と同様のオープンソースプロジェクトとして開発が 行なわれている。
オリジナルの rpcclient マニュアルページは Matthew Geddes と Luke Keneth Casson Leighton によって作成され、 Gerald Carter によって書き直された。 Samba 2.2 における DocBook 形式への変換は、Gerald Carter によって行なわれた。Samba 3.0 における DocBook XML 4.2 形式への変換は Alexander Bokovoy によって行われた。