* NEWS, etc/login.defs: New CREATE_HOME variable to tell useradd

to create a home directory for new users.
	* src/useradd.c, man/useradd.8.xml: New -M/--no-create-home option
	and CREATE_HOME usage. System accounts are not impacted by
	CREATE_HOME.
	* man/useradd.8.xml: Indicate that a new group is created by
	default.
	* src/useradd.c: Removed TODO item (moved to the TODO file).
This commit is contained in:
nekral-guest 2008-09-13 11:55:41 +00:00
parent d1f92a2225
commit b18d46e68d
5 changed files with 80 additions and 21 deletions

View File

@ -1,3 +1,14 @@
2008-09-11 Nicolas François <nicolas.francois@centraliens.net>
* NEWS, etc/login.defs: New CREATE_HOME variable to tell useradd
to create a home directory for new users.
* src/useradd.c, man/useradd.8.xml: New -M/--no-create-home option
and CREATE_HOME usage. System accounts are not impacted by
CREATE_HOME.
* man/useradd.8.xml: Indicate that a new group is created by
default.
* src/useradd.c: Removed TODO item (moved to the TODO file).
2008-09-11 Miroslav Kuře <kurem@debian.cz> 2008-09-11 Miroslav Kuře <kurem@debian.cz>
* po/cs.po: Updated Czech translation. * po/cs.po: Updated Czech translation.

5
NEWS
View File

@ -16,6 +16,9 @@ shadow-4.1.2.1 -> shadow-4.1.3 UNRELEASED
* Speed improvement in case UID_MAX/SYS_UID_MAX/GID_MAX/SYS_GID_MAX is * Speed improvement in case UID_MAX/SYS_UID_MAX/GID_MAX/SYS_GID_MAX is
used for an user/group. This should be noticeable in case of LDAP used for an user/group. This should be noticeable in case of LDAP
configured systems. This should impact useradd, groupadd, and newusers configured systems. This should impact useradd, groupadd, and newusers
- /etc/login.defs
* New CREATE_HOME variable to tell useradd to create a home directory by
default.
- gpasswd - gpasswd
* Added support for long options --add (-a), --delete (-d), * Added support for long options --add (-a), --delete (-d),
@ -48,6 +51,8 @@ shadow-4.1.2.1 -> shadow-4.1.3 UNRELEASED
- useradd - useradd
* audit logging improvements. * audit logging improvements.
* Speedup (see "addition of users or groups" above). * Speedup (see "addition of users or groups" above).
* See CREATE_HOME above.
* New -M/--no-create-home option to disable CREATE_HOME.
- userdel - userdel
* audit logging improvements. * audit logging improvements.
- usermod - usermod

View File

@ -367,3 +367,12 @@ USERGROUPS_ENAB yes
# 0 is the default value and disables this feature. # 0 is the default value and disables this feature.
# #
#MAX_MEMBERS_PER_GROUP 0 #MAX_MEMBERS_PER_GROUP 0
#
# If useradd should create home directories for users by default (non
# system users only)
# This option is overridden with the -M or -m flags on the useradd command
# line.
#
#CREATE_HOME yes

View File

@ -56,6 +56,11 @@
will update system files and may also create the new user's home will update system files and may also create the new user's home
directory and copy initial files. directory and copy initial files.
</para> </para>
<para>
By default, a group will also be created for the new user (see
<option>-g</option>, <option>-N</option>, <option>-U</option>, and
<option>USERGROUPS_ENAB</option>).
</para>
</refsect1> </refsect1>
<refsect1 id='options'> <refsect1 id='options'>
@ -293,6 +298,19 @@
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>
<option>-M</option>
</term>
<listitem>
<para>
Do no create the user's home directory, even if the system
wide setting from <filename>/etc/login.defs</filename>
(<option>CREATE_HOME</option>) is set to
<replaceable>yes</replaceable>.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
<option>-N</option>, <option>--no-user-group</option> <option>-N</option>, <option>--no-user-group</option>
@ -354,6 +372,14 @@
<option>UID_MIN</option>-<option>UID_MAX</option> (and their <option>UID_MIN</option>-<option>UID_MAX</option> (and their
<option>GID</option> counterparts for the creation of groups). <option>GID</option> counterparts for the creation of groups).
</para> </para>
<para>
Note that <command>useradd</command> will not create a home
directory for such an user, regardless of the default setting
in <filename>/etc/login.defs</filename>
(<option>CREATE_HOME</option>). You have to specify the
<option>-m</option> options if you want a home directory for a
system account to be created.
</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>

View File

@ -724,6 +724,8 @@ static void usage (void)
" faillog databases\n" " faillog databases\n"
" -m, --create-home create home directory for the new user\n" " -m, --create-home create home directory for the new user\n"
" account\n" " account\n"
" -M, --no-create-home do not create user's home directory\n"
" (overrides /etc/login.defs)\n"
" -N, --no-user-group do not create a group with the same name as\n" " -N, --no-user-group do not create a group with the same name as\n"
" the user\n" " the user\n"
" -o, --non-unique allow create user with duplicate\n" " -o, --non-unique allow create user with duplicate\n"
@ -983,6 +985,7 @@ static void process_flags (int argc, char **argv)
{"skel", required_argument, NULL, 'k'}, {"skel", required_argument, NULL, 'k'},
{"key", required_argument, NULL, 'K'}, {"key", required_argument, NULL, 'K'},
{"create-home", no_argument, NULL, 'm'}, {"create-home", no_argument, NULL, 'm'},
{"no-create-home", no_argument, NULL, 'M'},
{"no-user-group", no_argument, NULL, 'N'}, {"no-user-group", no_argument, NULL, 'N'},
{"non-unique", no_argument, NULL, 'o'}, {"non-unique", no_argument, NULL, 'o'},
{"password", required_argument, NULL, 'p'}, {"password", required_argument, NULL, 'p'},
@ -1133,6 +1136,9 @@ static void process_flags (int argc, char **argv)
case 'm': case 'm':
mflg = true; mflg = true;
break; break;
case 'M':
Mflg = true;
break;
case 'N': case 'N':
Nflg = true; Nflg = true;
break; break;
@ -1212,6 +1218,12 @@ static void process_flags (int argc, char **argv)
Prog, "-U", "-N"); Prog, "-U", "-N");
usage (); usage ();
} }
if (mflg && Mflg) {
fprintf (stderr,
_("%s: options %s and %s conflict\n"),
Prog, "-m", "-M");
usage ();
}
/* /*
* Either -D or username is required. Defaults can be set with -D * Either -D or username is required. Defaults can be set with -D
@ -1265,10 +1277,20 @@ static void process_flags (int argc, char **argv)
user_shell = def_shell; user_shell = def_shell;
} }
/* TODO: add handle change default spool mail creation by
-K CREATE_MAIL_SPOOL={yes,no}. It need rewrite internal API for handle
shadow tools configuration */
create_mail_spool = def_create_mail_spool; create_mail_spool = def_create_mail_spool;
if (!rflg) {
/* for system accounts defaults are ignored and we
* do not create a home dir */
if (getdef_bool("CREATE_HOME")) {
mflg = true;
}
}
if (Mflg) {
/* absolutely sure that we do not create home dirs */
mflg = false;
}
} }
/* /*
@ -1932,26 +1954,12 @@ int main (int argc, char **argv)
"Not copying any file from skel directory into it.\n"), "Not copying any file from skel directory into it.\n"),
Prog); Prog);
} else if (getdef_str ("CREATE_HOME") != NULL) {
/*
* RedHat added the CREATE_HOME option in login.defs in their
* version of shadow-utils (which makes -m the default, with
* new -M option to turn it off). Unfortunately, this
* changes the way useradd works (it can be run by scripts
* expecting some standard behaviour), compared to other
* Unices and other Linux distributions, and also adds a lot
* of confusion :-(.
* So we now recognize CREATE_HOME and give a warning here
* (better than "configuration error ... notify administrator"
* errors in every program that reads /etc/login.defs). -MM
*/
fprintf (stderr,
_
("%s: warning: CREATE_HOME not supported, please use -m instead.\n"),
Prog);
} }
create_mail (); /* Do not create mail directory for system accounts */
if( !rflg ) {
create_mail ();
}
close_files (); close_files ();