検索
連載

【 Revoke-SmbShareAccess 】コマンドレット――共有フォルダのアクセス権を削除するWindows PowerShell基本Tips(70)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Revoke-SmbShareAccess」コマンドレットを解説します。

Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、共有フォルダに設定されたアクセス権を削除する「Revoke-SmbShareAccess」コマンドレットです。

Revoke-SmbShareAccessコマンドレットとは?

 Windows環境におけるファイル共有手段として最も手軽な「共有フォルダ」ですが、最も避けなければならない事態は「使ってはいけない人が使える状態になる」ことでしょう。

 意図しないユーザーがアクセスできる、またはアクセス権を取り上げたはずの人がアクセスできる状態は、悪意あるアクセスによって情報が漏えいする、もしくは統制が効かないユーザーに情報が渡ることで情報漏えいリスクを極大化させる危険があることは言うまでもありません。

 本連載第67回で紹介した「Grant-SmbShareAccess」は、「正しいユーザーに対してアクセス権を与える」コマンドレットでしたが、今回紹介するRevoke-SmbShareAccessは、「正しくないユーザーからアクセス権を取り上げる」、すなわち設定済みの共有フォルダからユーザーやグループのアクセス権削除し、アクセス不能にさせることのできるコマンドレットです。

 なお、 現在設定されているアクセス権に関しては、本連載第64回の記事中に紹介した「Get-SmbShareAccess」コマンドレットで取得可能です。

Revoke-SmbShareAccessコマンドレットの書式

Revoke-SmbShareAccess [オプション]


Revoke-SmbShareAccessコマンドレットの主なオプション

オプション 意味
-Name 共有アクセス権を削除したい共有フォルダの共有名を指定する。必須
-AccountName 共有アクセス権を削除したいユーザー名/グループ名を指定する。必須
-Force 実行時に確認なしで処理したい場合に指定する。省略可能


共有アクセス権を削除する

 共有アクセス権を削除する場合は、対象となる共有フォルダの「共有名」と削除したい「ユーザー名」または「グループ名」を指定してRevoke-SmbShareAccessコマンドレットを実行します(画面1)。なお、Revoke-SmbShareAccessコマンドレットは、管理者権限で実行する必要があります。

コマンドレット実行例

Revoke-SmbShareAccess -Name "IT_Folder" -AccountName "simpson"

画面1
画面1 共有名「IT_Folder」から、ユーザー「simpson」の共有アクセス権を削除した

 最初に「Get-SmbShareAccess」コマンドレットを実行してアクセス権を確認していますが、権限が付与されていたユーザー「simpson」がRevoke-SmbShareAccessコマンドレットが実行されたことで権限が削除されたことが確認できます。

 なお、Revoke-SmbShareAccessコマンドレットは実行時に確認プロンプトが表示されるので、[y]キーで応答しています。権限削除という処理のため確認は当然ですが、スクリプトによる自動化の際には無用なものとなります。本コマンドレットでも「-Force」オプションが用意されていますので、これを利用することで確認のプロンプトを出力せずにコマンドレットを即時実行できます(画面2

コマンドレット実行例

Revoke-SmbShareAccess -Name "IT_Folder" -AccountName "simpson" -Force

画面2
画面2 コマンドレット実行時に「-Force」オプションを指定して実行すると、確認プロンプトは表示されない

 「-AccountName」オプションに関しては本連載第67回でも解説した通り、ワークグループ構成のサーバではアカウント名だけの指定で問題ありませんが、ドメイン環境の場合は明示的な指定が必要になります。ドメインアカウントの場合は「ドメイン名¥アカウント名」、ローカルアカウントの場合は「サーバ名¥アカウント名」を指定します。



複数ユーザーの共有アクセス権を削除する

 複数ユーザーの共有アクセス権を削除したい場合は、「-AccountName」オプションにアカウントを複数指定することで一括で削除できます(画面3)。

コマンドレット実行例

Revoke-SmbShareAccess -Name "IT_Folder" -AccountName "stenson","simpson" -Force

画面3
画面3 「-AccountName」オプションを指定して、複数ユーザーの共有アクセス権を削除した


共有アクセス権を全て削除する

 共有アクセス権をメンテナンスする際、設定されている権限を確認して不要なものがあれば削除するといったやり方では、作業ミスによる削除漏れなどが懸念されます。その場合は全ての権限を一度削除して、改めて追加する、という手順の方が確実な場合があります。

 既に設定されている共有アクセス権を全て削除するには、「Get-SmbShareAccess」コマンドレットを併用します(画面4)。

コマンドレット実行例

Revoke-SmbShareAccess -Name "IT_Folder" -AccountName (Get-SmbShareAccess -Name "IT_Folder").AccountName -Force

画面4
画面4 Get-SmbShareAccessコマンドレットを併用して、共有アクセス権を全て削除した

 共有アクセス権を全て削除すると、誰もアクセスできない状態となるため、アクセス権限的には「Everyone」に対して「アクセス拒否(Deny)」が設定されたことになります。この状態をGUIの管理ツールで確認すると「どのグループやユーザーもアクセス許可を持っていない」という表示になります(画面5)。

画面5
画面5 共有アクセス権が全て削除された状態をGUIから確認した

 この状態から改めて本連載第67回で紹介したGrant-SmbShareAccessコマンドレットを使用して、共有アクセス権限を追加することで、削除漏れなどの作業ミスを防止できます(画面6)。

画面6
画面6 共有アクセス権が全て削除された状態からGrant-SmbShareAccessコマンドレットを使用して共有アクセス権限を追加した

筆者紹介

後藤 諭史(ごとう さとし)

Microsoft MVP for Cloud and Datacenter Management(2012-2023)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る