summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-06-13 03:04:00 +0000
committerJeremy Allison <jra@samba.org>1998-06-13 03:04:00 +0000
commit5b5eb35c91ec400a25f6e6cf3eec421bd9560d50 (patch)
treea7aa131aee2c7edc96b204b3fb7a790bbd42c1ba /source3/rpc_server
parenta32ad6733bfdd0e6b2603df665544f10813f645f (diff)
downloadsamba-5b5eb35c91ec400a25f6e6cf3eec421bd9560d50.tar.gz
samba-5b5eb35c91ec400a25f6e6cf3eec421bd9560d50.tar.bz2
samba-5b5eb35c91ec400a25f6e6cf3eec421bd9560d50.zip
Makefile: Added ubi_sLinkList.o as the groupname.o file needs it. Added groupname.o
includes.h: Added ubi_sLinkList.h include. loadparm.c: Added groupname map parameter. password.c: Fix HPUX big_crypt. username.c: New user_in_list() code. Moved groupname map code to groupname.c lib/rpc/server/srv_util.c: Added lookup_wellknown_sid_from_name(). New groupname map stuff. Note that nothing currently uses this but at compiles ok. Jeremy. (This used to be commit beef636a4d772457816ef068c62ea965d07131f6)
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/srv_util.c87
1 files changed, 63 insertions, 24 deletions
diff --git a/source3/rpc_server/srv_util.c b/source3/rpc_server/srv_util.c
index e05a964c9f..c316661146 100644
--- a/source3/rpc_server/srv_util.c
+++ b/source3/rpc_server/srv_util.c
@@ -42,44 +42,83 @@
#include "nterr.h"
extern int DEBUGLEVEL;
+extern DOM_SID global_machine_sid;
/*
* A list of the rids of well known BUILTIN and Domain users
* and groups.
*/
-rid_name builtin_alias_rids[] =
-{
- { BUILTIN_ALIAS_RID_ADMINS , "Administrators" },
- { BUILTIN_ALIAS_RID_USERS , "Users" },
- { BUILTIN_ALIAS_RID_GUESTS , "Guests" },
- { BUILTIN_ALIAS_RID_POWER_USERS , "Power Users" },
-
- { BUILTIN_ALIAS_RID_ACCOUNT_OPS , "Account Operators" },
- { BUILTIN_ALIAS_RID_SYSTEM_OPS , "System Operators" },
- { BUILTIN_ALIAS_RID_PRINT_OPS , "Print Operators" },
- { BUILTIN_ALIAS_RID_BACKUP_OPS , "Backup Operators" },
- { BUILTIN_ALIAS_RID_REPLICATOR , "Replicator" },
- { 0 , NULL }
+rid_name builtin_alias_rids[] =
+{
+ { BUILTIN_ALIAS_RID_ADMINS , "Administrators" },
+ { BUILTIN_ALIAS_RID_USERS , "Users" },
+ { BUILTIN_ALIAS_RID_GUESTS , "Guests" },
+ { BUILTIN_ALIAS_RID_POWER_USERS , "Power Users" },
+
+ { BUILTIN_ALIAS_RID_ACCOUNT_OPS , "Account Operators" },
+ { BUILTIN_ALIAS_RID_SYSTEM_OPS , "System Operators" },
+ { BUILTIN_ALIAS_RID_PRINT_OPS , "Print Operators" },
+ { BUILTIN_ALIAS_RID_BACKUP_OPS , "Backup Operators" },
+ { BUILTIN_ALIAS_RID_REPLICATOR , "Replicator" },
+ { 0 , NULL }
};
/* array lookup of well-known Domain RID users. */
-rid_name domain_user_rids[] =
-{
- { DOMAIN_USER_RID_ADMIN , "Administrator" },
- { DOMAIN_USER_RID_GUEST , "Guest" },
- { 0 , NULL }
+rid_name domain_user_rids[] =
+{
+ { DOMAIN_USER_RID_ADMIN , "Administrator" },
+ { DOMAIN_USER_RID_GUEST , "Guest" },
+ { 0 , NULL }
};
/* array lookup of well-known Domain RID groups. */
-rid_name domain_group_rids[] =
-{
- { DOMAIN_GROUP_RID_ADMINS , "Domain Admins" },
- { DOMAIN_GROUP_RID_USERS , "Domain Users" },
- { DOMAIN_GROUP_RID_GUESTS , "Domain Guests" },
- { 0 , NULL }
+rid_name domain_group_rids[] =
+{
+ { DOMAIN_GROUP_RID_ADMINS , "Domain Admins" },
+ { DOMAIN_GROUP_RID_USERS , "Domain Users" },
+ { DOMAIN_GROUP_RID_GUESTS , "Domain Guests" },
+ { 0 , NULL }
};
+/**************************************************************************
+ Check if a name matches any of the well known SID values.
+***************************************************************************/
+
+BOOL lookup_wellknown_sid_from_name(char *windows_name, DOM_SID *psid)
+{
+ rid_name *rnp;
+ int i;
+
+ for( i = 0; builtin_alias_rids[i].name != NULL; i++) {
+ rnp = &builtin_alias_rids[i];
+ if(strequal(rnp->name, windows_name)) {
+ string_to_sid( psid, "S-1-5-32" );
+ psid->sub_auths[psid->num_auths++] = rnp->rid;
+ return True;
+ }
+ }
+
+ for( i = 0; domain_user_rids[i].name != NULL; i++ ) {
+ rnp = &domain_user_rids[i];
+ if(strequal(rnp->name, windows_name)) {
+ *psid = global_machine_sid;
+ psid->sub_auths[psid->num_auths++] = rnp->rid;
+ return True;
+ }
+ }
+
+ for( i = 0; domain_group_rids[i].name != NULL; i++ ) {
+ rnp = &domain_group_rids[i];
+ if(strequal(rnp->name, windows_name)) {
+ *psid = global_machine_sid;
+ psid->sub_auths[psid->num_auths++] = rnp->rid;
+ return True;
+ }
+ }
+
+ return False;
+}
int make_dom_gids(char *gids_str, DOM_GID **ppgids)
{