はじめに
Windows環境で構築したファイルサーバにおいて、2つのアクセス権の動作検証をしました。
恥ずかしながら、このアクセス権についてあまり理解できてなく、どこかで検証したいと思っていました。概念止まりだった知識を整理するために、検証してみた次第です。
※本記事は下記のファイルサーバ移行検証の一部です。
2つのアクセス権について
まずアクセス権という言葉から。私の所感では、「ファイル(フォルダ)のアクセス権」というと、だいたいNTFSアクセス権を指します。※繰り返しですが、あくまでも個人の所感です。
そして、理解に乏しい私は「アクセス権はNTFSアクセス権しかない」と思ってしまう訳です。もう1つの「共有アクセス権」とは何者でしょうか?2つのアクセス権の説明を書きます。
共有アクセス権
共有アクセス権とは、ネットワーク上でフォルダーやファイルを共有する際に設定するアクセス許可のことです。共有アクセス権はフォルダー単位で設定され、ネットワーク経由でアクセスするユーザーに対して適用されます。例えば、特定のユーザーグループに読み取り専用アクセス権を与え、別のグループには読み取り/書き込み権限を与えることができます。
GUIで設定を確認する場合、「共有ポイントのフォルダのプロパティ」と「コンピュータの管理確認」で確認できます。
共有ポイントのフォルダのプロパティ
共有しているフォルダのプロパティを開き、[共有]タブの[詳細な共有]を選択します。
[アクセス許可]を選択します。
共有されているユーザー・グループが表示されます。
コンピュータの管理確認
[コンピュータの管理]を開き[システムツール]>[共有フォルダー]を選択し、共有名を右クリックして、[プロパティ]を選択します。
共有されているユーザー・グループが表示されます。
NTFSアクセス権
NTFSアクセス権(NTFSパーミッション)は、WindowsのNTFS(New Technology File System)で管理されるファイルおよびフォルダーのアクセス許可です。NTFSアクセス権は、フォルダーやファイルに対して詳細なアクセス制御を行うことができます。
GUIで設定を確認する場合、「共有ポイントのフォルダのプロパティ」と「サーバマネージャーの画面」とで確認できます。
共有ポイントのフォルダのプロパティ
共有しているフォルダのプロパティを開き、[セキュリティ]タブの[詳細設定]を選択します。
アクセス許可設定の一覧が表示されます。
サーバマネージャーの画面で確認
[サーバマネージャー]を開き、[ファイルサービスと記憶領域サービス]を選択します。
[共有]を選択します。
共鳴を右クリックして、[プロパティ]を選択します。
左ペインから[アクセス許可]を選択し、[アクセス許可をカスタマイズする]を選択します。
アクセス許可設定の一覧が表示されます。
アクセス権と動作について(重要)
共有アクセス権とNTFSアクセス権は、リモート接続時に両方のルールが参照され、厳しいルールが採用される仕組みとなっています。アクセス権の片方しか見えていないと、意図しない動作のように見えてしまうことは、容易に想像できます。
検証①
設定方法と動作を確認します。まずはNTFSアクセス許可を設定だけを操作し、共有アクセス権はデフォルトの状態の場合の挙動を見ます。
前提
対象のサーバはWindowsServerで、共有名「share」のファイル共有設定を行った直後の状態です。特に設定は変えていなく、テスト用のユーザ「testuser01」だけ作成しています。
共有設定はshareという共有名。
ユーザ情報は以下通り作成済み。
この状態で、共有フォルダのNTFSアクセス権を設定していきます。
NTFSアクセス権の確認
[詳細設定]を開きます。
現在設定されているルールが表示されます。ここに、testuser01を追加します。下記の通り[追加]を選択します。
[選択するオブジェクト名を入力して下さい]にユーザ名を入れます。[名前の確認]を選択すると、存在していれば以下の通り補足情報が追加されます。
問題なければ[OK]を選択します。
今回はフルコントロールに設定してみます。設定を確定するため[適用]を選択して[OK]を選択します。
接続試験
他のクライアントPCから接続してみます。エクスプローラで「¥¥172.16.1.137」にアクセスします。認証情報を入力します。
無事に接続できました。
フォルダ内のファイルの中身は見れます。
フォルダ内に新規ファイルを作成してみます。
ここでアクセス権のエラーが発生します。
これまでの流れを見れば原因はわかると思いますが、「アクセス権が変なのか?」とNTFSアクセス権を調べ始めると沼にはまります。
共有アクセス権を確認する
以下はコンピュータの管理で共有設定を確認しています。
「共有のアクセス許可」を確認します。
デフォルトではEveryoneに読み取り権限のみが付与されています。エラーの原因は共有アクセス権で書き込み権限がなかったからということになります。
補足
Everyoneに書き込み権限をつけても良いですが、あまり好ましくないでしょう。共有アクセス権で広く許可して、NTFSアクセス権で細かく制御するにしても、あくまでもアクセスを想定するユーザに限定するべきでしょう。ユーザを一人ひとりに許可するのではなく、グループにまとめて許可すれば管理がしやすいので、設定時に以後の管理を含めて検討しましょう。
以下はtestuser01の共有アクセス権で変更権限を付与しています。
改めて新規ファイルを追加してみます。
問題なく追加できました。
共有アクセス権で読み取り権を削除する
先ほどは共有アクセス権の読み取り権限がある場合の動作を見ましたが、何もない場合の動作を見ます。
testuser02を作成してみます。
NTFSアクセス権を付与します。
他のPCからログインを試みます。想定通り、認証情報を入力します。
問題なくログインはできました。共有ファイルにアクセスをしようとすると、アクセス権で拒否されます。
administratorのアクセス権について
万能なイメージがあるadministratorでアクセスはどうでしょうか。試したところ、testuser02と同様にアクセスできませんでした。OSの管理者である事は関係ないみたいです。
検証②
今度は先ほどとは逆で、NTFS共有アクセス権を厳しくし、共有アクセス権を広く許可してみます。
以下、NTFSアクセス権を厳しく設定しています。
読み取りのみが設定されています。
共有アクセス許可をフルコントロールにします。
接続試験
結果は…共有ファイルにアクセス可能で、さらに新規ファイル作成ができました。
厳しいルールが採用される?はずが、想定外の動作を確認しました。※実は仕様通り動作しています。
原因は?
調査を進めると、Usersグループの許可に答えがありそうです。testuser02はUsersグループに所属しています。このNTFSアクセス許可の設定を見てみます。
アクセス権が「特殊」となっています。
詳細を確認してみます。
「ファイルの作成/データの書き込み」と、「フォルダの追加/データの追加」にチェックがついています。ファイル作成ができて、そのファイルを編集できたのは、このアクセス権のおかげだったのですね。
では、他のユーザが作成したファイルを削除しようとしてみましょう。
結果は、以下のようなエラーになります。なお、編集して保存する場合も同様に、上書き保存はできませんでした。
このUserグループに所属しているため、共有ファイルでファイル作成ができたわけです。
このユーザーグループを削除さて再度試したところ、意図した通り読み取りだけできるようになりました。※長くなったので、画像は省略します。
以上で検証は終わりです。基本的な内容ですが、あいまいな部分は減らせたような気がします。