none
ファイル/フォルダのDACLを付け替えたい RRS feed

  • 質問

  • Windows以外のファイルサーバにrobocopyでSecurityを含めたコピーにて困っています。

    robocopyでコピー先に指定するファイルサーバはAclRevisionがACL_REVISIONしかサポートされてないファイルサーバです。そのため、データコピー後にDACLを付け直したいのですが、ACL_REVISIONにすべて置き換えても良いのか分かりません。

    以下のURLにはDACLのAclRevisionに値を入れるメソッドは記載されていますが、具体的な使用方法が分からず困っています。

    Windows APIの”IADsAccessControlList Property Methods”についての質問があります。

    IADsAccessControlListのメソッドでは、 get_AclRevisionにてDACLの取得、put_AclRevisionにてDACLの設定が出来ますが、ACL_REVISION_DSのAclRevisionをACL_REVISIONに入れ替えるためには、ACEの順序等を入れ替える必要が有るのか、ACEに何の値が有るとACL_REVISIONにしては成らないのか分かりません。

    The revision level of an access-control list. This value can be ACL_REVISION or ACL_REVISION_DS.

    Use ACL_REVISION_DS if the ACL contains an object-specific ACE.

    All ACEs in an ACL must be at the same revision level.

    具体的に、どんなACEを使用する場合には、ACL_REVISION_DSを設定し、含まない場合には、

    ACL_REVISIONを使用するのかお教え願えませんか?

    2016年2月3日 1:47

すべての返信

  • 自己フォローになります。

     たぶん、AddAccessAllowedObjectAce関数の解説で、大体は推定できます。

    解説からの抜粋は以下の通り

    「ObjectTypeGuid InheritedObjectTypeGuid の両方が NULL の場合、

    AddAccessAllowedObjectAce 関数の代わりに AddAccessAllowedAceEX 関数を使ってください。 より  の方が小さく、効率的だからです。

    呼び出し側は、ACE を適切な順序で ACL に追加することを保証する必要があります。」

    私の理解では、ObjectAceを使う必要の有無が、ACL_REVISION_DSの使用の有無として判定でき、AddAccessAllowedAceEXを使用すれば、ACL_REVISIONに変更できると読み取れました。

    2016年2月18日 3:51