~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source3/passdb/util_builtin.c

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
   Unix SMB/CIFS implementation.
 
3
   Translate BUILTIN names to SIDs and vice versa
 
4
   Copyright (C) Volker Lendecke 2005
 
5
      
 
6
   This program is free software; you can redistribute it and/or modify
 
7
   it under the terms of the GNU General Public License as published by
 
8
   the Free Software Foundation; either version 3 of the License, or
 
9
   (at your option) any later version.
 
10
   
 
11
   This program is distributed in the hope that it will be useful,
 
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
   GNU General Public License for more details.
 
15
   
 
16
   You should have received a copy of the GNU General Public License
 
17
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
*/
 
19
 
 
20
#include "includes.h"
 
21
 
 
22
struct rid_name_map {
 
23
        uint32 rid;
 
24
        const char *name;
 
25
};
 
26
 
 
27
static const struct rid_name_map builtin_aliases[] = {
 
28
        { BUILTIN_ALIAS_RID_ADMINS,             "Administrators" },
 
29
        { BUILTIN_ALIAS_RID_USERS,              "Users" },
 
30
        { BUILTIN_ALIAS_RID_GUESTS,             "Guests" },
 
31
        { BUILTIN_ALIAS_RID_POWER_USERS,        "Power Users" },
 
32
        { BUILTIN_ALIAS_RID_ACCOUNT_OPS,        "Account Operators" },
 
33
        { BUILTIN_ALIAS_RID_SYSTEM_OPS,         "Server Operators" },
 
34
        { BUILTIN_ALIAS_RID_PRINT_OPS,          "Print Operators" },
 
35
        { BUILTIN_ALIAS_RID_BACKUP_OPS,         "Backup Operators" },
 
36
        { BUILTIN_ALIAS_RID_REPLICATOR,         "Replicator" },
 
37
        { BUILTIN_ALIAS_RID_RAS_SERVERS,        "RAS Servers" },
 
38
        { BUILTIN_ALIAS_RID_PRE_2K_ACCESS,      "Pre-Windows 2000 Compatible Access" },
 
39
        {  0, NULL}};
 
40
 
 
41
/*******************************************************************
 
42
 Look up a rid in the BUILTIN domain
 
43
 ********************************************************************/
 
44
bool lookup_builtin_rid(TALLOC_CTX *mem_ctx, uint32 rid, const char **name)
 
45
{
 
46
        const struct rid_name_map *aliases = builtin_aliases;
 
47
 
 
48
        while (aliases->name != NULL) {
 
49
                if (rid == aliases->rid) {
 
50
                        *name = talloc_strdup(mem_ctx, aliases->name);
 
51
                        return True;
 
52
                }
 
53
                aliases++;
 
54
        }
 
55
 
 
56
        return False;
 
57
}
 
58
 
 
59
/*******************************************************************
 
60
 Look up a name in the BUILTIN domain
 
61
 ********************************************************************/
 
62
bool lookup_builtin_name(const char *name, uint32 *rid)
 
63
{
 
64
        const struct rid_name_map *aliases = builtin_aliases;
 
65
 
 
66
        while (aliases->name != NULL) {
 
67
                if (strequal(name, aliases->name)) {
 
68
                        *rid = aliases->rid;
 
69
                        return True;
 
70
                }
 
71
                aliases++;
 
72
        }
 
73
 
 
74
        return False;
 
75
}
 
76
 
 
77
/*****************************************************************
 
78
 Return the name of the BUILTIN domain
 
79
*****************************************************************/  
 
80
 
 
81
const char *builtin_domain_name(void)
 
82
{
 
83
        return "BUILTIN";
 
84
}
 
85
 
 
86
/*****************************************************************
 
87
 Check if the SID is the builtin SID (S-1-5-32).
 
88
*****************************************************************/  
 
89
 
 
90
bool sid_check_is_builtin(const DOM_SID *sid)
 
91
{
 
92
        return sid_equal(sid, &global_sid_Builtin);
 
93
}
 
94
 
 
95
/*****************************************************************
 
96
 Check if the SID is one of the builtin SIDs (S-1-5-32-a).
 
97
*****************************************************************/  
 
98
 
 
99
bool sid_check_is_in_builtin(const DOM_SID *sid)
 
100
{
 
101
        DOM_SID dom_sid;
 
102
        uint32 rid;
 
103
 
 
104
        sid_copy(&dom_sid, sid);
 
105
        sid_split_rid(&dom_sid, &rid);
 
106
        
 
107
        return sid_check_is_builtin(&dom_sid);
 
108
}
 
109