[SCM] Samba Shared Repository - branch v3-4-test updated - release-4-0-0alpha7-1147-ga291e88

Karolin Seeger kseeger at samba.org
Thu Jun 18 09:44:27 GMT 2009


The branch, v3-4-test has been updated
       via  a291e88019771bb2703bf9854483404a6ee8d622 (commit)
       via  4d189ed0be01d71689731d315b53d8ba1d158be3 (commit)
      from  86adaae8ea12a88e6f7e84de4c645f237730da1c (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test


- Log -----------------------------------------------------------------
commit a291e88019771bb2703bf9854483404a6ee8d622
Author: Karolin Seeger <kseeger at samba.org>
Date:   Thu Jun 18 09:32:10 2009 +0200

    s3/docs: Add documentation for 'net sam rights'.
    
    This is part of a fix for bug #6328.
    
    Karolin
    (cherry picked from commit e912764a5e0c1f05f921667eb56ef58552de454b)

commit 4d189ed0be01d71689731d315b53d8ba1d158be3
Author: David Markey <admin at dmarkey.com>
Date:   Wed Jun 17 18:29:20 2009 +0200

    s3-net: Fix Bug #6328: support "net sam rights grant/revoke" with multiple rights.
    
    David
    
    Signed-off-by: Günther Deschner <gd at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 docs-xml/manpages-3/net.8.xml |   27 +++++++++++++++++
 source3/utils/net_sam.c       |   64 +++++++++++++++++++++++-----------------
 2 files changed, 64 insertions(+), 27 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages-3/net.8.xml b/docs-xml/manpages-3/net.8.xml
index b6e7042..a0cba83 100644
--- a/docs-xml/manpages-3/net.8.xml
+++ b/docs-xml/manpages-3/net.8.xml
@@ -1056,6 +1056,33 @@ the rid and description is also provided for each account.
 </refsect2>
 
 <refsect2>
+<title>SAM RIGHTS LIST</title>
+
+<para>
+List all available privileges.
+</para>
+
+</refsect2>
+
+<refsect2>
+<title>SAM RIGHTS GRANT &lt;NAME&gt; &lt;PRIVILEGE&gt;</title>
+
+<para>
+Grant one or more privileges to a user.
+</para>
+
+</refsect2>
+
+<refsect2>
+<title>SAM RIGHTS REVOKE &lt;NAME&gt; &lt;PRIVILEGE&gt;</title>
+
+<para>
+Revoke one or more privileges from a user.
+</para>
+
+</refsect2>
+
+<refsect2>
 <title>SAM SHOW &lt;NAME&gt;</title>
 
 <para>
diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c
index 6b3f5e5..7427ba9 100644
--- a/source3/utils/net_sam.c
+++ b/source3/utils/net_sam.c
@@ -678,63 +678,73 @@ static int net_sam_rights_grant(struct net_context *c, int argc,
 	enum lsa_SidType type;
 	const char *dom, *name;
 	SE_PRIV mask;
+	int i;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc < 2 || c->display_usage) {
 		d_fprintf(stderr, "usage: net sam rights grant <name> "
-			  "<right>\n");
+			"<rights> ...\n");
 		return -1;
 	}
 
 	if (!lookup_name(talloc_tos(), argv[0], LOOKUP_NAME_LOCAL,
-			 &dom, &name, &sid, &type)) {
+			&dom, &name, &sid, &type)) {
 		d_fprintf(stderr, "Could not find name %s\n", argv[0]);
 		return -1;
 	}
 
-	if (!se_priv_from_name(argv[1], &mask)) {
-		d_fprintf(stderr, "%s unknown\n", argv[1]);
-		return -1;
-	}
+	for (i=1; i < argc; i++) {
+		if (!se_priv_from_name(argv[i], &mask)) {
+			d_fprintf(stderr, "%s unknown\n", argv[i]);
+			return -1;
+		}
 
-	if (!grant_privilege(&sid, &mask)) {
-		d_fprintf(stderr, "Could not grant privilege\n");
-		return -1;
+		if (!grant_privilege(&sid, &mask)) {
+			d_fprintf(stderr, "Could not grant privilege\n");
+			return -1;
+		}
+
+		d_printf("Granted %s to %s\\%s\n", argv[i], dom, name);
 	}
 
-	d_printf("Granted %s to %s\\%s\n", argv[1], dom, name);
 	return 0;
 }
 
-static int net_sam_rights_revoke(struct net_context *c, int argc, const char **argv)
+static int net_sam_rights_revoke(struct net_context *c, int argc,
+				const char **argv)
 {
 	DOM_SID sid;
 	enum lsa_SidType type;
 	const char *dom, *name;
 	SE_PRIV mask;
+	int i;
 
-	if (argc != 2 || c->display_usage) {
+	if (argc < 2 || c->display_usage) {
 		d_fprintf(stderr, "usage: net sam rights revoke <name> "
-			  "<right>\n");
+			"<rights>\n");
 		return -1;
 	}
 
 	if (!lookup_name(talloc_tos(), argv[0], LOOKUP_NAME_LOCAL,
-			 &dom, &name, &sid, &type)) {
+			&dom, &name, &sid, &type)) {
 		d_fprintf(stderr, "Could not find name %s\n", argv[0]);
 		return -1;
 	}
 
-	if (!se_priv_from_name(argv[1], &mask)) {
-		d_fprintf(stderr, "%s unknown\n", argv[1]);
-		return -1;
-	}
+	for (i=1; i < argc; i++) {
 
-	if (!revoke_privilege(&sid, &mask)) {
-		d_fprintf(stderr, "Could not revoke privilege\n");
-		return -1;
+		if (!se_priv_from_name(argv[i], &mask)) {
+			d_fprintf(stderr, "%s unknown\n", argv[i]);
+			return -1;
+		}
+
+		if (!revoke_privilege(&sid, &mask)) {
+			d_fprintf(stderr, "Could not revoke privilege\n");
+			return -1;
+		}
+
+		d_printf("Revoked %s from %s\\%s\n", argv[i], dom, name);
 	}
 
-	d_printf("Revoked %s from %s\\%s\n", argv[1], dom, name);
 	return 0;
 }
 
@@ -753,17 +763,17 @@ static int net_sam_rights(struct net_context *c, int argc, const char **argv)
 			"grant",
 			net_sam_rights_grant,
 			NET_TRANSPORT_LOCAL,
-			"Grant a right",
+			"Grant right(s)",
 			"net sam rights grant\n"
-			"    Grant a right"
+			"    Grant right(s)"
 		},
 		{
 			"revoke",
 			net_sam_rights_revoke,
 			NET_TRANSPORT_LOCAL,
-			"Revoke a right",
+			"Revoke right(s)",
 			"net sam rights revoke\n"
-			"    Revoke a right"
+			"    Revoke right(s)"
 		},
 		{NULL, NULL, 0, NULL, NULL}
 	};


-- 
Samba Shared Repository


More information about the samba-cvs mailing list