r15646: Implement an setdomainsid command as well
authorSimo Sorce <idra@samba.org>
Tue, 16 May 2006 17:40:28 +0000 (17:40 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:17:05 +0000 (11:17 -0500)
source/utils/net.c
source/utils/net_help.c

index 4c7a6280f46f66f021c67c6698678c52208cb29e..27b64aa96e55b3cd107ab083df9b13b70b17d202 100644 (file)
@@ -596,6 +596,26 @@ static int net_setlocalsid(int argc, const char **argv)
        return 0;
 }
 
+static int net_setdomainsid(int argc, const char **argv)
+{
+       DOM_SID sid;
+
+       if ( (argc != 1)
+            || (strncmp(argv[0], "S-1-5-21-", strlen("S-1-5-21-")) != 0)
+            || (!string_to_sid(&sid, argv[0]))
+            || (sid.num_auths != 4)) {
+               d_printf("usage: net setdomainsid S-1-5-21-x-y-z\n");
+               return 1;
+       }
+
+       if (!secrets_store_domain_sid(lp_workgroup(), &sid)) {
+               DEBUG(0,("Can't store domain SID.\n"));
+               return 1;
+       }
+
+       return 0;
+}
+
 static int net_getdomainsid(int argc, const char **argv)
 {
        DOM_SID domain_sid;
@@ -793,6 +813,7 @@ static struct functable net_func[] = {
        {"CACHE", net_cache},
        {"GETLOCALSID", net_getlocalsid},
        {"SETLOCALSID", net_setlocalsid},
+       {"SETDOMAINSID", net_setdomainsid},
        {"GETDOMAINSID", net_getdomainsid},
        {"MAXRID", net_maxrid},
        {"IDMAP", net_idmap},
index 79062345ab69841b9b66d0235d7c08d2c63077fd..40892ab0911ea8678b1c63e780b323b36f0ad5e2 100644 (file)
@@ -61,7 +61,7 @@ static int help_usage(int argc, const char **argv)
 "Valid functions are:\n"\
 "  RPC RAP ADS FILE SHARE SESSION SERVER DOMAIN PRINTQ USER GROUP VALIDATE\n"\
 "  GROUPMEMBER ADMIN SERVICE PASSWORD TIME LOOKUP GETLOCALSID SETLOCALSID\n"\
-"  CHANGESCRETPW LOOKUP SAM\n");
+"  SETDOMAINSID CHANGESCRETPW LOOKUP SAM\n");
        return -1;
 }
 
@@ -230,6 +230,7 @@ static int net_usage(int argc, const char **argv)
                 "  net cache\t\tto operate on cache tdb file\n"\
                 "  net getlocalsid [NAME]\tto get the SID for local name\n"\
                 "  net setlocalsid SID\tto set the local domain SID\n"\
+                "  net setdomainsid SID\tto set the domain SID on member servers\n"\
                 "  net changesecretpw\tto change the machine password in the local secrets database only\n"\
                 "                    \tthis requires the -f flag as a safety barrier\n"\
                 "  net status\t\tShow server status\n"\