194 lines
3.8 KiB
C
194 lines
3.8 KiB
C
/*
|
||
|
||
Copyright (c) 1992 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
access.h
|
||
|
||
Abstract:
|
||
|
||
This module contains prototypes for access related routines.
|
||
|
||
Author:
|
||
|
||
Jameel Hyder (microsoft!jameelh)
|
||
|
||
|
||
Revision History:
|
||
20 Sep 1992 Initial Version
|
||
|
||
Notes: Tab stop: 4
|
||
--*/
|
||
|
||
#ifndef _ACCESS_
|
||
#define _ACCESS_
|
||
|
||
#define AFP_READ_ACCESS (READ_CONTROL | \
|
||
FILE_READ_ATTRIBUTES | \
|
||
FILE_TRAVERSE | \
|
||
FILE_LIST_DIRECTORY | \
|
||
FILE_READ_EA)
|
||
|
||
#define AFP_WRITE_ACCESS (FILE_ADD_FILE | \
|
||
FILE_ADD_SUBDIRECTORY| \
|
||
FILE_WRITE_ATTRIBUTES| \
|
||
FILE_WRITE_EA | \
|
||
DELETE)
|
||
|
||
#define AFP_OWNER_ACCESS (WRITE_DAC | \
|
||
WRITE_OWNER)
|
||
|
||
#define AFP_MIN_ACCESS (FILE_READ_ATTRIBUTES | \
|
||
READ_CONTROL)
|
||
|
||
#ifdef i386
|
||
#pragma warning(disable:4010)
|
||
#endif
|
||
|
||
GLOBAL SID AfpSidWorld EQU \
|
||
{ 1, 1, SECURITY_WORLD_SID_AUTHORITY, SECURITY_WORLD_RID };
|
||
GLOBAL SID AfpSidSystem EQU \
|
||
{ 1, 1, SECURITY_NT_AUTHORITY, SECURITY_LOCAL_SYSTEM_RID };
|
||
GLOBAL SID AfpSidNull EQU \
|
||
{ 1, 1, SECURITY_NULL_SID_AUTHORITY, SECURITY_NULL_RID };
|
||
|
||
GLOBAL SID AfpSidBuiltIn EQU \
|
||
{ 1, 1, SECURITY_NT_AUTHORITY, SECURITY_BUILTIN_DOMAIN_RID };
|
||
GLOBAL PSID AfpSidAdmins EQU NULL;
|
||
GLOBAL LONG AfpSizeSidAdmins EQU 0;
|
||
GLOBAL PSID AfpSidNone EQU NULL;
|
||
GLOBAL LONG AfpSizeSidNone EQU 0;
|
||
|
||
#ifdef OPTIMIZE_GUEST_LOGONS
|
||
|
||
#ifdef INHERIT_DIRECTORY_PERMS
|
||
GLOBAL DWORD AfpIdWorld EQU 0;
|
||
#else
|
||
GLOBAL PISECURITY_DESCRIPTOR AfpGuestSecDesc EQU NULL;
|
||
#endif
|
||
|
||
#endif
|
||
|
||
#define AfpAccessMask2AfpPermissions(Rights, Mask, Type) \
|
||
if ((Type) == ACCESS_ALLOWED_ACE_TYPE) \
|
||
{ \
|
||
if (((Mask) & AFP_READ_ACCESS) == AFP_READ_ACCESS) \
|
||
(Rights) |= (DIR_ACCESS_READ | DIR_ACCESS_SEARCH); \
|
||
if (((Mask) & AFP_WRITE_ACCESS) == AFP_WRITE_ACCESS) \
|
||
(Rights) |= DIR_ACCESS_WRITE; \
|
||
if (((Mask) & AFP_OWNER_ACCESS) == AFP_OWNER_ACCESS) \
|
||
(Rights) |= DIR_ACCESS_OWNER; \
|
||
} \
|
||
else \
|
||
{ \
|
||
ASSERT((Type) == ACCESS_DENIED_ACE_TYPE); \
|
||
if ((Mask) & AFP_READ_ACCESS) \
|
||
(Rights) &= ~(DIR_ACCESS_READ | DIR_ACCESS_SEARCH); \
|
||
if ((Mask) & AFP_WRITE_ACCESS) \
|
||
(Rights) &= ~DIR_ACCESS_WRITE; \
|
||
if ((Mask) & AFP_OWNER_ACCESS) \
|
||
(Rights) &= ~DIR_ACCESS_OWNER; \
|
||
}
|
||
|
||
extern
|
||
NTSTATUS
|
||
AfpGetUserAndPrimaryGroupSids(
|
||
IN PSDA pSda
|
||
);
|
||
|
||
|
||
extern
|
||
AFPSTATUS
|
||
AfpMakeSecurityDescriptorForUser(
|
||
IN PSID OwnerSid,
|
||
IN PSID GroupSid,
|
||
OUT PISECURITY_DESCRIPTOR * ppSecDesc
|
||
);
|
||
|
||
|
||
extern
|
||
AFPSTATUS
|
||
AfpGetAfpPermissions(
|
||
IN PSDA pSda,
|
||
IN HANDLE DirHandle,
|
||
IN OUT struct _FileDirParms * pFDParm
|
||
);
|
||
|
||
|
||
extern
|
||
AFPSTATUS
|
||
AfpSetAfpPermissions(
|
||
IN HANDLE DirHandle,
|
||
IN DWORD Bitmap,
|
||
IN OUT struct _FileDirParms * pFDParm
|
||
);
|
||
|
||
#if DBG
|
||
|
||
extern
|
||
VOID
|
||
AfpDumpSid(
|
||
IN PBYTE pString,
|
||
IN PISID pSid
|
||
);
|
||
|
||
extern
|
||
VOID
|
||
AfpDumpSidnMask(
|
||
IN PBYTE pString,
|
||
IN PISID pSid,
|
||
IN DWORD Mask,
|
||
IN UCHAR Type,
|
||
IN UCHAR Flags
|
||
);
|
||
|
||
#else
|
||
|
||
#define AfpDumpSid(pString, pSid)
|
||
#define AfpDumpSidnMask(pString, pSid, Mask, Type, Flags)
|
||
|
||
#endif
|
||
|
||
#define ALLOC_ACCESS_MEM(x) AfpAllocNonPagedMemory(x)
|
||
|
||
#ifdef _ACCESS_LOCALS
|
||
|
||
LOCAL BOOLEAN
|
||
afpIsUserMemberOfGroup(
|
||
IN PTOKEN_GROUPS pGroups,
|
||
IN PSID pSidGroup
|
||
);
|
||
|
||
|
||
LOCAL ACCESS_MASK
|
||
afpPermissions2NtMask(
|
||
IN BYTE AfpPermissions
|
||
);
|
||
|
||
LOCAL PACCESS_ALLOWED_ACE
|
||
afpAddAceToAcl(
|
||
IN PACL pAcl,
|
||
IN PACCESS_ALLOWED_ACE pAce,
|
||
IN ACCESS_MASK Mask,
|
||
IN PSID pSid,
|
||
IN BOOLEAN fInherit
|
||
);
|
||
|
||
LOCAL PACCESS_ALLOWED_ACE
|
||
afpMoveAces(
|
||
IN PACL pOldDacl,
|
||
IN PACCESS_ALLOWED_ACE pAceStart,
|
||
IN PSID pSidOldOwner,
|
||
IN PSID pSidNewOwner,
|
||
IN PSID pSidOldGroup,
|
||
IN PSID pSidNewGroup,
|
||
IN BOOLEAN DenyAces,
|
||
IN OUT PACL pNewDacl
|
||
);
|
||
|
||
#endif // _ACCESS_LOCALS
|
||
|
||
#endif // _ACCESS_
|
||
|
||
|