forked from pool/shadow
413dcfbcf9
* libshadow: + Use utmpx instead of utmp. This fixes a regression introduced in 4.14.0. + Fix build error (parameter name omitted). * Build system: + Link correctly with libdl. + Install pam configs for chpasswd(8) and newusers(8) when using ./configure --with-libpam --disable-account-tools-setuid. + Merge libshadow and libmisc into a single libshadow. This fixes problems in the linker, which were reported at least in Gentoo. + Fix build with musl libc. + Support out of tree builds * useradd(8): + Set proper SELinux labels for def_usrtemplate - Update Serge Hallyns GPG key - Update shadow-login_defs-unused-by-pam.patch OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=171
389 lines
13 KiB
RPMSpec
389 lines
13 KiB
RPMSpec
#
|
|
# spec file for package shadow
|
|
#
|
|
# Copyright (c) 2024 SUSE LLC
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%if ! %{defined _distconfdir}
|
|
%define _distconfdir %{_sysconfdir}
|
|
%else
|
|
%define no_config 1
|
|
%endif
|
|
Name: shadow
|
|
Version: 4.15.0
|
|
Release: 0
|
|
Summary: Utilities to Manage User and Group Accounts
|
|
License: BSD-3-Clause AND GPL-2.0-or-later
|
|
Group: System/Base
|
|
URL: https://github.com/shadow-maint/shadow
|
|
Source0: https://github.com/shadow-maint/shadow/releases/download/%{version}/shadow-%{version}.tar.xz
|
|
Source1: pamd.tar.bz2
|
|
Source2: https://github.com/shadow-maint/shadow/releases/download/%{version}/shadow-%{version}.tar.xz.asc
|
|
Source3: %{name}.keyring
|
|
Source4: shadow.service
|
|
Source5: shadow.timer
|
|
# SOURCE-FEATURE-SUSE shadow-login_defs-check.sh sbrabec@suse.com -- Supplementary script that verifies coverage of variables in shadow-login_defs-unused-by-pam.patch and other patches.
|
|
Source40: shadow-login_defs-check.sh
|
|
# PATCH-FIX-SUSE shadow-login_defs-unused-by-pam.patch kukuk@suse.com -- Remove variables that have no use with PAM.
|
|
Patch0: shadow-login_defs-unused-by-pam.patch
|
|
# PATCH-FEATURE-SUSE useradd-default.patch kukuk@suse.com -- Change useradd defaults group to 1000.
|
|
Patch1: useradd-default.patch
|
|
# PATCH-FEATURE-SUSE shadow-util-linux.patch sbrabec@suse.com -- Add support for util-linux specific variables, delete shadow login, su runuser specific.
|
|
Patch2: shadow-util-linux.patch
|
|
# PATCH-FEATURE-SUSE shadow-login_defs-comments.patch kukuk@suse.com -- Adjust login.defs comments.
|
|
Patch3: shadow-login_defs-comments.patch
|
|
# PATCH-FEATURE-SUSE shadow-login_defs-suse.patch kukuk@suse.com -- Customize login.defs.
|
|
Patch4: shadow-login_defs-suse.patch
|
|
# PATCH-FIX-SUSE disable_new_audit_function.patch adam.majer@suse.de -- Disable newer libaudit functionality for older distributions.
|
|
Patch5: disable_new_audit_function.patch
|
|
BuildRequires: audit-devel > 2.3
|
|
BuildRequires: autoconf
|
|
BuildRequires: automake
|
|
BuildRequires: libacl-devel
|
|
BuildRequires: libattr-devel
|
|
BuildRequires: libselinux-devel
|
|
BuildRequires: libsemanage-devel
|
|
BuildRequires: libtool
|
|
BuildRequires: pam-devel
|
|
BuildRequires: xz
|
|
# we depend on libbsd or glibc >= 2.38 for the strlcpy() (and readpassphrase()) functions
|
|
BuildRequires: glibc-devel >= 2.38
|
|
Requires: login_defs >= %{version}
|
|
Requires(pre): group(root)
|
|
Requires(pre): group(shadow)
|
|
Requires(pre): permissions
|
|
Requires(pre): user(root)
|
|
Provides: pwdutils = 3.2.20
|
|
Obsoletes: pwdutils <= 3.2.19
|
|
Provides: useradd_or_adduser_dep
|
|
BuildRequires: libeconf-devel
|
|
|
|
%description
|
|
This package includes the necessary programs for converting plain
|
|
password files to the shadow password format and to manage user and
|
|
group accounts.
|
|
|
|
%package -n login_defs
|
|
Summary: The login.defs configuration file
|
|
# Virtual provides for supported variables in login.defs.
|
|
# It prevents references to unknown variables.
|
|
# Upgrade them only if shadow-util-linux.patch or
|
|
# encryption_method_nis.patch has to be ported!
|
|
# Call shadow-login_defs-check.sh before!
|
|
Group: System/Base
|
|
Provides: login_defs-support-for-pam = 1.5.2
|
|
Provides: login_defs-support-for-util-linux = 2.37
|
|
BuildArch: noarch
|
|
|
|
%description -n login_defs
|
|
This package contains the default login.defs configuration file
|
|
as used by util-linux, pam and shadow.
|
|
|
|
%package -n libsubid4
|
|
Summary: A library to manage subordinate uid and gid ranges
|
|
Group: System/Base
|
|
|
|
%description -n libsubid4
|
|
Utility library that provides a way to manage subid ranges.
|
|
|
|
%package -n libsubid-devel
|
|
Summary: Development files for libsubid4
|
|
Group: System/Base
|
|
Requires: libsubid4 = %{version}
|
|
|
|
%description -n libsubid-devel
|
|
Development files for libsubid4.
|
|
|
|
%prep
|
|
%setup -q -a 1
|
|
%patch -P 0
|
|
%patch -P 1
|
|
%patch -P 2
|
|
%patch -P 3
|
|
%patch -P 4
|
|
%if 0%{?suse_version} < 1330
|
|
%patch -P 5 -p1
|
|
%endif
|
|
|
|
iconv -f ISO88591 -t utf-8 doc/HOWTO > doc/HOWTO.utf8
|
|
mv -v doc/HOWTO.utf8 doc/HOWTO
|
|
|
|
%build
|
|
export CFLAGS="%{optflags} -fpie"
|
|
export LDFLAGS="-pie"
|
|
|
|
autoreconf -fvi
|
|
%configure \
|
|
--enable-shadowgrp \
|
|
--enable-account-tools-setuid \
|
|
--with-audit \
|
|
--with-libpam \
|
|
--with-sha-crypt \
|
|
--with-acl \
|
|
--with-attr \
|
|
--with-nscd \
|
|
--with-selinux \
|
|
--without-libcrack \
|
|
--without-libbsd \
|
|
--with-group-name-max-length=32 \
|
|
--enable-vendordir=%{_distconfdir}
|
|
%make_build
|
|
# --disable-shared \ currently doesn't build with this. See https://github.com/shadow-maint/shadow/issues/336
|
|
|
|
%install
|
|
%make_install gnulocaledir=%{buildroot}/%{_datadir}/locale MKINSTALLDIRS=`pwd`/mkinstalldirs
|
|
# Separate call to install man pages. See https://github.com/shadow-maint/shadow/issues/389
|
|
%make_install -C man install-man
|
|
|
|
install -Dm644 %{SOURCE4} %{buildroot}%{_unitdir}/shadow.service
|
|
install -Dm644 %{SOURCE5} %{buildroot}%{_unitdir}/shadow.timer
|
|
|
|
# add empty /etc/sub{u,g}id files
|
|
touch %{buildroot}/%{_sysconfdir}/subuid
|
|
touch %{buildroot}/%{_sysconfdir}/subgid
|
|
|
|
# Remove binaries we don't use.
|
|
rm %{buildroot}/%{_bindir}/groups
|
|
rm %{buildroot}/%{_mandir}/man1/groups.*
|
|
rm %{buildroot}/%{_mandir}/*/man1/groups.*
|
|
|
|
rm %{buildroot}/%{_sbindir}/grpconv
|
|
rm %{buildroot}/%{_mandir}/man8/grpconv.*
|
|
rm %{buildroot}/%{_mandir}/*/man8/grpconv.*
|
|
rm %{buildroot}/%{_sbindir}/grpunconv
|
|
rm %{buildroot}/%{_mandir}/man8/grpunconv.*
|
|
rm %{buildroot}/%{_mandir}/*/man8/grpunconv.*
|
|
|
|
rm %{buildroot}/%{_sbindir}/groupmems
|
|
rm %{buildroot}/%{_mandir}/man8/groupmems.*
|
|
rm %{buildroot}/%{_mandir}/*/man8/groupmems.*
|
|
rm %{buildroot}%{_sysconfdir}/pam.d/groupmems
|
|
|
|
rm %{buildroot}/%{_bindir}/login
|
|
rm %{buildroot}/%{_mandir}/man1/login.*
|
|
rm %{buildroot}/%{_mandir}/*/man1/login.*
|
|
rm %{buildroot}%{_sysconfdir}/pam.d/login
|
|
|
|
rm %{buildroot}/%{_bindir}/su
|
|
rm %{buildroot}/%{_mandir}/man1/su.*
|
|
rm %{buildroot}/%{_mandir}/*/man1/su.*
|
|
rm %{buildroot}/%{_mandir}/man5/suauth.*
|
|
rm %{buildroot}/%{_mandir}/*/man5/suauth.*
|
|
rm %{buildroot}%{_sysconfdir}/pam.d/su
|
|
|
|
rm %{buildroot}/%{_bindir}/faillog
|
|
rm %{buildroot}/%{_mandir}/man5/faillog.*
|
|
rm %{buildroot}/%{_mandir}/*/man5/faillog.*
|
|
rm %{buildroot}/%{_mandir}/man8/faillog.*
|
|
rm %{buildroot}/%{_mandir}/*/man8/faillog.*
|
|
|
|
rm %{buildroot}/%{_sbindir}/logoutd
|
|
rm %{buildroot}/%{_mandir}/man8/logoutd.*
|
|
rm %{buildroot}/%{_mandir}/*/man8/logoutd.*
|
|
rm %{buildroot}/%{_sbindir}/nologin
|
|
rm %{buildroot}/%{_mandir}/man8/nologin.*
|
|
rm %{buildroot}/%{_mandir}/*/man8/nologin.*
|
|
|
|
rm %{buildroot}/%{_sbindir}/chgpasswd
|
|
rm %{buildroot}/%{_mandir}/man8/chgpasswd.*
|
|
rm %{buildroot}/%{_mandir}/*/man8/chgpasswd.*
|
|
rm %{buildroot}%{_sysconfdir}/pam.d/chgpasswd
|
|
|
|
rm %{buildroot}/%{_mandir}/man3/getspnam.*
|
|
rm %{buildroot}/%{_mandir}/*/man3/getspnam.*
|
|
rm %{buildroot}/%{_mandir}/man5/gshadow.5*
|
|
rm %{buildroot}/%{_mandir}/*/man5/gshadow.5*
|
|
rm %{buildroot}/%{_mandir}/man5/passwd.5*
|
|
rm %{buildroot}/%{_mandir}/*/man5/passwd.5*
|
|
|
|
rm -rf %{buildroot}%{_mandir}/{??,??_??}
|
|
|
|
rm %{buildroot}/%{_libdir}/libsubid.{la,a}
|
|
|
|
# Move /etc to /usr/etc
|
|
if [ ! -d %{buildroot}%{_distconfdir} ]; then
|
|
mkdir -p %{buildroot}%{_distconfdir}
|
|
mkdir -p %{buildroot}%{_pam_vendordir}
|
|
mv %{buildroot}%{_sysconfdir}/login.defs %{buildroot}%{_distconfdir}
|
|
mv %{buildroot}%{_sysconfdir}/pam.d/* %{buildroot}%{_pam_vendordir}/
|
|
fi
|
|
mkdir -p %{buildroot}%{_sysconfdir}/login.defs.d
|
|
|
|
%find_lang shadow
|
|
|
|
%pre
|
|
%service_add_pre shadow.service shadow.timer
|
|
for i in pam.d/chage pam.d/chfn pam.d/chpasswd pam.d/chsh pam.d/groupadd pam.d/groupdel pam.d/groupmod pam.d/newusers pam.d/passwd pam.d/useradd pam.d/userdel pam.d/usermod; do
|
|
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i}.rpmsave.old ||:
|
|
done
|
|
|
|
%pre -n login_defs
|
|
test -f %{_sysconfdir}/login.defs.rpmsave && mv -v %{_sysconfdir}/login.defs.rpmsave %{_sysconfdir}/login.defs.rpmsave.old ||:
|
|
|
|
%post
|
|
%set_permissions %{_bindir}/chage
|
|
%set_permissions %{_bindir}/chfn
|
|
%set_permissions %{_bindir}/chsh
|
|
%set_permissions %{_bindir}/expiry
|
|
%set_permissions %{_bindir}/gpasswd
|
|
%set_permissions %{_bindir}/newgrp
|
|
%set_permissions %{_bindir}/passwd
|
|
%set_permissions %{_bindir}/newgidmap
|
|
%set_permissions %{_bindir}/newuidmap
|
|
|
|
%service_add_post shadow.service shadow.timer
|
|
|
|
%verifyscript
|
|
%verify_permissions %{_bindir}/chage
|
|
%verify_permissions %{_bindir}/chfn
|
|
%verify_permissions %{_bindir}/chsh
|
|
%verify_permissions %{_bindir}/expiry
|
|
%verify_permissions %{_bindir}/gpasswd
|
|
%verify_permissions %{_bindir}/newgrp
|
|
%verify_permissions %{_bindir}/passwd
|
|
%verify_permissions %{_bindir}/newgidmap
|
|
%verify_permissions %{_bindir}/newuidmap
|
|
|
|
%preun
|
|
%service_del_preun shadow.service shadow.timer
|
|
|
|
%postun
|
|
%service_del_postun shadow.service shadow.timer
|
|
|
|
%posttrans
|
|
%if %{defined no_config}
|
|
# Migration to /usr/etc
|
|
for i in pam.d/chage pam.d/chfn pam.d/chpasswd pam.d/chsh pam.d/groupadd pam.d/groupdel pam.d/groupmod pam.d/newusers pam.d/passwd pam.d/useradd pam.d/userdel pam.d/usermod; do
|
|
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||:
|
|
done
|
|
%endif
|
|
|
|
%posttrans -n login_defs
|
|
# rpmsave file can be created by
|
|
# - change of owning package (SLE15 SP2->SP3, Leap 15.2->15.3)
|
|
# - 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 libsubid4 -p /sbin/ldconfig
|
|
%postun -n libsubid4 -p /sbin/ldconfig
|
|
|
|
%files -f shadow.lang
|
|
%license COPYING
|
|
%doc NEWS doc/HOWTO README
|
|
%verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/subuid
|
|
%verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/subgid
|
|
%if %{defined no_config}
|
|
%{_pam_vendordir}/chage
|
|
%{_pam_vendordir}/chfn
|
|
%{_pam_vendordir}/chsh
|
|
%{_pam_vendordir}/passwd
|
|
%{_pam_vendordir}/chpasswd
|
|
%{_pam_vendordir}/groupadd
|
|
%{_pam_vendordir}/groupdel
|
|
%{_pam_vendordir}/groupmod
|
|
%{_pam_vendordir}/newusers
|
|
%{_pam_vendordir}/useradd
|
|
%{_pam_vendordir}/userdel
|
|
%{_pam_vendordir}/usermod
|
|
%else
|
|
%config %{_sysconfdir}/pam.d/chage
|
|
%config %{_sysconfdir}/pam.d/chfn
|
|
%config %{_sysconfdir}/pam.d/chsh
|
|
%config %{_sysconfdir}/pam.d/passwd
|
|
%config %{_sysconfdir}/pam.d/chpasswd
|
|
%config %{_sysconfdir}/pam.d/groupadd
|
|
%config %{_sysconfdir}/pam.d/groupdel
|
|
%config %{_sysconfdir}/pam.d/groupmod
|
|
%config %{_sysconfdir}/pam.d/newusers
|
|
%config %{_sysconfdir}/pam.d/useradd
|
|
%config %{_sysconfdir}/pam.d/userdel
|
|
%config %{_sysconfdir}/pam.d/usermod
|
|
%endif
|
|
%verify(not mode) %attr(2755,root,shadow) %{_bindir}/chage
|
|
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/chfn
|
|
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/chsh
|
|
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/expiry
|
|
%verify(not mode) %attr(4755,root,shadow) %{_bindir}/gpasswd
|
|
%verify(not mode) %attr(4755,root,root) %{_bindir}/newgrp
|
|
%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
|
|
%{_bindir}/sg
|
|
%{_bindir}/getsubids
|
|
%attr(0755,root,root) %{_sbindir}/groupadd
|
|
%attr(0755,root,root) %{_sbindir}/groupdel
|
|
%attr(0755,root,root) %{_sbindir}/groupmod
|
|
%{_sbindir}/grpck
|
|
%{_sbindir}/pwck
|
|
%attr(0755,root,root) %{_sbindir}/useradd
|
|
%attr(0755,root,root) %{_sbindir}/userdel
|
|
%attr(0755,root,root) %{_sbindir}/usermod
|
|
%{_sbindir}/pwconv
|
|
%{_sbindir}/pwunconv
|
|
%attr(0755,root,root) %{_sbindir}/chpasswd
|
|
%attr(0755,root,root) %{_sbindir}/newusers
|
|
%{_sbindir}/vipw
|
|
%{_sbindir}/vigr
|
|
%{_mandir}/man1/chage.1%{?ext_man}
|
|
%{_mandir}/man1/chfn.1%{?ext_man}
|
|
%{_mandir}/man1/chsh.1%{?ext_man}
|
|
%{_mandir}/man1/expiry.1%{?ext_man}
|
|
%{_mandir}/man1/gpasswd.1%{?ext_man}
|
|
%{_mandir}/man1/newgrp.1%{?ext_man}
|
|
%{_mandir}/man1/passwd.1%{?ext_man}
|
|
%{_mandir}/man1/sg.1%{?ext_man}
|
|
%{_mandir}/man3/shadow.3%{?ext_man}
|
|
%{_mandir}/man5/shadow.5%{?ext_man}
|
|
%{_mandir}/man8/chpasswd.8%{?ext_man}
|
|
%{_mandir}/man8/groupadd.8%{?ext_man}
|
|
%{_mandir}/man8/groupdel.8%{?ext_man}
|
|
%{_mandir}/man8/groupmod.8%{?ext_man}
|
|
%{_mandir}/man8/grpck.8%{?ext_man}
|
|
%{_mandir}/man8/newusers.8%{?ext_man}
|
|
%{_mandir}/man8/pwck.8%{?ext_man}
|
|
%{_mandir}/man8/pwconv.8%{?ext_man}
|
|
%{_mandir}/man8/pwunconv.8%{?ext_man}
|
|
%{_mandir}/man8/useradd.8%{?ext_man}
|
|
%{_mandir}/man8/userdel.8%{?ext_man}
|
|
%{_mandir}/man8/usermod.8%{?ext_man}
|
|
%{_mandir}/man8/vigr.8%{?ext_man}
|
|
%{_mandir}/man8/vipw.8%{?ext_man}
|
|
%{_mandir}/man5/subuid.5%{?ext_man}
|
|
%{_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}/*
|
|
|
|
%files -n login_defs
|
|
%dir %{_sysconfdir}/login.defs.d
|
|
%if %{defined no_config}
|
|
%attr(0644,root,root) %{_distconfdir}/login.defs
|
|
%else
|
|
%attr(0644,root,root) %config %{_sysconfdir}/login.defs
|
|
%endif
|
|
%{_mandir}/man5/login.defs.5%{?ext_man}
|
|
|
|
%files -n libsubid4
|
|
%{_libdir}/libsubid.so.*
|
|
|
|
%files -n libsubid-devel
|
|
%dir %{_includedir}/shadow
|
|
%{_includedir}/shadow/subid.h
|
|
%{_libdir}/libsubid.so
|
|
|
|
%changelog
|