summaryrefslogtreecommitdiff
path: root/source3/utils/net.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2003-08-28 20:24:25 +0000
committerGerald Carter <jerry@samba.org>2003-08-28 20:24:25 +0000
commit494bb81bb047863f612f98e93720cf36d6c3f024 (patch)
tree8abcc5e1a50166646fdaf2dd5f1f981d5407ce18 /source3/utils/net.c
parentbda60c71c1b2a486d0c5b36aeed0df62e18b448e (diff)
downloadsamba-494bb81bb047863f612f98e93720cf36d6c3f024.tar.gz
samba-494bb81bb047863f612f98e93720cf36d6c3f024.tar.bz2
samba-494bb81bb047863f612f98e93720cf36d6c3f024.zip
fixing typos pointed out by Vance in WHATSNEW
Include patch to manually set the machine trust account password (on request from jht) to mimic 2.2. behavior. last changes before RC2 (not counting syncing the docs). (This used to be commit ce090371449097d4e5010e1219d449db8b0ccac5)
Diffstat (limited to 'source3/utils/net.c')
-rw-r--r--source3/utils/net.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/source3/utils/net.c b/source3/utils/net.c
index c49c77dd50..90f71f5035 100644
--- a/source3/utils/net.c
+++ b/source3/utils/net.c
@@ -79,6 +79,30 @@ struct in_addr opt_dest_ip;
extern BOOL AllowDebugChange;
+/**************************************************************************************************/
+/* Utility function to prompt for password from stdin. Password entered must end with a newline. */
+/**************************************************************************************************/
+static char *stdin_new_passwd(void)
+{
+ static fstring new_pw;
+ size_t len;
+
+ ZERO_ARRAY(new_pw);
+
+ /*
+ * if no error is reported from fgets() and string at least contains
+ * the newline that ends the password, then replace the newline with
+ * a null terminator.
+ */
+ if ( fgets(new_pw, sizeof(new_pw), stdin) != NULL) {
+ if ((len = strlen(new_pw)) > 0) {
+ if(new_pw[len-1] == '\n')
+ new_pw[len - 1] = 0;
+ }
+ }
+ return(new_pw);
+}
+
uint32 get_sec_channel_type(const char *param)
{
if (!(param && *param)) {
@@ -355,6 +379,33 @@ static int net_changetrustpw(int argc, const char **argv)
return net_rpc_changetrustpw(argc, argv);
}
+static int net_changesecretpw(int argc, const char **argv)
+{
+ char *trust_pw;
+ char trust_pw_hash[16];
+ uint32 sec_channel_type = SEC_CHAN_WKSTA;
+
+
+ if(opt_force) {
+ trust_pw = getpass("Enter machine password: ");
+
+ if (!secrets_store_machine_password(trust_pw, lp_workgroup(), sec_channel_type)) {
+ d_printf("Unable to write the machine account password in the secrets database");
+ return 1;
+ }
+ else {
+ d_printf("Modified trust account password in secrets database\n");
+ }
+ }
+ else {
+ d_printf("Machine account password change requires the -f flag.\n");
+ d_printf("Do NOT use this function unless you know what it does!\n");
+ d_printf("This function will change the ADS Domain member machine account password in the secrets.tdb file!\n");
+ }
+
+ return 0;
+}
+
static int net_share(int argc, const char **argv)
{
if (net_rpc_check(0))
@@ -537,6 +588,7 @@ static struct functable net_func[] = {
{"SERVICE", net_rap_service},
{"PASSWORD", net_rap_password},
{"CHANGETRUSTPW", net_changetrustpw},
+ {"CHANGESECRETPW", net_changesecretpw},
{"TIME", net_time},
{"LOOKUP", net_lookup},
{"JOIN", net_join},