Compare commits
47 Commits
Author | SHA1 | Date |
---|---|---|
Iker Pedrosa | 97547bc00a | |
Fedora Release Engineering | 71c99ba5b1 | |
Iker Pedrosa | 5ba2bc90cc | |
Iker Pedrosa | a986f4a036 | |
Iker Pedrosa | 2b851f7e96 | |
Fedora Release Engineering | bfa562aaf2 | |
Iker Pedrosa | 77cc4a7c14 | |
Iker Pedrosa | 957f0eb09e | |
Iker Pedrosa | a2d5d3dbda | |
Iker Pedrosa | 4a03ec740c | |
Iker Pedrosa | 11164c2c0a | |
Iker Pedrosa | 981bd7a093 | |
Iker Pedrosa | fbc8eba072 | |
Iker Pedrosa | 3a32832856 | |
Iker Pedrosa | 94f04f9e71 | |
Fedora Release Engineering | 58090e11f1 | |
Björn Esser | 0d2b677f8f | |
Iker Pedrosa | fbe143d1bd | |
Björn Esser | 08a62b5fa3 | |
Björn Esser | 90349359e4 | |
Björn Esser | a4f9def9dd | |
Björn Esser | a6d57fc8a3 | |
Iker Pedrosa | 2b6f713524 | |
Björn Esser | bace2f8c6b | |
Björn Esser | 1b6e097b0e | |
Björn Esser | 2615b08c31 | |
Björn Esser | c0e594d3c5 | |
Iker Pedrosa | c5fd8d4a0a | |
Björn Esser | e967948ce8 | |
Björn Esser | 0946f2a3b0 | |
Björn Esser | cb2f54a2c1 | |
Iker Pedrosa | cbc60528c3 | |
Iker Pedrosa | 1ec5088225 | |
Iker Pedrosa | 5292920d9b | |
Iker Pedrosa | 3e39e1d4e3 | |
Fedora Release Engineering | 4e14ecca65 | |
Tom Stellard | cc27294138 | |
Robert Scheck | 7abff5646c | |
ipedrosa | 4f395dd42d | |
Petr Lautrbach | b7aa9ac8ec | |
Ludwig Nussel | 9f643a3011 | |
Fedora Release Engineering | a222f7e825 | |
ipedrosa | 59585bb370 | |
ikerexxe | a66f10a891 | |
ikerexxe | b926b118d9 | |
ikerexxe | 7309a53c2a | |
ikerexxe | f5a51331fe |
|
@ -12,3 +12,9 @@ shadow-4.1.4.2.tar.bz2
|
||||||
/shadow-4.6.tar.xz.asc
|
/shadow-4.6.tar.xz.asc
|
||||||
/shadow-4.8.tar.xz
|
/shadow-4.8.tar.xz
|
||||||
/shadow-4.8.tar.xz.asc
|
/shadow-4.8.tar.xz.asc
|
||||||
|
/shadow-4.8.1.tar.xz
|
||||||
|
/shadow-4.8.1.tar.xz.asc
|
||||||
|
/shadow-4.9.tar.xz
|
||||||
|
/shadow-4.9.tar.xz.asc
|
||||||
|
/shadow-4.11.1.tar.xz
|
||||||
|
/shadow-4.11.1.tar.xz.asc
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
Index: shadow-4.5/man/newusers.8.xml
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/man/newusers.8.xml
|
|
||||||
+++ shadow-4.5/man/newusers.8.xml
|
|
||||||
@@ -218,7 +218,15 @@
|
|
||||||
<para>
|
|
||||||
If this field does not specify an existing directory, the
|
|
||||||
specified directory is created, with ownership set to the
|
|
||||||
- user being created or updated and its primary group.
|
|
||||||
+ user being created or updated and its primary group. Note
|
|
||||||
+ that newusers does not create parent directories of the new
|
|
||||||
+ user's home directory. The newusers command will fail to
|
|
||||||
+ create the home directory if the parent directories do not
|
|
||||||
+ exist, and will send a message to stderr informing the user
|
|
||||||
+ of the failure. The newusers command will not halt or return
|
|
||||||
+ a failure to the calling shell if it fails to create the home
|
|
||||||
+ directory, it will continue to process the batch of new users
|
|
||||||
+ specified.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
If the home directory of an existing user is changed,
|
|
|
@ -1,13 +0,0 @@
|
||||||
Index: shadow-4.5/src/useradd.c
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/src/useradd.c
|
|
||||||
+++ shadow-4.5/src/useradd.c
|
|
||||||
@@ -323,7 +323,7 @@ static void fail_exit (int code)
|
|
||||||
user_name, AUDIT_NO_ID,
|
|
||||||
SHADOW_AUDIT_FAILURE);
|
|
||||||
#endif
|
|
||||||
- SYSLOG ((LOG_INFO, "failed adding user '%s', data deleted", user_name));
|
|
||||||
+ SYSLOG ((LOG_INFO, "failed adding user '%s', exit code: %d", user_name, code));
|
|
||||||
exit (code);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
Index: shadow-4.5/src/userdel.c
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/src/userdel.c
|
|
||||||
+++ shadow-4.5/src/userdel.c
|
|
||||||
@@ -143,8 +143,9 @@ static void usage (int status)
|
|
||||||
"\n"
|
|
||||||
"Options:\n"),
|
|
||||||
Prog);
|
|
||||||
- (void) fputs (_(" -f, --force force removal of files,\n"
|
|
||||||
- " even if not owned by user\n"),
|
|
||||||
+ (void) fputs (_(" -f, --force force some actions that would fail otherwise\n"
|
|
||||||
+ " e.g. removal of user still logged in\n"
|
|
||||||
+ " or files, even if not owned by the user\n"),
|
|
||||||
usageout);
|
|
||||||
(void) fputs (_(" -h, --help display this help message and exit\n"), usageout);
|
|
||||||
(void) fputs (_(" -r, --remove remove home directory and mail spool\n"), usageout);
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,22 @@
|
||||||
|
diff -up shadow-4.11.1/src/chage.c.null-tm shadow-4.11.1/src/chage.c
|
||||||
|
diff -up shadow-4.11.1/src/lastlog.c.null-tm shadow-4.11.1/src/lastlog.c
|
||||||
|
--- shadow-4.11.1/src/lastlog.c.null-tm 2022-01-03 15:31:56.348555620 +0100
|
||||||
|
+++ shadow-4.11.1/src/lastlog.c 2022-01-03 15:38:41.262229024 +0100
|
||||||
|
@@ -151,9 +151,12 @@ static void print_one (/*@null@*/const s
|
||||||
|
|
||||||
|
ll_time = ll.ll_time;
|
||||||
|
tm = localtime (&ll_time);
|
||||||
|
- strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
|
||||||
|
- cp = ptime;
|
||||||
|
-
|
||||||
|
+ if (tm == NULL) {
|
||||||
|
+ cp = "(unknown)";
|
||||||
|
+ } else {
|
||||||
|
+ strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
|
||||||
|
+ cp = ptime;
|
||||||
|
+ }
|
||||||
|
if (ll.ll_time == (time_t) 0) {
|
||||||
|
cp = _("**Never logged in**\0");
|
||||||
|
}
|
||||||
|
diff -up shadow-4.11.1/src/passwd.c.null-tm shadow-4.11.1/src/passwd.c
|
||||||
|
diff -up shadow-4.11.1/src/usermod.c.null-tm shadow-4.11.1/src/usermod.c
|
|
@ -1,16 +1,16 @@
|
||||||
diff -up shadow-4.6/src/useradd.c.redhat shadow-4.6/src/useradd.c
|
diff -up shadow-4.11.1/src/useradd.c.redhat shadow-4.11.1/src/useradd.c
|
||||||
--- shadow-4.6/src/useradd.c.redhat 2018-04-29 18:42:37.000000000 +0200
|
--- shadow-4.11.1/src/useradd.c.redhat 2022-01-03 01:46:53.000000000 +0100
|
||||||
+++ shadow-4.6/src/useradd.c 2018-05-28 13:37:16.695651258 +0200
|
+++ shadow-4.11.1/src/useradd.c 2022-01-03 14:53:12.988484829 +0100
|
||||||
@@ -98,7 +98,7 @@ const char *Prog;
|
@@ -82,7 +82,7 @@ const char *Prog;
|
||||||
static gid_t def_group = 100;
|
static gid_t def_group = 1000;
|
||||||
static const char *def_gname = "other";
|
static const char *def_gname = "other";
|
||||||
static const char *def_home = "/home";
|
static const char *def_home = "/home";
|
||||||
-static const char *def_shell = "";
|
-static const char *def_shell = "/bin/bash";
|
||||||
+static const char *def_shell = "/sbin/nologin";
|
+static const char *def_shell = "/sbin/nologin";
|
||||||
static const char *def_template = SKEL_DIR;
|
static const char *def_template = SKEL_DIR;
|
||||||
static const char *def_create_mail_spool = "no";
|
static const char *def_create_mail_spool = "yes";
|
||||||
|
static const char *def_log_init = "yes";
|
||||||
@@ -108,7 +108,7 @@ static const char *def_expire = "";
|
@@ -93,7 +93,7 @@ static const char *def_expire = "";
|
||||||
#define VALID(s) (strcspn (s, ":\n") == strlen (s))
|
#define VALID(s) (strcspn (s, ":\n") == strlen (s))
|
||||||
|
|
||||||
static const char *user_name = "";
|
static const char *user_name = "";
|
||||||
|
@ -19,7 +19,7 @@ diff -up shadow-4.6/src/useradd.c.redhat shadow-4.6/src/useradd.c
|
||||||
static uid_t user_id;
|
static uid_t user_id;
|
||||||
static gid_t user_gid;
|
static gid_t user_gid;
|
||||||
static const char *user_comment = "";
|
static const char *user_comment = "";
|
||||||
@@ -1114,9 +1114,9 @@ static void process_flags (int argc, cha
|
@@ -1219,9 +1219,9 @@ static void process_flags (int argc, cha
|
||||||
};
|
};
|
||||||
while ((c = getopt_long (argc, argv,
|
while ((c = getopt_long (argc, argv,
|
||||||
#ifdef WITH_SELINUX
|
#ifdef WITH_SELINUX
|
||||||
|
@ -31,7 +31,7 @@ diff -up shadow-4.6/src/useradd.c.redhat shadow-4.6/src/useradd.c
|
||||||
#endif /* !WITH_SELINUX */
|
#endif /* !WITH_SELINUX */
|
||||||
long_options, NULL)) != -1) {
|
long_options, NULL)) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
@@ -1267,6 +1267,7 @@ static void process_flags (int argc, cha
|
@@ -1378,6 +1378,7 @@ static void process_flags (int argc, cha
|
||||||
case 'M':
|
case 'M':
|
||||||
Mflg = true;
|
Mflg = true;
|
||||||
break;
|
break;
|
|
@ -0,0 +1,40 @@
|
||||||
|
From f1f1678e13aa3ae49bdb139efaa2c5bc53dcfe92 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Iker Pedrosa <ipedrosa@redhat.com>
|
||||||
|
Date: Tue, 4 Jan 2022 13:06:00 +0100
|
||||||
|
Subject: [PATCH] useradd: modify check ID range for system users
|
||||||
|
|
||||||
|
useradd warns that a system user ID less than SYS_UID_MIN is outside the
|
||||||
|
expected range, even though that ID has been specifically selected with
|
||||||
|
the "-u" option.
|
||||||
|
|
||||||
|
In my opinion all the user ID's below SYS_UID_MAX are for the system,
|
||||||
|
thus I change the condition to take that into account.
|
||||||
|
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2004911
|
||||||
|
|
||||||
|
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
|
||||||
|
---
|
||||||
|
src/useradd.c | 6 ++----
|
||||||
|
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/useradd.c b/src/useradd.c
|
||||||
|
index 34376fa5..4c71c38a 100644
|
||||||
|
--- a/src/useradd.c
|
||||||
|
+++ b/src/useradd.c
|
||||||
|
@@ -2409,11 +2409,9 @@ static void check_uid_range(int rflg, uid_t user_id)
|
||||||
|
uid_t uid_min ;
|
||||||
|
uid_t uid_max ;
|
||||||
|
if (rflg) {
|
||||||
|
- uid_min = (uid_t)getdef_ulong("SYS_UID_MIN",101UL);
|
||||||
|
uid_max = (uid_t)getdef_ulong("SYS_UID_MAX",getdef_ulong("UID_MIN",1000UL)-1);
|
||||||
|
- if (uid_min <= uid_max) {
|
||||||
|
- if (user_id < uid_min || user_id >uid_max)
|
||||||
|
- fprintf(stderr, _("%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d range.\n"), Prog, user_name, user_id, uid_min, uid_max);
|
||||||
|
+ if (user_id > uid_max) {
|
||||||
|
+ fprintf(stderr, _("%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n"), Prog, user_name, user_id, uid_max);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
uid_min = (uid_t)getdef_ulong("UID_MIN", 1000UL);
|
||||||
|
--
|
||||||
|
2.37.1
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
Index: shadow-4.5/src/faillog.c
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/src/faillog.c
|
|
||||||
+++ shadow-4.5/src/faillog.c
|
|
||||||
@@ -163,10 +163,14 @@ static void print_one (/*@null@*/const s
|
|
||||||
}
|
|
||||||
|
|
||||||
tm = localtime (&fl.fail_time);
|
|
||||||
+ if (tm == NULL) {
|
|
||||||
+ cp = "(unknown)";
|
|
||||||
+ } else {
|
|
||||||
#ifdef HAVE_STRFTIME
|
|
||||||
- strftime (ptime, sizeof (ptime), "%D %H:%M:%S %z", tm);
|
|
||||||
- cp = ptime;
|
|
||||||
+ strftime (ptime, sizeof (ptime), "%D %H:%M:%S %z", tm);
|
|
||||||
+ cp = ptime;
|
|
||||||
#endif
|
|
||||||
+ }
|
|
||||||
printf ("%-9s %5d %5d ",
|
|
||||||
pw->pw_name, fl.fail_cnt, fl.fail_max);
|
|
||||||
/* FIXME: cp is not defined ifndef HAVE_STRFTIME */
|
|
||||||
Index: shadow-4.5/src/chage.c
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/src/chage.c
|
|
||||||
+++ shadow-4.5/src/chage.c
|
|
||||||
@@ -168,6 +168,10 @@ static void date_to_str (char *buf, size
|
|
||||||
struct tm *tp;
|
|
||||||
|
|
||||||
tp = gmtime (&date);
|
|
||||||
+ if (tp == NULL) {
|
|
||||||
+ (void) snprintf (buf, maxsize, "(unknown)");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
#ifdef HAVE_STRFTIME
|
|
||||||
(void) strftime (buf, maxsize, "%Y-%m-%d", tp);
|
|
||||||
#else
|
|
||||||
Index: shadow-4.5/src/lastlog.c
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/src/lastlog.c
|
|
||||||
+++ shadow-4.5/src/lastlog.c
|
|
||||||
@@ -158,13 +158,17 @@ static void print_one (/*@null@*/const s
|
|
||||||
|
|
||||||
ll_time = ll.ll_time;
|
|
||||||
tm = localtime (&ll_time);
|
|
||||||
+ if (tm == NULL) {
|
|
||||||
+ cp = "(unknown)";
|
|
||||||
+ } else {
|
|
||||||
#ifdef HAVE_STRFTIME
|
|
||||||
- strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
|
|
||||||
- cp = ptime;
|
|
||||||
+ strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
|
|
||||||
+ cp = ptime;
|
|
||||||
#else
|
|
||||||
- cp = asctime (tm);
|
|
||||||
- cp[24] = '\0';
|
|
||||||
+ cp = asctime (tm);
|
|
||||||
+ cp[24] = '\0';
|
|
||||||
#endif
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (ll.ll_time == (time_t) 0) {
|
|
||||||
cp = _("**Never logged in**\0");
|
|
||||||
Index: shadow-4.5/src/passwd.c
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/src/passwd.c
|
|
||||||
+++ shadow-4.5/src/passwd.c
|
|
||||||
@@ -455,6 +455,9 @@ static /*@observer@*/const char *date_to
|
|
||||||
struct tm *tm;
|
|
||||||
|
|
||||||
tm = gmtime (&t);
|
|
||||||
+ if (tm == NULL) {
|
|
||||||
+ return "(unknown)";
|
|
||||||
+ }
|
|
||||||
#ifdef HAVE_STRFTIME
|
|
||||||
(void) strftime (buf, sizeof buf, "%m/%d/%Y", tm);
|
|
||||||
#else /* !HAVE_STRFTIME */
|
|
||||||
Index: shadow-4.5/src/usermod.c
|
|
||||||
===================================================================
|
|
||||||
--- shadow-4.5.orig/src/usermod.c
|
|
||||||
+++ shadow-4.5/src/usermod.c
|
|
||||||
@@ -210,6 +210,10 @@ static void date_to_str (/*@unique@*//*@
|
|
||||||
} else {
|
|
||||||
time_t t = (time_t) date;
|
|
||||||
tp = gmtime (&t);
|
|
||||||
+ if (tp == NULL) {
|
|
||||||
+ strncpy (buf, "unknown", maxsize);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
#ifdef HAVE_STRFTIME
|
|
||||||
strftime (buf, maxsize, "%Y-%m-%d", tp);
|
|
||||||
#else
|
|
|
@ -1,21 +0,0 @@
|
||||||
diff -up shadow-4.6/lib/selinux.c.getenforce shadow-4.6/lib/selinux.c
|
|
||||||
--- shadow-4.6/lib/selinux.c.getenforce 2018-05-28 15:10:15.870315221 +0200
|
|
||||||
+++ shadow-4.6/lib/selinux.c 2018-05-28 15:10:15.894315731 +0200
|
|
||||||
@@ -75,7 +75,7 @@ int set_selinux_file_context (const char
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
error:
|
|
||||||
- if (security_getenforce () != 0) {
|
|
||||||
+ if (security_getenforce () > 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
@@ -95,7 +95,7 @@ int reset_selinux_file_context (void)
|
|
||||||
selinux_checked = true;
|
|
||||||
}
|
|
||||||
if (selinux_enabled) {
|
|
||||||
- if (setfscreatecon (NULL) != 0) {
|
|
||||||
+ if (setfscreatecon (NULL) != 0 && security_getenforce () > 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
diff -up shadow-4.8/configure.ac.crypt_h shadow-4.8/configure.ac
|
|
||||||
--- shadow-4.8/configure.ac.crypt_h 2020-01-13 10:26:17.400481712 +0100
|
|
||||||
+++ shadow-4.8/configure.ac 2020-01-13 10:29:11.563529093 +0100
|
|
||||||
@@ -32,7 +32,7 @@ AC_HEADER_STDC
|
|
||||||
AC_HEADER_SYS_WAIT
|
|
||||||
AC_HEADER_STDBOOL
|
|
||||||
|
|
||||||
-AC_CHECK_HEADERS(errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \
|
|
||||||
+AC_CHECK_HEADERS(crypt.h errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \
|
|
||||||
utmpx.h termios.h termio.h sgtty.h sys/ioctl.h syslog.h paths.h \
|
|
||||||
utime.h ulimit.h sys/capability.h sys/resource.h gshadow.h lastlog.h \
|
|
||||||
locale.h rpc/key_prot.h netdb.h acl/libacl.h attr/libattr.h \
|
|
||||||
diff -up shadow-4.8/lib/defines.h.crypt_h shadow-4.8/lib/defines.h
|
|
||||||
--- shadow-4.8/lib/defines.h.crypt_h 2019-07-23 17:26:08.000000000 +0200
|
|
||||||
+++ shadow-4.8/lib/defines.h 2020-01-13 10:26:17.400481712 +0100
|
|
||||||
@@ -4,6 +4,8 @@
|
|
||||||
#ifndef _DEFINES_H_
|
|
||||||
#define _DEFINES_H_
|
|
||||||
|
|
||||||
+#include "config.h"
|
|
||||||
+
|
|
||||||
#if HAVE_STDBOOL_H
|
|
||||||
# include <stdbool.h>
|
|
||||||
#else
|
|
||||||
@@ -94,6 +96,10 @@ char *strchr (), *strrchr (), *strtok ()
|
|
||||||
# include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if HAVE_CRYPT_H
|
|
||||||
+# include <crypt.h> /* crypt(3) may be defined in here */
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#if TIME_WITH_SYS_TIME
|
|
||||||
# include <sys/time.h>
|
|
||||||
# include <time.h>
|
|
|
@ -1,30 +0,0 @@
|
||||||
diff -up shadow-4.8/src/useradd.c.invalid-shell shadow-4.8/src/useradd.c
|
|
||||||
--- shadow-4.8/src/useradd.c.invalid-shell 2020-01-16 08:47:13.841921106 +0100
|
|
||||||
+++ shadow-4.8/src/useradd.c 2020-01-16 08:57:26.338421901 +0100
|
|
||||||
@@ -1277,15 +1277,22 @@ static void process_flags (int argc, cha
|
|
||||||
if ( ( !VALID (optarg) )
|
|
||||||
|| ( ('\0' != optarg[0])
|
|
||||||
&& ('/' != optarg[0])
|
|
||||||
- && ('*' != optarg[0]) )
|
|
||||||
- || (stat(optarg, &st) != 0)
|
|
||||||
- || (S_ISDIR(st.st_mode))
|
|
||||||
- || (access(optarg, X_OK) != 0)) {
|
|
||||||
+ && ('*' != optarg[0]) )) {
|
|
||||||
fprintf (stderr,
|
|
||||||
_("%s: invalid shell '%s'\n"),
|
|
||||||
Prog, optarg);
|
|
||||||
exit (E_BAD_ARG);
|
|
||||||
}
|
|
||||||
+ if ( '\0' != optarg[0]
|
|
||||||
+ && '*' != optarg[0]
|
|
||||||
+ && strcmp(optarg, "/sbin/nologin") != 0
|
|
||||||
+ && ( stat(optarg, &st) != 0
|
|
||||||
+ || S_ISDIR(st.st_mode)
|
|
||||||
+ || access(optarg, X_OK) != 0)) {
|
|
||||||
+ fprintf (stderr,
|
|
||||||
+ _("%s: Warning: missing or non-executable shell '%s'\n"),
|
|
||||||
+ Prog, optarg);
|
|
||||||
+ }
|
|
||||||
user_shell = optarg;
|
|
||||||
def_shell = optarg;
|
|
||||||
sflg = true;
|
|
|
@ -1,341 +0,0 @@
|
||||||
diff -up shadow-4.8/man/chage.1.xml.manfix shadow-4.8/man/chage.1.xml
|
|
||||||
--- shadow-4.8/man/chage.1.xml.manfix 2019-10-05 01:28:34.000000000 +0200
|
|
||||||
+++ shadow-4.8/man/chage.1.xml 2020-01-13 10:12:48.445155882 +0100
|
|
||||||
@@ -102,6 +102,9 @@
|
|
||||||
Set the number of days since January 1st, 1970 when the password
|
|
||||||
was last changed. The date may also be expressed in the format
|
|
||||||
YYYY-MM-DD (or the format more commonly used in your area).
|
|
||||||
+ If the <replaceable>LAST_DAY</replaceable> is set to
|
|
||||||
+ <emphasis>0</emphasis> the user is forced to change his password
|
|
||||||
+ on the next log on.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
@@ -119,6 +122,13 @@
|
|
||||||
system again.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
+ For example the following can be used to set an account to expire
|
|
||||||
+ in 180 days:
|
|
||||||
+ </para>
|
|
||||||
+ <programlisting>
|
|
||||||
+ chage -E $(date -d +180days +%Y-%m-%d)
|
|
||||||
+ </programlisting>
|
|
||||||
+ <para>
|
|
||||||
Passing the number <emphasis remap='I'>-1</emphasis> as the
|
|
||||||
<replaceable>EXPIRE_DATE</replaceable> will remove an account
|
|
||||||
expiration date.
|
|
||||||
@@ -239,6 +249,18 @@
|
|
||||||
The <command>chage</command> program requires a shadow password file to
|
|
||||||
be available.
|
|
||||||
</para>
|
|
||||||
+ <para>
|
|
||||||
+ The chage program will report only the information from the shadow
|
|
||||||
+ password file. This implies that configuration from other sources
|
|
||||||
+ (e.g. LDAP or empty password hash field from the passwd file) that
|
|
||||||
+ affect the user's login will not be shown in the chage output.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ The <command>chage</command> program will also not report any
|
|
||||||
+ inconsistency between the shadow and passwd files (e.g. missing x in
|
|
||||||
+ the passwd file). The <command>pwck</command> can be used to check
|
|
||||||
+ for this kind of inconsistencies.
|
|
||||||
+ </para>
|
|
||||||
<para>The <command>chage</command> command is restricted to the root
|
|
||||||
user, except for the <option>-l</option> option, which may be used by
|
|
||||||
an unprivileged user to determine when their password or account is due
|
|
||||||
diff -up shadow-4.8/man/groupadd.8.xml.manfix shadow-4.8/man/groupadd.8.xml
|
|
||||||
--- shadow-4.8/man/groupadd.8.xml.manfix 2020-01-13 10:12:48.432156100 +0100
|
|
||||||
+++ shadow-4.8/man/groupadd.8.xml 2020-01-13 10:13:06.096859122 +0100
|
|
||||||
@@ -320,13 +320,13 @@
|
|
||||||
<varlistentry>
|
|
||||||
<term><replaceable>4</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
- <para>GID not unique (when <option>-o</option> not used)</para>
|
|
||||||
+ <para>GID is already used (when called without <option>-o</option>)</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term><replaceable>9</replaceable></term>
|
|
||||||
<listitem>
|
|
||||||
- <para>group name not unique</para>
|
|
||||||
+ <para>group name is already used</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
diff -up shadow-4.8/man/groupmems.8.xml.manfix shadow-4.8/man/groupmems.8.xml
|
|
||||||
--- shadow-4.8/man/groupmems.8.xml.manfix 2019-07-23 17:26:08.000000000 +0200
|
|
||||||
+++ shadow-4.8/man/groupmems.8.xml 2020-01-13 10:12:48.445155882 +0100
|
|
||||||
@@ -179,20 +179,10 @@
|
|
||||||
<refsect1 id='setup'>
|
|
||||||
<title>SETUP</title>
|
|
||||||
<para>
|
|
||||||
- The <command>groupmems</command> executable should be in mode
|
|
||||||
- <literal>2770</literal> as user <emphasis>root</emphasis> and in group
|
|
||||||
- <emphasis>groups</emphasis>. The system administrator can add users to
|
|
||||||
- group <emphasis>groups</emphasis> to allow or disallow them using the
|
|
||||||
- <command>groupmems</command> utility to manage their own group
|
|
||||||
- membership list.
|
|
||||||
+ In this operating system the <command>groupmems</command> executable
|
|
||||||
+ is not setuid and regular users cannot use it to manipulate
|
|
||||||
+ the membership of their own group.
|
|
||||||
</para>
|
|
||||||
-
|
|
||||||
- <programlisting>
|
|
||||||
- $ groupadd -r groups
|
|
||||||
- $ chmod 2770 groupmems
|
|
||||||
- $ chown root.groups groupmems
|
|
||||||
- $ groupmems -g groups -a gk4
|
|
||||||
- </programlisting>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1 id='configuration'>
|
|
||||||
diff -up shadow-4.8/man/ja/man5/login.defs.5.manfix shadow-4.8/man/ja/man5/login.defs.5
|
|
||||||
--- shadow-4.8/man/ja/man5/login.defs.5.manfix 2019-07-23 17:26:08.000000000 +0200
|
|
||||||
+++ shadow-4.8/man/ja/man5/login.defs.5 2020-01-13 10:12:48.445155882 +0100
|
|
||||||
@@ -147,10 +147,6 @@ 以下の参照表は、
|
|
||||||
shadow パスワード機能のどのプログラムが
|
|
||||||
どのパラメータを使用するかを示したものである。
|
|
||||||
.na
|
|
||||||
-.IP chfn 12
|
|
||||||
-CHFN_AUTH CHFN_RESTRICT
|
|
||||||
-.IP chsh 12
|
|
||||||
-CHFN_AUTH
|
|
||||||
.IP groupadd 12
|
|
||||||
GID_MAX GID_MIN
|
|
||||||
.IP newusers 12
|
|
||||||
diff -up shadow-4.8/man/login.defs.5.xml.manfix shadow-4.8/man/login.defs.5.xml
|
|
||||||
--- shadow-4.8/man/login.defs.5.xml.manfix 2019-07-23 17:26:08.000000000 +0200
|
|
||||||
+++ shadow-4.8/man/login.defs.5.xml 2020-01-13 10:14:10.491776547 +0100
|
|
||||||
@@ -163,6 +163,17 @@
|
|
||||||
long numeric parameters is machine-dependent.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
+ <para>
|
|
||||||
+ Please note that the parameters in this configuration file control the
|
|
||||||
+ behavior of the tools from the shadow-utils component. None of these
|
|
||||||
+ tools uses the PAM mechanism, and the utilities that use PAM (such as the
|
|
||||||
+ passwd command) should be configured elsewhere. The only values that
|
|
||||||
+ affect PAM modules are <emphasis>ENCRYPT_METHOD</emphasis> and <emphasis>SHA_CRYPT_MAX_ROUNDS</emphasis>
|
|
||||||
+ for pam_unix module, <emphasis>FAIL_DELAY</emphasis> for pam_faildelay module,
|
|
||||||
+ and <emphasis>UMASK</emphasis> for pam_umask module. Refer to
|
|
||||||
+ pam(8) for more information.
|
|
||||||
+ </para>
|
|
||||||
+
|
|
||||||
<para>The following configuration items are provided:</para>
|
|
||||||
|
|
||||||
<variablelist remap='IP'>
|
|
||||||
@@ -254,16 +265,6 @@
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
- <term>chfn</term>
|
|
||||||
- <listitem>
|
|
||||||
- <para>
|
|
||||||
- <phrase condition="no_pam">CHFN_AUTH</phrase>
|
|
||||||
- CHFN_RESTRICT
|
|
||||||
- <phrase condition="no_pam">LOGIN_STRING</phrase>
|
|
||||||
- </para>
|
|
||||||
- </listitem>
|
|
||||||
- </varlistentry>
|
|
||||||
- <varlistentry>
|
|
||||||
<term>chgpasswd</term>
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
@@ -284,14 +285,6 @@
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
- <varlistentry condition="no_pam">
|
|
||||||
- <term>chsh</term>
|
|
||||||
- <listitem>
|
|
||||||
- <para>
|
|
||||||
- CHSH_AUTH LOGIN_STRING
|
|
||||||
- </para>
|
|
||||||
- </listitem>
|
|
||||||
- </varlistentry>
|
|
||||||
<!-- expiry: no variables (CONSOLE_GROUPS linked, but not used) -->
|
|
||||||
<!-- faillog: no variables -->
|
|
||||||
<varlistentry>
|
|
||||||
@@ -357,34 +350,6 @@
|
|
||||||
<para>LASTLOG_UID_MAX</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
- <varlistentry>
|
|
||||||
- <term>login</term>
|
|
||||||
- <listitem>
|
|
||||||
- <para>
|
|
||||||
- <phrase condition="no_pam">CONSOLE</phrase>
|
|
||||||
- CONSOLE_GROUPS DEFAULT_HOME
|
|
||||||
- <phrase condition="no_pam">ENV_HZ ENV_PATH ENV_SUPATH
|
|
||||||
- ENV_TZ ENVIRON_FILE</phrase>
|
|
||||||
- ERASECHAR FAIL_DELAY
|
|
||||||
- <phrase condition="no_pam">FAILLOG_ENAB</phrase>
|
|
||||||
- FAKE_SHELL
|
|
||||||
- <phrase condition="no_pam">FTMP_FILE</phrase>
|
|
||||||
- HUSHLOGIN_FILE
|
|
||||||
- <phrase condition="no_pam">ISSUE_FILE</phrase>
|
|
||||||
- KILLCHAR
|
|
||||||
- <phrase condition="no_pam">LASTLOG_ENAB LASTLOG_UID_MAX</phrase>
|
|
||||||
- LOGIN_RETRIES
|
|
||||||
- <phrase condition="no_pam">LOGIN_STRING</phrase>
|
|
||||||
- LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB
|
|
||||||
- <phrase condition="no_pam">MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE
|
|
||||||
- MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB
|
|
||||||
- QUOTAS_ENAB</phrase>
|
|
||||||
- TTYGROUP TTYPERM TTYTYPE_FILE
|
|
||||||
- <phrase condition="no_pam">ULIMIT UMASK</phrase>
|
|
||||||
- USERGROUPS_ENAB
|
|
||||||
- </para>
|
|
||||||
- </listitem>
|
|
||||||
- </varlistentry>
|
|
||||||
<!-- logoutd: no variables -->
|
|
||||||
<varlistentry>
|
|
||||||
<term>newgrp / sg</term>
|
|
||||||
@@ -412,17 +377,6 @@
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<!-- nologin: no variables -->
|
|
||||||
- <varlistentry condition="no_pam">
|
|
||||||
- <term>passwd</term>
|
|
||||||
- <listitem>
|
|
||||||
- <para>
|
|
||||||
- ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB
|
|
||||||
- PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN
|
|
||||||
- <phrase condition="sha_crypt">SHA_CRYPT_MAX_ROUNDS
|
|
||||||
- SHA_CRYPT_MIN_ROUNDS</phrase>
|
|
||||||
- </para>
|
|
||||||
- </listitem>
|
|
||||||
- </varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>pwck</term>
|
|
||||||
<listitem>
|
|
||||||
@@ -449,32 +403,6 @@
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
- <varlistentry>
|
|
||||||
- <term>su</term>
|
|
||||||
- <listitem>
|
|
||||||
- <para>
|
|
||||||
- <phrase condition="no_pam">CONSOLE</phrase>
|
|
||||||
- CONSOLE_GROUPS DEFAULT_HOME
|
|
||||||
- <phrase condition="no_pam">ENV_HZ ENVIRON_FILE</phrase>
|
|
||||||
- ENV_PATH ENV_SUPATH
|
|
||||||
- <phrase condition="no_pam">ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB
|
|
||||||
- MAIL_DIR MAIL_FILE QUOTAS_ENAB</phrase>
|
|
||||||
- SULOG_FILE SU_NAME
|
|
||||||
- <phrase condition="no_pam">SU_WHEEL_ONLY</phrase>
|
|
||||||
- SYSLOG_SU_ENAB
|
|
||||||
- <phrase condition="no_pam">USERGROUPS_ENAB</phrase>
|
|
||||||
- </para>
|
|
||||||
- </listitem>
|
|
||||||
- </varlistentry>
|
|
||||||
- <varlistentry>
|
|
||||||
- <term>sulogin</term>
|
|
||||||
- <listitem>
|
|
||||||
- <para>
|
|
||||||
- ENV_HZ
|
|
||||||
- <phrase condition="no_pam">ENV_TZ</phrase>
|
|
||||||
- </para>
|
|
||||||
- </listitem>
|
|
||||||
- </varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>useradd</term>
|
|
||||||
<listitem>
|
|
||||||
diff -up shadow-4.8/man/shadow.5.xml.manfix shadow-4.8/man/shadow.5.xml
|
|
||||||
--- shadow-4.8/man/shadow.5.xml.manfix 2019-12-01 17:52:32.000000000 +0100
|
|
||||||
+++ shadow-4.8/man/shadow.5.xml 2020-01-13 10:12:48.446155865 +0100
|
|
||||||
@@ -129,7 +129,7 @@
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
The date of the last password change, expressed as the number
|
|
||||||
- of days since Jan 1, 1970.
|
|
||||||
+ of days since Jan 1, 1970 00:00 UTC.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
The value 0 has a special meaning, which is that the user
|
|
||||||
@@ -208,8 +208,8 @@
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
After expiration of the password and this expiration period is
|
|
||||||
- elapsed, no login is possible using the current user's
|
|
||||||
- password. The user should contact her administrator.
|
|
||||||
+ elapsed, no login is possible for the user.
|
|
||||||
+ The user should contact her administrator.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
An empty field means that there are no enforcement of an
|
|
||||||
@@ -224,7 +224,7 @@
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
The date of expiration of the account, expressed as the number
|
|
||||||
- of days since Jan 1, 1970.
|
|
||||||
+ of days since Jan 1, 1970 00:00 UTC.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
Note that an account expiration differs from a password
|
|
||||||
diff -up shadow-4.8/man/useradd.8.xml.manfix shadow-4.8/man/useradd.8.xml
|
|
||||||
--- shadow-4.8/man/useradd.8.xml.manfix 2020-01-13 10:12:48.432156100 +0100
|
|
||||||
+++ shadow-4.8/man/useradd.8.xml 2020-01-13 10:12:48.446155865 +0100
|
|
||||||
@@ -358,6 +358,11 @@
|
|
||||||
<option>CREATE_HOME</option> is not enabled, no home
|
|
||||||
directories are created.
|
|
||||||
</para>
|
|
||||||
+ <para>
|
|
||||||
+ The directory where the user's home directory is created must
|
|
||||||
+ exist and have proper SELinux context and permissions. Otherwise
|
|
||||||
+ the user's home directory cannot be created or accessed.
|
|
||||||
+ </para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
diff -up shadow-4.8/man/usermod.8.xml.manfix shadow-4.8/man/usermod.8.xml
|
|
||||||
--- shadow-4.8/man/usermod.8.xml.manfix 2019-10-05 03:23:58.000000000 +0200
|
|
||||||
+++ shadow-4.8/man/usermod.8.xml 2020-01-13 10:12:48.446155865 +0100
|
|
||||||
@@ -153,7 +153,8 @@
|
|
||||||
If the <option>-m</option>
|
|
||||||
option is given, the contents of the current home directory will
|
|
||||||
be moved to the new home directory, which is created if it does
|
|
||||||
- not already exist.
|
|
||||||
+ not already exist. If the current home directory does not exist
|
|
||||||
+ the new home directory will not be created.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
@@ -215,6 +216,12 @@
|
|
||||||
The group ownership of files outside of the user's home directory
|
|
||||||
must be fixed manually.
|
|
||||||
</para>
|
|
||||||
+ <para>
|
|
||||||
+ The change of the group ownership of files inside of the user's
|
|
||||||
+ home directory is also not done if the home dir owner uid is
|
|
||||||
+ different from the current or new user id. This is safety measure
|
|
||||||
+ for special home directories such as <filename>/</filename>.
|
|
||||||
+ </para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
@@ -277,7 +284,8 @@
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Move the content of the user's home directory to the new
|
|
||||||
- location.
|
|
||||||
+ location. If the current home directory does not exist
|
|
||||||
+ the new home directory will not be created.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
This option is only valid in combination with the
|
|
||||||
@@ -391,6 +399,12 @@
|
|
||||||
must be fixed manually.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
+ The change of the user ownership of files inside of the user's
|
|
||||||
+ home directory is also not done if the home dir owner uid is
|
|
||||||
+ different from the current or new user id. This is safety measure
|
|
||||||
+ for special home directories such as <filename>/</filename>.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
No checks will be performed with regard to the
|
|
||||||
<option>UID_MIN</option>, <option>UID_MAX</option>,
|
|
||||||
<option>SYS_UID_MIN</option>, or <option>SYS_UID_MAX</option>
|
|
|
@ -1,241 +0,0 @@
|
||||||
diff -up shadow-4.8/lib/commonio.c.selinux shadow-4.8/lib/commonio.c
|
|
||||||
--- shadow-4.8/lib/commonio.c.selinux 2019-07-23 17:26:08.000000000 +0200
|
|
||||||
+++ shadow-4.8/lib/commonio.c 2020-01-13 10:08:53.769101131 +0100
|
|
||||||
@@ -964,7 +964,7 @@ int commonio_close (struct commonio_db *
|
|
||||||
snprintf (buf, sizeof buf, "%s-", db->filename);
|
|
||||||
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (set_selinux_file_context (buf) != 0) {
|
|
||||||
+ if (set_selinux_file_context (buf, db->filename) != 0) {
|
|
||||||
errors++;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -997,7 +997,7 @@ int commonio_close (struct commonio_db *
|
|
||||||
snprintf (buf, sizeof buf, "%s+", db->filename);
|
|
||||||
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (set_selinux_file_context (buf) != 0) {
|
|
||||||
+ if (set_selinux_file_context (buf, db->filename) != 0) {
|
|
||||||
errors++;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff -up shadow-4.8/libmisc/copydir.c.selinux shadow-4.8/libmisc/copydir.c
|
|
||||||
--- shadow-4.8/libmisc/copydir.c.selinux 2019-07-23 17:26:08.000000000 +0200
|
|
||||||
+++ shadow-4.8/libmisc/copydir.c 2020-01-13 10:08:53.769101131 +0100
|
|
||||||
@@ -484,7 +484,7 @@ static int copy_dir (const char *src, co
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (set_selinux_file_context (dst) != 0) {
|
|
||||||
+ if (set_selinux_file_context (dst, NULL) != 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif /* WITH_SELINUX */
|
|
||||||
@@ -605,7 +605,7 @@ static int copy_symlink (const char *src
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (set_selinux_file_context (dst) != 0) {
|
|
||||||
+ if (set_selinux_file_context (dst, NULL) != 0) {
|
|
||||||
free (oldlink);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
@@ -684,7 +684,7 @@ static int copy_special (const char *src
|
|
||||||
int err = 0;
|
|
||||||
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (set_selinux_file_context (dst) != 0) {
|
|
||||||
+ if (set_selinux_file_context (dst, NULL) != 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif /* WITH_SELINUX */
|
|
||||||
@@ -744,7 +744,7 @@ static int copy_file (const char *src, c
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (set_selinux_file_context (dst) != 0) {
|
|
||||||
+ if (set_selinux_file_context (dst, NULL) != 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif /* WITH_SELINUX */
|
|
||||||
diff -up shadow-4.8/lib/prototypes.h.selinux shadow-4.8/lib/prototypes.h
|
|
||||||
--- shadow-4.8/lib/prototypes.h.selinux 2020-01-13 10:08:53.769101131 +0100
|
|
||||||
+++ shadow-4.8/lib/prototypes.h 2020-01-13 10:11:20.914627399 +0100
|
|
||||||
@@ -334,7 +334,7 @@ extern /*@observer@*/const char *crypt_m
|
|
||||||
|
|
||||||
/* selinux.c */
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
-extern int set_selinux_file_context (const char *dst_name);
|
|
||||||
+extern int set_selinux_file_context (const char *dst_name, const char *orig_name);
|
|
||||||
extern int reset_selinux_file_context (void);
|
|
||||||
extern int check_selinux_permit (const char *perm_name);
|
|
||||||
#endif
|
|
||||||
diff -up shadow-4.8/lib/selinux.c.selinux shadow-4.8/lib/selinux.c
|
|
||||||
--- shadow-4.8/lib/selinux.c.selinux 2019-11-12 01:18:25.000000000 +0100
|
|
||||||
+++ shadow-4.8/lib/selinux.c 2020-01-13 10:08:53.769101131 +0100
|
|
||||||
@@ -51,7 +51,7 @@ static bool selinux_enabled;
|
|
||||||
* Callers may have to Reset SELinux to create files with default
|
|
||||||
* contexts with reset_selinux_file_context
|
|
||||||
*/
|
|
||||||
-int set_selinux_file_context (const char *dst_name)
|
|
||||||
+int set_selinux_file_context (const char *dst_name, const char *orig_name)
|
|
||||||
{
|
|
||||||
/*@null@*/security_context_t scontext = NULL;
|
|
||||||
|
|
||||||
@@ -63,19 +63,23 @@ int set_selinux_file_context (const char
|
|
||||||
if (selinux_enabled) {
|
|
||||||
/* Get the default security context for this file */
|
|
||||||
if (matchpathcon (dst_name, 0, &scontext) < 0) {
|
|
||||||
- if (security_getenforce () != 0) {
|
|
||||||
- return 1;
|
|
||||||
- }
|
|
||||||
+ /* We could not get the default, copy the original */
|
|
||||||
+ if (orig_name == NULL)
|
|
||||||
+ goto error;
|
|
||||||
+ if (getfilecon (orig_name, &scontext) < 0)
|
|
||||||
+ goto error;
|
|
||||||
}
|
|
||||||
/* Set the security context for the next created file */
|
|
||||||
- if (setfscreatecon (scontext) < 0) {
|
|
||||||
- if (security_getenforce () != 0) {
|
|
||||||
- return 1;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
+ if (setfscreatecon (scontext) < 0)
|
|
||||||
+ goto error;
|
|
||||||
freecon (scontext);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
+ error:
|
|
||||||
+ if (security_getenforce () != 0) {
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff -up shadow-4.8/lib/semanage.c.selinux shadow-4.8/lib/semanage.c
|
|
||||||
--- shadow-4.8/lib/semanage.c.selinux 2019-07-23 17:26:08.000000000 +0200
|
|
||||||
+++ shadow-4.8/lib/semanage.c 2020-01-13 10:08:53.766101181 +0100
|
|
||||||
@@ -294,6 +294,9 @@ int set_seuser (const char *login_name,
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
+ /* drop obsolete matchpathcon cache */
|
|
||||||
+ matchpathcon_fini();
|
|
||||||
+
|
|
||||||
done:
|
|
||||||
semanage_seuser_key_free (key);
|
|
||||||
semanage_handle_destroy (handle);
|
|
||||||
@@ -369,6 +372,10 @@ int del_seuser (const char *login_name)
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
+
|
|
||||||
+ /* drop obsolete matchpathcon cache */
|
|
||||||
+ matchpathcon_fini();
|
|
||||||
+
|
|
||||||
done:
|
|
||||||
semanage_handle_destroy (handle);
|
|
||||||
return ret;
|
|
||||||
diff -up shadow-4.8/src/useradd.c.selinux shadow-4.8/src/useradd.c
|
|
||||||
--- shadow-4.8/src/useradd.c.selinux 2020-01-13 10:08:53.762101248 +0100
|
|
||||||
+++ shadow-4.8/src/useradd.c 2020-01-13 10:08:53.767101164 +0100
|
|
||||||
@@ -2078,7 +2078,7 @@ static void create_home (void)
|
|
||||||
++bhome;
|
|
||||||
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (set_selinux_file_context (prefix_user_home) != 0) {
|
|
||||||
+ if (set_selinux_file_context (prefix_user_home, NULL) != 0) {
|
|
||||||
fprintf (stderr,
|
|
||||||
_("%s: cannot set SELinux context for home directory %s\n"),
|
|
||||||
Prog, user_home);
|
|
||||||
@@ -2232,6 +2232,7 @@ static void create_mail (void)
|
|
||||||
*/
|
|
||||||
int main (int argc, char **argv)
|
|
||||||
{
|
|
||||||
+ int rv = E_SUCCESS;
|
|
||||||
#ifdef ACCT_TOOLS_SETUID
|
|
||||||
#ifdef USE_PAM
|
|
||||||
pam_handle_t *pamh = NULL;
|
|
||||||
@@ -2454,27 +2455,12 @@ int main (int argc, char **argv)
|
|
||||||
|
|
||||||
usr_update ();
|
|
||||||
|
|
||||||
- if (mflg) {
|
|
||||||
- create_home ();
|
|
||||||
- if (home_added) {
|
|
||||||
- copy_tree (def_template, prefix_user_home, false, false,
|
|
||||||
- (uid_t)-1, user_id, (gid_t)-1, user_gid);
|
|
||||||
- } else {
|
|
||||||
- fprintf (stderr,
|
|
||||||
- _("%s: warning: the home directory %s already exists.\n"
|
|
||||||
- "%s: Not copying any file from skel directory into it.\n"),
|
|
||||||
- Prog, user_home, Prog);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* Do not create mail directory for system accounts */
|
|
||||||
- if (!rflg) {
|
|
||||||
- create_mail ();
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
close_files ();
|
|
||||||
|
|
||||||
+ nscd_flush_cache ("passwd");
|
|
||||||
+ nscd_flush_cache ("group");
|
|
||||||
+ sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* tallylog_reset needs to be able to lookup
|
|
||||||
* a valid existing user name,
|
|
||||||
@@ -2485,8 +2471,9 @@ int main (int argc, char **argv)
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef WITH_SELINUX
|
|
||||||
- if (Zflg) {
|
|
||||||
- if (set_seuser (user_name, user_selinux) != 0) {
|
|
||||||
+ if (Zflg && *user_selinux) {
|
|
||||||
+ if (is_selinux_enabled () > 0) {
|
|
||||||
+ if (set_seuser (user_name, user_selinux) != 0) {
|
|
||||||
fprintf (stderr,
|
|
||||||
_("%s: warning: the user name %s to %s SELinux user mapping failed.\n"),
|
|
||||||
Prog, user_name, user_selinux);
|
|
||||||
@@ -2495,15 +2482,31 @@ int main (int argc, char **argv)
|
|
||||||
"adding SELinux user mapping",
|
|
||||||
user_name, (unsigned int) user_id, 0);
|
|
||||||
#endif /* WITH_AUDIT */
|
|
||||||
- fail_exit (E_SE_UPDATE);
|
|
||||||
+ rv = E_SE_UPDATE;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* WITH_SELINUX */
|
|
||||||
|
|
||||||
- nscd_flush_cache ("passwd");
|
|
||||||
- nscd_flush_cache ("group");
|
|
||||||
- sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);
|
|
||||||
+ if (mflg) {
|
|
||||||
+ create_home ();
|
|
||||||
+ if (home_added) {
|
|
||||||
+ copy_tree (def_template, prefix_user_home, false, true,
|
|
||||||
+ (uid_t)-1, user_id, (gid_t)-1, user_gid);
|
|
||||||
+ } else {
|
|
||||||
+ fprintf (stderr,
|
|
||||||
+ _("%s: warning: the home directory %s already exists.\n"
|
|
||||||
+ "%s: Not copying any file from skel directory into it.\n"),
|
|
||||||
+ Prog, user_home, Prog);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Do not create mail directory for system accounts */
|
|
||||||
+ if (!rflg) {
|
|
||||||
+ create_mail ();
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- return E_SUCCESS;
|
|
||||||
+ return rv;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
Index: shadow-4.5/lib/semanage.c
|
diff -up shadow-4.9/lib/semanage.c.default-range shadow-4.9/lib/semanage.c
|
||||||
===================================================================
|
--- shadow-4.9/lib/semanage.c.default-range 2021-07-22 23:55:35.000000000 +0200
|
||||||
--- shadow-4.5.orig/lib/semanage.c
|
+++ shadow-4.9/lib/semanage.c 2021-08-02 12:43:16.822817392 +0200
|
||||||
+++ shadow-4.5/lib/semanage.c
|
|
||||||
@@ -143,6 +143,7 @@ static int semanage_user_mod (semanage_h
|
@@ -143,6 +143,7 @@ static int semanage_user_mod (semanage_h
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
@ -9,7 +8,7 @@ Index: shadow-4.5/lib/semanage.c
|
||||||
+#if 0
|
+#if 0
|
||||||
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf (stderr,
|
fprintf (shadow_logfd,
|
||||||
@@ -150,6 +151,7 @@ static int semanage_user_mod (semanage_h
|
@@ -150,6 +151,7 @@ static int semanage_user_mod (semanage_h
|
||||||
ret = 1;
|
ret = 1;
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -25,7 +24,7 @@ Index: shadow-4.5/lib/semanage.c
|
||||||
+#if 0
|
+#if 0
|
||||||
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf (stderr,
|
fprintf (shadow_logfd,
|
||||||
@@ -208,6 +211,7 @@ static int semanage_user_add (semanage_h
|
@@ -208,6 +211,7 @@ static int semanage_user_add (semanage_h
|
||||||
ret = 1;
|
ret = 1;
|
||||||
goto done;
|
goto done;
|
|
@ -0,0 +1,180 @@
|
||||||
|
diff -up shadow-4.8.1/man/groupmems.8.xml.manfix shadow-4.8.1/man/groupmems.8.xml
|
||||||
|
--- shadow-4.8.1/man/groupmems.8.xml.manfix 2020-03-17 15:34:48.750414984 +0100
|
||||||
|
+++ shadow-4.8.1/man/groupmems.8.xml 2020-03-17 15:41:13.383588722 +0100
|
||||||
|
@@ -179,20 +179,10 @@
|
||||||
|
<refsect1 id='setup'>
|
||||||
|
<title>SETUP</title>
|
||||||
|
<para>
|
||||||
|
- The <command>groupmems</command> executable should be in mode
|
||||||
|
- <literal>2710</literal> as user <emphasis>root</emphasis> and in group
|
||||||
|
- <emphasis>groups</emphasis>. The system administrator can add users to
|
||||||
|
- group <emphasis>groups</emphasis> to allow or disallow them using the
|
||||||
|
- <command>groupmems</command> utility to manage their own group
|
||||||
|
- membership list.
|
||||||
|
+ In this operating system the <command>groupmems</command> executable
|
||||||
|
+ is not setuid and regular users cannot use it to manipulate
|
||||||
|
+ the membership of their own group.
|
||||||
|
</para>
|
||||||
|
-
|
||||||
|
- <programlisting>
|
||||||
|
- $ groupadd -r groups
|
||||||
|
- $ chmod 2710 groupmems
|
||||||
|
- $ chown root.groups groupmems
|
||||||
|
- $ groupmems -g groups -a gk4
|
||||||
|
- </programlisting>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1 id='configuration'>
|
||||||
|
diff -up shadow-4.8.1/man/ja/man5/login.defs.5.manfix shadow-4.8.1/man/ja/man5/login.defs.5
|
||||||
|
--- shadow-4.8.1/man/ja/man5/login.defs.5.manfix 2019-07-23 17:26:08.000000000 +0200
|
||||||
|
+++ shadow-4.8.1/man/ja/man5/login.defs.5 2020-03-17 15:34:48.750414984 +0100
|
||||||
|
@@ -147,10 +147,6 @@ 以下の参照表は、
|
||||||
|
shadow パスワード機能のどのプログラムが
|
||||||
|
どのパラメータを使用するかを示したものである。
|
||||||
|
.na
|
||||||
|
-.IP chfn 12
|
||||||
|
-CHFN_AUTH CHFN_RESTRICT
|
||||||
|
-.IP chsh 12
|
||||||
|
-CHFN_AUTH
|
||||||
|
.IP groupadd 12
|
||||||
|
GID_MAX GID_MIN
|
||||||
|
.IP newusers 12
|
||||||
|
diff -up shadow-4.8.1/man/login.defs.5.xml.manfix shadow-4.8.1/man/login.defs.5.xml
|
||||||
|
--- shadow-4.8.1/man/login.defs.5.xml.manfix 2020-01-17 16:47:56.000000000 +0100
|
||||||
|
+++ shadow-4.8.1/man/login.defs.5.xml 2020-03-17 15:34:48.750414984 +0100
|
||||||
|
@@ -164,6 +164,17 @@
|
||||||
|
long numeric parameters is machine-dependent.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
+ <para>
|
||||||
|
+ Please note that the parameters in this configuration file control the
|
||||||
|
+ behavior of the tools from the shadow-utils component. None of these
|
||||||
|
+ tools uses the PAM mechanism, and the utilities that use PAM (such as the
|
||||||
|
+ passwd command) should be configured elsewhere. The only values that
|
||||||
|
+ affect PAM modules are <emphasis>ENCRYPT_METHOD</emphasis> and <emphasis>SHA_CRYPT_MAX_ROUNDS</emphasis>
|
||||||
|
+ for pam_unix module, <emphasis>FAIL_DELAY</emphasis> for pam_faildelay module,
|
||||||
|
+ and <emphasis>UMASK</emphasis> for pam_umask module. Refer to
|
||||||
|
+ pam(8) for more information.
|
||||||
|
+ </para>
|
||||||
|
+
|
||||||
|
<para>The following configuration items are provided:</para>
|
||||||
|
|
||||||
|
<variablelist remap='IP'>
|
||||||
|
@@ -256,16 +267,6 @@
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
- <term>chfn</term>
|
||||||
|
- <listitem>
|
||||||
|
- <para>
|
||||||
|
- <phrase condition="no_pam">CHFN_AUTH</phrase>
|
||||||
|
- CHFN_RESTRICT
|
||||||
|
- <phrase condition="no_pam">LOGIN_STRING</phrase>
|
||||||
|
- </para>
|
||||||
|
- </listitem>
|
||||||
|
- </varlistentry>
|
||||||
|
- <varlistentry>
|
||||||
|
<term>chgpasswd</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
@@ -286,14 +287,6 @@
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
- <varlistentry condition="no_pam">
|
||||||
|
- <term>chsh</term>
|
||||||
|
- <listitem>
|
||||||
|
- <para>
|
||||||
|
- CHSH_AUTH LOGIN_STRING
|
||||||
|
- </para>
|
||||||
|
- </listitem>
|
||||||
|
- </varlistentry>
|
||||||
|
<!-- expiry: no variables (CONSOLE_GROUPS linked, but not used) -->
|
||||||
|
<!-- faillog: no variables -->
|
||||||
|
<varlistentry>
|
||||||
|
@@ -359,34 +352,6 @@
|
||||||
|
<para>LASTLOG_UID_MAX</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
- <varlistentry>
|
||||||
|
- <term>login</term>
|
||||||
|
- <listitem>
|
||||||
|
- <para>
|
||||||
|
- <phrase condition="no_pam">CONSOLE</phrase>
|
||||||
|
- CONSOLE_GROUPS DEFAULT_HOME
|
||||||
|
- <phrase condition="no_pam">ENV_HZ ENV_PATH ENV_SUPATH
|
||||||
|
- ENV_TZ ENVIRON_FILE</phrase>
|
||||||
|
- ERASECHAR FAIL_DELAY
|
||||||
|
- <phrase condition="no_pam">FAILLOG_ENAB</phrase>
|
||||||
|
- FAKE_SHELL
|
||||||
|
- <phrase condition="no_pam">FTMP_FILE</phrase>
|
||||||
|
- HUSHLOGIN_FILE
|
||||||
|
- <phrase condition="no_pam">ISSUE_FILE</phrase>
|
||||||
|
- KILLCHAR
|
||||||
|
- <phrase condition="no_pam">LASTLOG_ENAB LASTLOG_UID_MAX</phrase>
|
||||||
|
- LOGIN_RETRIES
|
||||||
|
- <phrase condition="no_pam">LOGIN_STRING</phrase>
|
||||||
|
- LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB
|
||||||
|
- <phrase condition="no_pam">MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE
|
||||||
|
- MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB
|
||||||
|
- QUOTAS_ENAB</phrase>
|
||||||
|
- TTYGROUP TTYPERM TTYTYPE_FILE
|
||||||
|
- <phrase condition="no_pam">ULIMIT UMASK</phrase>
|
||||||
|
- USERGROUPS_ENAB
|
||||||
|
- </para>
|
||||||
|
- </listitem>
|
||||||
|
- </varlistentry>
|
||||||
|
<!-- logoutd: no variables -->
|
||||||
|
<varlistentry>
|
||||||
|
<term>newgrp / sg</term>
|
||||||
|
@@ -415,17 +380,6 @@
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<!-- nologin: no variables -->
|
||||||
|
- <varlistentry condition="no_pam">
|
||||||
|
- <term>passwd</term>
|
||||||
|
- <listitem>
|
||||||
|
- <para>
|
||||||
|
- ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB
|
||||||
|
- PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN
|
||||||
|
- <phrase condition="sha_crypt">SHA_CRYPT_MAX_ROUNDS
|
||||||
|
- SHA_CRYPT_MIN_ROUNDS</phrase>
|
||||||
|
- </para>
|
||||||
|
- </listitem>
|
||||||
|
- </varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>pwck</term>
|
||||||
|
<listitem>
|
||||||
|
@@ -452,32 +406,6 @@
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
- <varlistentry>
|
||||||
|
- <term>su</term>
|
||||||
|
- <listitem>
|
||||||
|
- <para>
|
||||||
|
- <phrase condition="no_pam">CONSOLE</phrase>
|
||||||
|
- CONSOLE_GROUPS DEFAULT_HOME
|
||||||
|
- <phrase condition="no_pam">ENV_HZ ENVIRON_FILE</phrase>
|
||||||
|
- ENV_PATH ENV_SUPATH
|
||||||
|
- <phrase condition="no_pam">ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB
|
||||||
|
- MAIL_DIR MAIL_FILE QUOTAS_ENAB</phrase>
|
||||||
|
- SULOG_FILE SU_NAME
|
||||||
|
- <phrase condition="no_pam">SU_WHEEL_ONLY</phrase>
|
||||||
|
- SYSLOG_SU_ENAB
|
||||||
|
- <phrase condition="no_pam">USERGROUPS_ENAB</phrase>
|
||||||
|
- </para>
|
||||||
|
- </listitem>
|
||||||
|
- </varlistentry>
|
||||||
|
- <varlistentry>
|
||||||
|
- <term>sulogin</term>
|
||||||
|
- <listitem>
|
||||||
|
- <para>
|
||||||
|
- ENV_HZ
|
||||||
|
- <phrase condition="no_pam">ENV_TZ</phrase>
|
||||||
|
- </para>
|
||||||
|
- </listitem>
|
||||||
|
- </varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>useradd</term>
|
||||||
|
<listitem>
|
|
@ -0,0 +1,48 @@
|
||||||
|
From e101219ad71de11da3fdd1b3ec2620fd1a97b92c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Iker Pedrosa <ipedrosa@redhat.com>
|
||||||
|
Date: Mon, 10 Jan 2022 15:30:28 +0100
|
||||||
|
Subject: [PATCH] nss: get shadow_logfd with log_get_logfd()
|
||||||
|
|
||||||
|
If /etc/nsswitch.conf doesn't exist podman crashes because shadow_logfd
|
||||||
|
is NULL. In order to avoid that load the log file descriptor with the
|
||||||
|
log_get_logfd() helper function.
|
||||||
|
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2038811
|
||||||
|
|
||||||
|
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
|
||||||
|
---
|
||||||
|
lib/nss.c | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/nss.c b/lib/nss.c
|
||||||
|
index 02742902..06fa48e5 100644
|
||||||
|
--- a/lib/nss.c
|
||||||
|
+++ b/lib/nss.c
|
||||||
|
@@ -9,6 +9,7 @@
|
||||||
|
#include "prototypes.h"
|
||||||
|
#include "../libsubid/subid.h"
|
||||||
|
#include "shadowlog_internal.h"
|
||||||
|
+#include "shadowlog.h"
|
||||||
|
|
||||||
|
#define NSSWITCH "/etc/nsswitch.conf"
|
||||||
|
|
||||||
|
@@ -42,6 +43,7 @@ void nss_init(const char *nsswitch_path) {
|
||||||
|
FILE *nssfp = NULL;
|
||||||
|
char *line = NULL, *p, *token, *saveptr;
|
||||||
|
size_t len = 0;
|
||||||
|
+ FILE *shadow_logfd = log_get_logfd();
|
||||||
|
|
||||||
|
if (atomic_flag_test_and_set(&nss_init_started)) {
|
||||||
|
// Another thread has started nss_init, wait for it to complete
|
||||||
|
@@ -57,7 +59,7 @@ void nss_init(const char *nsswitch_path) {
|
||||||
|
// subid: files
|
||||||
|
nssfp = fopen(nsswitch_path, "r");
|
||||||
|
if (!nssfp) {
|
||||||
|
- fprintf(shadow_logfd, "Failed opening %s: %m", nsswitch_path);
|
||||||
|
+ fprintf(shadow_logfd, "Failed opening %s: %m\n", nsswitch_path);
|
||||||
|
atomic_store(&nss_init_completed, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
<!--
|
||||||
|
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>HOME_MODE</option> (number)</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The mode for new home directories. If not specified,
|
||||||
|
the <option>UMASK</option> is used to create the mode.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<command>useradd</command> and <command>newusers</command> use this
|
||||||
|
to set the mode of the home directory they create.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
|
@ -6,15 +6,121 @@
|
||||||
# /etc/pam.d/system-auth for more information.
|
# /etc/pam.d/system-auth for more information.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Delay in seconds before being allowed another attempt after a login failure
|
||||||
|
# Note: When PAM is used, some modules may enforce a minimum delay (e.g.
|
||||||
|
# pam_unix(8) enforces a 2s delay)
|
||||||
|
#
|
||||||
|
#FAIL_DELAY 3
|
||||||
|
|
||||||
|
# Currently FAILLOG_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable display of unknown usernames when login(1) failures are recorded.
|
||||||
|
#
|
||||||
|
#LOG_UNKFAIL_ENAB no
|
||||||
|
|
||||||
|
# Currently LOG_OK_LOGINS is not supported
|
||||||
|
|
||||||
|
# Currently LASTLOG_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Limit the highest user ID number for which the lastlog entries should
|
||||||
|
# be updated.
|
||||||
|
#
|
||||||
|
# No LASTLOG_UID_MAX means that there is no user ID limit for writing
|
||||||
|
# lastlog entries.
|
||||||
|
#
|
||||||
|
#LASTLOG_UID_MAX
|
||||||
|
|
||||||
|
# Currently MAIL_CHECK_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently OBSCURE_CHECKS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently PORTTIME_CHECKS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently QUOTAS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently SYSLOG_SU_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable "syslog" logging of newgrp(1) and sg(1) activity.
|
||||||
|
#
|
||||||
|
#SYSLOG_SG_ENAB yes
|
||||||
|
|
||||||
|
# Currently CONSOLE is not supported
|
||||||
|
|
||||||
|
# Currently SULOG_FILE is not supported
|
||||||
|
|
||||||
|
# Currently MOTD_FILE is not supported
|
||||||
|
|
||||||
|
# Currently ISSUE_FILE is not supported
|
||||||
|
|
||||||
|
# Currently TTYTYPE_FILE is not supported
|
||||||
|
|
||||||
|
# Currently FTMP_FILE is not supported
|
||||||
|
|
||||||
|
# Currently NOLOGINS_FILE is not supported
|
||||||
|
|
||||||
|
# Currently SU_NAME is not supported
|
||||||
|
|
||||||
# *REQUIRED*
|
# *REQUIRED*
|
||||||
# Directory where mailboxes reside, _or_ name of file, relative to the
|
# Directory where mailboxes reside, _or_ name of file, relative to the
|
||||||
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
|
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
|
||||||
# QMAIL_DIR is for Qmail
|
|
||||||
#
|
#
|
||||||
#QMAIL_DIR Maildir
|
|
||||||
MAIL_DIR /var/spool/mail
|
MAIL_DIR /var/spool/mail
|
||||||
#MAIL_FILE .mail
|
#MAIL_FILE .mail
|
||||||
|
|
||||||
|
#
|
||||||
|
# If defined, file which inhibits all the usual chatter during the login
|
||||||
|
# sequence. If a full pathname, then hushed mode will be enabled if the
|
||||||
|
# user's name or shell are found in the file. If not a full pathname, then
|
||||||
|
# hushed mode will be enabled if the file exists in the user's home directory.
|
||||||
|
#
|
||||||
|
#HUSHLOGIN_FILE .hushlogin
|
||||||
|
#HUSHLOGIN_FILE /etc/hushlogins
|
||||||
|
|
||||||
|
# Currently ENV_TZ is not supported
|
||||||
|
|
||||||
|
# Currently ENV_HZ is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# The default PATH settings, for superuser and normal users.
|
||||||
|
#
|
||||||
|
# (they are minimal, add the rest in the shell startup files)
|
||||||
|
#ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
#ENV_PATH PATH=/bin:/usr/bin
|
||||||
|
|
||||||
|
#
|
||||||
|
# Terminal permissions
|
||||||
|
#
|
||||||
|
# TTYGROUP Login tty will be assigned this group ownership.
|
||||||
|
# TTYPERM Login tty will be set to this permission.
|
||||||
|
#
|
||||||
|
# If you have a write(1) program which is "setgid" to a special group
|
||||||
|
# which owns the terminals, define TTYGROUP as the number of such group
|
||||||
|
# and TTYPERM as 0620. Otherwise leave TTYGROUP commented out and
|
||||||
|
# set TTYPERM to either 622 or 600.
|
||||||
|
#
|
||||||
|
#TTYGROUP tty
|
||||||
|
#TTYPERM 0600
|
||||||
|
|
||||||
|
# Currently ERASECHAR, KILLCHAR and ULIMIT are not supported
|
||||||
|
|
||||||
|
# Default initial "umask" value used by login(1) on non-PAM enabled systems.
|
||||||
|
# Default "umask" value for pam_umask(8) on PAM enabled systems.
|
||||||
|
# UMASK is also used by useradd(8) and newusers(8) to set the mode for new
|
||||||
|
# home directories if HOME_MODE is not set.
|
||||||
|
# 022 is the default value, but 027, or even 077, could be considered
|
||||||
|
# for increased privacy. There is no One True Answer here: each sysadmin
|
||||||
|
# must make up their mind.
|
||||||
|
UMASK 022
|
||||||
|
|
||||||
|
# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
|
||||||
|
# home directories.
|
||||||
|
# If HOME_MODE is not set, the value of UMASK is used to create the mode.
|
||||||
|
HOME_MODE 0700
|
||||||
|
|
||||||
# Password aging controls:
|
# Password aging controls:
|
||||||
#
|
#
|
||||||
# PASS_MAX_DAYS Maximum number of days a password may be used.
|
# PASS_MAX_DAYS Maximum number of days a password may be used.
|
||||||
|
@ -24,26 +130,132 @@ MAIL_DIR /var/spool/mail
|
||||||
#
|
#
|
||||||
PASS_MAX_DAYS 99999
|
PASS_MAX_DAYS 99999
|
||||||
PASS_MIN_DAYS 0
|
PASS_MIN_DAYS 0
|
||||||
PASS_MIN_LEN 5
|
|
||||||
PASS_WARN_AGE 7
|
PASS_WARN_AGE 7
|
||||||
|
|
||||||
|
# Currently PASS_MIN_LEN is not supported
|
||||||
|
|
||||||
|
# Currently SU_WHEEL_ONLY is not supported
|
||||||
|
|
||||||
|
# Currently CRACKLIB_DICTPATH is not supported
|
||||||
|
|
||||||
#
|
#
|
||||||
# Min/max values for automatic uid selection in useradd
|
# Min/max values for automatic uid selection in useradd(8)
|
||||||
#
|
#
|
||||||
UID_MIN 1000
|
UID_MIN 1000
|
||||||
UID_MAX 60000
|
UID_MAX 60000
|
||||||
# System accounts
|
# System accounts
|
||||||
SYS_UID_MIN 201
|
SYS_UID_MIN 201
|
||||||
SYS_UID_MAX 999
|
SYS_UID_MAX 999
|
||||||
|
# Extra per user uids
|
||||||
|
SUB_UID_MIN 100000
|
||||||
|
SUB_UID_MAX 600100000
|
||||||
|
SUB_UID_COUNT 65536
|
||||||
|
|
||||||
#
|
#
|
||||||
# Min/max values for automatic gid selection in groupadd
|
# Min/max values for automatic gid selection in groupadd(8)
|
||||||
#
|
#
|
||||||
GID_MIN 1000
|
GID_MIN 1000
|
||||||
GID_MAX 60000
|
GID_MAX 60000
|
||||||
# System accounts
|
# System accounts
|
||||||
SYS_GID_MIN 201
|
SYS_GID_MIN 201
|
||||||
SYS_GID_MAX 999
|
SYS_GID_MAX 999
|
||||||
|
# Extra per user group ids
|
||||||
|
SUB_GID_MIN 100000
|
||||||
|
SUB_GID_MAX 600100000
|
||||||
|
SUB_GID_COUNT 65536
|
||||||
|
|
||||||
|
#
|
||||||
|
# Max number of login(1) retries if password is bad
|
||||||
|
#
|
||||||
|
#LOGIN_RETRIES 3
|
||||||
|
|
||||||
|
#
|
||||||
|
# Max time in seconds for login(1)
|
||||||
|
#
|
||||||
|
#LOGIN_TIMEOUT 60
|
||||||
|
|
||||||
|
# Currently PASS_CHANGE_TRIES is not supported
|
||||||
|
|
||||||
|
# Currently PASS_ALWAYS_WARN is not supported
|
||||||
|
|
||||||
|
# Currently PASS_MAX_LEN is not supported
|
||||||
|
|
||||||
|
# Currently CHFN_AUTH is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Which fields may be changed by regular users using chfn(1) - use
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Currently LOGIN_STRING is not supported
|
||||||
|
|
||||||
|
# Currently MD5_CRYPT_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set to MD5, MD5-based algorithm will be used for encrypting password
|
||||||
|
# If set to SHA256, SHA256-based algorithm will be used for encrypting password
|
||||||
|
# If set to SHA512, SHA512-based algorithm will be used for encrypting password
|
||||||
|
# If set to BCRYPT, BCRYPT-based algorithm will be used for encrypting password
|
||||||
|
# If set to YESCRYPT, YESCRYPT-based algorithm will be used for encrypting password
|
||||||
|
# If set to DES, DES-based algorithm will be used for encrypting password (default)
|
||||||
|
#
|
||||||
|
ENCRYPT_METHOD YESCRYPT
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to SHA256 or SHA512.
|
||||||
|
#
|
||||||
|
# Define the number of SHA rounds.
|
||||||
|
# With a lot of rounds, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU resources will be needed to authenticate users if
|
||||||
|
# this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, the libc will choose the default number of rounds (5000).
|
||||||
|
# The values must be within the 1000-999999999 range.
|
||||||
|
#
|
||||||
|
#SHA_CRYPT_MAX_ROUNDS 5000
|
||||||
|
|
||||||
|
# Currently SHA_CRYPT_MIN_ROUNDS is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to BCRYPT.
|
||||||
|
#
|
||||||
|
# Define the number of BCRYPT rounds.
|
||||||
|
# With a lot of rounds, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU resources will be needed to authenticate users if
|
||||||
|
# this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, 13 rounds will be attempted.
|
||||||
|
# If only one of the MIN or MAX values is set, then this value will be used.
|
||||||
|
# If MIN > MAX, the highest value will be used.
|
||||||
|
#
|
||||||
|
#BCRYPT_MIN_ROUNDS 13
|
||||||
|
#BCRYPT_MAX_ROUNDS 31
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to YESCRYPT.
|
||||||
|
#
|
||||||
|
# Define the YESCRYPT cost factor.
|
||||||
|
# With a higher cost factor, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU time and more memory will be needed to authenticate users
|
||||||
|
# if this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, a cost factor of 5 will be used.
|
||||||
|
# The value must be within the 1-11 range.
|
||||||
|
#
|
||||||
|
#YESCRYPT_COST_FACTOR 5
|
||||||
|
|
||||||
|
# Currently CONSOLE_GROUPS is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Should login be allowed if we can't cd to the home directory?
|
||||||
|
# Default is yes.
|
||||||
|
#
|
||||||
|
#DEFAULT_HOME yes
|
||||||
|
|
||||||
|
# Currently ENVIRON_FILE is not supported
|
||||||
|
|
||||||
#
|
#
|
||||||
# If defined, this command is run when removing a user.
|
# If defined, this command is run when removing a user.
|
||||||
|
@ -53,20 +265,41 @@ SYS_GID_MAX 999
|
||||||
#USERDEL_CMD /usr/sbin/userdel_local
|
#USERDEL_CMD /usr/sbin/userdel_local
|
||||||
|
|
||||||
#
|
#
|
||||||
# If useradd should create home directories for users by default
|
# Enables userdel(8) to remove user groups if no members exist.
|
||||||
# On RH systems, we do. This option is overridden with the -m flag on
|
|
||||||
# useradd command line.
|
|
||||||
#
|
|
||||||
CREATE_HOME yes
|
|
||||||
|
|
||||||
# The permission mask is initialized to this value. If not specified,
|
|
||||||
# the permission mask will be initialized to 022.
|
|
||||||
UMASK 077
|
|
||||||
|
|
||||||
# This enables userdel to remove user groups if no members exist.
|
|
||||||
#
|
#
|
||||||
USERGROUPS_ENAB yes
|
USERGROUPS_ENAB yes
|
||||||
|
|
||||||
# Use SHA512 to encrypt password.
|
#
|
||||||
ENCRYPT_METHOD SHA512
|
# If set to a non-zero number, the shadow utilities will make sure that
|
||||||
|
# groups never have more than this number of users on one line.
|
||||||
|
# This permits to support split groups (groups split into multiple lines,
|
||||||
|
# with the same group ID, to avoid limitation of the line length in the
|
||||||
|
# group file).
|
||||||
|
#
|
||||||
|
# 0 is the default value and disables this feature.
|
||||||
|
#
|
||||||
|
#MAX_MEMBERS_PER_GROUP 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# If useradd(8) 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(8)
|
||||||
|
# command-line.
|
||||||
|
#
|
||||||
|
CREATE_HOME yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# Force use shadow, even if shadow passwd & shadow group files are
|
||||||
|
# missing.
|
||||||
|
#
|
||||||
|
#FORCE_SHADOW yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# Select the HMAC cryptography algorithm.
|
||||||
|
# Used in pam_timestamp module to calculate the keyed-hash message
|
||||||
|
# authentication code.
|
||||||
|
#
|
||||||
|
# Note: It is recommended to check hmac(3) to see the possible algorithms
|
||||||
|
# that are available in your system.
|
||||||
|
#
|
||||||
|
HMAC_CRYPTO_ALGO SHA512
|
||||||
|
|
|
@ -1,69 +1,80 @@
|
||||||
Summary: Utilities for managing accounts and shadow password files
|
Summary: Utilities for managing accounts and shadow password files
|
||||||
Name: shadow-utils
|
Name: shadow-utils
|
||||||
Version: 4.8
|
Version: 4.11.1
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
Epoch: 2
|
Epoch: 2
|
||||||
URL: http://pkg-shadow.alioth.debian.org/
|
License: BSD and GPLv2+
|
||||||
Source0: https://github.com/shadow-maint/shadow/releases/download/%{version}/shadow-%{version}.tar.xz
|
URL: https://github.com/shadow-maint/shadow
|
||||||
Source1: https://github.com/shadow-maint/shadow/releases/download/%{version}/shadow-%{version}.tar.xz.asc
|
Source0: https://github.com/shadow-maint/shadow/releases/download/v%{version}/shadow-%{version}.tar.xz
|
||||||
|
Source1: https://github.com/shadow-maint/shadow/releases/download/v%{version}/shadow-%{version}.tar.xz.asc
|
||||||
Source2: shadow-utils.useradd
|
Source2: shadow-utils.useradd
|
||||||
Source3: shadow-utils.login.defs
|
Source3: shadow-utils.login.defs
|
||||||
Source4: shadow-bsd.txt
|
Source4: shadow-bsd.txt
|
||||||
Source5: https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
Source5: https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
||||||
|
Source6: shadow-utils.HOME_MODE.xml
|
||||||
|
|
||||||
|
### Globals ###
|
||||||
|
%global includesubiddir %{_includedir}/shadow
|
||||||
|
|
||||||
|
### Patches ###
|
||||||
# Misc small changes - most probably non-upstreamable
|
# Misc small changes - most probably non-upstreamable
|
||||||
Patch0: shadow-4.6-redhat.patch
|
Patch0: shadow-4.11.1-redhat.patch
|
||||||
# Be more lenient with acceptable user/group names - non upstreamable
|
# Be more lenient with acceptable user/group names - non upstreamable
|
||||||
Patch1: shadow-4.8-goodname.patch
|
Patch1: shadow-4.8-goodname.patch
|
||||||
# Docfix for newusers - could be upstreamed
|
|
||||||
Patch2: shadow-4.1.5.1-info-parent-dir.patch
|
|
||||||
# Misc SElinux related changes - upstreamability unknown
|
|
||||||
Patch6: shadow-4.8-selinux.patch
|
|
||||||
# Syslog message change - could be upstreamed
|
|
||||||
Patch11: shadow-4.1.5.1-logmsg.patch
|
|
||||||
# SElinux related - upstreamability unknown
|
# SElinux related - upstreamability unknown
|
||||||
Patch14: shadow-4.1.5.1-default-range.patch
|
Patch3: shadow-4.9-default-range.patch
|
||||||
# Misc manual page changes - only some of them could be upstreamed
|
# Misc manual page changes - non-upstreamable
|
||||||
Patch15: shadow-4.8-manfix.patch
|
Patch4: shadow-4.9-manfix.patch
|
||||||
# Userdel usage message change - could be upstreamed
|
|
||||||
Patch17: shadow-4.1.5.1-userdel-helpfix.patch
|
|
||||||
# Date parsing improvement - could be upstreamed
|
# Date parsing improvement - could be upstreamed
|
||||||
Patch19: shadow-4.2.1-date-parsing.patch
|
Patch5: shadow-4.2.1-date-parsing.patch
|
||||||
# Additional error message - could be upstreamed
|
# Additional error message - could be upstreamed
|
||||||
Patch21: shadow-4.6-move-home.patch
|
Patch6: shadow-4.6-move-home.patch
|
||||||
# Audit message changes - upstreamability unknown
|
# Audit message changes - upstreamability unknown
|
||||||
Patch22: shadow-4.8-audit-update.patch
|
Patch7: shadow-4.11.1-audit-update.patch
|
||||||
# Changes related to password unlocking - could be upstreamed
|
# Changes related to password unlocking - could be upstreamed
|
||||||
Patch23: shadow-4.5-usermod-unlock.patch
|
Patch8: shadow-4.5-usermod-unlock.patch
|
||||||
# Additional SElinux related changes - upstreamability unknown
|
# Additional SElinux related changes - upstreamability unknown
|
||||||
Patch28: shadow-4.8-selinux-perms.patch
|
Patch9: shadow-4.8-selinux-perms.patch
|
||||||
# Handle NULL return from *time funcs - could be upstreamed
|
# Handle NULL return from *time funcs - upstreamable
|
||||||
Patch29: shadow-4.2.1-null-tm.patch
|
Patch10: shadow-4.11.1-null-tm.patch
|
||||||
# SElinux related - upstreamability unknown
|
|
||||||
Patch31: shadow-4.6-getenforce.patch
|
|
||||||
# Handle include of crypt.h - could be upstreamed
|
|
||||||
Patch32: shadow-4.8-crypt_h.patch
|
|
||||||
# Handle /etc/passwd corruption - could be upstreamed
|
# Handle /etc/passwd corruption - could be upstreamed
|
||||||
Patch33: shadow-4.8-long-entry.patch
|
Patch11: shadow-4.8-long-entry.patch
|
||||||
# Limit uid/gid allocation to non-zero - could be upstreamed
|
# Limit uid/gid allocation to non-zero - could be upstreamed
|
||||||
Patch38: shadow-4.6-sysugid-min-limit.patch
|
Patch12: shadow-4.6-sysugid-min-limit.patch
|
||||||
# Ignore LOGIN_PLAIN_PROMPT in login.defs - upstreamability unknown
|
# Ignore LOGIN_PLAIN_PROMPT in login.defs - upstreamability unknown
|
||||||
Patch40: shadow-4.8-ignore-login-prompt.patch
|
Patch13: shadow-4.8-ignore-login-prompt.patch
|
||||||
# Make the missing shell check into warning - could be upstreamed
|
# https://github.com/shadow-maint/shadow/commit/e101219ad71de11da3fdd1b3ec2620fd1a97b92c
|
||||||
Patch41: shadow-4.8-invalid-shell-check.patch
|
Patch14: shadow-4.9-nss-get-shadow-logfd-with-log-get-logfd.patch
|
||||||
|
# https://github.com/shadow-maint/shadow/commit/f1f1678e13aa3ae49bdb139efaa2c5bc53dcfe92
|
||||||
|
Patch15: shadow-4.11.1-useradd-modify-check-ID-range-for-system-users.patch
|
||||||
|
|
||||||
License: BSD and GPLv2+
|
### Dependencies ###
|
||||||
BuildRequires: gcc
|
|
||||||
BuildRequires: libselinux-devel >= 1.25.2-1
|
|
||||||
BuildRequires: audit-libs-devel >= 1.6.5
|
|
||||||
BuildRequires: libsemanage-devel
|
|
||||||
BuildRequires: libacl-devel, libattr-devel
|
|
||||||
BuildRequires: bison, flex, docbook-style-xsl, docbook-dtds
|
|
||||||
BuildRequires: autoconf, automake, libtool, gettext-devel
|
|
||||||
BuildRequires: /usr/bin/xsltproc, /usr/bin/itstool
|
|
||||||
Requires: libselinux >= 1.25.2-1
|
|
||||||
Requires: audit-libs >= 1.6.5
|
Requires: audit-libs >= 1.6.5
|
||||||
|
Requires: libselinux >= 1.25.2-1
|
||||||
Requires: setup
|
Requires: setup
|
||||||
|
|
||||||
|
### Build Dependencies ###
|
||||||
|
BuildRequires: audit-libs-devel >= 1.6.5
|
||||||
|
BuildRequires: autoconf
|
||||||
|
BuildRequires: automake
|
||||||
|
BuildRequires: bison
|
||||||
|
BuildRequires: docbook-dtds
|
||||||
|
BuildRequires: docbook-style-xsl
|
||||||
|
BuildRequires: flex
|
||||||
|
BuildRequires: gcc
|
||||||
|
BuildRequires: gettext-devel
|
||||||
|
BuildRequires: itstool
|
||||||
|
BuildRequires: libacl-devel
|
||||||
|
BuildRequires: libattr-devel
|
||||||
|
BuildRequires: libselinux-devel >= 1.25.2-1
|
||||||
|
BuildRequires: libsemanage-devel
|
||||||
|
BuildRequires: libtool
|
||||||
|
BuildRequires: libxslt
|
||||||
|
BuildRequires: make
|
||||||
|
|
||||||
|
### Provides ###
|
||||||
|
Provides: shadow = %{epoch}:%{version}-%{release}
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The shadow-utils package includes the necessary programs for
|
The shadow-utils package includes the necessary programs for
|
||||||
converting UNIX password files to the shadow password format, plus
|
converting UNIX password files to the shadow password format, plus
|
||||||
|
@ -76,33 +87,47 @@ for all users. The useradd, userdel, and usermod commands are used for
|
||||||
managing user accounts. The groupadd, groupdel, and groupmod commands
|
managing user accounts. The groupadd, groupdel, and groupmod commands
|
||||||
are used for managing group accounts.
|
are used for managing group accounts.
|
||||||
|
|
||||||
|
|
||||||
|
### Subpackages ###
|
||||||
|
%package subid
|
||||||
|
Summary: A library to manage subordinate uid and gid ranges
|
||||||
|
License: BSD and GPLv2+
|
||||||
|
|
||||||
|
%description subid
|
||||||
|
Utility library that provides a way to manage subid ranges.
|
||||||
|
|
||||||
|
|
||||||
|
%package subid-devel
|
||||||
|
Summary: Development package for shadow-utils-subid
|
||||||
|
License: BSD and GPLv2+
|
||||||
|
Requires: shadow-utils-subid = %{epoch}:%{version}-%{release}
|
||||||
|
|
||||||
|
%description subid-devel
|
||||||
|
Development files for shadow-utils-subid.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n shadow-%{version}
|
%setup -q -n shadow-%{version}
|
||||||
%patch0 -p1 -b .redhat
|
%patch0 -p1 -b .redhat
|
||||||
%patch1 -p1 -b .goodname
|
%patch1 -p1 -b .goodname
|
||||||
%patch2 -p1 -b .info-parent-dir
|
%patch3 -p1 -b .default-range
|
||||||
%patch6 -p1 -b .selinux
|
%patch4 -p1 -b .manfix
|
||||||
%patch11 -p1 -b .logmsg
|
%patch5 -p1 -b .date-parsing
|
||||||
%patch14 -p1 -b .default-range
|
%patch6 -p1 -b .move-home
|
||||||
%patch15 -p1 -b .manfix
|
%patch7 -p1 -b .audit-update
|
||||||
%patch17 -p1 -b .userdel
|
%patch8 -p1 -b .unlock
|
||||||
%patch19 -p1 -b .date-parsing
|
%patch9 -p1 -b .selinux-perms
|
||||||
%patch21 -p1 -b .move-home
|
%patch10 -p1 -b .null-tm
|
||||||
%patch22 -p1 -b .audit-update
|
%patch11 -p1 -b .long-entry
|
||||||
%patch23 -p1 -b .unlock
|
%patch12 -p1 -b .sysugid-min-limit
|
||||||
%patch28 -p1 -b .selinux-perms
|
%patch13 -p1 -b .login-prompt
|
||||||
%patch29 -p1 -b .null-tm
|
%patch14 -p1 -b .nss-get-shadow-logfd-with-log-get-logfd
|
||||||
%patch31 -p1 -b .getenforce
|
%patch15 -p1 -b .useradd-modify-check-ID-range-for-system-users
|
||||||
%patch32 -p1 -b .crypt_h
|
|
||||||
%patch33 -p1 -b .long-entry
|
|
||||||
%patch38 -p1 -b .sysugid-min-limit
|
|
||||||
%patch40 -p1 -b .login-prompt
|
|
||||||
%patch41 -p1 -b .invalid-shell
|
|
||||||
|
|
||||||
iconv -f ISO88591 -t utf-8 doc/HOWTO > doc/HOWTO.utf8
|
iconv -f ISO88591 -t utf-8 doc/HOWTO > doc/HOWTO.utf8
|
||||||
cp -f doc/HOWTO.utf8 doc/HOWTO
|
cp -f doc/HOWTO.utf8 doc/HOWTO
|
||||||
|
|
||||||
cp -a %{SOURCE4} %{SOURCE5} .
|
cp -a %{SOURCE4} %{SOURCE5} .
|
||||||
|
cp -a %{SOURCE6} man/login.defs.d/HOME_MODE.xml
|
||||||
|
|
||||||
# Force regeneration of getdate.c
|
# Force regeneration of getdate.c
|
||||||
rm libmisc/getdate.c
|
rm libmisc/getdate.c
|
||||||
|
@ -123,74 +148,75 @@ autoreconf
|
||||||
--enable-man \
|
--enable-man \
|
||||||
--with-audit \
|
--with-audit \
|
||||||
--with-sha-crypt \
|
--with-sha-crypt \
|
||||||
|
--with-bcrypt \
|
||||||
|
--with-yescrypt \
|
||||||
--with-selinux \
|
--with-selinux \
|
||||||
--without-libcrack \
|
--without-libcrack \
|
||||||
--without-libpam \
|
--without-libpam \
|
||||||
--disable-shared \
|
--enable-shared \
|
||||||
--with-group-name-max-length=32
|
--with-group-name-max-length=32
|
||||||
%make_build
|
%make_build
|
||||||
|
|
||||||
%install
|
%install
|
||||||
rm -rf $RPM_BUILD_ROOT
|
%make_install gnulocaledir=$RPM_BUILD_ROOT%{_datadir}/locale MKINSTALLDIRS=`pwd`/mkinstalldirs
|
||||||
%make_install gnulocaledir=$RPM_BUILD_ROOT/%{_datadir}/locale MKINSTALLDIRS=`pwd`/mkinstalldirs
|
install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/default
|
||||||
install -d -m 755 $RPM_BUILD_ROOT/%{_sysconfdir}/default
|
install -p -c -m 0644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/login.defs
|
||||||
install -p -c -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/%{_sysconfdir}/login.defs
|
install -p -c -m 0600 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/default/useradd
|
||||||
install -p -c -m 0600 %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/default/useradd
|
|
||||||
|
|
||||||
|
|
||||||
ln -s useradd $RPM_BUILD_ROOT%{_sbindir}/adduser
|
ln -s useradd $RPM_BUILD_ROOT%{_sbindir}/adduser
|
||||||
ln -s useradd.8 $RPM_BUILD_ROOT/%{_mandir}/man8/adduser.8
|
ln -s useradd.8 $RPM_BUILD_ROOT%{_mandir}/man8/adduser.8
|
||||||
for subdir in $RPM_BUILD_ROOT/%{_mandir}/{??,??_??,??_??.*}/man* ; do
|
for subdir in $RPM_BUILD_ROOT%{_mandir}/{??,??_??,??_??.*}/man* ; do
|
||||||
test -d $subdir && test -e $subdir/useradd.8 && echo ".so man8/useradd.8" > $subdir/adduser.8
|
test -d $subdir && test -e $subdir/useradd.8 && echo ".so man8/useradd.8" > $subdir/adduser.8
|
||||||
done
|
done
|
||||||
|
|
||||||
# Remove binaries we don't use.
|
# Remove binaries we don't use.
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/chfn
|
rm $RPM_BUILD_ROOT%{_bindir}/chfn
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/chsh
|
rm $RPM_BUILD_ROOT%{_bindir}/chsh
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/expiry
|
rm $RPM_BUILD_ROOT%{_bindir}/expiry
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/groups
|
rm $RPM_BUILD_ROOT%{_bindir}/groups
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/login
|
rm $RPM_BUILD_ROOT%{_bindir}/login
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/passwd
|
rm $RPM_BUILD_ROOT%{_bindir}/passwd
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/su
|
rm $RPM_BUILD_ROOT%{_bindir}/su
|
||||||
rm $RPM_BUILD_ROOT/%{_bindir}/faillog
|
rm $RPM_BUILD_ROOT%{_bindir}/faillog
|
||||||
rm $RPM_BUILD_ROOT/%{_sysconfdir}/login.access
|
rm $RPM_BUILD_ROOT%{_sysconfdir}/login.access
|
||||||
rm $RPM_BUILD_ROOT/%{_sysconfdir}/limits
|
rm $RPM_BUILD_ROOT%{_sysconfdir}/limits
|
||||||
rm $RPM_BUILD_ROOT/%{_sbindir}/logoutd
|
rm $RPM_BUILD_ROOT%{_sbindir}/logoutd
|
||||||
rm $RPM_BUILD_ROOT/%{_sbindir}/nologin
|
rm $RPM_BUILD_ROOT%{_sbindir}/nologin
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man1/chfn.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man1/chfn.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man1/chfn.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man1/chfn.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man1/chsh.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man1/chsh.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man1/chsh.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man1/chsh.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man1/expiry.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man1/expiry.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man1/expiry.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man1/expiry.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man1/groups.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man1/groups.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man1/groups.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man1/groups.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man1/login.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man1/login.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man1/login.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man1/login.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man1/passwd.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man1/passwd.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man1/passwd.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man1/passwd.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man1/su.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man1/su.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man1/su.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man1/su.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man5/limits.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man5/limits.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man5/limits.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man5/limits.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man5/login.access.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man5/login.access.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man5/login.access.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man5/login.access.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man5/passwd.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man5/passwd.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man5/passwd.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man5/passwd.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man5/porttime.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man5/porttime.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man5/porttime.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man5/porttime.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man5/suauth.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man5/suauth.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man5/suauth.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man5/suauth.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man8/logoutd.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man8/logoutd.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man8/logoutd.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man8/logoutd.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man8/nologin.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man8/nologin.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man8/nologin.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man8/nologin.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man3/getspnam.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man3/getspnam.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man3/getspnam.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man3/getspnam.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man5/faillog.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man5/faillog.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man5/faillog.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man5/faillog.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/man8/faillog.*
|
rm $RPM_BUILD_ROOT%{_mandir}/man8/faillog.*
|
||||||
rm $RPM_BUILD_ROOT/%{_mandir}/*/man8/faillog.*
|
rm $RPM_BUILD_ROOT%{_mandir}/*/man8/faillog.*
|
||||||
|
|
||||||
find $RPM_BUILD_ROOT%{_mandir} -depth -type d -empty -delete
|
find $RPM_BUILD_ROOT%{_mandir} -depth -type d -empty -delete
|
||||||
%find_lang shadow
|
%find_lang shadow
|
||||||
|
@ -202,9 +228,17 @@ for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do
|
||||||
echo "%%lang($lang) $dir/man*/*" >> shadow.lang
|
echo "%%lang($lang) $dir/man*/*" >> shadow.lang
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Move header files to its own folder
|
||||||
|
echo $(ls)
|
||||||
|
mkdir -p $RPM_BUILD_ROOT/%{includesubiddir}
|
||||||
|
install -m 644 libsubid/subid.h $RPM_BUILD_ROOT/%{includesubiddir}/
|
||||||
|
|
||||||
|
# Remove .la and .a files created by libsubid
|
||||||
|
rm -f $RPM_BUILD_ROOT/%{_libdir}/libsubid.la
|
||||||
|
rm -f $RPM_BUILD_ROOT/%{_libdir}/libsubid.a
|
||||||
|
|
||||||
%files -f shadow.lang
|
%files -f shadow.lang
|
||||||
%doc NEWS doc/HOWTO README
|
%doc NEWS doc/HOWTO README
|
||||||
%{!?_licensedir:%global license %%doc}
|
|
||||||
%license gpl-2.0.txt shadow-bsd.txt
|
%license gpl-2.0.txt shadow-bsd.txt
|
||||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/login.defs
|
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/login.defs
|
||||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/default/useradd
|
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/default/useradd
|
||||||
|
@ -251,7 +285,155 @@ done
|
||||||
%{_mandir}/man8/vipw.8*
|
%{_mandir}/man8/vipw.8*
|
||||||
%{_mandir}/man8/vigr.8*
|
%{_mandir}/man8/vigr.8*
|
||||||
|
|
||||||
|
%files subid
|
||||||
|
%{_libdir}/libsubid.so.*
|
||||||
|
%{_bindir}/getsubids
|
||||||
|
%{_mandir}/man1/getsubids.1*
|
||||||
|
|
||||||
|
%files subid-devel
|
||||||
|
%{includesubiddir}/subid.h
|
||||||
|
%{_libdir}/libsubid.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 1 2022 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.11.1-4
|
||||||
|
- useradd: modify check ID range for system users. Resolves: #2093692
|
||||||
|
|
||||||
|
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2:4.11.1-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Feb 10 2022 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.11.1-2
|
||||||
|
- Fix explicit subid requirement for subid-devel
|
||||||
|
|
||||||
|
* Tue Jan 25 2022 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.11.1-1
|
||||||
|
- Rebase to version 4.11.1 (#2034038)
|
||||||
|
- Fix release sources
|
||||||
|
- Add explicit subid requirement for subid-devel
|
||||||
|
|
||||||
|
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2:4.9-10
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jan 17 2022 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-9
|
||||||
|
- nss: get shadow_logfd with log_get_logfd() (#2038811)
|
||||||
|
- lib: make shadow_logfd and Prog not extern
|
||||||
|
- lib: rename Prog to shadow_progname
|
||||||
|
- lib: provide default values for shadow_progname
|
||||||
|
- libsubid: use log_set_progname in subid_init
|
||||||
|
|
||||||
|
* Fri Nov 19 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-8
|
||||||
|
- getsubids: provide system binary and man page (#1980780)
|
||||||
|
- pwck: fix segfault when calling fprintf() (#2021339)
|
||||||
|
- newgrp: fix segmentation fault (#2019553)
|
||||||
|
- groupdel: fix SIGSEGV when passwd does not exist (#1986111)
|
||||||
|
|
||||||
|
* Fri Nov 12 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-7
|
||||||
|
- useradd: change SELinux labels for home files (#2022658)
|
||||||
|
|
||||||
|
* Thu Nov 4 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-6
|
||||||
|
- useradd: revert fix memleak of grp (#2018697)
|
||||||
|
|
||||||
|
* Wed Oct 27 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-5
|
||||||
|
- useradd: generate home and mail directories with selinux user attribute
|
||||||
|
|
||||||
|
* Thu Sep 23 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-4
|
||||||
|
- login.defs: include HMAC_CRYPTO_ALGO key
|
||||||
|
- Clean spec file: organize dependencies and move License location
|
||||||
|
|
||||||
|
* Tue Aug 17 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-3
|
||||||
|
- libmisc: fix default value in SHA_get_salt_rounds()
|
||||||
|
|
||||||
|
* Mon Aug 9 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-2
|
||||||
|
- useradd: avoid generating an empty subid range (#1990653)
|
||||||
|
|
||||||
|
* Wed Aug 4 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-1
|
||||||
|
- Rebase to version 4.9
|
||||||
|
- usermod: allow all group types with -G option (#1975327)
|
||||||
|
- Clean spec file
|
||||||
|
|
||||||
|
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2:4.8.1-20
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 14 2021 Björn Esser <besser82@fedoraproject.org> - 2:4.8.1-19
|
||||||
|
- Add patch to fix 'fread returns element count, not element size'
|
||||||
|
|
||||||
|
* Wed Jul 14 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-18
|
||||||
|
- Fix regression issues detected in rhbz#667593 and rhbz#672510
|
||||||
|
|
||||||
|
* Mon Jul 12 2021 Björn Esser <besser82@fedoraproject.org> - 2:4.8.1-17
|
||||||
|
- Enable bcrypt support, as libxcrypt supports it well
|
||||||
|
|
||||||
|
* Sun Jul 04 2021 Björn Esser <besser82@fedoraproject.org> - 2:4.8.1-16
|
||||||
|
- Add a patch to obtain random bytes using getentropy()
|
||||||
|
- Update shadow-4.8-crypt_h.patch with the upstreamed version
|
||||||
|
- Add a patch to make use of crypt_gensalt() from libxcrypt
|
||||||
|
|
||||||
|
* Tue Jun 29 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-15
|
||||||
|
- useradd: free correct pointer (#1976809)
|
||||||
|
|
||||||
|
* Mon Jun 28 2021 Björn Esser <besser82@fedoraproject.org> - 2:4.8.1-14
|
||||||
|
- Add a patch to fix the used prefix for the bcrypt hash method
|
||||||
|
- Add a patch to cleanup the code in libmisc/salt.c
|
||||||
|
- Add a patch adding some clarifying comments in libmisc/salt.c
|
||||||
|
- Add a patch to obtain random bytes from /dev/urandom
|
||||||
|
|
||||||
|
* Mon Jun 28 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-13
|
||||||
|
- Covscan fixes
|
||||||
|
|
||||||
|
* Mon Jun 21 2021 Björn Esser <besser82@fedoraproject.org> - 2:4.8.1-12
|
||||||
|
- Backport support for yescrypt hash method
|
||||||
|
- Add a patch to fix the parameter type of YESCRYPT_salt_cost()
|
||||||
|
|
||||||
|
* Mon Jun 21 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-11
|
||||||
|
- libsubid: don't print error messages on stderr by default
|
||||||
|
- libsubid: libsubid_init return false if out of memory
|
||||||
|
- useradd: fix SUB_UID_COUNT=0
|
||||||
|
- libsubid: don't return owner in list_owner_ranges API call
|
||||||
|
- libsubid: libsubid_init don't print messages on error
|
||||||
|
- libsubid: fix newusers when nss provides subids
|
||||||
|
- man: clarify subid delegation
|
||||||
|
- libsubid: make shadow_logfd not extern
|
||||||
|
|
||||||
|
* Thu May 6 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-10
|
||||||
|
- man: mention NSS in new[ug]idmap manpages
|
||||||
|
- libsubid: move development header to shadow folder
|
||||||
|
|
||||||
|
* Fri Apr 16 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-9
|
||||||
|
- libsubid: creation and nsswitch support
|
||||||
|
- Creation of subid and subid-devel subpackages
|
||||||
|
|
||||||
|
* Mon Mar 29 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-8
|
||||||
|
- man: include lastlog file caveat (#951564)
|
||||||
|
- Upstream links to several patches
|
||||||
|
- Spec file cleanup by Robert Scheck
|
||||||
|
- Add BuildRequires: make by Tom Stellard
|
||||||
|
|
||||||
|
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2:4.8.1-7
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Nov 9 2020 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-6
|
||||||
|
- commonio: force lock file sync (#1862056)
|
||||||
|
|
||||||
|
* Tue Nov 3 2020 Petr Lautrbach <plautrba@redhat.com> - 2:4.8.1-5
|
||||||
|
- Rebuild with libsemanage.so.2
|
||||||
|
|
||||||
|
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2:4.8.1-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu May 14 2020 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-3
|
||||||
|
- check only local groups when adding new supplementary groups to a user (#1727236)
|
||||||
|
|
||||||
|
* Tue Mar 24 2020 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-2
|
||||||
|
- useradd: clarify the useradd -d parameter behavior in man page
|
||||||
|
|
||||||
|
* Tue Mar 17 2020 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8.1-1
|
||||||
|
- updated upstream to 4.8.1
|
||||||
|
|
||||||
|
* Tue Mar 17 2020 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8-5
|
||||||
|
- synchronized login.defs with upstream file (#1261099 and #1807957)
|
||||||
|
|
||||||
|
* Mon Feb 24 2020 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.8-4
|
||||||
|
- fix useradd: doesn't generate spool mail with the proper SELinux user identity
|
||||||
|
(#1690527)
|
||||||
|
|
||||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2:4.8-3
|
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2:4.8-3
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
|
4
sources
4
sources
|
@ -1,2 +1,2 @@
|
||||||
SHA512 (shadow-4.8.tar.xz) = 1c607aec541400fc179d6cbbac7511289c618ab2ce6ee9d7c18a8bfda00421c62d4b9e58aff52b5f82d485468e7db955c186ea0faad9a08003ffc01bdf2ccece
|
SHA512 (shadow-4.11.1.tar.xz) = 12fbe4d6ac929ad3c21525ed0f1026b5b678ccec9762f2ec7e611d9c180934def506325f2835fb750dd30af035b592f827ff151cd6e4c805aaaf8e01425c279f
|
||||||
SHA512 (shadow-4.8.tar.xz.asc) = 200f7793e55447cc5c0d11988ee26511167c5fe23e1f6622b6b0c8cb74498052f2df855f02e351fee0da16562f6a6510ad3954b4c5e13dd9a8da0d998f8dc5e6
|
SHA512 (shadow-4.11.1.tar.xz.asc) = 4594189678cc9bcc8831f62a5d42c605b085be4a3b540429d7c800f4304e2e8fe04358547917eb90c1513646fade7c714611bfdc98af7dec5321a3dc3e65c4fd
|
||||||
|
|
Loading…
Reference in New Issue