質問: Administratorsグループに所属するユーザからもアクセスが出来ないフォルダを バッチファイルで作成したいと考えています。 =手順= 1. 社内のクライアントPCに設定ファイルなどを格納するフォルダ(以下、「設定フォルダ」)をローカルの任意の場所に作成。 2. 設定フォルダへは、タスクスケジューラに登録したユーザA(例:admintest)でログインさせ、プログラム実行時に使用する設定ファイルなどを参照させます。 ⇒上記2点はリモート実行で可能だと確認。 =条件= 1. 各クライアントPCでは使用者名などのユーザを各々で使用しており、各ユーザは各クライアントPCでAdministratorsグループに所属しています。 2. 設定フォルダへアクセスが可能なユーザA(例:admintest)はすべてのクライアントPCで共通のユーザ名、パスです。 3. 各使用者が各ユーザにてクライアントPCにログインしている時、設定フォルダ内容の変更が行われるといけないので、アクセスはブロックさせたいと考えています。(タスクスケジューラからの実行のみに限定) ⇒【問題】上記2につきまして、各ユーザはAdministratorsグループに所属していることから、どの様に設定すれば良いか苦慮しております。 各クライアントPCに実行させるバッチファイルを下記の様に作成しましたが、 通常使用しているユーザで設定フォルダに入ることが出来てしまいました。 ``` @Echo off rem カレントディレクトリを移動 cd /d %~dp0 rem ユーザ作成 NET USER admintest pass /add rem ※念の為administratorsに参加させていますが、設定フォルダにアクセス・プログラムを実行させるためだけの用途のユーザです。 NET localgroup administrators admintest /add rem 設定フォルダ作成 mkdir c:\Test_directory rem アクセス権の設定 icacls c:\Test_directory /grant admintest:(OI)(CI)F rem 本バッチを終了 exit /B ``` 以上です。 説明がわかりにくく申し訳ありませんが、上記お教え頂けますでしょうか。 【2018/11/08 14:29追記】 以下のようにリスト(テキストファイル)に記載してあるユーザ名を指定し、そのユーザ名では設定フォルダへのアクセスができなくなることを確認しました。 ``` rem リストにあるユーザ名からのアクセスを拒否 FOR /F "tokens=1-7 skip=1 delims=," %%i IN (%master_userlist%) DO icacls c:\Test_directory /deny %%i:(RD,WD) ``` しかし問題点として、各クライアントPCで新規ユーザを作成された場合、 リストに存在しないユーザ名の為、設定フォルダへのアクセスが出来てしまいます。 各クライアントPCにある各ユーザ、今回アクセスさせたいadmintestはいずれもAdministratorsグループに所属していますが、「admintestのみ設定フォルダへアクセス可能、それ以外のユーザはアクセス不可」と設定することは可能でしょうか? また、下記も試しましたが、EVERYONEの設定の方が強いらしく、admintestが設定フォルダにアクセス出来なくなってしまいます。 ``` rem everyoneのアクセス権を拒否 icacls c:\Test_directory /deny everyone:(RD,WD) rem admintestのみアクセス権拒否を解除 icacls c:\Test_directory /remove:d admintest ```
回答: ただフォルダ作成しただけでは「Administrators:読み取り」「Users:読み取り」許可があるからでしょう。/grantにオプション付与してはいかがでしょうか。 以下、icacls /? より抜粋 ``` ICACLS <名前> [/grant[:r] :perm[...]] [/deny :perm [...]] [/remove[:g|:d]] [...]] [/T] [/C] [/L] [/Q] [/setintegritylevel Level:policy[...]] /grant[:r] :perm は、指定されたユーザー アクセス権を付与します。 :r を指定すると、以前に付与されたすべての明示的なアクセス許可は新しい アクセス許可に置き換えられます。 :r を指定しない場合、新しいアクセス許可は以前に付与された明示的な アクセス許可に追加されます。 ``` ※windows7の結果なので、windows10で同じであるかわかりません。ご自身のヘルプを確認ください