]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
r4866: Add createdomgroup to rpcclient (needed to generate huge amounts of
authorGünther Deschner <gd@samba.org>
Thu, 20 Jan 2005 13:49:34 +0000 (13:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:54:00 +0000 (10:54 -0500)
groups when 'net rpc group add' is just to slow).

Guenther

source/rpcclient/cmd_samr.c

index c7347534cdc3d213e1901400858124ffb787f608..224d40ea745cd9d13f71ee4143f583c130885cc7 100644 (file)
@@ -1215,6 +1215,57 @@ static NTSTATUS cmd_samr_create_dom_user(struct cli_state *cli,
        return result;
 }
 
+/* Create domain group */
+
+static NTSTATUS cmd_samr_create_dom_group(struct cli_state *cli, 
+                                          TALLOC_CTX *mem_ctx,
+                                          int argc, const char **argv) 
+{
+       POLICY_HND connect_pol, domain_pol, group_pol;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+       const char *grp_name;
+       uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
+
+       if ((argc < 2) || (argc > 3)) {
+               printf("Usage: %s groupname [access mask]\n", argv[0]);
+               return NT_STATUS_OK;
+       }
+
+       grp_name = argv[1];
+       
+       if (argc > 2)
+                sscanf(argv[2], "%x", &access_mask);
+
+       /* Get sam policy handle */
+
+       result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS, 
+                                  &connect_pol);
+
+       if (!NT_STATUS_IS_OK(result))
+               goto done;
+
+       /* Get domain policy handle */
+
+       result = cli_samr_open_domain(cli, mem_ctx, &connect_pol,
+                                     access_mask,
+                                     &domain_sid, &domain_pol);
+
+       if (!NT_STATUS_IS_OK(result))
+               goto done;
+
+       /* Create domain user */
+
+       result = cli_samr_create_dom_group(cli, mem_ctx, &domain_pol,
+                                          grp_name, MAXIMUM_ALLOWED_ACCESS,
+                                          &group_pol);
+
+       if (!NT_STATUS_IS_OK(result))
+               goto done;
+
+ done:
+       return result;
+}
+
 /* Lookup sam names */
 
 static NTSTATUS cmd_samr_lookup_names(struct cli_state *cli, 
@@ -1575,6 +1626,7 @@ struct cmd_set samr_commands[] = {
        { "enumalsgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_als_groups,       NULL, PI_SAMR,      "Enumerate alias groups",  "" },
 
        { "createdomuser",      RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_user,       NULL, PI_SAMR,      "Create domain user",      "" },
+       { "createdomgroup",     RPC_RTYPE_NTSTATUS, cmd_samr_create_dom_group,      NULL, PI_SAMR,      "Create domain group",     "" },
        { "samlookupnames",     RPC_RTYPE_NTSTATUS, cmd_samr_lookup_names,          NULL, PI_SAMR,      "Look up names",           "" },
        { "samlookuprids",      RPC_RTYPE_NTSTATUS, cmd_samr_lookup_rids,           NULL, PI_SAMR,      "Look up names",           "" },
        { "deletedomuser",      RPC_RTYPE_NTSTATUS, cmd_samr_delete_dom_user,       NULL, PI_SAMR,      "Delete domain user",      "" },