/**************************************************************************** | | (C) Copyright 2003 Novell, Inc. | All Rights Reserved. | | This program is free software; you can redistribute it and/or | modify it under the terms of version 2 of the GNU General Public | License as published by the Free Software Foundation. | | This program is distributed in the hope that it will be useful, | but WITHOUT ANY WARRANTY; without even the implied warranty of | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | GNU General Public License for more details. | | You should have received a copy of the GNU General Public License | along with this program; if not, contact Novell, Inc. | | To contact Novell about this file by physical or electronic mail, | you may find current contact information at www.novell.com | |*************************************************************************** | | Novell Storage Services (NSS) Initialization module | |--------------------------------------------------------------------------- | | $Author: taysom $ | $Date: 2004-12-31 01:10:58 +0530 (Fri, 31 Dec 2004) $ | | $RCSfile$ | $Revision: 465 $ | |--------------------------------------------------------------------------- | This module is used to: | This module defines the unix authorization system. +-------------------------------------------------------------------------*/ #ifndef _UXASAUTHMODEL_H_ #define _UXASAUTHMODEL_H_ #ifndef _OMNI_H_ #include #endif #ifndef _LATCH_H_ #include #endif #ifndef _COMNBEASTS_H_ #include "comnBeasts.h" #endif #ifndef _COMNAUTHORIZE_H_ #include "comnAuthorize.h" #endif /*------------------------------------------------------------------------- * Defines *-------------------------------------------------------------------------*/ #define UXAS_CURRENT_AUTH_VERSION 1 /* Unix mode bit definitions */ #define UX_IXOTH 0x0001 /* other - execute */ #define UX_IWOTH 0x0002 /* other - write */ #define UX_IROTH 0x0004 /* other - read */ #define UX_IXGRP 0x0010 /* group - execute */ #define UX_IWGRP 0x0020 /* group - write */ #define UX_IRGRP 0x0040 /* group - read */ #define UX_IXUSR 0x0100 /* owner - execute */ #define UX_IWUSR 0x0200 /* owner - write */ #define UX_IRUSR 0x0400 /* owner - read */ #define UX_ISVTX 0x1000 /* sticky bit */ #define UX_ISGID 0x2000 /* set group ID on execution */ #define UX_ISUID 0x4000 /* set user ID on execution */ #define UX_IRWXO 0x0007 /* mask for "other" */ #define UX_IRWXG 0x0070 /* mask for "group" */ #define UX_IRWXU 0x0700 /* mask for "owner" */ #define UX_IX 0x0001 /* execute */ #define UX_IW 0x0002 /* write */ #define UX_IR 0x0004 /* read */ #define UX_IMO 0 /* shift factor for other/world */ #define UX_IMG 4 /* shift factor for group */ #define UX_IMU 8 /* shift factor for user/owner */ /*------------------------------------------------------------------------- * Macros *-------------------------------------------------------------------------*/ typedef struct UXASPersistentAuthInfo_s { /* this is a space for the z authorization system to use */ WORD version; /* the version of the authorization layout */ WORD extra1; /* alignment space */ LONG mode; /* see above (UX_*) */ UserID_t groupID; LONG unused[8]; } NSS_MEDIA_STRUCTURE(UXASPersistentAuthInfo_s,unused[8]) UXASPersistentAuthInfo_s; typedef struct UXASAuthorizeInfo_s { /* Unix authorization model */ UXASPersistentAuthInfo_s p; } UXASAuthorizeInfo_s; /*------------------------------------------------------------------------- * Public Structures for the authorization model *-------------------------------------------------------------------------*/ extern struct AuthModelOps_s UXASAuthorizeModelOps; extern NINT UXASAuthorizeStarted; extern NINT UX_InitialMode; /*------------------------------------------------------------------------- * * Function prototypes for the Unix authorization model * *-------------------------------------------------------------------------*/ STATUS UXAS_Startup(void); void UXAS_Shutdown(void); STATUS UXAUTH_ConstructAuthBeast( struct GeneralMsg_s *genMsg, struct AuthBeast_s *authBeast); void UXAUTH_DestructAuthBeast( struct AuthBeast_s *authBeast); NINT UXAUTH_PackedSize( struct AuthBeast_s *authBeast); BYTE *UXAUTH_PackAuthBeast( struct AuthBeast_s *authBeast, BYTE *storeBuffer); void UXAUTH_NoPackAuthBeastCleanup( struct AuthBeast_s *authBeast); BYTE *UXAUTH_UnpackAuthBeast( struct GeneralMsg_s *genMsg, struct AuthBeast_s *authBeast, BYTE *storeBuffer); STATUS UXAS_ChangeOwner( struct GeneralMsg_s *genMsg, struct NamingMsg_s *nameMsg, struct AuthBeast_s *beast, UserID_t *newOwner); STATUS UXAS_ChangeGroup( struct AuthBeast_s *beast, UserID_t *newGroup); STATUS UXAS_ChangeMode( struct AuthBeast_s *beast, NINT mode); STATUS UXAS_GetAuthInfo( struct AuthBeast_s *beast, UserID_t *groupID, NINT *mode); void UXAS_StoreIDInGUID( NINT id, UserID_t *guid); NINT UX_GetEffectivePermissions( struct AuthBeast_s *authBeast, UserID_t *IDs, NINT numIDs, NINT *mode); #endif /* _ZASAUTHMODL_H_ */