Merge pull request #251 from lifecrisis/nonexistent
Add "NONEXISTENT" to "login.defs"
This commit is contained in:
commit
320707fcb0
1
README
1
README
@ -70,6 +70,7 @@ Guy Maor <maor@debian.org>
|
||||
Hrvoje Dogan <hdogan@bjesomar.srce.hr>
|
||||
Jakub Hrozek <jhrozek@redhat.com>
|
||||
Janos Farkas <chexum@bankinf.banki.hu>
|
||||
Jason Franklin <jason.franklin@quoininc.com>
|
||||
Jay Soffian <jay@lw.net>
|
||||
Jesse Thilo <Jesse.Thilo@pobox.com>
|
||||
Joey Hess <joey@kite.ml.org>
|
||||
|
@ -295,7 +295,7 @@ CHFN_AUTH yes
|
||||
# any combination of letters "frwh" (full name, room number, work
|
||||
# phone, home phone). If not defined, no changes are allowed.
|
||||
# For backward compatibility, "yes" = "rwh" and "no" = "frwh".
|
||||
#
|
||||
#
|
||||
CHFN_RESTRICT rwh
|
||||
|
||||
#
|
||||
@ -384,6 +384,14 @@ CHFN_RESTRICT rwh
|
||||
#
|
||||
DEFAULT_HOME yes
|
||||
|
||||
#
|
||||
# The pwck(8) utility emits a warning for any system account with a home
|
||||
# directory that does not exist. Some system accounts intentionally do
|
||||
# not have a home directory. Such accounts may have this string as
|
||||
# their home directory in /etc/passwd to avoid a spurious warning.
|
||||
#
|
||||
NONEXISTENT /nonexistent
|
||||
|
||||
#
|
||||
# If this file exists and is readable, login environment will be
|
||||
# read from it. Every line should be in the form name=value.
|
||||
|
@ -105,6 +105,7 @@ static struct itemdef def_table[] = {
|
||||
{"MAIL_FILE", NULL},
|
||||
{"MAX_MEMBERS_PER_GROUP", NULL},
|
||||
{"MD5_CRYPT_ENAB", NULL},
|
||||
{"NONEXISTENT", NULL},
|
||||
{"PASS_MAX_DAYS", NULL},
|
||||
{"PASS_MIN_DAYS", NULL},
|
||||
{"PASS_WARN_AGE", NULL},
|
||||
|
@ -153,6 +153,7 @@ login_defs_v = \
|
||||
MD5_CRYPT_ENAB.xml \
|
||||
MOTD_FILE.xml \
|
||||
NOLOGINS_FILE.xml \
|
||||
NONEXISTENT.xml \
|
||||
OBSCURE_CHECKS_ENAB.xml \
|
||||
PASS_ALWAYS_WARN.xml \
|
||||
PASS_CHANGE_TRIES.xml \
|
||||
|
@ -67,6 +67,7 @@
|
||||
<!ENTITY MD5_CRYPT_ENAB SYSTEM "login.defs.d/MD5_CRYPT_ENAB.xml">
|
||||
<!ENTITY MOTD_FILE SYSTEM "login.defs.d/MOTD_FILE.xml">
|
||||
<!ENTITY NOLOGINS_FILE SYSTEM "login.defs.d/NOLOGINS_FILE.xml">
|
||||
<!ENTITY NONEXISTENT SYSTEM "login.defs.d/NONEXISTENT.xml">
|
||||
<!ENTITY OBSCURE_CHECKS_ENAB SYSTEM "login.defs.d/OBSCURE_CHECKS_ENAB.xml">
|
||||
<!ENTITY PASS_ALWAYS_WARN SYSTEM "login.defs.d/PASS_ALWAYS_WARN.xml">
|
||||
<!ENTITY PASS_CHANGE_TRIES SYSTEM "login.defs.d/PASS_CHANGE_TRIES.xml">
|
||||
@ -203,6 +204,7 @@
|
||||
&MD5_CRYPT_ENAB;
|
||||
&MOTD_FILE;
|
||||
&NOLOGINS_FILE;
|
||||
&NONEXISTENT;
|
||||
&OBSCURE_CHECKS_ENAB;
|
||||
&PASS_ALWAYS_WARN;
|
||||
&PASS_CHANGE_TRIES;
|
||||
|
41
man/login.defs.d/NONEXISTENT.xml
Normal file
41
man/login.defs.d/NONEXISTENT.xml
Normal file
@ -0,0 +1,41 @@
|
||||
<!--
|
||||
Copyright (c) 1991 - 1993, Julianne Frances Haugh
|
||||
Copyright (c) 1991 - 1993, Chip Rosenthal
|
||||
Copyright (c) 2007 - 2009, Nicolas François
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The name of the copyright holders or contributors may not be used to
|
||||
endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-->
|
||||
<varlistentry>
|
||||
<term><option>NONEXISTENT</option> (string)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
If a system account intentionally does not have a home directory
|
||||
that exists, this string can be provided in the /etc/passwd
|
||||
entry for the account to indicate this. The result is that pwck
|
||||
will not emit a spurious warning for this account.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
@ -30,6 +30,7 @@
|
||||
-->
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
<!ENTITY NONEXISTENT SYSTEM "login.defs.d/NONEXISTENT.xml">
|
||||
<!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">
|
||||
@ -266,6 +267,7 @@
|
||||
tool:
|
||||
</para>
|
||||
<variablelist>
|
||||
&NONEXISTENT;
|
||||
&PASS_MAX_DAYS;
|
||||
&PASS_MIN_DAYS;
|
||||
&PASS_WARN_AGE;
|
||||
|
12
src/pwck.c
12
src/pwck.c
@ -527,12 +527,16 @@ static void check_pw_file (int *errors, bool *changed)
|
||||
* Make sure the home directory exists
|
||||
*/
|
||||
if (!quiet && (access (pwd->pw_dir, F_OK) != 0)) {
|
||||
const char *nonexistent = getdef_str("NONEXISTENT");
|
||||
|
||||
/*
|
||||
* Home directory doesn't exist, give a warning
|
||||
* Home directory does not exist, give a warning (unless intentional)
|
||||
*/
|
||||
printf (_("user '%s': directory '%s' does not exist\n"),
|
||||
pwd->pw_name, pwd->pw_dir);
|
||||
*errors += 1;
|
||||
if (NULL == nonexistent || strcmp (pwd->pw_dir, nonexistent) != 0) {
|
||||
printf (_("user '%s': directory '%s' does not exist\n"),
|
||||
pwd->pw_name, pwd->pw_dir);
|
||||
*errors += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user