【windows】icaclsコマンドでWindows フォルダのアクセス権を管理する

windows server

今回は、Windowsシステムにおけるフォルダアクセス権の制御方法について、icaclsコマンドの基本的な使い方から、ドメインアカウントのアクセス権制御まで、実践的なユースケースを交えて説明していきます。

icaclsコマンドとは?

icacls(Integrity Control Access Control Lists)は、Windowsオペレーティングシステムに組み込まれているコマンドラインツールです。このツールを使用することで、ファイルやフォルダのアクセス制御リスト(ACL)を表示、修正することができます。

icaclsコマンドの基本構文

icaclsコマンドの基本的な構文は以下の通りです:

icacls [ファイル名] [/操作] [引数] [/T] [/C] [/L] [/Q]

ここで、主な操作オプションには以下のようなものがあります:

– /grant:指定したユーザーまたはグループにアクセス権を付与します。
– /deny:指定したユーザーまたはグループからアクセス権を拒否します。
– /remove:指定したユーザーまたはグループのアクセス権を削除します。
– /setowner:所有者を変更します。

現在のアクセス権を確認する方法

フォルダやファイルの現在のアクセス権を確認することは、アクセス制御を行う上で非常に重要です。以下のコマンドを使用することで、簡単に確認することができます:

icacls C:\example\folder

このコマンドを実行すると、指定したフォルダ(この場合は C:\example\folder)の現在のアクセス権が表示されます。出力には、ユーザーやグループ、そしてそれぞれに付与されている権限が含まれます。

出力例:

C:\example\folder NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
                 BUILTIN\Administrators:(I)(OI)(CI)(F)
                 BUILTIN\Users:(I)(OI)(CI)(RX)
                 CREATOR OWNER:(I)(OI)(CI)(IO)(F)

この出力を解釈する際、以下の点に注意してください:

– (I):継承された権限
– (OI):オブジェクトの継承
– (CI):コンテナの継承
– (F):フルコントロール
– (RX):読み取りと実行の権限

複数のグループユーザーへの権限付与

実際の業務では、複数のグループやユーザーに対して異なるレベルのアクセス権を付与する必要がある場合が多々あります。以下に、そのような場合の具体的な例を示します:

icacls C:\Projects\TeamA /grant "Domain\TeamA":(OI)(CI)F /grant "Domain\TeamB":(OI)(CI)RX /grant "Domain\Managers":(OI)(CI)M

このコマンドでは:

1. TeamAグループにフルコントロール(F)を付与
2. TeamBグループに読み取りと実行(RX)の権限を付与
3. Managersグループに変更(M)の権限を付与

しています。(OI)(CI)オプションにより、これらの権限はフォルダ内のすべてのファイルとサブフォルダに継承されます。

注意すべきポイントと確認方法

icaclsコマンドを使用する際は、誤ってアクセス権を消してしまわないよう注意が必要です。以下のポイントを心がけましょう:

1. コマンド実行前に必ず現在の権限を確認する
2. 重要なシステムフォルダの権限を変更する際は特に慎重に
3. テスト環境で事前に動作確認を行う
4. バックアップを取っておく

変更後のアクセス権が正しく設定されているかを確認するには、以下の手順を踏みます:

1. 変更直後に再度icaclsコマンドを実行して表示される権限を確認
2. 実際にアクセスを試みて、意図した通りの動作になっているか確認
3. 異なるユーザーアカウントでログインして、アクセス制御が正しく機能しているか検証

icacls C:\Projects\TeamA

このコマンドを実行することで、変更後の権限設定を確認できます。出力結果を慎重に確認し、意図した通りの設定になっているか検証しましょう。

【補足】アクセス権変更前のバックアップについて

補足として、アクセス権を変更する前に取得するバックアップについて、具体的な手順を説明します:

アクセス権のバックアップ:
icaclsコマンドを使用して、現在のアクセス権設定をファイルに保存します。

icacls C:\Projects\TeamA /save acl_backup.txt /T

このコマンドは、C:\Projects\TeamAフォルダとそのサブフォルダのすべてのアクセス権をacl_backup.txtファイルに保存します。/Tオプションにより、サブフォルダも含めてバックアップされます。

フォルダ内容のバックアップ:
重要なデータの場合、フォルダの内容自体もバックアップしておくことをお勧めします。以下のrobocopyコマンドを使用して、フォルダとその内容を別の場所にコピーできます。

robocopy C:\Projects\TeamA C:\Backups\TeamA /E /COPY:DAT

このコマンドは、C:\Projects\TeamAフォルダの内容を C:\Backups\TeamA にコピーします。/Eオプションで空のサブディレクトリも含めてコピーし、/COPY:DATオプションでデータ、属性、タイムスタンプをコピーします。

バックアップの復元方法:
もし問題が発生した場合、以下の方法でバックアップから復元できます。
アクセス権の復元:

icacls C:\Projects\TeamA /restore acl_backup.txt

フォルダ内容の復元(必要な場合):

robocopy C:\Backups\TeamA C:\Projects\TeamA /E /COPY:DAT

これらのバックアップ方法を実践することで、アクセス権の変更作業をより安全に行うことができます。特に重要なシステムフォルダやデータに対して作業を行う際は、必ずバックアップを取ることを習慣づけましょう。

まとめ

icaclsコマンドは、Windowsシステムにおけるフォルダアクセス権の制御に非常に強力なツールです。基本的な使い方を理解し、実践的なユースケースを学ぶことで、より効果的なアクセス管理が可能になります。

本記事では、icaclsコマンドの基本構文、現在のアクセス権の確認方法、複数のグループユーザーへの権限付与の例、そして注意すべきポイントと確認方法について解説しました。これらの知識を活用することで、より安全で効率的なシステム管理が可能になるでしょう。

最後に、アクセス権の管理は重要なセキュリティ対策の一つです。定期的に権限設定を見直し、必要に応じて調整を行うことをお勧めします。また、icaclsコマンドの詳細なオプションや高度な使用方法については、Microsoft公式を参照して頂ければと思います。

 

【注意】

このブログは技術に関する知識や経験を共有することを目的としており、情報の正確性に努めていますが、その内容の正確性や完全性を保証するものではありません。ブログの情報を利用する場合は、自己の責任において行動してください。ブログの内容に基づいて行った行動や決定によって生じた損害や被害について、筆者は一切の責任を負いません。

 

記事の内容の一部は、生成AIで作成しています。

windows server
この記事の作者
StarTeller

30歳で異業種からITエンジニアへ転身し、10年以上にわたりインフラエンジニアとして様々な現場でシステム構築・運用に携わってきました。

得意分野はLinux/Windowsのサーバー構築・運用で、ネットワークやAWSなども実務で活用しています。

このブログでは、これまでの業務で培った経験を基に、日々の業務で遭遇した問題の解決方法や、システム構築の具体的な手順を解説。現場のエンジニアが実際に「困ったとき」に参照できる情報を意識して投稿していこうと思っています。

StarTellerをフォローする
StarTellerをフォローする

コメント

タイトルとURLをコピーしました