Line data Source code
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 : #include "passdb.h"
26 : #include "../libcli/security/security.h"
27 :
28 : #undef DBGC_CLASS
29 : #define DBGC_CLASS DBGC_PASSDB
30 :
31 3709 : uint32_t pdb_get_user_rid (const struct samu *sampass)
32 : {
33 : uint32_t u_rid;
34 :
35 3709 : if (sampass)
36 3709 : if (sid_peek_check_rid(get_global_sam_sid(), pdb_get_user_sid(sampass),&u_rid))
37 3709 : return u_rid;
38 :
39 0 : return (0);
40 : }
41 :
42 2127 : uint32_t pdb_get_group_rid (struct samu *sampass)
43 : {
44 : uint32_t g_rid;
45 :
46 2127 : if (sampass)
47 2127 : if (sid_peek_check_rid(get_global_sam_sid(), pdb_get_group_sid(sampass),&g_rid))
48 2127 : return g_rid;
49 0 : return (0);
50 : }
51 :
52 3978 : bool pdb_set_user_sid_from_rid (struct samu *sampass, uint32_t rid, enum pdb_value_state flag)
53 : {
54 : struct dom_sid u_sid;
55 : struct dom_sid_buf buf;
56 : const struct dom_sid *global_sam_sid;
57 :
58 3978 : if (!sampass)
59 0 : return False;
60 :
61 3978 : if (!(global_sam_sid = get_global_sam_sid())) {
62 0 : DEBUG(1, ("pdb_set_user_sid_from_rid: Could not read global sam sid!\n"));
63 0 : return False;
64 : }
65 :
66 3978 : if (!sid_compose(&u_sid, global_sam_sid, rid)) {
67 0 : return False;
68 : }
69 :
70 3978 : if (!pdb_set_user_sid(sampass, &u_sid, flag))
71 0 : return False;
72 :
73 3978 : DEBUG(10, ("pdb_set_user_sid_from_rid:\n\tsetting user sid %s from rid %d\n",
74 : dom_sid_str_buf(&u_sid, &buf), rid));
75 :
76 3978 : return True;
77 : }
78 :
79 0 : bool pdb_set_group_sid_from_rid (struct samu *sampass, uint32_t grid, enum pdb_value_state flag)
80 : {
81 : struct dom_sid g_sid;
82 : struct dom_sid_buf buf;
83 : const struct dom_sid *global_sam_sid;
84 :
85 0 : if (!sampass)
86 0 : return False;
87 :
88 0 : if (!(global_sam_sid = get_global_sam_sid())) {
89 0 : DEBUG(1, ("pdb_set_user_sid_from_rid: Could not read global sam sid!\n"));
90 0 : return False;
91 : }
92 :
93 0 : if (!sid_compose(&g_sid, global_sam_sid, grid)) {
94 0 : return False;
95 : }
96 :
97 0 : if (!pdb_set_group_sid(sampass, &g_sid, flag))
98 0 : return False;
99 :
100 0 : DEBUG(10, ("pdb_set_group_sid_from_rid:\n\tsetting group sid %s from rid %d\n",
101 : dom_sid_str_buf(&g_sid, &buf), grid));
102 :
103 0 : return True;
104 : }
105 :
|