C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ユーザ、グループ、フォルダのアクセス権限取得


(過去ログ 104 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■62047 / inTopicNo.1)  ユーザ、グループ、フォルダのアクセス権限取得
  
□投稿者/ みっく (6回)-(2011/09/16(Fri) 16:19:58)

分類:[.NET 全般] 

.Net Frameworkを利用して、ユーザ、グループ、フォルダのアクセス権限を取得できるのでしょうか?

ファイルサーバをWindowsStorageServer2008 R2で運用しています。 .Net Frameworkをサーバに入れることも問題ありません。

共有フォルダ「A部署」というのがあり、A部署の課長から「A部署」にアクセスできる人は
誰かもわかるようにしてほしいと言われています。

フォルダ一覧、フォルダにアクセスできるグループを取得して、そこからユーザを抽出できれば簡単に
できそうですが、.Net Frameworkで、このようなことが出来るのでしょうか?

引用返信 編集キー/
■62057 / inTopicNo.2)  Re[1]: ユーザ、グループ、フォルダのアクセス権限取得
□投稿者/ ゲルニカ (1回)-(2011/09/17(Sat) 08:53:53)
No62047 (みっく さん) に返信

> 共有フォルダ「A部署」というのがあり、A部署の課長から「A部署」にアクセスできる人は
> 誰かもわかるようにしてほしいと言われています。

一つ質問ですが、A部署の課長が直接アプリケーション(イントラ内Webアプリでもいい)を利用して
「A部署」フォルダにアクセスできる人を調べることを想定していますか?
あるいは、A部署の課長がネットワーク担当者に「A部署」フォルダにアクセスできる人を問い合わせ、
ネットワーク担当者がアプリケーションを使い、そのリストをA部署の課長に報告することを想定していますか?

まぁ、後者ではないと思いますが。
(後者ならアクティブディレクトリ設定情報は管理しているはずですので、その内容をA部署の課長に報告すれば
いいだけの話だと思います。)
引用返信 編集キー/
■62060 / inTopicNo.3)  Re[2]: ユーザ、グループ、フォルダのアクセス権限取得
□投稿者/ みっく (7回)-(2011/09/17(Sat) 12:59:48)
No62057 (ゲルニカ さん) に返信
> ■No62047 (みっく さん) に返信
>
>>共有フォルダ「A部署」というのがあり、A部署の課長から「A部署」にアクセスできる人は
>>誰かもわかるようにしてほしいと言われています。
>
> 一つ質問ですが、A部署の課長が直接アプリケーション(イントラ内Webアプリでもいい)を利用して
> 「A部署」フォルダにアクセスできる人を調べることを想定していますか?

基本的には、こっちですね。

ですが、アクティブディレクトリの管理者情報は見難いので、システム部内のメンバーに対しても
プログラムで見やすい形にしたというのもあります。

引用返信 編集キー/
■62061 / inTopicNo.4)  Re[1]: ユーザ、グループ、フォルダのアクセス権限取得
□投稿者/ shu (997回)-(2011/09/17(Sat) 15:32:31)
No62047 (みっく さん) に返信

こんなんで調べられると思います。
FileSystemRightsの判定は全部ではないです。

Imports System.IO
Imports System.Security.Principal
Imports System.Security.AccessControl

・・・

Dim DirInfo As New DirectoryInfo("ディレクトリパス")
Dim sc = DirInfo.GetAccessControl
For Each rl As FileSystemAccessRule In sc.GetAccessRules(True, True, GetType(NTAccount))
Dim sr = rl.FileSystemRights

Console.WriteLine("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}", _
rl.IdentityReference.Value, rl.AccessControlType, _
(sr And FileSystemRights.AppendData) > 0, _
(sr And FileSystemRights.ChangePermissions) > 0, _
(sr And FileSystemRights.CreateDirectories) > 0, _
(sr And FileSystemRights.CreateFiles) > 0, _
(sr And FileSystemRights.Delete) > 0, _
(sr And FileSystemRights.DeleteSubdirectoriesAndFiles) > 0, _
(sr And FileSystemRights.ExecuteFile) > 0, _
(sr And FileSystemRights.ListDirectory) > 0, _
(sr And FileSystemRights.Read) > 0 _
)
Next

引用返信 編集キー/
■62065 / inTopicNo.5)  Re[1]: ユーザ、グループ、フォルダのアクセス権限取得
□投稿者/ Azulean (842回)-(2011/09/17(Sat) 20:02:11)
2011/09/17(Sat) 20:04:19 編集(投稿者)

No62047 (みっく さん) に返信
> 共有フォルダ「A部署」というのがあり、A部署の課長から「A部署」にアクセスできる人は
> 誰かもわかるようにしてほしいと言われています。

(1) 対象のファイル、フォルダーのアクセス許可リストを取得する。
(2) 許可リストに含まれるグループについてはそのグループに含まれるユーザーを ActiveDirectory に問い合わせる。
(3) (1) と (2) の情報を元に、ユーザーを列挙する。

ところで、「A部署」フォルダーの中に「B課」というフォルダーがあり、そのフォルダーが上位のフォルダーのアクセス権を継承していない、あるいは独自に勝手に追加している場合、「A部署」レベルでは見えないけど、「B課」レベルでは見えるというユーザーが発生することがあります。
そういったケースも含めて、「A部署」フォルダー内すべてを考慮しないといけないのでしょうか?
もし、そうだとすると、再帰的にフォルダーやファイルすべてをチェックしなければならないと思われます。
(ファイルだけ別の設定になると言うこともあり得る)

「.NET Framework でかんたんか?」というより、やらないといけないことが多いので、どの言語・フレームワークを使おうとしてもめんどくさいものだと思われます。

# shu さんが書いているコードは (1) 相当かな?流し読みでの判断ですが。
引用返信 編集キー/
■62068 / inTopicNo.6)  Re[2]: ユーザ、グループ、フォルダのアクセス権限取得
□投稿者/ みっく (8回)-(2011/09/17(Sat) 21:37:17)
2011/09/17(Sat) 21:38:19 編集(投稿者)
>shuさん

ありがとうございます!!!
教えてくださったやり方で、フォルダに対するグループとユーザを取得できました。

No62065 (Azulean さん) に返信
> 2011/09/17(Sat) 20:04:19 編集(投稿者)
>
> ■No62047 (みっく さん) に返信
>>共有フォルダ「A部署」というのがあり、A部署の課長から「A部署」にアクセスできる人は
>>誰かもわかるようにしてほしいと言われています。
>
> (1) 対象のファイル、フォルダーのアクセス許可リストを取得する。
> (2) 許可リストに含まれるグループについてはそのグループに含まれるユーザーを ActiveDirectory に問い合わせる。
> (3) (1) と (2) の情報を元に、ユーザーを列挙する。
>
> ところで、「A部署」フォルダーの中に「B課」というフォルダーがあり、そのフォルダーが上位のフォルダーのアクセス権を継承していない、あるいは独自に勝手に追加している場合、「A部署」レベルでは見えないけど、「B課」レベルでは見えるというユーザーが発生することがあります。
> そういったケースも含めて、「A部署」フォルダー内すべてを考慮しないといけないのでしょうか?
> もし、そうだとすると、再帰的にフォルダーやファイルすべてをチェックしなければならないと思われます。
> (ファイルだけ別の設定になると言うこともあり得る)
>
> 「.NET Framework でかんたんか?」というより、やらないといけないことが多いので、どの言語・フレームワークを使おうとしてもめんどくさいものだと思われます。
>
> # shu さんが書いているコードは (1) 相当かな?流し読みでの判断ですが。

まさにしたいことは、指摘して頂いた通り、再帰的に読む必要があると思っています。
しかしファイルまではチェックする必要は無い予定です。

みっくさんに教えて頂いた方法で、取得できたのですが、グループを取得した場合
そのグループに所属しているユーザの取得方法を試行錯誤して悩んでいるところです。

何かご存知でしたが、教えて頂けると助かりますm(_ _)m


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -