- Update to 4.11.1:

* build: include lib/shadowlog_internal.h in dist tarballs

- Update to 4.11:
  * Handle possible TOCTTOU issues in usermod/userdel
  	- (CVE-2013-4235)
  	- Use O_NOFOLLOW when copying file
  	- Kill all user tasks in userdel
  * Fix useradd -D segfault
  * Clean up obsolete libc feature-check ifdefs
  * Fix -fno-common build breaks due to duplicate Prog declarations
  * Have single date_to_str definition
  * Fix libsubid SONAME version
  * Clarify licensing info, use SPDX.

- Update to 4.10:
  * From this release forward, su from this package should be
    considered deprecated. Please replace any users of it with su
	from util-linux
  * libsubid fixes
  * Rename the test program list_subid_ranges to getsubids, write
    a manpage, so distros can ship it.
  * Add libeconf dep for new*idmap
  * Allow all group types with usermod -G
  * Avoid useradd generating empty subid range
  * Handle NULL pw_passwd
  * Fix default value SHA_get_salt_rounds
  * Use https where possible in README
  * Update content and format of README
  * Translation updates

OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=118
This commit is contained in:
Michael Vetter 2022-01-03 12:19:45 +00:00 committed by Git OBS Bridge
parent 87fcc1bbed
commit bba5d5413c
19 changed files with 677 additions and 454 deletions

View File

@ -1,123 +0,0 @@
Fix build fails for libsubid (libtool: error: cannot find name of link library for '../libsubid/libsubid.la').
Consisting of following upstream commits:
* f4a84efb468b8be21be124700ce35159c444e9d6
* 537b8cd90be7b47b45c45cfd27765ef85eb0ebf1
* fa986b1d73605ecca54a4f19249227aeab827bf6
Index: shadow-4.9/configure.ac
===================================================================
--- shadow-4.9.orig/configure.ac
+++ shadow-4.9/configure.ac
@@ -321,6 +321,8 @@ if test "$with_sha_crypt" = "yes"; then
AC_DEFINE(USE_SHA_CRYPT, 1, [Define to allow the SHA256 and SHA512 password encryption algorithms])
fi
+AM_CONDITIONAL(ENABLE_SHARED, test "x$enable_shared" = "xyes")
+
AM_CONDITIONAL(USE_BCRYPT, test "x$with_bcrypt" = "xyes")
if test "$with_bcrypt" = "yes"; then
AC_DEFINE(USE_BCRYPT, 1, [Define to allow the bcrypt password encryption algorithm])
Index: shadow-4.9/lib/Makefile.am
===================================================================
--- shadow-4.9.orig/lib/Makefile.am
+++ shadow-4.9/lib/Makefile.am
@@ -10,6 +10,8 @@ if HAVE_VENDORDIR
libshadow_la_CPPFLAGS += -DVENDORDIR=\"$(VENDORDIR)\"
endif
+libshadow_la_CPPFLAGS += -I$(top_srcdir)
+
libshadow_la_SOURCES = \
commonio.c \
commonio.h \
Index: shadow-4.9/libmisc/Makefile.am
===================================================================
--- shadow-4.9.orig/libmisc/Makefile.am
+++ shadow-4.9/libmisc/Makefile.am
@@ -1,7 +1,7 @@
EXTRA_DIST = .indent.pro xgetXXbyYY.c
-AM_CPPFLAGS = -I$(top_srcdir)/lib $(ECONF_CPPFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS)
noinst_LTLIBRARIES = libmisc.la
Index: shadow-4.9/libsubid/Makefile.am
===================================================================
--- shadow-4.9.orig/libsubid/Makefile.am
+++ shadow-4.9/libsubid/Makefile.am
@@ -1,6 +1,8 @@
lib_LTLIBRARIES = libsubid.la
+if ENABLE_SHARED
libsubid_la_LDFLAGS = -Wl,-soname,libsubid.so.@LIBSUBID_ABI@ \
-shared -version-info @LIBSUBID_ABI_MAJOR@
+endif
libsubid_la_SOURCES = api.c
pkginclude_HEADERS = subid.h
@@ -16,11 +18,12 @@ MISCLIBS = \
$(LIBCRYPT) \
$(LIBACL) \
$(LIBATTR) \
- $(LIBTCB)
+ $(LIBTCB) \
+ $(LIBPAM)
libsubid_la_LIBADD = \
- $(top_srcdir)/lib/libshadow.la \
- $(top_srcdir)/libmisc/libmisc.la \
+ $(top_builddir)/lib/libshadow.la \
+ $(top_builddir)/libmisc/libmisc.la \
$(MISCLIBS) -ldl
AM_CPPFLAGS = \
Index: shadow-4.9/src/Makefile.am
===================================================================
--- shadow-4.9.orig/src/Makefile.am
+++ shadow-4.9/src/Makefile.am
@@ -10,6 +10,7 @@ sgidperms = 2755
AM_CPPFLAGS = \
-I${top_srcdir}/lib \
-I$(top_srcdir)/libmisc \
+ -I$(top_srcdir) \
-DLOCALEDIR=\"$(datadir)/locale\"
# XXX why are login and su in /bin anyway (other than for
@@ -183,6 +184,7 @@ list_subid_ranges_LDADD = \
list_subid_ranges_CPPFLAGS = \
-I$(top_srcdir)/lib \
-I$(top_srcdir)/libmisc \
+ -I$(top_srcdir) \
-I$(top_srcdir)/libsubid
get_subid_owners_LDADD = \
@@ -194,11 +196,13 @@ get_subid_owners_LDADD = \
get_subid_owners_CPPFLAGS = \
-I$(top_srcdir)/lib \
-I$(top_srcdir)/libmisc \
+ -I$(top_srcdir) \
-I$(top_srcdir)/libsubid
new_subid_range_CPPFLAGS = \
-I$(top_srcdir)/lib \
-I$(top_srcdir)/libmisc \
+ -I$(top_srcdir) \
-I$(top_srcdir)/libsubid
new_subid_range_LDADD = \
@@ -210,6 +214,7 @@ new_subid_range_LDADD = \
free_subid_range_CPPFLAGS = \
-I$(top_srcdir)/lib \
-I$(top_srcdir)/libmisc \
+ -I$(top_srcdir) \
-I$(top_srcdir)/libsubid
free_subid_range_LDADD = \
@@ -220,6 +225,7 @@ free_subid_range_LDADD = \
check_subid_range_CPPFLAGS = \
-I$(top_srcdir)/lib \
+ -I$(top_srcdir) \
-I$(top_srcdir)/libmisc
check_subid_range_LDADD = \

3
shadow-4.11.1.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:41f093ce58b2ae5f389a1c5553e0c18bc73e6fe27f66273891991198a7707c95
size 1656584

11
shadow-4.11.1.tar.xz.asc Normal file
View File

@ -0,0 +1,11 @@
-----BEGIN PGP SIGNATURE-----
iQEzBAABCgAdFiEEqb0/8XByttt4D8+UNXDaFycKziQFAmHSaooACgkQNXDaFycK
ziQEowf8CnA6H9sohv45+YPfwzFs9Drj4iUX8q/v6z0SwzWtY2NeKGazABryeu9Q
DadmXeSFqIUQgzMWV1FMNwP0wFACSxsodfzusRQ/eKHjG4+5elVAqXHnxhJDZqvt
83iWXtGd+/L9mlpKfaWhSrSI/VPfzUQYYrmz/cMbkP3ijPmaCvW1Ke5pWrnhky5I
Iur+BqkiA5+Gi/mChhDZzBuE3eaIDRPVOYkmL5tyDjK7SyFmsM0lhGNwZQ525gDJ
9/NbkIAgz59lfcLZXjZ9Ui4hTh+YKjlSbsMlmo6Bpp29crwzfC3ppe69mwBywA3K
nt2BZxeFv3mkBnQXPabCBE8gaR8ZIQ==
=8xjr
-----END PGP SIGNATURE-----

View File

@ -1,15 +0,0 @@
https://github.com/shadow-maint/shadow/commit/497e90751bc0d95cc998b0f06305040563903948
Index: shadow-4.9/src/newgrp.c
===================================================================
--- shadow-4.9.orig/src/newgrp.c
+++ shadow-4.9/src/newgrp.c
@@ -163,8 +163,8 @@ static void check_perms (const struct gr
spwd = xgetspnam (pwd->pw_name);
if (NULL != spwd) {
pwd->pw_passwd = xstrdup (spwd->sp_pwdp);
+ spw_free (spwd);
}
- spw_free (spwd);
if ((pwd->pw_passwd[0] == '\0') && (grp->gr_passwd[0] != '\0')) {
needspasswd = true;

View File

@ -1,14 +0,0 @@
https://github.com/shadow-maint/shadow/commit/d8e54618feea201987c1f3cb402ed50d1d8b604f
Index: shadow-4.9/src/pwck.c
===================================================================
--- shadow-4.9.orig/src/pwck.c
+++ shadow-4.9/src/pwck.c
@@ -857,6 +857,7 @@ int main (int argc, char **argv)
* Get my name so that I can use it to report errors.
*/
Prog = Basename (argv[0]);
+ shadow_logfd = stderr;
(void) setlocale (LC_ALL, "");
(void) bindtextdomain (PACKAGE, LOCALEDIR);

View File

@ -1,23 +0,0 @@
Index: shadow-4.9/src/gpasswd.c
===================================================================
--- shadow-4.9.orig/src/gpasswd.c
+++ shadow-4.9/src/gpasswd.c
@@ -1207,11 +1207,13 @@ int main (int argc, char **argv)
sssd_flush_cache (SSSD_DB_GROUP);
#ifdef SHADOWGRP
- if (sgent.sg_adm) {
- xfree(sgent.sg_adm);
- }
- if (sgent.sg_mem) {
- xfree(sgent.sg_mem);
+ if(is_shadowgrp) {
+ if (sgent.sg_adm) {
+ xfree(sgent.sg_adm);
+ }
+ if (sgent.sg_mem) {
+ xfree(sgent.sg_mem);
+ }
}
#endif
if (grent.gr_mem) {

View File

@ -1,94 +0,0 @@
This patch contains:
https://github.com/shadow-maint/shadow/commit/9dd720a28578eef5be8171697aae0906e4c53249#diff-9a7a2bfccabec64213bd054801b9efca8ad55636afbc49e0107714c0f8ffabbe
and
https://github.com/shadow-maint/shadow/commit/049b08481acc2040e2079ae06e64d0bb36326528#
Index: shadow-4.9/src/useradd.c
===================================================================
--- shadow-4.9.orig/src/useradd.c
+++ shadow-4.9/src/useradd.c
@@ -146,9 +146,7 @@ static bool is_sub_gid = false;
static bool sub_uid_locked = false;
static bool sub_gid_locked = false;
static uid_t sub_uid_start; /* New subordinate uid range */
-static unsigned long sub_uid_count;
static gid_t sub_gid_start; /* New subordinate gid range */
-static unsigned long sub_gid_count;
#endif /* ENABLE_SUBIDS */
static bool pw_locked = false;
static bool gr_locked = false;
@@ -239,7 +237,7 @@ static void open_shadow (void);
static void faillog_reset (uid_t);
static void lastlog_reset (uid_t);
static void tallylog_reset (const char *);
-static void usr_update (void);
+static void usr_update (unsigned long subuid_count, unsigned long subgid_count);
static void create_home (void);
static void create_mail (void);
static void check_uid_range(int rflg, uid_t user_id);
@@ -2118,7 +2116,7 @@ static void tallylog_reset (const char *
* usr_update() creates the password file entries for this user
* and will update the group entries if required.
*/
-static void usr_update (void)
+static void usr_update (unsigned long subuid_count, unsigned long subgid_count)
{
struct passwd pwent;
struct spwd spent;
@@ -2181,14 +2179,14 @@ static void usr_update (void)
}
#ifdef ENABLE_SUBIDS
if (is_sub_uid &&
- (sub_uid_add(user_name, sub_uid_start, sub_uid_count) == 0)) {
+ (sub_uid_add(user_name, sub_uid_start, subuid_count) == 0)) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry\n"),
Prog, sub_uid_dbname ());
fail_exit (E_SUB_UID_UPDATE);
}
if (is_sub_gid &&
- (sub_gid_add(user_name, sub_gid_start, sub_gid_count) == 0)) {
+ (sub_gid_add(user_name, sub_gid_start, subgid_count) == 0)) {
fprintf (stderr,
_("%s: failed to prepare the new %s entry\n"),
Prog, sub_uid_dbname ());
@@ -2484,9 +2482,9 @@ int main (int argc, char **argv)
#ifdef ENABLE_SUBIDS
uid_t uid_min;
uid_t uid_max;
+#endif
unsigned long subuid_count;
unsigned long subgid_count;
-#endif
/*
* Get my name so that I can use it to report errors.
@@ -2688,16 +2686,16 @@ int main (int argc, char **argv)
}
#ifdef ENABLE_SUBIDS
- if (is_sub_uid && sub_uid_count != 0) {
- if (find_new_sub_uids(&sub_uid_start, &sub_uid_count) < 0) {
+ if (is_sub_uid && subuid_count != 0) {
+ if (find_new_sub_uids(&sub_uid_start, &subuid_count) < 0) {
fprintf (stderr,
_("%s: can't create subordinate user IDs\n"),
Prog);
fail_exit(E_SUB_UID_UPDATE);
}
}
- if (is_sub_gid && sub_gid_count != 0) {
- if (find_new_sub_gids(&sub_gid_start, &sub_gid_count) < 0) {
+ if (is_sub_gid && subgid_count != 0) {
+ if (find_new_sub_gids(&sub_gid_start, &subgid_count) < 0) {
fprintf (stderr,
_("%s: can't create subordinate group IDs\n"),
Prog);
@@ -2706,7 +2704,7 @@ int main (int argc, char **argv)
}
#endif /* ENABLE_SUBIDS */
- usr_update ();
+ usr_update (subuid_count, subgid_count);
if (mflg) {
create_home ();

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:feec1f2ce9c1b62798afd35a7d1b04cefdfa3a0a30ff3e75d6965ba8978c9144
size 1627008

View File

@ -1,11 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQEzBAABCgAdFiEE8dCNt3gYW/eEAC3/6f7qBqheP50FAmD5+dkACgkQ6f7qBqhe
P53Qywf/ShkcKvecTDRIrKUNJUTIlP8iywZ1NXypfdDKG/J63awMAGrKMZwOkLUS
AnImsvyoW3+XDIhdkeJd1Kv+8JDEt3oJ0ifHjfpXl4FzOervb1ZKtRPUcoJzzpnJ
Szt/7f3Sd0VfbItgf5F6jgMi7iDA/ZIqJTXeI0kEfVVL7DT681jVRjpnoURlrEq1
6SmIyAul50VmZjLXq1xJ35uktr7VclnaRu17acax95e+oekP4sdNMaV5E5DSeq2N
db7kKCu80+lPvtQpj22vOO2w15ActH6f5Ec3P7OG8jL125q3yZNebVoh8FKxmFsh
PssfXu0TL50qH/p7qNEeihDLpwoI7g==
=6MLu
-----END PGP SIGNATURE-----

View File

@ -1,14 +0,0 @@
Upstream commit 4624e9fca1b02b64e25e8b2280a0186182ab73ba
To fix SIGABRT: https://github.com/shadow-maint/shadow/issues/394
Index: shadow-4.9/src/useradd.c
===================================================================
--- shadow-4.9.orig/src/useradd.c
+++ shadow-4.9/src/useradd.c
@@ -420,7 +420,6 @@ static void get_defaults (void)
} else {
def_group = grp->gr_gid;
def_gname = xstrdup (grp->gr_name);
- gr_free(grp);
}
}

View File

@ -1,17 +0,0 @@
Include libeconf to newuidmap and newgidmap
Upstream commit: c6847011e8b656adacd9a0d2a78418cad0de34cb
Index: shadow-4.9/src/Makefile.am
===================================================================
--- shadow-4.9.orig/src/Makefile.am
+++ shadow-4.9/src/Makefile.am
@@ -96,8 +96,8 @@ LIBCRYPT_NOPAM = $(LIBCRYPT)
endif
chage_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
-newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) -ldl
-newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) -ldl
+newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl
+newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl
chfn_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF)
chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF)
chsh_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF)

View File

@ -1,21 +0,0 @@
Upstream commit: adb83f779618674e5e96e27e3d48559d62e2c410
To fix: https://github.com/shadow-maint/shadow/pull/398
Index: shadow-4.9/src/passwd.c
===================================================================
--- shadow-4.9.orig/src/passwd.c
+++ shadow-4.9/src/passwd.c
@@ -490,9 +490,12 @@ static void print_status (const struct p
((long long)sp->sp_max * SCALE) / DAY,
((long long)sp->sp_warn * SCALE) / DAY,
((long long)sp->sp_inact * SCALE) / DAY);
- } else {
+ } else if (NULL != pw->pw_passwd) {
(void) printf ("%s %s\n",
- pw->pw_name, pw_status (pw->pw_passwd));
+ pw->pw_name, pw_status (pw->pw_passwd));
+ } else {
+ (void) fprintf(stderr, _("%s: malformed password data obtained for user %s\n"),
+ Prog, pw->pw_name);
}
}

View File

@ -122,7 +122,7 @@ Index: etc/login.defs
# Max time in seconds for login(1)
#
LOGIN_TIMEOUT 60
@@ -315,15 +335,6 @@ CHARACTER_CLASS [ABCDEFGHIJKLMNO
@@ -315,14 +335,6 @@ CHARACTER_CLASS [ABCDEFGHIJKLMNO
#GRANT_AUX_GROUP_SUBIDS yes
#
@ -131,7 +131,6 @@ Index: etc/login.defs
-# Set to "yes" to prevent for all accounts
-# Set to "superuser" to prevent for UID 0 / root (default)
-# Set to "no" to not prevent for any account (dangerous, historical default)
-
-PREVENT_NO_AUTH superuser
-
-#

View File

@ -1,3 +1,83 @@
-------------------------------------------------------------------
Mon Jan 3 10:36:15 UTC 2022 - Michael Vetter <mvetter@suse.com>
- Update to 4.11.1:
* build: include lib/shadowlog_internal.h in dist tarballs
-------------------------------------------------------------------
Mon Jan 3 10:35:30 UTC 2022 - Michael Vetter <mvetter@suse.com>
- Update to 4.11:
* Handle possible TOCTTOU issues in usermod/userdel
- (CVE-2013-4235)
- Use O_NOFOLLOW when copying file
- Kill all user tasks in userdel
* Fix useradd -D segfault
* Clean up obsolete libc feature-check ifdefs
* Fix -fno-common build breaks due to duplicate Prog declarations
* Have single date_to_str definition
* Fix libsubid SONAME version
* Clarify licensing info, use SPDX.
-------------------------------------------------------------------
Mon Jan 3 10:29:39 UTC 2022 - Michael Vetter <mvetter@suse.com>
- Update to 4.10:
* From this release forward, su from this package should be
considered deprecated. Please replace any users of it with su
from util-linux
* libsubid fixes
* Rename the test program list_subid_ranges to getsubids, write
a manpage, so distros can ship it.
* Add libeconf dep for new*idmap
* Allow all group types with usermod -G
* Avoid useradd generating empty subid range
* Handle NULL pw_passwd
* Fix default value SHA_get_salt_rounds
* Use https where possible in README
* Update content and format of README
* Translation updates
* Switch from xml2po to itstool in 'make dist'
* Fix double frees
* Add LOG_INIT configurable to useradd
* Add CREATE_MAIL_SPOOL documentation
* Create a security.md
* Fix su never being SIGKILLd when trapping TERM
* Fix wrong SELinux labels in several possible cases
* Fix missing chmod in chadowtb_move
* Handle malformed hushlogins entries
* Fix groupdel segv when passwd does not exist
* Fix covscan-found newgrp segfault
* Remove trailing slash on hoedir
* Fix passwd -l message - it does not change expirey
* Fix SIGCHLD handling bugs in su and vipw
* Remove special case for "" in usermod
* Implement usermod -rG to remove a specific group
* call pam_end() after fork in child path for su and login
* useradd: In absence of /etc/passwd, assume 0 == root
* lib: check NULL before freeing data
* Fix pwck segfault
- Remove because upstreamed:
* shadow-4.9-pwck-segfault.patch
* shadow-4.9-newgrp-segfault.patch
* shadow-4.9-useradd-subuid.patch
* shadow-4.9-sgent-free.patch
* shadow-passwd-handle-null.patch
* shadow-fix-sigabrt.patch
* shadow-libeconf-include.patch
* libsubid-build-fix.patch
- Refreshed:
* shadow-util-linux.patch
* shadow.changes
* shadow.keyring
* shadow.spec
* useradd-script.patch
* useradd-userkeleton.patch
* userdel-script.patch
- Update shadow.keyring:
* Serge Hallyn serge@hallyn.com (B175CFA98F192AF2)
* Christian Brauner christian@brauner.io (4880B8C9BD0E5106FC070F4F7B3C391EFEA93624)
-------------------------------------------------------------------
Tue Nov 30 17:12:40 UTC 2021 - Thorsten Kukuk <kukuk@suse.com>

View File

@ -1,54 +1,539 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
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
Fj0=
=YE9s
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
=M8RS
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -1,7 +1,7 @@
#
# spec file for package shadow
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -22,7 +22,7 @@
%define no_config 1
%endif
Name: shadow
Version: 4.9
Version: 4.11.1
Release: 0
Summary: Utilities to Manage User and Group Accounts
License: BSD-3-Clause AND GPL-2.0-or-later
@ -59,22 +59,6 @@ Patch7: shadow-login_defs-suse.patch
Patch8: useradd-userkeleton.patch
# PATCH-FIX-SUSE disable_new_audit_function.patch adam.majer@suse.de -- Disable newer libaudit functionality for older distributions.
Patch9: disable_new_audit_function.patch
# PATCH-FIX-UPSTREAM libsubid-build-fix.patch mvetter@suse.de -- Fix build with libsubid (f4a84e, 537b8c, fa986b)
Patch10: libsubid-build-fix.patch
# PATCH-FIX-UPSTREAM shadow-libeconf-include.patch mvetter@suse.de -- Include libeconf to new*idmap (c68470)
Patch11: shadow-libeconf-include.patch
# PATCH-FIX-UPSTREAM shadow-fix-sigabrt.patch mvetter@suse.de -- Fix SIGABRT https://github.com/shadow-maint/shadow/issues/394
Patch12: shadow-fix-sigabrt.patch
# PATCH-FIX-UPSTREAM shadow-passwd-handle-null.patch mvetter@suse.de -- Fix passwd NULL handling https://github.com/shadow-maint/shadow/pull/398
Patch13: shadow-passwd-handle-null.patch
# PATCH-FIX-UPSTREAM shadow-4.9-sgent-free.patch mvetter@suse.de -- Fix double free (boo#1190145)
Patch14: shadow-4.9-sgent-free.patch
# PATCH-FIX-UPSTREAM shadow-4.9-useradd-subuid.patch mvetter@suse.de -- Fix generating empty subid range and undeclared subid_count (boo#1190146)
Patch15: shadow-4.9-useradd-subuid.patch
# PATCH-FIX-UPSTREAM shadow-4.9-newgrp-segfault.patch mvetter@suse.de -- Fix segfault in newgrp (gh#437)
Patch16: shadow-4.9-newgrp-segfault.patch
# PATCH-FIX-UPSTREAM shadow-4.9-pwck-segfault.patch mvetter@suse.de -- Fix segfault in pwck (gh#445)
Patch17: shadow-4.9-pwck-segfault.patch
BuildRequires: audit-devel > 2.3
BuildRequires: autoconf
BuildRequires: automake
@ -119,20 +103,20 @@ BuildArch: noarch
This package contains the default login.defs configuration file
as used by util-linux, pam and shadow.
%package -n libsubid3
%package -n libsubid4
Summary: A library to manage subordinate uid and gid ranges
Group: System/Base
%description -n libsubid3
%description -n libsubid4
Utility library that provides a way to manage subid ranges.
%package -n libsubid-devel
Summary: Development files for libsubid3
Summary: Development files for libsubid4
Group: System/Base
Requires: libsubid3 = %{version}
Requires: libsubid4 = %{version}
%description -n libsubid-devel
Development files for libsubid3.
Development files for libsubid4.
%prep
%setup -q -a 1
@ -148,14 +132,6 @@ Development files for libsubid3.
%if 0%{?suse_version} < 1330
%patch9 -p1
%endif
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
iconv -f ISO88591 -t utf-8 doc/HOWTO > doc/HOWTO.utf8
mv -v doc/HOWTO.utf8 doc/HOWTO
@ -253,7 +229,7 @@ rm %{buildroot}/%{_mandir}/*/man5/passwd.5*
rm -rf %{buildroot}%{_mandir}/{??,??_??}
rm %{buildroot}/%{_libdir}/libsubid.la
rm %{buildroot}/%{_libdir}/libsubid.{la,a}
# Move /etc to /usr/etc
if [ ! -d %{buildroot}%{_distconfdir} ]; then
@ -283,6 +259,7 @@ test -f %{_sysconfdir}/login.defs.rpmsave && mv -v %{_sysconfdir}/login.defs.rpm
%set_permissions %{_bindir}/passwd
%set_permissions %{_bindir}/newgidmap
%set_permissions %{_bindir}/newuidmap
%set_permissions %{_bindir}/getsubids
%service_add_post shadow.service shadow.timer
@ -296,6 +273,7 @@ test -f %{_sysconfdir}/login.defs.rpmsave && mv -v %{_sysconfdir}/login.defs.rpm
%verify_permissions %{_bindir}/passwd
%verify_permissions %{_bindir}/newgidmap
%verify_permissions %{_bindir}/newuidmap
%verify_permissions %{_bindir}/getsubids
%preun
%service_del_preun shadow.service shadow.timer
@ -317,8 +295,8 @@ done
# - Migration to /usr/etc (after SLE15 and Leap 15)
test -f %{_sysconfdir}/login.defs.rpmsave && mv -v %{_sysconfdir}/login.defs.rpmsave %{_sysconfdir}/login.defs ||:
%post -n libsubid3 -p /sbin/ldconfig
%postun -n libsubid3 -p /sbin/ldconfig
%post -n libsubid4 -p /sbin/ldconfig
%postun -n libsubid4 -p /sbin/ldconfig
%files -f shadow.lang
%license COPYING
@ -362,6 +340,7 @@ test -f %{_sysconfdir}/login.defs.rpmsave && mv -v %{_sysconfdir}/login.defs.rpm
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/passwd
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/newgidmap
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/newuidmap
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/getsubids
%{_bindir}/lastlog
%{_bindir}/sg
%attr(0755,root,root) %{_sbindir}/groupadd
@ -410,6 +389,7 @@ test -f %{_sysconfdir}/login.defs.rpmsave && mv -v %{_sysconfdir}/login.defs.rpm
%{_mandir}/man5/subgid.5%{?ext_man}
%{_mandir}/man1/newgidmap.1%{?ext_man}
%{_mandir}/man1/newuidmap.1%{?ext_man}
%{_mandir}/man1/getsubids.1%{?ext_man}
%{_unitdir}/*
@ -422,7 +402,7 @@ test -f %{_sysconfdir}/login.defs.rpmsave && mv -v %{_sysconfdir}/login.defs.rpm
%endif
%{_mandir}/man5/login.defs.5%{?ext_man}
%files -n libsubid3
%files -n libsubid4
%{_libdir}/libsubid.so.*
%files -n libsubid-devel

View File

@ -8,7 +8,7 @@ Index: etc/login.defs
===================================================================
--- etc/login.defs.orig
+++ etc/login.defs
@@ -266,6 +266,13 @@ DEFAULT_HOME yes
@@ -238,6 +238,13 @@ DEFAULT_HOME yes
NONEXISTENT /nonexistent
#
@ -26,7 +26,7 @@ Index: lib/getdef.c
===================================================================
--- lib/getdef.c.orig
+++ lib/getdef.c
@@ -149,6 +149,7 @@ static struct itemdef def_table[] = {
@@ -127,6 +127,7 @@ static struct itemdef def_table[] = {
{"UID_MAX", NULL},
{"UID_MIN", NULL},
{"UMASK", NULL},
@ -38,7 +38,7 @@ Index: src/useradd.c
===================================================================
--- src/useradd.c.orig
+++ src/useradd.c
@@ -2398,6 +2398,44 @@ static void check_uid_range(int rflg, ui
@@ -2426,6 +2426,44 @@ static void check_uid_range(int rflg, ui
}
/*
@ -83,9 +83,9 @@ Index: src/useradd.c
* main - useradd command
*/
int main (int argc, char **argv)
@@ -2691,6 +2729,7 @@ int main (int argc, char **argv)
nscd_flush_cache ("group");
sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);
@@ -2720,6 +2758,7 @@ int main (int argc, char **argv)
exit(1);
}
+ call_script (user_name, user_id, user_gid, user_home);
+

View File

@ -9,7 +9,7 @@ Index: src/useradd.c
===================================================================
--- src/useradd.c.orig
+++ src/useradd.c
@@ -82,6 +82,9 @@
@@ -61,6 +61,9 @@
#ifndef SKEL_DIR
#define SKEL_DIR "/etc/skel"
#endif
@ -19,23 +19,23 @@ Index: src/useradd.c
#ifndef USER_DEFAULTS_FILE
#define USER_DEFAULTS_FILE "/etc/default/useradd"
#define NEW_USER_FILE "/etc/default/nuaddXXXXXX"
@@ -106,6 +109,7 @@ static const char *def_gname = "other";
@@ -84,6 +87,7 @@ static const char *def_gname = "other";
static const char *def_home = "/home";
static const char *def_shell = "/bin/bash";
static const char *def_template = SKEL_DIR;
+static const char *def_usrtemplate = USRSKELDIR;
static const char *def_create_mail_spool = "yes";
static const char *def_log_init = "yes";
static long def_inactive = -1;
@@ -208,6 +212,7 @@ static bool home_added = false;
@@ -185,6 +189,7 @@ static bool home_added = false;
#define DINACT "INACTIVE="
#define DEXPIRE "EXPIRE="
#define DSKEL "SKEL="
+#define DUSRSKEL "USRSKEL="
#define DCREATE_MAIL_SPOOL "CREATE_MAIL_SPOOL="
#define DLOG_INIT "LOG_INIT="
/* local function prototypes */
@@ -481,6 +486,29 @@ static void get_defaults (void)
@@ -458,6 +463,29 @@ static void get_defaults (void)
}
/*
@ -65,23 +65,23 @@ Index: src/useradd.c
* Create by default user mail spool or not ?
*/
else if (MATCH (buf, DCREATE_MAIL_SPOOL)) {
@@ -512,6 +540,7 @@ static void show_defaults (void)
@@ -499,6 +527,7 @@ static void show_defaults (void)
printf ("EXPIRE=%s\n", def_expire);
printf ("SHELL=%s\n", def_shell);
printf ("SKEL=%s\n", def_template);
+ printf ("USRSKEL=%s\n", def_usrtemplate);
printf ("CREATE_MAIL_SPOOL=%s\n", def_create_mail_spool);
printf ("LOG_INIT=%s\n", def_log_init);
}
@@ -538,6 +567,7 @@ static int set_defaults (void)
@@ -527,6 +556,7 @@ static int set_defaults (void)
bool out_expire = false;
bool out_shell = false;
bool out_skel = false;
+ bool out_usrskel = false;
bool out_create_mail_spool = false;
bool out_log_init = false;
size_t len;
int ret = -1;
@@ -632,6 +662,9 @@ static int set_defaults (void)
@@ -640,6 +670,9 @@ static int set_defaults (void)
} else if (!out_skel && MATCH (buf, DSKEL)) {
fprintf (ofp, DSKEL "%s\n", def_template);
out_skel = true;
@ -91,7 +91,7 @@ Index: src/useradd.c
} else if (!out_create_mail_spool
&& MATCH (buf, DCREATE_MAIL_SPOOL)) {
fprintf (ofp,
@@ -661,6 +694,8 @@ static int set_defaults (void)
@@ -675,6 +708,8 @@ static int set_defaults (void)
fprintf (ofp, DSHELL "%s\n", def_shell);
if (!out_skel)
fprintf (ofp, DSKEL "%s\n", def_template);
@ -100,9 +100,9 @@ Index: src/useradd.c
if (!out_create_mail_spool)
fprintf (ofp, DCREATE_MAIL_SPOOL "%s\n", def_create_mail_spool);
@@ -2679,6 +2714,8 @@ int main (int argc, char **argv)
@@ -2739,6 +2774,8 @@ int main (int argc, char **argv)
if (home_added) {
copy_tree (def_template, prefix_user_home, false, false,
copy_tree (def_template, prefix_user_home, false, true,
(uid_t)-1, user_id, (gid_t)-1, user_gid);
+ copy_tree (def_usrtemplate, prefix_user_home, false, false,
+ (uid_t)-1, user_id, (gid_t)-1, user_gid);
@ -113,7 +113,7 @@ Index: libmisc/copydir.c
===================================================================
--- libmisc/copydir.c.orig
+++ libmisc/copydir.c
@@ -416,6 +416,14 @@ static int copy_entry (const char *src,
@@ -395,6 +395,14 @@ static int copy_entry (const char *src,
old_uid, new_uid, old_gid, new_gid);
}
@ -128,7 +128,7 @@ Index: libmisc/copydir.c
#ifdef S_IFLNK
/*
* Copy any symbolic links
@@ -477,6 +485,7 @@ static int copy_dir (const char *src, co
@@ -456,6 +464,7 @@ static int copy_dir (const char *src, co
gid_t old_gid, gid_t new_gid)
{
int err = 0;
@ -136,7 +136,7 @@ Index: libmisc/copydir.c
/*
* Create a new target directory, make it owned by
@@ -488,6 +497,16 @@ static int copy_dir (const char *src, co
@@ -467,6 +476,16 @@ static int copy_dir (const char *src, co
return -1;
}
#endif /* WITH_SELINUX */

View File

@ -2,7 +2,7 @@ Index: lib/getdef.c
===================================================================
--- lib/getdef.c.orig
+++ lib/getdef.c
@@ -150,6 +150,8 @@ static struct itemdef def_table[] = {
@@ -128,6 +128,8 @@ static struct itemdef def_table[] = {
{"UID_MIN", NULL},
{"UMASK", NULL},
{"USERDEL_CMD", NULL},
@ -15,7 +15,7 @@ Index: etc/login.defs
===================================================================
--- etc/login.defs.orig
+++ etc/login.defs
@@ -270,9 +270,25 @@ NONEXISTENT /nonexistent
@@ -242,9 +242,25 @@ NONEXISTENT /nonexistent
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
@ -45,7 +45,7 @@ Index: src/userdel.c
===================================================================
--- src/userdel.c.orig
+++ src/userdel.c
@@ -131,7 +131,7 @@ static void close_files (void);
@@ -108,7 +108,7 @@ static void close_files (void);
static void fail_exit (int);
static void open_files (void);
static void update_user (void);
@ -54,7 +54,7 @@ Index: src/userdel.c
#ifdef EXTRA_CHECK_HOME_DIR
static bool path_prefix (const char *, const char *);
@@ -774,13 +774,13 @@ static void update_user (void)
@@ -751,13 +751,13 @@ static void update_user (void)
* cron, at, or print jobs.
*/
@ -70,7 +70,7 @@ Index: src/userdel.c
if (NULL == cmd) {
return;
}
@@ -1225,9 +1225,10 @@ int main (int argc, char **argv)
@@ -1203,9 +1203,10 @@ int main (int argc, char **argv)
}
/*
@ -83,16 +83,16 @@ Index: src/userdel.c
open_files ();
update_user ();
update_groups ();
@@ -1348,7 +1349,7 @@ int main (int argc, char **argv)
@@ -1326,7 +1327,7 @@ int main (int argc, char **argv)
* the entry from /etc/passwd.
*/
if(prefix[0] == '\0')
if (prefix[0] == '\0')
- user_cancel (user_name);
+ call_script ("USERDEL_CMD", user_name);
close_files ();
if (run_parts ("/etc/shadow-maint/userdel-post.d", user_name, "userdel")) {
@@ -1363,6 +1364,9 @@ int main (int argc, char **argv)
@@ -1341,6 +1342,9 @@ int main (int argc, char **argv)
nscd_flush_cache ("group");
sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);