Windows10にて管理者ユーザであるにも関わらず、アクセスする権限がないためフォルダにアクセスすることができなかった。
ACL(Access Control List)という仕組みにつまづいたので、その時の対処方法をメモしておこうと思う。
管理者ユーザであることを確認する
まず、現在ログインしているユーザが管理者になっているか確認する。
Windowsマークの右にある検索ボックスに「control panel」と入力して、コントロールパネルを開く。
コントロールパネルを開いたら、「ユーザー アカウント」をクリックする。
ログインしているアカウントが「Administrator」になっていることを確認する。
管理者ではない場合
Administratorになっていない場合、先に管理者ユーザーでログインする。
そして、管理者にしたいアカウント名をクリックする。
アカウントをクリックすると、アカウントの変更画面が表示される。
表示された画面の「アカウントの情報の変更」をクリックする。
アカウントの種類をラジオボタンで選択できる画面が表示されるので、「管理者」を選択した後、下にある「アカウントの種類の変更」ボタンをクリックする。
フォルダの所有者を変更する
アクセスしたいフォルダを右クリックし、プロパティを選択する。
表示されたプロパティ上部の「セキュリティ」タブをクリックし、「詳細設定(V)」をクリックする。
表示されたセキュリティの詳細設定画面の「所有者」が、ファイルにアクセスしたいユーザの名前になっていることを確認する。
所有者が別のユーザ名になっている場合は、所有者の右にある「変更(C)」から変更することができる。
所有者の右にある変更をクリックすると、ユーザーまたはグループの選択という画面が表示される。
「選択するオブジェクト名を入力してください(例)(E):」に、自分のユーザ名を入力し、「名前の確認(C)」ボタンをクリックする。
自分のユーザ名が入力されたことを確認したら「OK」ボタンを押す。
所有者の下にある「サブコンテナーとオブジェクトの所有者を置き換える」にチェックを入れ、「OK」ボタンを押す。
フォルダの中身によっては、所有者を置き換える作業に少々時間がかかる。
所有者を変更した後、上図のようなポップアップが表示されたら、一度プロパティを閉じる。
おまけ:コマンドプロンプトを使う場合
コマンドプロンプトを使っても、フォルダの所有権を取得することができる。
まずコマンドプロンプトを管理者で実行する。
アプリを右クリックして「管理者として実行」をクリックすると、管理者で起動することができる。
コマンドプロンプトが起動したら、所有権を取得したいフォルダに移動し、下記コマンドを実行する。
takeown /F * /R
Fオプションでファイル名やフォルダ名を指定する。ここでは*(ワイルドカード)を指定して、フォルダ内の全ファイルとサブフォルダを対象としている。また、Rオプションを使うことで、サブフォルダ内の全ファイルとフォルダの所有権を取得している。
アクセス権限を設定する
フォルダの所有権を取得したので、次はアクセス権限を設定していく。
フォルダを右クリックしてプロパティを選択、セキュリティタブを開いて「編集(E)…」ボタンを押す。
ファイルのアクセス許可を設定していく。「グループ名またはユーザー名(G):」にユーザーの名前があればクリックする。すると、下の「アクセス許可(P):」の右に、選択したユーザの名前が表示される。
フルコントロールの右から2つ目、許可の下にあるチェックボックスにチェックを入れ、「OK」ボタンを押す。
ユーザの名前がない場合
ユーザの名前がない場合、アクセス許可画面の中央あたりにある「追加(D)…」ボタンを押して、ユーザを追加する必要がある。
「選択するオブジェクト名を入力してください(例)(E):」にユーザ名を入力して「名前の確認(C)」ボタンを押して、下の「OK」ボタンを押す。
追加されたユーザを選択し、フルコントロールにチェックを入れて、「OK」ボタンを押せばアクセス権限が付与される。
おまけ:コマンドプロンプトを使う場合
コマンドプロンプトを使うと、一括でファイルのアクセス権限を変更することができる。
icacls * /T /grant <ユーザー名>:F
*(ワイルドカード)とTオプションで全フォルダとファイルを対象にしている。grantオプションを使うことで、指定したユーザにアクセス権限を付与できる。
どのようなアクセス権限を付与するかは、<ユーザー名>の後ろに:(コロン)をつけて指定する。上記コマンドではフルコントロールを付与した。