1/* 2 Unix SMB/CIFS implementation. 3 struct samu access routines 4 Copyright (C) Jeremy Allison 1996-2001 5 Copyright (C) Luke Kenneth Casson Leighton 1996-1998 6 Copyright (C) Gerald (Jerry) Carter 2000-2001 7 Copyright (C) Andrew Bartlett 2001-2002 8 Copyright (C) Stefan (metze) Metzmacher 2002 9 10 This program is free software; you can redistribute it and/or modify 11 it under the terms of the GNU General Public License as published by 12 the Free Software Foundation; either version 3 of the License, or 13 (at your option) any later version. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program. If not, see <http://www.gnu.org/licenses/>. 22*/ 23 24#include "includes.h" 25 26#undef DBGC_CLASS 27#define DBGC_CLASS DBGC_PASSDB 28 29uint32 pdb_get_user_rid (const struct samu *sampass) 30{ 31 uint32 u_rid; 32 33 if (sampass) 34 if (sid_peek_check_rid(get_global_sam_sid(), pdb_get_user_sid(sampass),&u_rid)) 35 return u_rid; 36 37 return (0); 38} 39 40uint32 pdb_get_group_rid (struct samu *sampass) 41{ 42 uint32 g_rid; 43 44 if (sampass) 45 if (sid_peek_check_rid(get_global_sam_sid(), pdb_get_group_sid(sampass),&g_rid)) 46 return g_rid; 47 return (0); 48} 49 50bool pdb_set_user_sid_from_rid (struct samu *sampass, uint32 rid, enum pdb_value_state flag) 51{ 52 DOM_SID u_sid; 53 const DOM_SID *global_sam_sid; 54 55 if (!sampass) 56 return False; 57 58 if (!(global_sam_sid = get_global_sam_sid())) { 59 DEBUG(1, ("pdb_set_user_sid_from_rid: Could not read global sam sid!\n")); 60 return False; 61 } 62 63 sid_copy(&u_sid, global_sam_sid); 64 65 if (!sid_append_rid(&u_sid, rid)) 66 return False; 67 68 if (!pdb_set_user_sid(sampass, &u_sid, flag)) 69 return False; 70 71 DEBUG(10, ("pdb_set_user_sid_from_rid:\n\tsetting user sid %s from rid %d\n", 72 sid_string_dbg(&u_sid),rid)); 73 74 return True; 75} 76 77bool pdb_set_group_sid_from_rid (struct samu *sampass, uint32 grid, enum pdb_value_state flag) 78{ 79 DOM_SID g_sid; 80 const DOM_SID *global_sam_sid; 81 82 if (!sampass) 83 return False; 84 85 if (!(global_sam_sid = get_global_sam_sid())) { 86 DEBUG(1, ("pdb_set_user_sid_from_rid: Could not read global sam sid!\n")); 87 return False; 88 } 89 90 sid_copy(&g_sid, global_sam_sid); 91 92 if (!sid_append_rid(&g_sid, grid)) 93 return False; 94 95 if (!pdb_set_group_sid(sampass, &g_sid, flag)) 96 return False; 97 98 DEBUG(10, ("pdb_set_group_sid_from_rid:\n\tsetting group sid %s from rid %d\n", 99 sid_string_dbg(&g_sid), grid)); 100 101 return True; 102} 103 104