ネットワークコマンドで管理が変わる!

第2回 ネットワーク共有を管理する

連載第2回目は前回に続いてnetサービスコマンドの活用法を解説する。

今回はネットワーク共有の管理に便利なコマンドを紹介する。これらのコマンドを活用すれば、ファイルサーバーの管理が簡単になるはずだ。


今月のコマンド

 net file

 net session

 net share


---------------------------------------------------------------------------

開かれている共有ファイルを表示したりロックを解除したい!

net file

---------------------------------------------------------------------------

>ロックされたままの共有ファイルを強制的に解除

 サーバー上の共有ファイルでどのファイルが開かれているかを知りたい場合、またロックされているファイルがあれば、ファイルごとにファイルロックの数を知りたい場合、さらには個々の共有ファイルを閉じ、ファイルロックを解除したい場合に、net fileコマンドを使うことができる。

 ロックの解除が有効なのは、例えば次のような場合だ。共有ファイルを開いていたアプリケーションが何らかの理由で異常終了したときに、ファイルがロックされたままになることがある。ファイルがロックされていると、そのファイルを開こうとしても開けなくなる。あるいは、アプリケーションの異常終了ではなくても、ファイルを開いていた人がそのファイルを閉じずに席を離れたり、外出してしまったりすると、他の人はそのファイルを開けなくなる。このような場合に強制的にファイルのロックを解除することで、そのファイルを別の人が開くことができる。

なお、「net file」コマンドはファイルが共有されているサーバー (ここでいうサーバーとはWindows Server 2003などのサーバーOSとは限らず、Windows XPなどのOSであってもサーバーサービスを実行しているマシンを意味する) 上から入力する必要がある。クライアントマシンから実行するためには、telnetでサーバーにログオンしてから実行すればよい。

 開かれているファイルの確認をGUI画面で行うとしたら、「コントロールパネル」→「管理ツール」→「コンピュータの管理」→「システムツール」→「共有フォルダ」、または、Windows Server 2003のファイルサーバーであれば「ファイルサーバーの管理」の「開いているファイル」画面で確認できる。その画面で「開いているファイルを閉じる」と操作することでファイルを強制的に閉じる (ロックを解除する) ことができるが、かなり階層が深い。

 このように、GUIで行うと煩雑な操作もコマンドなら簡単にできる。

 パラメータなしで「net file」コマンドを実行すると現在開かれている共有ファイルと、それを開いているユーザー名、ロック数が確認できる。


画面1● net fileコマンドで現在開かれている共有ファイルの一覧が表示される


 IDは一意に付けられるファイルのID番号だ。このIDを指定して「net file ID」コマンドを実行するとファイルのアクセス許可 (オープンモード) も見ることができる。


画面2● net file 310で、ID=310の共有ファイルの詳細が表示される


 ロックを解除するには、「net file ID /close」と入力する。


画面3● net file 310 /closeで、ID=310の共有ファイルのロックを解除し、net fileコマンドでその結果を確認


---------------------------------------------------------------------------

ネットワーク接続のセッションを表示したり切断したい!

net session

---------------------------------------------------------------------------

>怪しいネットワーク接続を強制的に切断

 「net file」が共有ファイルを管理するコマンドであるのに対し、「net session」はサーバーとクライアントコンピュータとの接続セッションを管理するコマンドで、使い方は「net file」に似ている。

なお、「net session」コマンドは共有セッションを持つサーバー (ここでいうサーバーとはWindows Server 2003などのサーバーOSとは限らず、Windows XPなどのOSであってもサーバーサービスを実行しているマシンを意味する) 上から入力する必要がある。クライアントマシンから実行するためには、telnetでサーバーにログオンしてから実行すればよい。

 「net session」コマンドが有効な場面は、例えば許可されていない接続が行われていないかを確認し、もし許可されていない接続があれば強制的に切断するという場合で、ハッキングされている恐れがあるときに使うとよい。

 共有セッションの確認をGUI画面で行うとしたら、「コントロールパネル」→「管理ツール」→「コンピュータの管理」→「システムツール」→「共有フォルダ」、または、Windows Server 2003のファイルサーバーであれば「ファイルサーバーの管理」の「セッション」画面で確認できる。その画面で「セッションを閉じる」と操作することでセッションを強制的に切断することができるが、かなり階層が深い。

 このように、GUIで行うと煩雑な操作もコマンドなら簡単にできる。

 パラメータなしで「net session」コマンドを実行すると、サーバー上に共有セッションを持っているすべてのコンピュータ名とユーザー名、クライアントOSの種類、開いているファイル数、アイドル時間を表示する。


画面4● net sessionコマンドで現在接続しているセッションの一覧が表示される


画面で見られるように、コンピュータ名には「\\192.168.3.5」のようにIPアドレスで表示されるものと、「\\WXP-64」のようにNetBIOS名で表示されるものがある。これは接続プロトコルの違いだ。IPアドレスで表示されるものはCIFS (TCPポート445) で、NetBIOS名で表示されるものはNetBIOSセッションサービス (TCPポート139) で接続していることを示している (ここでは解説しないが「netstat」コマンドを使うとその詳細を調べることができる)

 さらに、ここで表示されているコンピュータ名をパラメータに「net session \\コンピュータ名」コマンドを実行すると、ゲストログオンかどうか、セッション時間、共有名も見ることができる。


画面5● net session \\WXP-64で、\\WXP-64コンピュータとのセッションの詳細が表示される


 セッションを切断するには、「net session \\コンピュータ名 /delete」と入力する。セッション中に開かれているファイルがある場合は、ファイルを閉じるかどうかを聞いてくるので、「y」と答えるとファイルが閉じられてセッションが切断される。


画面6net session \\WXP-64 /deleteで、\\WXP-64コンピュータとのセッションを切断し、net sessionコマンドでその結果を確認


---------------------------------------------------------------------------

ネットワーク上の共有リソースを表示、追加、解除したい!

net share

---------------------------------------------------------------------------

>共有リソースを表示

 「net share」コマンドは共有リソースを管理するコマンドだ。目的によって構文に違いがあるので注意して欲しい。

なお、「net session」コマンドは共有リソースを持つサーバー (ここでいうサーバーとはWindows Server 2003などのサーバーOSとは限らず、Windows XPなどのOSであってもサーバーサービスを実行しているマシンを意味する) 上から入力する必要がある。クライアントマシンから実行するためには、telnetでサーバーにログオンしてから実行すればよい。

 共有リソースの確認をGUI画面で行うとしたら、「コントロールパネル」→「管理ツール」→「コンピュータの管理」→「システムツール」→「共有フォルダ」、または、Windows Server 2003のファイルサーバーであれば「ファイルサーバーの管理」の「共有」画面で確認できる。その画面で「共有を停止」と操作することで共有を解除することができるが、かなり階層が深い。

 このように、GUIで行うと煩雑な操作もコマンドなら簡単にできる。

パラメータを指定せずに「net share」を使うと、ローカルコンピュータ上で共有されているすべてのリソースに関する情報が表示される。画面で分かるように、「$という文字で終了する管理共有もすべて表示されている。「$という文字で終了する共有リソースは、ネットワークから参照する場合には表示されない。


画面7● net shareで、すべての共有リソース情報が表示される


 特定の共有リソースに関する情報を表示するには、共有リソース名を指定して「net share 共有リソース名」と入力する。


画面8● net share publicで、共有リソースpublicの情報が表示される


>共有リソースの追加、変更

新たに共有リソースを追加する場合は、「net share 共有リソース名=ドライブ:パス」と入力する。例えば、H:\Public Dataフォルダを共有名DataShareを使って共有するには「net share DataShare=”H:Public Data”」と入力する。パスにスペースが含まれる場合は””で囲む。


画面9● net share DataShare=H:Public Data”で、共有リソースを追加し、net shareで確認


共有リソースを追加する際には、同時アクセスできるユーザーの最大数、注釈、およびオフラインキャッシュの設定も同時にできる。例えば、上記のH:\Public Dataフォルダを共有名DataShareを使って共有し、最大アクセス数を「5」、注釈を「全ユーザーの共有フォルダ」とし、「ドキュメントの自動キャッシュ」を有効にするには「net share DataShare=”H:Public Data” /users:5 /remark:”全ユーザーの共有フォルダ” /cache:documents」と入力する (パラメータの詳細はレファレンスを参照)


画面10net share DataShare=”H:Public Data” /users:5 /remark:”全ユーザーの共有フォルダ” /cache:documentsで、共有リソースを追加し、net shareで確認


 すでに作成されている共有リソースの最大ユーザー数、注釈、オフラインキャッシュの設定を変更する場合は、ドライブ:パスを省略した構文を用いる。例えば、共有リソースDataShareの最大ユーザー数を無制限、注釈を「全社員の共有フォルダ」、オフラインキャッシュを「プログラムおよびドキュメントの自動キャッシュ」に変更するには「net share DataShare /unlimited /remark:”全社員の共有フォルダ” /cache:programs」と入力する。


画面11net share DataShare /unlimited /remark:”全社員の共有フォルダ” /cache:programで、共有リソースを変更し、net shareで確認


>オフラインキャッシュの設定について

オフラインキャッシュを使うと、ネットワークに接続していなくても、オフラインファイルを使って、共有リソースで作業ができる。「/cache」パラメータにより、ユーザーが共有リソース上のファイルにアクセスしたときに、このファイルをクライアント上でローカルにキャッシュするかどうか、キャッシュする場合はその方法を指定できる (詳細はレファレンスを参照)

新しい共有リソースを作成するときは、デフォルトでオフラインキャッシュが有効になる。しかし、これはサーバーのセキュリティを十分に確保していたとしても、セキュリティで保護された共有リソースを、セキュリティで保護されていない可能性のあるコンピュータ上にオフラインで格納できるということを意味するので、使い方には十分に注意する必要がある。

クライアントコンピュータのセキュリティに不安がある場合は、クライアントが共有ファイルをオフラインで格納できないようにすることが望ましい。


>必要のない管理共有を解除

 前項の例で作成したDataShareフォルダの共有を解除するには、「net share DataShare /delete」と入力する。


画面12net share DataShare /deleteで、共有リソースを解除し、net shareで確認


 最初に見たようにデフォルトでは複数の管理共有が作成されている。もし管理者権限を持つアカウントのパスワードが盗まれたりすると、悪意あるユーザーが管理共有を利用してコンピュータに容易に進入できてしまう。したがってセキュリティの観点からは必要のない管理共有は削除しておくことが望まれる。ただし、SMS (Systems Management Server) MOM (Microsoft Operations Manager) を利用している場合は管理共有が必須となる。またバックアップソフトなどの一部のアプリケーションで、これらの管理共有を使うものがあるので、管理共有を削除する場合は、問題が起きないかをテストしておこう。

 「net share 共有リソース /delete」での共有解除は一時的なもので、マシンを再起動するとまた元に戻ってしまう。起動するたびに管理共有を解除するためにはログオンスクリプトなどに管理共有を解除するコマンドを記述しておけばよいが、めったに再起動しないサーバーならともかく、普通は永久的に削除したほうがよい。そのためには面倒だがレジストリを編集する必要がある。

 具体的には、レジストリエディタで「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\lanmanserver\parameters」に移動し、サーバーOS (Windows NT/2000 ServerWindows Server 2003) の場合は「AutoShareServer」というDWORD値を作成し、値を「0」にする。また、クライアントOS (Windows NT/2000/XP Professional) では「AutoShareWks」というDWORD値を作成し、値を「0」にする。

 これで再起動しても管理共有が復活することはない。



今月のコマンドレファレンス

net file

サーバーで開かれている共有ファイルの情報を表示する。またファイルロックを解除する

[構文]

net file [ID [/close]]

net file」の代わりに「net files」と入力することもできる。

このコマンドは、ファイルが共有されているサーバー上から入力しなければならない。

[パラメータ]

ID

 詳細を表示、またはロックを解除する共有ファイルのID番号を指定する。

/close

開かれているファイルを閉じ、レコードのロックを解除する。

<パラメータなし>

サーバー上で開かれているファイルの一覧が表示される。

-----------------------------------------------------------------------------------------------------------------------------------------

net session

サーバー上の共有セッションの状態を表示する。またセッションを切断する

[構文]

net session [\\コンピュータ名] [/delete]

net session」の代わりに「net sessions」または「net sess」と入力することもできる。

このコマンドは、共有セッションのあるサーバー上から入力しなければならない。

[パラメータ]

\\コンピュータ名

セッションを一覧表示または切断するコンピュータ名を指定する。ユーザーに関する情報には、そのユーザーが接続している共有リソースの一覧が含まれる。

/delete

サーバーとコンピュータ名との間のセッションを切断する。そのセッションで開かれているファイルがある場合、そのファイルを閉じるかどうかを聞いてくるので、「y」と答えるとそのファイルが閉じられセッションが切断される。「n」と答えるとファイルは閉じられずセッションも切断されない。

コンピュータ名を省略すると、サーバーに接続しているすべてのセッションが切断される。

: net session /deleteを使うとデータが失われる可能性がある。セッションを切断する前に、ユーザーに警告すること。

<パラメータなし>

 サーバーに接続しているすべてのセッションに関する情報を表示する。

-----------------------------------------------------------------------------------------------------------------------------------------

net share

共有リソースの追加、変更、解除を行う

[構文1]

net share [共有リソース名]

[構文2]

net share [共有リソース名=ドライブ:パス [{/users:数字 | /unlimited}] [/remark:"コメント"] [/cache:{manual | documents | programs | none}]]

[構文3]

net share [共有リソース名[{/users: 数字 | /unlimited}] [/remark:"コメント"] [/cache:{manual | documents | programs | none}]]

[構文4]

net share [{共有リソース名 | ドライブ:パス} /delete]

[パラメータ]

共有リソース名

共有リソースのネットワーク名を指定する。

ドライブ:パス

共有するドライブ名とディレクトリの絶対パスを指定する。

/users:数字

共有リソースに同時にアクセスできるユーザーの最大数を指定する。

/unlimited

共有リソースに同時にアクセスできるユーザー数を無制限にする。

/remark:"コメント"

リソースに関する説明のコメントを追加する。コメントは二重引用符で囲む。

/cache:{manual | documents | programs | none}

オフラインキャッシュを次の中から指定する。

manual : ユーザーが指定したファイルとプログラムのみオフラインで利用可能にする  (デフォルト)

documents : ドキュメントファイルは、すべて自動的にオフラインで利用可能にする。documentsの代わりにdocumentまたはautomaticまたはautoと指定することもできる。

programs : ドキュメントとプログラムは、すべて自動的にオフラインで利用可能にする。programsの代わりにprogramと指定することもできる。

none : オフラインキャッシュを無効にする。noneの代わりにnoと指定することもできる。

: manualdocuments (documentautomaticauto)programs (program) Windows XPおよびWindows Server 2003でのみ指定できる。Windows 2000の場合、ヘルプにはmanualautomaticnoの指定ができるように書いてあるが、実際にmanualautomaticを指定するとエラーとなる。Windows 2000で指定できるのはnone (no) のみだ。

/delete

共有リソースの共有を解除する。

<パラメータなし>

共有されているすべてのリソースに関する情報を表示する。