smbclient servicename [password] [-s smb.conf] [-O socket options][-R name resolve order] [-M NetBIOS name] [-i scope] [-N] [-n NetBIOS name] [-d debuglevel] [-P] [-p port] [-l log basename] [-h] [-I dest IP] [-E] [-U username] [-L NetBIOS name] [-t terminal code] [-m max protocol] [-b buffersize] [-W workgroup] [-T<c|x>IXFqgbNan] [-D directory] [-c command string]
このプログラムは Samba システムの一部である。
smbclient は SMB/CIFS サーバと'会話'をする事ができるクライアントである。 ftp プログラム ( ftp(1)を参照)と同様のインタフェースを提供し、 サーバからローカルマシンにファイルをダウンロードしたり、 ローカルマシンからサーバへファイルをアップロードしたり、 サーバからディレクトリの情報を得る等の動作を行なう。
//server/service
のような形式をとる。
server は利用したいサービスを提供している
SMB/CIFS サーバの NetBIOS 名、
service は、提供されているサービスの名前である。
したがって、SMB/CIFS サーバ smbserver 上のサービス
printer に接続するには、次のようなサービス名を使用する。
//smbserver/printer
必要とされるサーバ名は、サーバの IP(DNS)ホスト名であるとは限らないことに注意! 必要とされるのは、NetBIOS サーバ名である。 その名前は、サーバの動作しているマシンの IP ホスト名と同じかも知れないが、 異なっているかも知れない。
サーバ名を解決する方法は、コマンドラインの -R オプションか, smb.conf ファイル中の name resolve order パラメータによって決定される。 このパラメータにより、管理者が、 名前解決の順番や方式を変更する事が可能になっている。
既定のパスワードはない。 (このパラメータを用いるか、 -U オプション(以下を参照)で パスワードが指定されなかった事により) パスワードがコマンドラインから指定されず、 -N オプションも指定されていない場合, サーバがパスワードを要求しているかどうかに関わらず、 クライアントはパスワード入力を求める。 (パスワードが必要でない場合は、単に ENTER キーを入力する事で、 空のパスワードを渡せばよい。)
注意: ある種のサーバ(OS/2、Windows for Workgroup など)は、 大文字のパスワードを要求する。 小文字や、大文字小文字の混じったパスワードは拒否されるであろう。
パスワードをスクリプト中に記述する時は、充分注意する事。
オプションは、"lmhosts"、"host"、"wins"、"bcast" である。 これらは、以下のように名前の解決を行なう。
このパラメータが設定されていなかった場合、 smb.conf ファイル中で設定された (name resolve order) パラメータが使われる。
規定値は、lmhosts、hosts、wins、bcast の順であり、 このパラメータが指定されず、 smb.conf ファイル中でも、 "name resolve order" パラメータが記述されていなかった場合、 この順に名前解決の試行が行なわれる。
受信したコンピュータで WinPopup が起動していれば、 ユーザはおそらくビープ音とともに、メッセージを受信する事になる。 WinPopup が起動していないとメッセージは失われ、 なんのエラーメッセージも表示されない。
1600 byte を越えるメッセージは、プロトコルの仕様による制限のため、 自動的に切り捨てられる。
便利な使用例として、 smbclient を通してメッセージ を cat する方法を紹介しよう。たとえば、
cat mymessage.txt | smbclient -M FRED
とすると、mymessage.txt ファイルの内容を メッセージとしてマシン FRED に送ることができる。
また -U や -I オプションも、 メッセージの FROM や TO に相当する設定を指定したい場合は、 便利なこともある。
Samba で WinPopup メッセージを受け取る方法は、 smb.conf (5) の message command パラメータを参照のこと。
注意: WfWg PC で常にメッセージを受信できるようにうしたいなら, startup グループに WinPopup をコピーすること。
コマンドラインにパスワードの指定がなかったり、 このパラメータが指定されていないと、 クライアントはパスワードを要求する。
このパラメータが指定されていないときの既定値は 0 である。
この値を大きくする程、 より詳細なクライアントの動作状況がログファイルに記録される。 レベル0 では、 致命的なエラーや非常に重大な警告のみが記録される。 レベル1 は、日常的に使用するには妥当なレベルであり、 実行された操作についての小量の情報が生成される。
1 より大きいレベルを指定した場合は、大量のログが生成されるので、 問題解決の時にのみ使用すべきである。 3 より大きいレベルは、開発者だけが利用するように設計されており、 莫大な量のデータを出力するが、 ほとんどは暗号のようなものである。 debuglevel を A を指定すると、全ての デバッグメッセージが出力される。 これは、開発者(およびコードが内部的にどのように実行されているかを 実際に知りたい人) 用の設定である。
このパラメータを指定すると、 smb.conf(5) に設定した log level パラメータより優先される事に注意。
既定のベース名は、コンパイル時に指定される。
ベース名は、実際のログファイル名を生成する際に用いられる。
例えばベース名が "log" の場合、デバッグファイル名は、
log.client
のようになる。
生成されたログファイルは、クライアントによって削除される事はない。
通常クライアントは前述した name resolve order パラメータ中で記述した NetBIOS 名の解決メカニズムを用いて検索する事により、 その SMB/CIFS サーバのアドレスを解決しようとする。 このパラメータを使うことで、 クライアントは、 強制的に指定された IP アドレスをサーバの IP アドレスとみなし、 接続しようとしているリソースの NetBIOS 名は無視される。
このパラメータの既定値はない。このパラメータが指定されなければ、 アドレスは、前述したようにしてクライアントが自動的に決定する。
規定では、クライアントはメッセージを標準出力 - 一般的にはユーザの tty - に出力する。
ユーザ名については、大文字小文字を厳格に識別するサーバや、 有効な NetBIOS 名である事を要求するサーバがある。
ユーザ名が指定されていないと、大文字の環境変数 USER
または LOGNAME
の値がこの順で既定値となる。
ユーザ名が指定されず、これらの環境変数が両方とも設定されていなければ、
ユーザ名として "GUEST" が使われる。
環境変数 USER
に '%' 文字が含まれていると、
それ以降の文字はパスワードとして扱われる。
これにより環境変数に USER=username%password
と設定する事で、
パスワードをコマンドラインで渡さなくても済む
(コマンドラインは ps コマンドで見られてしまう可能性がある)。
(訳注: 環境変数も同様に ps コマンドで見られてしまう可能性がある)
接続しようとしているサービスにパスワードが必要な場合、
-U を使い、
ユーザ名の後にパーセント文字 ("%") を付ける事により、
パスワードを与える事ができる。
例えば、ユーザ "fred"
、パスワード "secret"
でサービスに接続するには、コマンドラインで
-U fred%secret
と指定する。パーセント記号の前後にスペースが入らない事に注意して欲しい。
パスワードをユーザ名の中で指定すると、 -N (パスワードプロンプトの抑止) が自動的に設定される。
パラメータでパスワードを指定し、なおかつユーザ名の中でも指定すると、 ユーザ名の中で指定したパスワードが優先される。 パーセント記号の前後に何も指定しないと、 それぞれ空のユーザ名やパスワードが使われる。
パスワードは、 環境変数 PASSWD
にユーザのパスワードを記述することでも指定できる。
これは、セキュリティ上非常に問題になるシステムもあるが、
smbclient コマンドをスクリプトで使用する際に、
プロセスリスト中のコマンドラインにパスワードが表示されないという利点もある。
(訳注: 実際は環境変数も、プロセスリストで表示され得る)
注意: 特定のサーバ (OS/2 と Windows for Workgroups が含まれる)では、 大文字だけからなるパスワードが要求される。 小文字や、大文字小文字の混じったパスワードは拒否される。
パスワードをスクリプト中や、PASSWD
環境変数に設定する時は、
注意深く行うこと。
多くのシステムでは、実行中のプロセスのコマンドラインは、ps
コマンドで表示されてしまう。
安全の為には、常に smbclient がパスワードプロンプトを表示するようにし、
パスワードを直接入力するようにすること。
"smbclient -L host"
のようにして使うと、
サービスの一覧が表示される。
NetBIOS 名が TCP/IP の DNS のホスト名に一致しない場合や、
別のネットワーク上のホストの情報を表示しようとしている場合は,
-I オプションが役にたつ。
terminal code には sjis
、euc
、jis7
、jis8
,
junet
、hex
、cap
がある。
これは全てではなく、
完全なリストは、Samba のソースコードをチェックして欲しい。
"-"
のいずれかを指定しなければならない。
標準出力を指定した場合、ログレベルを最低の -d0
にして、
tar ファイルの出力が破壊されないようにすること。
このフラグは x フラグと互いに排他的な関係にある。
"-"
を指定しなければならない。
このフラグは c フラグと互いに排他的な関係にある。
リストアされたファイルは、
作成日時(mtime)が tar ファイルに保存された時点の日付になる。
また、現在ディレクトリについては、作成日時が正しくリストアされない。
Tar における長いファイル名
smbclient の tar オプションは、 現在バックアップとリストアの両方で長いファイル名をサポートしている。 しかし、ファイルのフルパス名は 1024 バイト以下である必要がある。 また tar アーカイブが作成された時、 smbclient の tar オプションは そのアーカイブ内の全てのファイルを絶対ファイル名ではなく、 相対ファイル名で記録する。
Tar ファイル名
全てのファイルには、DOS のパス名(\
をパス名の区切りとする)を付与するか、
UNIX のパス名(/
をパス名の区切りとする)を付与することができる。
例
smbclient //mypc/myshare "" -N -Tx backup.tar
smbclient //mypc/myshare "" -N -TXx backup.tar users/docs
smbclient //mypc/myshare "" -N -Tc backup.tar users/docs
smbclient //mypc/myshare "" -N -tc backup.tar users\edocs
(訳注: 上記は以下が正しいと思われる
smbclient //mypc/myshare "" -N -Tc backup.tar users\\docs
)
smbclient //mypc/myshare "" -N -Tc backup.tar *
このオプションが特に役立つのは、スクリプトで利用したり、
標準入力を例えば -c 'print -'
のようにしてサーバに出力したりする場合である。
smb:\>
バックスラッシュ("\")は サーバ上の現在の作業ディレクトリを示しており、 作業ディレクトリを変えると、この表示も変わる。
このプロンプトは、クライアントの準備ができ、 ユーザのコマンド実行を待機している事を示している。 各コマンドは、一つの単語であるが、 コマンドによっては、コマンド固有のパラメータを指定する事もできる。 コマンドとパラメータは、特に注釈がない限り、スペースで区切られる。 全てのコマンドは大文字小文字を識別しない。 コマンドのパラメータは、 コマンドによって大文字と小文字が区別されたりされなかったりする。
スペースが含まれているファイル名は、名前をダブルクオート文字で、 例えば、"a long file name" のように括る事で指定できる。
大括弧("[" と "]"))で括られて示されているパラメータ (例えば "[parameter]")は、オプションである。指定されなかった場合、 コマンドは適切な既定値を用いる。 不等号記号("<" と ">")で括られて示されているパラメータ (例えば "<parameter>")は、必須である。
サーバ上でのいコマンドの実行は、 実際にサーバに対して要求を発行する事で実行される事に注意してほしい。 従って、その動作はサーバ間で異なる場合があり、 サーバの実装方法に依存している。
利用できるコマンドを以下にアルファベット順で紹介する。
ディレクトリ名を指定しないと、 サーバ上の現在の作業ディレクトリが表示される。
ディレクトリ名を指定しないと、 ローカルマシン上の現在の作業ディレクトリが表示される。
小文字化を ON にすると、 get and mget コマンドを使ったときに、 ローカルのファイル名が小文字に変換される。 これは、サーバから (いわゆる)MS-DOS 形式の名前を持つファイルをコピーするときに役立つ。 UNIX システムでは、 ファイル名を小文字にするのが一般的であるためである。
再帰モードが ON のとき、 mget と mput コマンドに指定するマスクはファイルに対するフィルタとしてではなく、 ディレクトリに対するフィルタとして働く。
.B mask コマンドで指定するマスクは、 それらのディレクトリ配下のファイルをフィルタするために必要となる。 たとえば、 mget コマンドが "source*" のときに mask が指定されており、 mask コマンドで指定されたマスクが "*.c" で、 再帰モードが ON であったとする。すると mget コマンドは、現在の作業ディレクトリ中の "source*" に一致するすべてのディレクトリ配下で、 "*.c" に一致するすべてのファイルを取得する。
既定では mask の値は空 ('*' と同等) になっており、 mask コマンドを使って変更されるまで変わらない。 mask の値は、最後に指定された値を保ち続ける。 予想外の結果を招かないように、 mget か mput コマンドを使った後には、mask の値を '*' に戻しておくことが賢明である。
再帰モードになっているかどうかによって、 mask の解釈が異なることに注意。詳細は recurse と mask コマンドを参照のこと。 .B smbclient によるファイルの転送は、 すべて binary モードで行われることに注意してほしい。 lowercase も参照のこと。
再帰モードになっているかどうかによって、 mask の解釈が異なることに注意。詳細は、 recurse と mask コマンドを参照のこと。 .B smbclient によるファイルの転送は、 すべて binary モードで行われることに注意してほしい。
printmode コマンドも参照のこと。
この設定が ON であると、これらのコマンドの実行中、 各ファイルごとに転送するかどうかをユーザに確認する。 設定が OFF であると、指定されたすべてのファイルが確認なしに転送される。
この設定が ON であると、それらのコマンドは、 対象となるディレクトリ (すなわち、コピー元となるディレクトリ)内のすべてのディレクトリを処理し、 コマンドに指定した mask に一致するディレクトリを再帰的に辿る。ファイルは、 mask コマンドを使って指定したマスクに一致するものだけが、 処理の対象となる。 mask コマンドも参照のこと。
この設定が OFF である場合、 コピー元となるマシンの現在作業ディレクトリから、 mget または mput コマンドに指定されたマスクに一致するファイルだけがコピーされる。 mask コマンドを使って指定されたマスクは無視される。
setmode myfile +r
とすると、myfile が読み取り専用になる。
サーバによっては、与えられたユーザ名、パスワード、 共有名(サービス名とも言う)、マシン名などの大文字小文字を厳格に識別する。 サーバへの接続が失敗したときは、 すべてのパラメータを大文字にして試してみよう。
ある種のサーバに接続するときには、 -n オプションを使わなければならないような場合がよくある。 たとえば OS/2 の LanManager では、 有効な NetBIOS 名が使われていなければならない。 よって、サーバが知っている有効な名前を与える必要がある。
サーバが LANMAN2 プロトコルをサポートしている場合、 smbclient は長いファイル名をサポートする。
変数 PASSWD の値は、 クライアントが使用するユーザのパスワードとなる。 この情報は、プロトコルのレベルが充分高く、 セッションレベルのパスワードをサポートしている場合にだけ利用される。
クライアントソフトウェアは /usr/local/samba/bin か /usr/samba/bin にインストールし、 ディレクトリは全ユーザから読み出し可能で root のみ書き込み可能にすることが推奨される。 クライアントプログラム自身はすべてのユーザから実行可能にするべきである。 クライアントを setuid や setgid しないように!
クライアントのログファイルは、 そのユーザだけが読み書き可能なディレクトリに置くこと。
クライアントをテストするには、 動作している SMB/CIFS サーバの名前を知らなくてはならない。 smbd (8) を一般ユーザでも起動することができる。 その場合、ユーザが利用できるポート (たいていは 1024 より大きいポート番号ならどこでもよい) でデーモンとしてサーバを起動することで、適切なテスト環境となるだろう。
クライアントによって出されたほとんどの診断メッセージは、 指定されたログファイルに記録される。 ログファイルの名前はコンパイル時に指定されるが、 コマンドラインで変更することもできる。
利用できる診断メッセージの量と内容は、 クライアントで設定されたデバッグレベルに依存する。 問題を抱えているなら、デバッグレベルを 3 に設定してログファイルに目を通してほしい。
このマニュアルは、Samba システム の バージョン 2.0 に適用される。
smb.conf (5), smbclient (1), smbpasswd (8)、samba (7).
オリジナルの Samba ソフトウェアと関連するユーティリティは、 Andrew Tridgell samba@samba.org によって作成された。 現在 Samba は、Samba Team によって、Linux カーネルの開発と同様に、 オープンソース・プロジェクトとして開発されている。
オリジナルの Samba マニュアルは、Karl Auer によって執筆された。 マニュアルのソースは Jeremy Allison samba@samba.org によって YODL 形式に変換され、Samba 2.0 リリース用に更新された。 (YODL はオープンソース・ソフトウェアの優れた作品である - ftp://ftp.icce.rug.nl/pub/unix/ から入手可能)
貢献者の一覧、バグ報告やコメントなどの提出方法の詳細については、 samba (7) を参照のこと。
このマニュアルの日本語訳(2000/01/20 更新)の作者: