12-07-2007, 15:56
|
|
|
חבר מתאריך: 14.06.05
הודעות: 34
|
|
בעייה בקריאת הרשאות מקובץ בעזרת win32api
אז ככה,
אני מנסה לקרוא את ה-DACL של קובץ מסויים, וזה עושה כמה בעיות.
אני משתמש בפונקציה GetNameSecurityInfo ומקבל את ה-DACL בעזרתו, אח"כ אני משתמש בפונקציה GetExplicitEnteriesFromACL (או לחילופין, גם ניסיתי LookupSecurityDescriptorParts).
הבעייה היא שהוא מחזיר לי במבנה EXPLICIT_ACCESS אך ורק את ההראשות שהן -לא הגיעו בירושה- (inherit). כמובן שרוב הקבצים יורשים ACE-ים מהכונן שלהם למשל או דברים מהתיקיות שלהם הם שייכים, ואני צריך גם את ההרשאות האלה במבנה שלי.
מה שמעניין, שה-ACE's count במבנה ה-ACL של ה-DACL שהוצאתי, כן מראה שהוא מכיל את ההרשאות שהגיעו בירושה. מסתבר שהפונקציה שהופכת את המבנה ל-EXPLICIT_ACCESS שאמור להיות מערך של מבני ACE, לא כולל את ה-permissions שהגיעו בירושה.
יש דרך מאוד מכוערת לפתור את זה (ע"י רקורסיה שתבדוק אם ה-ACE Count של ה-EXPLICIT_ACCESS שווה ל-ACE Count של ה-ACL, תחזור אחורה ותיקח את ההרשאות של התיקייה ושוב תבדוק ותחזור אחורה וכו' וכו'...) - אבל סביר להניח שיש דרך יותר קלה.
Help anyone? :-(
|