mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
r16344: Allow to set passwords directly when creating users via "net rpc user
add" (as the documentation says, and currently onle "net ads user add"
did). Fixes #3843.
Guenther
(This used to be commit 5d776d5fab
)
This commit is contained in:
parent
0f14e3eb8d
commit
c893dfa500
@ -73,7 +73,7 @@ int net_help_user(int argc, const char **argv)
|
|||||||
"\n\tDelete specified user\n");
|
"\n\tDelete specified user\n");
|
||||||
d_printf("\nnet [<method>] user INFO <name> [misc. options] [targets]"\
|
d_printf("\nnet [<method>] user INFO <name> [misc. options] [targets]"\
|
||||||
"\n\tList the domain groups of the specified user\n");
|
"\n\tList the domain groups of the specified user\n");
|
||||||
d_printf("\nnet [<method>] user ADD <name> [-c container] "\
|
d_printf("\nnet [<method>] user ADD <name> [password] [-c container] "\
|
||||||
"[-F user flags] [misc. options]"\
|
"[-F user flags] [misc. options]"\
|
||||||
" [targets]\n\tAdd specified user\n");
|
" [targets]\n\tAdd specified user\n");
|
||||||
d_printf("\nnet [<method>] user RENAME <oldusername> <newusername>"\
|
d_printf("\nnet [<method>] user RENAME <oldusername> <newusername>"\
|
||||||
|
@ -583,7 +583,7 @@ static NTSTATUS rpc_user_add_internals(const DOM_SID *domain_sid,
|
|||||||
uint32 acb_info;
|
uint32 acb_info;
|
||||||
uint32 unknown, user_rid;
|
uint32 unknown, user_rid;
|
||||||
|
|
||||||
if (argc != 1) {
|
if (argc < 1) {
|
||||||
d_printf("User must be specified\n");
|
d_printf("User must be specified\n");
|
||||||
rpc_user_usage(argc, argv);
|
rpc_user_usage(argc, argv);
|
||||||
return NT_STATUS_OK;
|
return NT_STATUS_OK;
|
||||||
@ -620,6 +620,60 @@ static NTSTATUS rpc_user_add_internals(const DOM_SID *domain_sid,
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argc == 2) {
|
||||||
|
|
||||||
|
uint32 *user_rids, num_rids, *name_types;
|
||||||
|
uint32 flags = 0x000003e8; /* Unknown */
|
||||||
|
SAM_USERINFO_CTR ctr;
|
||||||
|
SAM_USER_INFO_24 p24;
|
||||||
|
uchar pwbuf[516];
|
||||||
|
|
||||||
|
result = rpccli_samr_lookup_names(pipe_hnd, mem_ctx, &domain_pol,
|
||||||
|
flags, 1, &acct_name,
|
||||||
|
&num_rids, &user_rids,
|
||||||
|
&name_types);
|
||||||
|
|
||||||
|
if (!NT_STATUS_IS_OK(result)) {
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = rpccli_samr_open_user(pipe_hnd, mem_ctx, &domain_pol,
|
||||||
|
MAXIMUM_ALLOWED_ACCESS,
|
||||||
|
user_rids[0], &user_pol);
|
||||||
|
|
||||||
|
if (!NT_STATUS_IS_OK(result)) {
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set password on account */
|
||||||
|
|
||||||
|
ZERO_STRUCT(ctr);
|
||||||
|
ZERO_STRUCT(p24);
|
||||||
|
|
||||||
|
encode_pw_buffer(pwbuf, argv[1], STR_UNICODE);
|
||||||
|
|
||||||
|
init_sam_user_info24(&p24, (char *)pwbuf,24);
|
||||||
|
|
||||||
|
ctr.switch_value = 24;
|
||||||
|
ctr.info.id24 = &p24;
|
||||||
|
|
||||||
|
result = rpccli_samr_set_userinfo(pipe_hnd, mem_ctx, &user_pol, 24,
|
||||||
|
&cli->user_session_key, &ctr);
|
||||||
|
|
||||||
|
if (!NT_STATUS_IS_OK(result)) {
|
||||||
|
d_fprintf(stderr, "Failed to set password for user %s - %s\n",
|
||||||
|
acct_name, nt_errstr(result));
|
||||||
|
|
||||||
|
result = rpccli_samr_delete_dom_user(pipe_hnd, mem_ctx, &user_pol);
|
||||||
|
|
||||||
|
if (!NT_STATUS_IS_OK(result)) {
|
||||||
|
d_fprintf(stderr, "Failed to delete user %s - %s\n",
|
||||||
|
acct_name, nt_errstr(result));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
done:
|
done:
|
||||||
if (!NT_STATUS_IS_OK(result)) {
|
if (!NT_STATUS_IS_OK(result)) {
|
||||||
d_fprintf(stderr, "Failed to add user %s - %s\n", acct_name,
|
d_fprintf(stderr, "Failed to add user %s - %s\n", acct_name,
|
||||||
|
Loading…
Reference in New Issue
Block a user