[Pkg-shadow-commits] r1861 - in upstream/trunk: . man man/login.defs.d src

nekral-guest at alioth.debian.org nekral-guest at alioth.debian.org
Mon Feb 25 21:03:47 UTC 2008


Author: nekral-guest
Date: 2008-02-25 21:03:46 +0000 (Mon, 25 Feb 2008)
New Revision: 1861

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/NEWS
   upstream/trunk/man/login.defs.d/USERGROUPS_ENAB.xml
   upstream/trunk/man/useradd.8.xml
   upstream/trunk/src/useradd.c
Log:
* NEWS, src/useradd.c, man/useradd.8.xml: Added options
  -user-group (-U, Uflg) and --no-user-group (-N, Nflg) to replace
  nflg.
* man/login.defs.d/USERGROUPS_ENAB.xml: useradd now also uses
  USERGROUPS_ENAB.


Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2008-02-24 21:50:16 UTC (rev 1860)
+++ upstream/trunk/ChangeLog	2008-02-25 21:03:46 UTC (rev 1861)
@@ -1,3 +1,12 @@
+2008-02-25  Nicolas François  <nicolas.francois at centraliens.net>
+
+	* NEWS, src/useradd.c, man/useradd.8.xml: Added options
+	--user-group (-U, Uflg) and --no-user-group (-N, Nflg) to replace
+	nflg.
+	* man/login.defs.d/USERGROUPS_ENAB.xml: useradd now also uses
+	USERGROUPS_ENAB.
+
+
 2008-02-19  Nicolas François  <nicolas.francois at centraliens.net>
 
 	* src/groupmod.c: Add missing 'p' to the getopt_long's optstring.

Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS	2008-02-24 21:50:16 UTC (rev 1860)
+++ upstream/trunk/NEWS	2008-02-25 21:03:46 UTC (rev 1861)
@@ -70,6 +70,10 @@
   * Document the --defaults option, which was already described in the
     useradd's Usage information.
   * New option -r, --system for system accounts.
+  * New options -U, --user-group and -N, --no-user-group. These options
+    should replace nflg from the previous versions. Please set any -n
+    option to deprecated because its meaning differs from one distribution
+    to the other.
 - usermod
   * Keep the access and modification time of files when moving an user's home
     directory.

Modified: upstream/trunk/man/login.defs.d/USERGROUPS_ENAB.xml
===================================================================
--- upstream/trunk/man/login.defs.d/USERGROUPS_ENAB.xml	2008-02-24 21:50:16 UTC (rev 1860)
+++ upstream/trunk/man/login.defs.d/USERGROUPS_ENAB.xml	2008-02-25 21:03:46 UTC (rev 1861)
@@ -7,8 +7,10 @@
       the same as gid, and username is the same as the primary group name.
     <para>
     </para>
-      If set to <replaceable>yes</replaceable>, userdel will remove the
-      user's group if it contains no more members.
+      If set to <replaceable>yes</replaceable>, <command>userdel</command>
+      will remove the user's group if it contains no more members, and
+      <command>useradd</command> will create by default a group with the
+      name of the user.
     </para>
   </listitem>
 </varlistentry>

Modified: upstream/trunk/man/useradd.8.xml
===================================================================
--- upstream/trunk/man/useradd.8.xml	2008-02-24 21:50:16 UTC (rev 1860)
+++ upstream/trunk/man/useradd.8.xml	2008-02-25 21:03:46 UTC (rev 1861)
@@ -7,8 +7,11 @@
 <!ENTITY PASS_MAX_DAYS         SYSTEM "login.defs.d/PASS_MAX_DAYS.xml">
 <!ENTITY PASS_MIN_DAYS         SYSTEM "login.defs.d/PASS_MIN_DAYS.xml">
 <!ENTITY PASS_WARN_AGE         SYSTEM "login.defs.d/PASS_WARN_AGE.xml">
+<!ENTITY SYS_GID_MAX           SYSTEM "login.defs.d/SYS_GID_MAX.xml">
+<!ENTITY SYS_UID_MAX           SYSTEM "login.defs.d/SYS_UID_MAX.xml">
 <!ENTITY UID_MAX               SYSTEM "login.defs.d/UID_MAX.xml">
 <!ENTITY UMASK                 SYSTEM "login.defs.d/UMASK.xml">
+<!ENTITY USERGROUPS_ENAB       SYSTEM "login.defs.d/USERGROUPS_ENAB.xml">
 ]>
 <refentry id='useradd.8'>
   <!--  $Id$ -->
@@ -240,6 +243,25 @@
       </varlistentry>
       <varlistentry>
 	<term>
+	  <option>-N</option>, <option>--no-user-group</option>
+	</term>
+	<listitem>
+	  <para>
+	    Do not create a group with the same name as the user, but
+	    add the user to the group specified by the <option>-g</option>
+	    option or by the GROUP variable in
+	    <filename>/etc/default/useradd</filename>.
+	  </para>
+	  <para>
+	    The default behavior (if the <option>-g</option>,
+	    <option>-N</option>, and <option>-U</option> options are not
+	    specified) is defined by the <option>USERGROUPS_ENAB</option>
+	    variable in <filename>login.defs</filename>.
+	  </para>
+	</listitem>
+      </varlistentry>
+      <varlistentry>
+	<term>
 	  <option>-o</option>, <option>--non-unique</option>
 	</term>
 	<listitem>
@@ -287,6 +309,23 @@
 	  </para>
 	</listitem>
       </varlistentry>
+      <varlistentry>
+	<term>
+	  <option>-U</option>, <option>--user-group</option>
+	</term>
+	<listitem>
+	  <para>
+	    Create a group with the same name as the user, and
+	    add the user to this group.
+	  </para>
+	  <para>
+	    The default behavior (if the <option>-g</option>,
+	    <option>-N</option>, and <option>-U</option> options are not
+	    specified) is defined by the <option>USERGROUPS_ENAB</option>
+	    variable in <filename>login.defs</filename>.
+	  </para>
+	</listitem>
+      </varlistentry>
     </variablelist>
 
     <refsect2 id='changing_the_default_values'>
@@ -405,8 +444,11 @@
       &PASS_MAX_DAYS;
       &PASS_MIN_DAYS;
       &PASS_WARN_AGE;
+      &SYS_GID_MAX; <!-- documents also SYS_GID_MIN -->
+      &SYS_UID_MAX; <!-- documents also SYS_UID_MIN -->
       &UID_MAX; <!-- documents also UID_MIN -->
       &UMASK;
+      &USERGROUPS_ENAB;
     </variablelist>
   </refsect1>
 

Modified: upstream/trunk/src/useradd.c
===================================================================
--- upstream/trunk/src/useradd.c	2008-02-24 21:50:16 UTC (rev 1860)
+++ upstream/trunk/src/useradd.c	2008-02-25 21:03:46 UTC (rev 1861)
@@ -126,11 +126,12 @@
     kflg = 0,			/* specify a directory to fill new user directory */
     lflg = 0,			/* do not add user to lastlog database file */
     mflg = 0,			/* create user's home directory if it doesn't exist */
-    nflg = 0,			/* create a group having the same name as the user */
+    Nflg = 0,			/* do not create a group having the same name as the user, but add the user to def_group (or the group specified with -g) */
     oflg = 0,			/* permit non-unique user ID to be specified with -u */
     rflg = 0,			/* create a system account */
     sflg = 0,			/* shell program for new account */
-    uflg = 0;			/* specify user ID for new account */
+    uflg = 0,			/* specify user ID for new account */
+    Uflg = 0;			/* create a group having the same name as the user */
 
 static int home_added;
 
@@ -633,6 +634,8 @@
 	         "                                faillog databases\n"
 	         "  -m, --create-home             create home directory for the new user\n"
 	         "                                account\n"
+	         "  -N, --no-user-group           do not create a group with the same name as\n"
+	         "                                the user\n"
 	         "  -o, --non-unique              allow create user with duplicate\n"
 	         "                                (non-unique) UID\n"
 	         "  -p, --password PASSWORD       use encrypted password for the new user\n"
@@ -640,6 +643,7 @@
 	         "  -r, --system                  create a system account\n"
 	         "  -s, --shell SHELL             the login shell for the new user account\n"
 	         "  -u, --uid UID                 force use the UID for the new user account\n"
+	         "  -U, --user-group              create a group with the same name as the user\n"
 	         "\n"), stderr);
 	exit (E_USAGE);
 }
@@ -850,15 +854,17 @@
 			{"skel", required_argument, NULL, 'k'},
 			{"key", required_argument, NULL, 'K'},
 			{"create-home", no_argument, NULL, 'm'},
+			{"no-user-group", no_argument, NULL, 'N'},
 			{"non-unique", no_argument, NULL, 'o'},
 			{"password", required_argument, NULL, 'p'},
 			{"system", no_argument, NULL, 'r'},
 			{"shell", required_argument, NULL, 's'},
 			{"uid", required_argument, NULL, 'u'},
+			{"user-group", no_argument, NULL, 'U'},
 			{NULL, 0, NULL, '\0'}
 		};
 		while ((c =
-			getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:lmMop:rs:u:",
+			getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:lmMNop:rs:u:U",
 				     long_options, NULL)) != -1) {
 			switch (c) {
 			case 'b':
@@ -998,6 +1004,9 @@
 			case 'm':
 				mflg++;
 				break;
+			case 'N':
+				Nflg++;
+				break;
 			case 'o':
 				oflg++;
 				break;
@@ -1033,6 +1042,9 @@
 				user_id = get_uid (optarg);
 				uflg++;
 				break;
+			case 'U':
+				Uflg++;
+				break;
 			default:
 				usage ();
 			}
@@ -1040,12 +1052,39 @@
 		}
 	}
 
+	if (!gflg && !Nflg && ! Uflg) {
+		/* Get the settings from login.defs */
+		Uflg = getdef_bool ("USERGROUPS_ENAB");
+	}
+
 	/*
 	 * Certain options are only valid in combination with others.
 	 * Check it here so that they can be specified in any order.
 	 */
-	if ((oflg && !uflg) || (kflg && !mflg))
+	if (oflg && !uflg) {
+		fprintf (stderr,
+		         _("%s: %s flag is ONLY allowed with the %s flag\n"),
+		         Prog, "-o", "-u");
 		usage ();
+	}
+	if (kflg && !mflg) {
+		fprintf (stderr,
+		         _("%s: %s flag is ONLY allowed with the %s flag\n"),
+		         Prog, "-k", "-m");
+		usage ();
+	}
+	if (Uflg && gflg) {
+		fprintf (stderr,
+		         _("%s: options %s and %s conflict\n"),
+		         Prog, "-U", "-g");
+		usage ();
+	}
+	if (Uflg && Nflg) {
+		fprintf (stderr,
+		         _("%s: options %s and %s conflict\n"),
+		         Prog, "-U", "-N");
+		usage ();
+	}
 
 	/*
 	 * Either -D or username is required. Defaults can be set with -D
@@ -1583,7 +1622,7 @@
 	 * to that group, use useradd -g username username.
 	 * --bero
 	 */
-	if (!gflg) {
+	if (Uflg) {
 		if (getgrnam (user_name)) { /* local, no need for xgetgrnam */
 			fprintf (stderr,
 				 _
@@ -1630,7 +1669,7 @@
 
 	/* do we have to add a group for that user? This is why we need to
 	 * open the group files in the open_files() function  --gafton */
-	if (!(nflg || gflg)) {
+	if (Uflg) {
 		if (find_new_gid (rflg, &user_gid, &user_id) < 0) {
 			fprintf (stderr,
 				 _("%s: can't create group\n"),




More information about the Pkg-shadow-commits mailing list