diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/utils/pdbedit.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c index 4f67cf7ab7..76c0196cf9 100644 --- a/source3/utils/pdbedit.c +++ b/source3/utils/pdbedit.c @@ -417,6 +417,8 @@ int main (int argc, char **argv) static char *config_file = dyn_CONFIGFILE; static char *new_debuglevel = NULL; static char *account_policy = NULL; + static long int account_policy_value = 0; + BOOL account_policy_value_set = False; struct pdb_context *in; poptContext pc; @@ -436,10 +438,10 @@ int main (int argc, char **argv) {"delete", 'x',POPT_ARG_VAL,&delete_user,1,"delete user",NULL}, {"import", 'i',POPT_ARG_STRING,&backend_in,0,"use different passdb backend",NULL}, {"export", 'e',POPT_ARG_STRING,&backend_out,0,"export user accounts to backend", NULL}, - {"debuglevel",'D', POPT_ARG_STRING, &new_debuglevel,0,"set debuglevel",NULL}, - {"configfile",'c',POPT_ARG_STRING, &config_file,0,"use different configuration file",NULL}, - {"account-policy-get",'P',POPT_ARG_STRING, &account_policy,0,"get the value of an account policy (like maximum password age)",NULL}, - + {"debuglevel", 'D',POPT_ARG_STRING, &new_debuglevel,0,"set debuglevel",NULL}, + {"configfile", 'c',POPT_ARG_STRING, &config_file,0,"use different configuration file",NULL}, + {"account-policy",'P',POPT_ARG_STRING, &account_policy,0,"value of an account policy (like maximum password age)",NULL}, + {"value", 'V',POPT_ARG_LONG, &account_policy_value,'V',"set the account policy to this value", NULL}, {0,0,0,0} }; @@ -448,7 +450,13 @@ int main (int argc, char **argv) pc = poptGetContext(NULL, argc, (const char **) argv, long_options, POPT_CONTEXT_KEEP_FIRST); - while((opt = poptGetNextOpt(pc)) != -1); + while((opt = poptGetNextOpt(pc)) != -1) { + switch (opt) { + case 'V': + account_policy_value_set = True; + break; + } + } if (new_debuglevel){ debug_parse_levels(new_debuglevel); @@ -480,8 +488,18 @@ int main (int argc, char **argv) fprintf(stderr, "valid account policy, but unable to fetch value!\n"); exit(1); } - printf("account policy value for %s is %u\n", account_policy, value); - exit(0); + if (account_policy_value_set) { + printf("account policy value for %s was %u\n", account_policy, value); + if (!account_policy_set(field, account_policy_value)){ + fprintf(stderr, "valid account policy, but unable to set value!\n"); + exit(1); + } + printf("account policy value for %s is now %lu\n", account_policy, account_policy_value); + exit(0); + } else { + printf("account policy value for %s is %u\n", account_policy, value); + exit(0); + } } if (!backend_in) { |