2010-08-27 02:56:15 +04:00
/*
2003-05-06 17:10:10 +04:00
Unix SMB / CIFS implementation .
SMB parameters and setup
Copyright ( C ) Andrew Tridgell 1992 - 1997
Copyright ( C ) Luke Kenneth Casson Leighton 1996 - 1997
Copyright ( C ) Paul Ashton 1997
2005-01-13 21:20:37 +03:00
Copyright ( C ) Simo Sorce 2003
2005-03-10 21:50:47 +03:00
Copyright ( C ) Gerald ( Jerry ) Carter 2005
2010-08-26 12:38:16 +04:00
Copyright ( C ) Andrew Bartlett 2010
2010-08-27 02:56:15 +04:00
2003-05-06 17:10:10 +04:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2003-05-06 17:10:10 +04:00
( at your option ) any later version .
2010-08-27 02:56:15 +04:00
2003-05-06 17:10:10 +04:00
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 .
2010-08-27 02:56:15 +04:00
2003-05-06 17:10:10 +04:00
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2003-05-06 17:10:10 +04:00
*/
# ifndef PRIVILEGES_H
# define PRIVILEGES_H
2010-06-05 04:39:11 +04:00
# include "../librpc/gen_ndr/lsa.h"
2010-08-27 06:44:35 +04:00
# include "../librpc/gen_ndr/security.h"
2010-06-05 04:39:11 +04:00
2010-08-31 03:20:39 +04:00
/* common privilege bitmask defines */
2005-01-19 19:52:19 +03:00
2010-08-26 08:37:00 +04:00
# define SE_ALL_PRIVS (uint64_t)-1
2003-06-18 19:24:10 +04:00
2005-01-13 21:20:37 +03:00
/*
* These are used in Lsa replies ( srv_lsa_nt . c )
*/
2005-06-29 20:35:32 +04:00
typedef struct {
2003-10-06 05:38:46 +04:00
TALLOC_CTX * mem_ctx ;
2007-10-19 04:40:25 +04:00
bool ext_ctx ;
2010-08-27 03:35:55 +04:00
uint32_t count ;
uint32_t control ;
2010-06-05 04:39:11 +04:00
struct lsa_LUIDAttribute * set ;
2003-05-06 17:10:10 +04:00
} PRIVILEGE_SET ;
2010-08-27 03:22:31 +04:00
const char * get_privilege_dispname ( const char * name ) ;
/*******************************************************************
2010-08-27 06:19:09 +04:00
return the number of elements in the ' short ' privlege array ( traditional source3 behaviour )
2010-08-27 03:22:31 +04:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2010-08-27 06:19:09 +04:00
int num_privileges_in_short_list ( void ) ;
2010-08-27 03:22:31 +04:00
2010-08-27 03:35:55 +04:00
/*
map a privilege id to the wire string constant
*/
const char * sec_privilege_name ( enum sec_privilege privilege ) ;
/*
map a privilege id to a privilege display name . Return NULL if not found
TODO : this should use language mappings
*/
const char * sec_privilege_display_name ( enum sec_privilege privilege , uint16_t * language ) ;
/*
map a privilege name to a privilege id . Return - 1 if not found
*/
enum sec_privilege sec_privilege_id ( const char * name ) ;
2010-09-11 10:58:45 +04:00
/*
map a ' right ' name to it ' s bitmap value . Return 0 if not found
*/
uint32_t sec_right_bit ( const char * name ) ;
2010-08-27 03:35:55 +04:00
/*
2010-08-27 06:19:09 +04:00
assist in walking the table of privileges - return the LUID ( low 32 bits ) by index
2010-08-27 03:35:55 +04:00
*/
enum sec_privilege sec_privilege_from_index ( int idx ) ;
2010-08-27 06:19:09 +04:00
/*
assist in walking the table of privileges - return the string constant by index
*/
const char * sec_privilege_name_from_index ( int idx ) ;
2010-08-27 03:35:55 +04:00
/*
return true if a security_token has a particular privilege bit set
*/
bool security_token_has_privilege ( const struct security_token * token , enum sec_privilege privilege ) ;
2013-08-06 15:26:53 +04:00
/**
* @ brief Check if the security token has system privileges .
*
* @ param [ in ] token The token to check .
*
* @ return True if the token has system privileges , false if not .
*/
bool security_token_system_privilege ( const struct security_token * token ) ;
2010-08-27 03:35:55 +04:00
/*
set a bit in the privilege mask
*/
void security_token_set_privilege ( struct security_token * token , enum sec_privilege privilege ) ;
2010-09-11 10:58:45 +04:00
/*
set a bit in the rights mask
*/
void security_token_set_right_bit ( struct security_token * token , uint32_t right_bit ) ;
2010-08-27 03:35:55 +04:00
2010-09-17 09:23:19 +04:00
void security_token_debug_privileges ( int dbg_class , int dbg_lev , const struct security_token * token ) ;
2010-08-27 03:35:55 +04:00
2003-06-18 19:24:10 +04:00
# endif /* PRIVILEGES_H */