rpcclient — クライアント側の MS-RPC 関数を発行するツール
rpcclient
[-A authfile] [-c <command string>] [-d debuglevel] [-l logdir] [-N] [-s <smb config file>] [-U username[%password]] [-W workgroup] [-N] [-I destinationIP] {BINDING-STRING|HOST}
このツールは samba(7) システムの一部である。
rpcclient
は Samba の MS-RPC
機能をテストするために開発されたユーティリティであり、
開発と安定を何度か繰り返している。
多数のシステム管理者がこのツールを用いて UNIX ワークステーションから
Windows NT クライアントを管理するスクリプトを作成している。
dcerpc サービスへの接続時にバインド文字列を 指定する。
書式は以下の通り:
TRANSPORT:host[options]
ここで TRANSPORT は、SMB に対する ncacn_np (名前付きパイプ) か TCP/IP 上の DCERPC に対する ncacn_ip_tcp である。
"host" は、IP か ホスト名か netbios名 である。バインド文字列が サーバサイドのエンドポイントを識別する場合、 "host" は 空の文字列でもよい。詳細は以下を参照のこと。
"options" は、ncacn_np トランスポートを使う場合は、SMB パイプ名を 含んでもよく、ncacn_ip_tcp トランスポートを使う場合は TCP ポート番号を 含んでもよく、その他の場合は、自動的に決定される。
例:
ncacn_ip_tcp:samba.example.com[1024]
ncacn_ip_tcp:samba.example.com[sign,seal,krb5]
ncacn_ip_tcp:samba.example.com[sign,spnego]
ncacn_np:samba.example.com
ncacn_np:samba.example.com[samr]
ncacn_np:samba.example.com[samr,sign,print]
ncalrpc:/path/to/unix/socket
//SAMBA
サポートされるトランスポートは以下の通り:
ncacn_np
- Connect using named pipes
ncacn_ip_tcp
- Connect over TCP/IP
ncalrpc
- Connect over local RPC (unix sockets)
サポートされるオプションは以下の通り:
sign
- Use RPC integrity authentication level
seal
- Enable RPC privacy (encryption) authentication level
connect
- Use RPC connect level authentication (auth, but no sign or seal)
packet
- Use RPC packet authentication level
spnego
- Use SPNEGO instead of NTLMSSP authentication
ntlm
- Use plain NTLM instead of SPNEGO or NTLMSSP
krb5
- Use Kerberos instead of NTLMSSP authentication
schannel
- Create a schannel connection
smb1
- Use SMB1 for named pipes
smb2
- Use SMB2/3 for named pipes
validate
- Enable the NDR validator
print
- Enable debug output of packets
padcheck
- Check reply data for non-zero pad bytes
bigendian
- Use big endian for RPC
ndr64
- Use NDR64 for RPC
実行するコマンド (以下で記述) をセミコロンで区切って指定する。
IP address
は接続先の
サーバーのアドレスを指定する。記述方法は、標準的な "a.b.c.d"
のフォーマットで指定する。
通常、クライアントは上記の name resolve order
パラメーターで指定された名前解決の機能を使用して
NetBIOS 名を検索し、SMB/CIFS サーバーを特定する。
このパラメーターを使用することで、クライアントに対し強制的に
指定された IP Address にサーバーがあると認識させ、接続しようとしているリソースの
NetBIOS 名を無視させることができる。
このパラメーターにデフォルトの値はない。 もしこの値が指定されていないのなら、上で述べたようにクライアントが 自動的に判別する。
level
は0から10までの整数値である。
既定値の値は、パラメーターが設定されていなければ0である。
この値を大きくするほど、サーバーの動作に関するより詳細な情報が ログファイルに記録される。レベル 0 では、致命的なエラーと重大な警告 のみが記録される。レベル 1 は日々の運用に適しており、少量の稼働状況 に関する情報を生成する。
1 より上のレベルは大量のログが生成されるので、問題解決の時にのみ 使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されて おり、莫大な量のログデータが生成される。そのほとんどは非常に謎めいた内容 となっている
このパラメーターの指定は、smb.conf
ファイル中の、
log level パラメーターの
指定よりも優先する事に注意。
プログラムのバージョン番号を表示する。
サーバーが必要とする詳細な設定を含む設定ファイルを
指定する。このファイルには、サーバーが提供するサービスに関する記述や、
どの printcap ファイルを利用するかといった情報が含まれている。詳細は
smb.conf
を参照のこと。設定ファイルの名前の既定値は、コンパイル時
に決定される。
ログ/デバッグファイルのファイル名。拡張子として
".progname"
が追加される(例えば log.smbclient,
log.smbd,など)。ログファイルはクライアントによって削除されることはない。
コマンドラインから smb.conf(5) オプション "<name>" に値 "<value>" を設定。 これはコンパイル時の既定値と設定ファイルから読み込まれたオプションを上書きする。
このオプションを指定すると、クライアントはユーザーへの パスワード入力要求をしなくなる。パスワードが必要ないサービスにアクセスする ときに有用である。
コマンドラインにパスワードが指定されておらず、このオプションも指定 されていないと、クライアントはパスワードを要求する。
もしも、パスワードがコマンドライン上で指定され、このオプションも 定義されていた場合、コマンドライン上のパスワードは無視され、パスワードは 使われない。
Kerberos による認証を試みる。アクティブディレクトリ環境でのみ有効である。
winbindによってキャッシュされた資格情報を使うようにする。
このオプションは、指定したファイルから、接続に使用する ユーザー名とパスワードを読み込むために使用する。ファイルの形式は次の通り:
username = <value> password = <value> domain = <value>
ファイルのパーミッションを確認し、ほかのユーザーから参照されない ように注意すること。
SMB のユーザー名、またはユーザー名とパスワードを指定する。
もしも %password を指定しないと、ユーザーにパスワードの入力を求める。
クライアントはまず初めにUSER
、LOGNAME
の順に
環境変数の存在を調べ、もしもどちらかが存在するならば、その文字列を大文字にする。
環境変数が存在しない場合、ユーザー名としてGUEST
が用いられる。
このほかに、平文のユーザー名とパスワードを記述した認証ファイルを使用する
オプションがある。このオプションは主にスクリプト向けに用意されており、認証情報を
コマンドラインや環境変数に含めたくない場合に有用である。このオプションを利用する
ときは、ファイルのパーミッションを確認し、ほかのユーザーから参照されないように
注意すること。詳細は-A
オプションを参照のこと。
パスワードをスクリプトに含める場合は注意すること。多くのシステムでは、実行
中のプロセスのコマンドラインはps
コマンドで参照することが
できてしまう。安全のため、必ず、rpcclient
を使用して、
パスワード入力を要求し、直接入力するようにしておくこと。
クライアント署名ステートの設定。
保存されたマシンパスワードアカウントを使用する。
このコマンドラインパラメーターは、UNIX拡張をサポートするか、 SMB3プロトコルを選択したリモートサーバーを必要とする。 コネクション要求は暗号化される。SMB暗号化は、SMB3あるいはUNIX拡張 のどちらかを、GSSAPI経由を使って調停される。暗号化の調停に与えられた 資格情報を(kerberosまたはNTLMv1/v2)、ドメイン/ユーザー名/パスワードの 3回利用する。暗号化が調停不能だった場合、接続は失敗する。
提供されたパスワードはNTハッシュである。
このオプションは Samba 自身が使う NetBIOS名を上書きする。
これは、smb.conf
ファイル中の netbios name パラメータ
で設定することと同じである。しかし、コマンド行での設定は
smb.conf
での設定よりも優先する。
nmblookup
が、通信用のNetBIOS名
を生成する時に使うNetBIOS スコープを指定する。NetBIOS スコープの詳細な
利用方法については、 RFC 1001 と RFC 1002 を参照のこと。NetBIOSスコープ
はごく稀にしか利用されない。NetBIOS システム
全体を運営している管理者が、そのシステム内の相手と通信する場合にのみ、
このパラメーターを設定する。
ユーザー名の SMB ドメインを指定する。このオプションは、 smb.conf 内のデフォルトのドメイン設定よりも優先される。ドメイン名として サーバーの NetBIOS 名を指定すると、クライアントは (ドメインの SAM では なく) サーバーのローカル SAM を使用してログオンを試みる。
クライアントのソケットに設定する TCP のソケットオプ
ション。有効なオプションの一覧については、smb.conf
マニュアルページ
中の socket options パラメーターを参照のこと。
コマンドラインオプションの要約を表示する。
簡単な使用法を表示する。
info policy を問い合わせる。
SID から名前への変換を行う。
SID から名前への変換を行う。
SID から名前への変換を行う。
名前から SID への変換を行う。
名前から SID への変換を行う。
名前から SID への変換を行う。
信頼するドメインの一覧を表示する。
ユーザー権利の一覧を表示する。
ユーザー権利の名前を取得する。
LSA SID の一覧を表示する。
新しい lsa アカウントを作成する。
指定した SID の持つユーザー権利を一覧表示する。
指定されたユーザー権利を持つ SID を一覧表示する。
SID に ユーザー権利を割り当てる。
SID から らユーザー権利を取り除く。
アカウントにユーザー権利を追加する。
アカウントからユーザー権利を取り除く。
ユーザー権利の名前から値を取得する。
LSA セキュリティオブジェクトを問い合わせる。
(与えられた SID で) LSA 信頼ドメイン情報を問い合わせる。
(与えられた名前で) LSA 信頼ドメイン情報を問い合わせる。Windows が 2k より大きい場合のみ動作する。k
(与えられた SID で) LSA 信頼ドメイン情報を問い合わせる。
LSA 信頼ドメイン情報を設定する。
ユーザ名を取得する。
Secret を作成する。
Secret を削除する。
Secret を問い合わせる。
Secret を設定する。
プライベートデータを検索する。
プライベートデータを格納する。
信頼するドメインを作成する。
信頼するドメインを削除する。
DFS をサポートしているか問い合わせる。
DFS の共有を追加する。
DFS の共有を削除する。
DFS の共有の情報を問い合わせる。
DFS の共有の一覧を表示する。
dfs の共有一覧を表示する。
サーバー情報を問い合わせる。
共有を一覧表示する。
すべての共有を列挙する
共有の情報を表示する
共有の情報を設定する
DFS フラグを設定する
開いているファイルを一覧表示する。
リモートサーバーの時間を取得する。
共有名を検証する
ファイルのセキュリティ情報を得る
セッションを削除する
セッション一覧を表示する
ディスク一覧を表示する
接続の一覧を表示する
共有を追加する
共有を削除する
ユーザー情報を問い合わせる。
グループ情報を問い合わせる。
ユーザーが所属するグループを問い合わせる。
ユーザの別名を問い合わせる。
グループに所属するメンバーを問い合わせる。
エイリアスに所属するメンバーを問い合わせる。
別名情報を問い合わせる。
別名を削除する。
ユーザー情報の一覧を表示する。
ユーザー情報の一覧を表示する。
ユーザー情報の一覧を表示する。
ドメイン情報を問い合わせる。
ドメインユーザーを一覧表示する。
ドメイングループを一覧表示する。
エイリアスグループ(ローカルグループ)を一覧表示する。
ドメインの一覧を表示する。
ドメインユーザーを作成する。
ドメイングループを作成する。
ドメインの別名を作成する。
名前を検索する。
rid を検索する。
ドメイングループを削除する。
ドメインユーザーを削除する。
SAMR セキュリティオブジェクトを問い合わせる。
ドメインパスワード情報を取得する
ユーザのドメインパスワード情報を検索する。
ドメイン名を検索する
ユーザのパスワードを変更する。
ユーザのパスワードを変更する。
ユーザのパスワードを変更する。
表示情報索引を取得する。
ユーザ情報を設定する。
ユーザ情報2を設定する。
プリンタードライバー情報をサーバーに登録するために AddPrinterDriver() RPC
の呼び出しを行なう。ドライバーファイルは getdriverdir
コマンドが返却するディレクトリ中に予め存在している必要が
ある。arch
に設定できる値は
getdriverdir
コマンドで取得できる値と同じである。
config
パラメーターでは以下の形式のファイルを
指定する。
Long Driver 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 に失敗する。
version
パラメーターにより、プリンタードライバーの
バージョン番号が指定される。省略した場合、アーキテクチャに応じたバージョンが用いられる。
このオプションは Windows 2000 (バージョン 3)のプリンタードライバーの
アップロードに用いることができる。
遠隔のサーバー上にプリンターを追加する。このプリンターは自動的に共有される。
このコマンドを実行する前に、プリンタードライバーをサーバー上にインストール
して (adddriver
を参照のこと)、port
を有効なポート名にしておく (enumports
を参照) 必要があることに注意。
指定されたプリンタードライバーについて、すべてのアーキテクチャ用のものを削除する。これは、 ドライバーのファイル自体をサーバーから削除するわけではなく、 サーバーのドライバーのリストからエントリーだけを削除するものである。
指定されたプリンタードライバーについて、ドライバーファイルも含めて削除する。
削除対象のバージョンやアーキテクチャを指定することも可能である。
アーキテクチャが指定されなかった場合、すべてのドライバーファイルが削除される。
flags
は、数値の DPD_*値に関連づけられ、
すなわち、3つのリクエストの値である
(DPD_DELETE_UNUSED_FILES | DPD_DELETE_SPECIFIC_VERSION)。
サーバー上に格納されているプリンターの設定情報を一覧表示する。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() に相当する。
指定したプリンターに対して、OpenPrinterEx() と ClosePrinter() RPC を実行する。
プリンタハンドルを開く。
SetPrinter() コマンドを実行して、既にインストール されているプリンター用のプリンタードライバーを更新する。 更新されるプリンタードライバーは、プリントサーバー上に適切にインストール されている必要がある。
インストールされているプリンターやドライバーの一覧を取得する方法に
ついては enumprinters
や enumdrivers
コマンドも参照のこと。
フォームを追加する。
フォームを設定する。
フォームを取得する。
フォームを削除する。
フォームを 一覧表示する。
プリンターのコメントを 設定する。
REG_SZ プリンターデータを設定する。
プリンター名を設定する。
Rffpcnex テストを実行する。
プリンタの比較テスト
プリントプロセッサの一覧表示
プリントプロセッサデータタイプの一覧表示
プリントモニタの一覧表示
プリンタ IC の作成
プリンタ IC の作成
コアプリンタドライバの取得
マシン接続毎に一覧表示
マシン接続毎に追加
マシン接続毎に削除
Logon Control 2 に変更する。
信頼する DC 名を取得する。
信頼する PDC 名を取得する。
信頼する DC 名を取得する。
信頼する DC 名を取得する。
信頼する DC 名を取得する。
sitename を取得する。
フォレスト信頼情報を取得する。
Logon Control に変更する。
ドメインユーザーでログオンする。
信頼するアカウントパスワードを変更する。
信頼する rid を取得する。
信頼するドメインの一覧情報を表示する。
AD フォレスト内のすべての信頼するドメインを一覧表示する。
DNS レコードを登録解除する。
信頼するドメインを一覧表示する。
信頼するドメインを一覧表示する。
DC からサイトカバレッジを取得する。
ケーパビリティを返す。
LogonGetDomainInfo を返す。
共有がシャドーコピー要求をサポートするかを検査する。
サーバーからサポートしているFSRVPバージョンを得る。
新しい共有としてシャドーコピーの作成と公開を要求する
シャドーコピー共有の削除を要求する
関連づけられている共有のシャドーコピーを検査する
シャドーコピー共有マッピング情報を得る
読み書き可能なシャドーコピーをリカバリ完了にマークし、 それ以降のシャドーコピー要求を許可する
クラスタをオープンする。
クラスタ名をを取得する。
クラスタのバージョンを取得する。
quorum リソースを取得する。resource
enum クエリを作成する。
enumex クエリを作成する。
クラスタリソースを開く。
クラスタリソースをオンラインに設定する。
クラスタリソースをオフラインに設定する。
クラスタリソースの状態を取得する。
クラスタ version2 を取得する。
クラスタノードを一時停止する。
クラスタノードを再開する。
名前をクラックする。
ドメインコントローラ情報を取得する。
NC の変更を取得する。
アカウント SPN を書き込む。
イベントログを読み取る。
レコード数を取得する。
一番古いレコードを取得する。
イベントをレポートする。
イベントとソースをレポートする。
イベントソースを登録する。
イベントログファイルをバックアップする。
イベントログ情報を取得する。
プリンタハンドルを開く。
インストールされたコアプリンタドライバを問い合わせる。
NTSVCS バージョンを問い合わせる。
NTSVCS デバイスインスタンスを問い合わせる。
NTSVCS HW prof フラグを問い合わせる。
NTSVCS HW prof 情報を問い合わせる。
NTSVCS デバイスレジストリプロパティを問い合わせる。
NTSVCS デバイスリストサイズを問い合わせる。
NTSVCS デバイスリストを問い合わせる。
witness クライアント接続が可能なインタフェースを一覧表示する。
NetName と IP アドレス のリソース状態変更通知を登録する。
サーバから通知を登録解除する。
サーバから、登録されたリソース変更通知を要求する。
NetName 、ShareName と複数の IP アドレスのリソース状態変更通知を登録する。
WKSSVC ワークステーション情報を問い合わせる。
WKSSVC Join 情報を問い合わせる。
WKSSVC メッセージを送信する。
WKSSVC コンピュータ名を一覧表示する。
WKSSVC ユーザを一覧表示する。
コマンドのヘルプを表示する。
コマンドのヘルプを表示する。
デバッグレベルを設定する。
デバッグレベルを設定する。
パイプ上での有効なコマンドを一覧表示する。
プログラムを終了する。
プログラムを終了する。
RPC パイプ接続を強制的に署名する。
RPC パイプ接続を強制的に暗号化(seal)する。
RPC パイプ接続を強制的にパケット認証レベルにする。
RPC パイプ接続を強制的に 'schannel' で暗号化(seal) する。このドメインコントローラに対して有効なマシンアカウントと仮定する。
RPC パイプ接続を 'schannel' で強制的に署名する(が、暗号化しない)。このドメインコントローラに対して有効なマシンアカウントと仮定する。
RPC 操作のタイムアウトを設定する(ミリ秒単位)。
RPC 操作用の ncacn トランスポートを選択する。
RPC パイプ接続が特別なプロパティを持たないように強制する。
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 によって行われた。