summaryrefslogtreecommitdiff
path: root/source3/lib
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1997-10-21 18:25:14 +0000
committerLuke Leighton <lkcl@samba.org>1997-10-21 18:25:14 +0000
commitefe9b26a7b08cc9ea02cad32a847f71773a6edc4 (patch)
tree5a3bc973513848a72ba722b0d8d3e67bd0a8c0fc /source3/lib
parent0083afc90e928f2fa55be3936d51474bb97daf2e (diff)
downloadsamba-efe9b26a7b08cc9ea02cad32a847f71773a6edc4.tar.gz
samba-efe9b26a7b08cc9ea02cad32a847f71773a6edc4.tar.bz2
samba-efe9b26a7b08cc9ea02cad32a847f71773a6edc4.zip
loadparm.c :
added "domain admin users" parameter added "domain guest users" parameter these two complement the "domain groups" parameter. the "domain groups" parameter should be for your own groups, and well-known aliases. util.c : added ability to do "domain groups = power_users admin_users backup_ops" which are well-known RID aliases, not well-known RID groups. pipenetlog.c : combine the "domain admin users"; "domain guest users" and "domain groups" parameters to give an array of RID groups to include in the SAM Logon response. ipc.c smb.h : moved REALLOC() into smb.h added RID #defines. proto.h: usual. (This used to be commit f2554f231d1f59f30224adcc02b2b3ca4c24e0dd)
Diffstat (limited to 'source3/lib')
-rw-r--r--source3/lib/util.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c
index ec0f9f0efc..96c0774e92 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -4509,6 +4509,28 @@ char *tab_depth(int depth)
return spaces;
}
+
+/* array lookup of well-known RID aliases. the purpose of these escapes me.. */
+static struct
+{
+ uint32 rid;
+ char *rid_name;
+
+} rid_lookups[] =
+{
+ { DOMAIN_ALIAS_RID_ADMINS , "admins" },
+ { DOMAIN_ALIAS_RID_USERS , "users" },
+ { DOMAIN_ALIAS_RID_GUESTS , "guests" },
+ { DOMAIN_ALIAS_RID_POWER_USERS , "power_users" },
+
+ { DOMAIN_ALIAS_RID_ACCOUNT_OPS , "account_ops" },
+ { DOMAIN_ALIAS_RID_SYSTEM_OPS , "system_ops" },
+ { DOMAIN_ALIAS_RID_PRINT_OPS , "print_ops" },
+ { DOMAIN_ALIAS_RID_BACKUP_OPS , "backup_ops" },
+ { DOMAIN_ALIAS_RID_REPLICATOR , "replicator" },
+ { 0 , NULL }
+};
+
int make_domain_gids(char *gids_str, DOM_GID *gids)
{
char *ptr;
@@ -4523,12 +4545,26 @@ int make_domain_gids(char *gids_str, DOM_GID *gids)
{
/* the entries are of the form GID/ATTR, ATTR being optional.*/
char *attr;
+ uint32 rid = 0;
+ int i;
attr = strchr(s2,'/');
if (attr) *attr++ = 0;
if (!attr || !*attr) attr = "7"; /* default value for attribute is 7 */
- gids[count].gid = atoi(s2);
+ /* look up the RID string and see if we can turn it into a rid number */
+ for (i = 0; rid_lookups[i].rid_name != NULL; i++)
+ {
+ if (strequal(rid_lookups[i].rid_name, s2))
+ {
+ rid = rid_lookups[i].rid;
+ break;
+ }
+ }
+
+ if (rid == 0) rid = atoi(s2);
+
+ gids[count].gid = rid;
gids[count].attr = atoi(attr);
DEBUG(5,("group id: %d attr: %d\n", gids[count].gid, gids[count].attr));
@@ -4536,3 +4572,4 @@ int make_domain_gids(char *gids_str, DOM_GID *gids)
return count;
}
+