Windowsでアカウントを指定してIPC$共有リソースへ接続する:Tech TIPS
ファイル共有サービスへ接続する場合は、最初にIPC$という共有リソースへの接続が行われる。IPC$への接続時にユーザー名を指定することにより、任意のアカウント情報を使ってリソースへ接続することができる。
対象OS:Windows 2000 Professional/Windows XP Professional/Windows XP Home Edition/Windows 2000 Server/Windows Server 2003
解説
Windows OSには、ファイル共有やプリンタ共有など、さまざまなリソースを共有(公開)するサービスがある(サービス名は単に「Server」サービスとなっている)。このような公開されたリソースに対してクライアントが接続を行う場合、内部的には、最初に「IPC$」という共有名に対して接続要求が行われる。そしてユーザー名やパスワードなどのログオンのためのアカウント情報が渡され、それらが正しいものであれば(サーバ側で認証されれば)、希望する共有リソースにアクセスすることができる。共有リソースにはファイルやプリンタ共有だけでなく、例えば、名前付きパイプやリモート・レジストリ・サービスを始めとして、さまざまなシステム・サービスにアクセスすることができる。
逆にいえば、このIPC$への接続共有が拒否されると、以後、そのマシンに対してアクセスできないということでもある。Windows 9xやMeクライアントからWindows 2000などにアクセスする場合、このIPC$に対するアクセスが拒否されてしまい、リソースを共有できないというトラブルが発生することがある。これについては「TIPS―共有リソース・アクセス時にパスワード入力を求められる「IPC$」とは?」で述べているが、具体的には、Windows 9x/Meが相手に渡すユーザー・アカウント名とパスワードの情報が、サーバ側の期待しているものとは異なるため、このような事態が発生している。
Windows NT以降のOS(Windows 2000/Windows XP/Windows Server 2003)では、IPC$共有リソースに接続するときに、ユーザー・アカウントやパスワードを明示的に指定することができる。この機能を使えば、バッチ・ファイル中で特定のアカウント情報(資格情報)でサーバに接続し、サービスを受けるということが可能になる。例えば、普段仕事で使っているマシンには一般的なユーザー・アカウントでログオンしているが、特定の管理業務を行う場合に、管理者権限のある特別なアカウントで接続し、作業を行いたいとする。通常ならば、管理者権限のあるユーザーでログオンし直して、目的のサーバへ接続し、作業を行うことになるだろう。しかしいちいちローカル・マシンでログオンし直さなくても、IPC$に接続するときに、管理者権限のあるアカウントを明示的に指定すればよい。具体的には、net useコマンドでIPC$への接続を明示的に行えばよい。
操作方法
net useコマンドは、コマンド・プロンプト上で、ほかのマシンの共有リソースに接続するために使われるコマンドである。通常は、例えば次のようにして使うことが多い。
net use x: \\server1\share1
これは、\\server1のshare1という共有(公開)リソースを、ローカルのx:ドライブにマップするというコマンドである。この場合は、接続に利用されるアカウントは、ユーザーがシステムにログオンした場合のものが使われるが、明示的に指定することもできる。
net use x: \\server1\share1 /user:user01 password01
ここでは、ユーザー・アカウント「user01」、パスワード「password01」で接続している。これはserver1上のローカル・アカウントの場合であるが、ドメインのユーザー・アカウントを利用する場合は次のようにする。
net use x: \\server1\share1 /user:domain\user01 password01
これはすべてのWindowsで利用できる形式であるが、Active Directory環境ならば次のようにしてFQDN名を指定することもできる。
net use x: \\server1\share1 /user:user01@domainname.com password01
最後にパスワードが直接指定されているが、バッチ・ファイルなどに記述する場合は、セキュリティ上望ましくない。そこで、次のような表記方法もある。
net use x: \\server1\share1 /user:user01 *
パスワードとして「*」を指定すると、実行時にユーザーに問い合わせるようになる。
C:\>net use x: \\server1\share1 /user:user01 *
\\server1\share1 のパスワードを入力してください: ここでパスワードを入力する
コマンドは正常に終了しました。
なお、以上では、共有リソースを「x:」というドライブにマップしているが、これをなくすこともできる。
net use \\server1\share1 /user:user01 *
この場合は、ユーザーは例えば「dir \\server1\share1」というふうに、常にUNC形式でリソースを指定する必要がある。
実際に相手のサーバ側で、どのようなアカウント(資格情報)でログオンしているかを調べるには、「net session」というコマンドを(サーバ側で)実行すればよい(クライアント側の利用状況は「net use」で調査する)。どのクライアント・マシンから、どのユーザー名で接続しているかが分かる。
●接続の解除
共有リソースの使用が終了したら、「net use 〜 /delete」コマンドを発行して、接続を明示的に解除することができる。「〜」には「net use」で指定したリソース名を指定する(「x:」とか「\\server1\share1」など)。この操作により、サーバへの接続数が減算され、ほかのクライアントからの接続を新たに受け付けることができる。Workstation版をサーバ代わりに使っている場合など、このようにして積極的に接続を解除して、接続数制限に(なるべく)到達しないようにすることができる(通常はログオフ時に自動的に接続が解除される)。
net use \\server1\share1 /user:user01 *
…必要な操作…
net use \\server1\share1 /delete
●IPC$共有の使用
以上では、\\server1\share1という共有ファイル・リソースへ接続したが、同様にして「IPC$」リソースへ接続することもできる。
net use \\server1\ipc$ /user:user01 *
この例では、server1のIPC$リソースへ、user01というユーザー・アカウントで接続している(「net use \\server1 /user:user01 *」でも同じ)。また、パスワードはインタラクティブに入力する。
いったんこの接続が完了すれば、以後は、server1のそのほかの共有(公開)リソースや各種のサービスへの接続は、user01というアカウントで行われることになる。そのため、例えばレジストリを操作するような(管理者権限の必要な)コマンドを実行したければ、その操作の前に、このようなコマンドを発行してログオンしておくとよい。すると以後のレジストリ操作は指定されたユーザー権限で行われることになる。regコマンドを使ったレジストリの操作については「TIPS―コマンド・プロンプトでレジストリを操作する」を参照していただきたい。
net use \\server1\ipc$ /user:user01 *
reg query "\\server01\HKLM\Software\Microsoft" /s > querylog.txt
net use \\server1\ipc$ /delete
■この記事と関連性の高い別の記事
- 共有リソース・アクセス時にパスワード入力を求められる「IPC$」とは?(TIPS)
- コマンド・プロンプトでファイル共有を管理する(TIPS)
- Windowsのドメインにログオンしていないクライアントから共有資源にアクセスする(TIPS)
- Windowsのデフォルト共有を停止させる(管理共有を無効化する)(TIPS)
- 簡易ファイルの共有機能を利用する(TIPS)
Copyright© Digital Advantage Corp. All Rights Reserved.