Compare commits

..

289 commits

Author SHA1 Message Date
Iker Pedrosa
103ee1cc47 Rebase to version 4.20.0
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-07-29 15:27:11 +02:00
Iker Pedrosa
c8aec6bdba Tests: update dependencies
System test framework requires gcc, python3-devel and libssh-devel
installed before pip tries to compile ansible-pylibssh.

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-07-23 12:38:33 +02:00
Iker Pedrosa
8cb145bd73 Rebase to v4.20.0-rc3
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-07-23 12:38:31 +02:00
Fedora Release Engineering
8bd71d9f91 Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-17 06:27:57 +00:00
Iker Pedrosa
871df3223d Enable use of PAM for chpasswd and newusers
Resolves: #2461179 and #2283963
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-05-27 11:40:27 +02:00
Iker Pedrosa
4a56d06039 Tests: run system tests
Tests comprehensive functionality from shadow using the upstream system
test suite in testing farm.

- Add plans/system-tests.fmf: run upstream shadow system tests via
  pytest-mh.
- Add tests/mhc-fedora-ci.yaml: topology configuration to connect to the
  test system.
- Add .fmf/version: enable testing farm integration.

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-04-29 10:39:59 +02:00
Iker Pedrosa
0fba1e26ce btrfs: simplify checks improve useradd behavior for non-btrfs
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-04-23 15:20:03 +02:00
77fbaa4e9a Rebase to version 4.19.3
Resolves: #2426288

https://src.fedoraproject.org/rpms/shadow-utils/pull-request/27
2026-02-13 14:20:25 +01:00
a856759119 Silence mixed-use-of-spaces-and-tabs
There's no need to do a build just for this.

Fallout from 4642a65eb4 and
fe4f9dc5c0

https://src.fedoraproject.org/rpms/shadow-utils/pull-request/25
2026-01-29 14:42:25 +01:00
cf630b1c3c Remove unused patches
There's no need to do a build just for this.

Fallout from 799aaaa508

https://src.fedoraproject.org/rpms/shadow-utils/pull-request/25
2026-01-29 14:42:25 +01:00
Adam Williamson
dac50e34f8 chkhash.c: fix escaping in SHA-256 / SHA-512 / MD5 regexes
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2026-01-28 11:21:11 -08:00
Iker Pedrosa
be2ac19347 - chkhash.c: fix support for ! and * in hashes
- usermod.c: add back optimizations

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-01-26 10:03:59 +01:00
Fedora Release Engineering
c78272db1a Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild 2026-01-17 17:57:49 +00:00
Iker Pedrosa
f47e36e72a useradd: Support config for creating home dirs as Btrfs subvolumes
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-01-12 11:43:48 +01:00
Iker Pedrosa
19e27b9aa5 Enable unit-tests
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-01-12 11:43:48 +01:00
Iker Pedrosa
43599b7b5e Rebase to version 4.19.0
Resolves: #2426288 and #2249524
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2026-01-12 11:43:44 +01:00
Adam Williamson
d39147a222 Really bump release, d'oh 2025-11-25 13:25:22 -08:00
Adam Williamson
8953fddc44 Also revert changes from -4 (last known good was -3) 2025-11-25 12:50:30 -08:00
Adam Williamson
71c7bce53c Revert changes from -5 (they were only meant for testing) 2025-11-25 10:08:41 -08:00
Iker Pedrosa
20b5296027 Test CI
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-11-25 10:30:54 +01:00
Iker Pedrosa
5d57398d35 Stop setting SELinux labels in chroot and prefix environments
Resolves: #2249524
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-10-31 12:52:35 +01:00
Iker Pedrosa
9fbb086db0 tests/: remove them
These tests need to be migrated to TMT to continue running, but nobody
is maintaining them so we've decided to remove them.

Closes: 2383071
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-08-18 11:48:31 +02:00
Alexey Tikhonov
b75f74d3f1 Revert "Stop assigning subids by default"
This reverts commit e1cfa31731
while CVE-2024-56433 is being disputed.

Resolves: #2382662
2025-07-29 20:28:37 +02:00
Fedora Release Engineering
654ff210da Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 18:12:54 +00:00
Iker Pedrosa
1f100b614d Rebase to version 4.18.0
Resolves: #2374710

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-07-22 11:34:17 +02:00
Iker Pedrosa
e1cfa31731 Stop assigning subids by default
Resolves: CVE-2024-56433 and #2334168

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-07-18 17:33:47 +02:00
Iker Pedrosa
39c75f8e58 Rebuild for new side-tag for lastlog2 migration
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-07-15 12:28:52 +02:00
Iker Pedrosa
92eaac9b2c FSWC: Migrate to lastlog2
Link: <https://fedoraproject.org/wiki/Changes/Migrate_to_lastlog2>
Resolves: #2361588
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-04-22 11:31:29 +02:00
Iker Pedrosa
a7f68f9158 Add pam dependency for _pam_confdir missing macro
Resolves: #2354806

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-03-25 16:54:24 +01:00
Iker Pedrosa
889277e842 Rebase to version 4.17.4
Resolves: #2353491

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2025-03-20 11:57:09 +01:00
Björn Esser
f872b43d35
Add explicit BR: libxcrypt-devel
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2025-02-01 19:57:31 +01:00
Fedora Release Engineering
7b5d11c4b7 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 10:32:26 +00:00
edb8f1a314 Rebuilt for the bin-sbin merge (2nd attempt)
https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin
2025-01-12 14:41:48 +01:00
Iker Pedrosa
35488fe254 Rebase to version 4.17.0
Resolves: #2293678

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-12-26 09:51:56 +01:00
Björn Esser
be06553cde
Remove potentially dangerous {C,LD}FLAGS shenanigans
Also fail linking if there are undefined symbols at link-time.

Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2024-12-23 12:38:09 +01:00
Iker Pedrosa
796cd4dc3b Rebase to version 4.17.0-rc1
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-12-09 14:36:59 +01:00
Iker Pedrosa
e7d5253e95 SPDX license migration for subpackages
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-11-12 09:34:52 +01:00
Iker Pedrosa
4eba5ba13e Rebuilt for libeconf soname bump
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-10-16 12:04:44 +02:00
Iker Pedrosa
cbfed0db1e useradd: fix write_full() return value
Resolves: #2313559

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-10-07 10:00:36 +02:00
Iker Pedrosa
cb321b1db1 useradd: fix write_full() return value
Resolves: #2313559

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-09-19 16:52:21 +02:00
Iker Pedrosa
fe4f9dc5c0 Disable nscd
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-09-13 09:43:20 +02:00
Iker Pedrosa
4642a65eb4 Sort alphabetically configuration options
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-09-13 09:24:39 +02:00
Iker Pedrosa
8971f52d15 Rebase to version 4.16.0
Resolves: #2293678

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-08-28 13:20:46 +02:00
Iker Pedrosa
c3bc52a4f1 Rebase to version 4.16.0
Resolves: #2293678

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-08-13 09:57:12 +02:00
Kevin Fenzi
029086935e Revert chpasswd: use PAM again for now.
Revert chpasswd: use PAM again for now.
Revert chpasswd: use PAM again for now.
2024-07-23 14:03:06 -07:00
Fedora Release Engineering
3f78d723fa Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-20 05:23:05 +00:00
99c074978f Rebuilt for the bin-sbin merge
https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin
2024-07-09 13:56:48 +02:00
Iker Pedrosa
e3591abba0 chpasswd: use PAM again
Resolves: #2283963

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-05-30 16:01:57 +02:00
Iker Pedrosa
6ad0830639 Several fixes for issues detected by static analyzer tools
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-05-20 12:14:47 +02:00
39c1e07961 Prepare for bin-sbin merge
https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin

First, fix build if %_sbindir == %_bindir.

Second, add Provides for the old locations. We rely on the
filesystem(unmerged-sbin-symlinks) feature to actually create the symlinks
for us.

This commit makes things compatible with the state before and after the merge.
2024-04-11 15:41:50 +02:00
Iker Pedrosa
1f1cc49def getdef: avoid spurious error messages
Avoid spurious error messages about unknown configuration options

Resolves: #2265291

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-03-21 11:29:11 +05:30
Iker Pedrosa
f38dfa1357 Bump the minor release to 4.15.1
Wrong versioning for 4.15.0 RC releases makes the oficial release look
lower than them. Fix it by bumping the minor release to 4.15.1

Resolves: #2268690

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-03-12 09:46:18 +01:00
Iker Pedrosa
7c3405fb6a Rebase to version 4.15.0
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-03-11 11:36:23 +01:00
Iker Pedrosa
54fe2d4ca4 Rebase to version 4.15.0rc3
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-03-01 09:33:00 +01:00
Iker Pedrosa
fb4d930293 Rebase to version 4.15.0rc2
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-02-19 10:56:01 +01:00
Iker Pedrosa
07607754df Build linking libpam
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-02-12 15:57:19 +01:00
Iker Pedrosa
91360f25a8 passwd: Provide binary from this package
Provide binary from this package. Enable libpam and disable
account-tools-setuid. Provide passwd PAM service file. Finally, provide
--stdin option in passwd.

Resolves: #2233275

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-02-06 17:16:37 +01:00
Iker Pedrosa
1820858d26 Disable SSSD support
Resolves: #2253182

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2024-01-29 10:10:18 +01:00
Fedora Release Engineering
d5da1a5785 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-27 02:49:28 +00:00
Iker Pedrosa
b2b4416387 useradd: Set proper SELinux labels for def_usrtemplate
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2023-10-03 09:59:47 +02:00
Iker Pedrosa
799aaaa508 Rebase to version 4.14.0
Resolves: #2229000

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2023-08-16 10:55:53 +02:00
Petr Lautrbach
5cab3439c8 Use %autosetup instead of obsoleted %patchX macros
Also use -S git instead of suffixes, see

https://rpm-software-management.github.io/rpm/manual/autosetup.html

Fixes:
RPM build warnings:
    %patchN is deprecated (9 usages found), use %patch N (or %patch -P N)

Signed-off-by: Petr Lautrbach <lautrbach@redhat.com>
2023-08-02 16:35:52 +02:00
Fedora Release Engineering
874ece9028 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-22 01:31:45 +00:00
Yaakov Selkowitz
14b1f3518c Remove unused libbsd-devel dependency
libbsd is unwanted in RHEL, but the resulting binaries show no
dependency on libbsd anyway.
2023-06-06 19:31:04 -04:00
Iker Pedrosa
fd05b1cb1a Add build dependencies
Add libbsd-devel and libeconf-devel as build dependencies

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2023-03-06 12:05:17 +01:00
Iker Pedrosa
c0c2ea7769 newuidmap and newgidmap: support passing pid as fd
Resolves: #2174752

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2023-03-02 14:36:39 +01:00
Fedora Release Engineering
f7089c062f Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-21 03:07:17 +00:00
Iker Pedrosa
8779239933 Change SUB_UID_MIN and SUB_GID_MIN to 524288
Resolves: #2144558

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-11-23 15:57:56 +01:00
Florian Weimer
bb5dc8ec04 Fix gshadow configure check (switching to glibc implementation)
Related to:

  <https://fedoraproject.org/wiki/Changes/PortingToModernC>
  <https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
2022-11-21 11:56:22 +01:00
Iker Pedrosa
d3e12503af - Rebase to version 4.13
- SPDX license migration

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-11-09 15:19:52 +01:00
Iker Pedrosa
47d965b5dc chage: Fix regression in print_date
Resolves: #2129336

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-10-05 13:04:29 +02:00
Iker Pedrosa
d491f14619 useradd: Do not reset non-existent data in {last,fail}log
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-09-09 15:04:49 +02:00
Iker Pedrosa
cd421e05ae Rebase to version 4.12.3
Resolves: #2117809

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-08-23 09:25:47 +02:00
Iker Pedrosa
97547bc00a useradd: modify check ID range for system users
Resolves: #2093692

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-08-01 11:13:56 +02:00
Fedora Release Engineering
71c99ba5b1 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-23 08:29:04 +00:00
Iker Pedrosa
5ba2bc90cc Fix explicit subid requirement for subid-devel
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-02-10 17:46:56 +01:00
Iker Pedrosa
a986f4a036 Add forgotten sources
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-01-26 09:39:55 +01:00
Iker Pedrosa
2b851f7e96 - Rebase to version 4.11.1 (#2034038)
- Fix release sources
- Add explicit subid requirement for subid-devel

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-01-26 09:30:07 +01:00
Fedora Release Engineering
bfa562aaf2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-22 00:46:50 +00:00
Iker Pedrosa
77cc4a7c14 - 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

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2022-01-17 10:00:50 +01:00
Iker Pedrosa
957f0eb09e - 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)

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-11-19 09:44:08 +01:00
Iker Pedrosa
a2d5d3dbda useradd: change SELinux labels for home files (#2022658)
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-11-12 15:47:43 +01:00
Iker Pedrosa
4a03ec740c useradd: revert fix memleak of grp (#2018697)
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-11-04 12:47:10 +01:00
Iker Pedrosa
11164c2c0a useradd: generate home and mail directories with selinux user attribute
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-10-27 12:02:57 +02:00
Iker Pedrosa
981bd7a093 - login.defs: include HMAC_CRYPTO_ALGO key
- Clean spec file: organize dependencies and move License location

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-09-23 09:48:39 +02:00
Iker Pedrosa
fbc8eba072 libmisc: fix default value in SHA_get_salt_rounds()
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-08-17 09:49:01 +02:00
Iker Pedrosa
3a32832856 useradd: avoid generating an empty subid range (#1990653)
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-08-11 14:58:12 +02:00
Iker Pedrosa
94f04f9e71 Rebase to version 4.9
usermod: allow all group types with -G option (#1975327)
Clean spec file

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-08-04 10:14:14 +02:00
Fedora Release Engineering
58090e11f1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 17:27:44 +00:00
Björn Esser
0d2b677f8f
Add patch to fix 'fread returns element count, not element size'
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-07-14 16:52:12 +02:00
Iker Pedrosa
fbe143d1bd Fix regression issues detected in rhbz#667593 and rhbz#672510
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
2021-07-14 11:30:55 +02:00
Björn Esser
08a62b5fa3
Enable bcrypt support, as libxcrypt supports it well
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-07-12 10:07:01 +02:00
Björn Esser
90349359e4
Fix release tag
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-07-05 12:08:36 +02:00
Björn Esser
a4f9def9dd
Update shadow-4.8-crypt_h.patch with the upstreamed version
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-07-05 12:00:59 +02:00
Björn Esser
a6d57fc8a3
Add a patch to obtain random bytes using getentropy()
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-07-04 13:04:39 +02:00
Iker Pedrosa
2b6f713524 useradd: free correct pointer (#1976809) 2021-06-29 08:53:22 +02:00
Björn Esser
bace2f8c6b
Add a patch to obtain random bytes from /dev/urandom
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-06-28 11:04:47 +02:00
Björn Esser
1b6e097b0e
Add a patch adding some clarifying comments in libmisc/salt.c
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-06-28 11:04:04 +02:00
Björn Esser
2615b08c31
Add a patch to cleanup the code in libmisc/salt.c
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-06-28 11:03:13 +02:00
Björn Esser
c0e594d3c5
Add a patch to fix the used prefix for the bcrypt hash method
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-06-28 11:02:08 +02:00
Iker Pedrosa
c5fd8d4a0a Covscan fixes 2021-06-28 10:53:45 +02:00
Björn Esser
e967948ce8
Reference actual upstream commit for Patch59 2021-06-22 21:59:30 +02:00
Björn Esser
0946f2a3b0
Add a patch to fix the parameter type of YESCRYPT_salt_cost()
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-06-21 14:49:14 +02:00
Björn Esser
cb2f54a2c1
Backport support for yescrypt hash method
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2021-06-21 14:41:28 +02:00
Iker Pedrosa
cbc60528c3 libsubid improvements
- 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
2021-06-21 13:24:36 +02:00
Iker Pedrosa
1ec5088225 - man: mention NSS in new[ug]idmap manpages
- libsubid: move development header to shadow folder
2021-05-06 11:41:05 +02:00
Iker Pedrosa
5292920d9b - libsubid: creation and nsswitch support
- Creation of subid and subid-devel subpackages
2021-04-23 17:13:51 +02:00
Iker Pedrosa
3e39e1d4e3 - man: include lastlog file caveat (#951564)
- Upstream links to several patches
- Spec file cleanup by Robert Scheck
- Add BuildRequires: make by Tom Stellard
2021-03-29 12:30:28 +02:00
Fedora Release Engineering
4e14ecca65 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 20:17:47 +00:00
Tom Stellard
cc27294138 Add BuildRequires: make
https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot
2021-01-08 21:26:08 +00:00
7abff5646c Spec file cleanup 2020-12-24 21:10:44 +00:00
ipedrosa
4f395dd42d commonio: force lock file sync (#1862056) 2020-11-09 10:53:20 +01:00
Petr Lautrbach
b7aa9ac8ec Rebuild with libsemanage.so.2 2020-11-03 16:14:35 +01:00
Ludwig Nussel
9f643a3011 Add Provides: shadow
The upstream source tarball is actually called 'shadow' rather than 'shadow-utils'.
Add a compat provides for the former.
2020-10-01 13:23:15 +00:00
Fedora Release Engineering
a222f7e825 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 10:37:48 +00:00
ipedrosa
59585bb370 check only local groups when adding new supplementary groups to a user 2020-05-14 14:28:59 +02:00
ikerexxe
a66f10a891 useradd: clarify the useradd -d parameter behavior in man page 2020-03-24 10:46:27 +01:00
ikerexxe
b926b118d9 Rebased to 4.8.1 2020-03-17 18:18:50 +01:00
ikerexxe
7309a53c2a Synchronized login.defs with upstream file (#1261099 and #1807957) 2020-03-17 12:17:29 +01:00
ikerexxe
f5a51331fe useradd: generate /var/spool/mail/$USER with the proper SELinux user identity
Explanation: use set_selinux_file_context() and reset_selinux_file_context() for create_mail() just as is done for create_home()

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1690527
2020-02-24 16:36:57 +01:00
Fedora Release Engineering
c44360b6f9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-30 23:20:27 +00:00
Tomas Mraz
a1cd6a4b05 Fix grammar mistake in invalid shell check patch 2020-01-16 13:00:26 +01:00
Tomas Mraz
fd2aa2917b make the invalid shell check into warning 2020-01-16 09:04:30 +01:00
Tomas Mraz
88156a4067 make the invalid shell check into warning 2020-01-16 09:04:04 +01:00
Tomas Mraz
b76250c68a update to current upstream release 4.8 2020-01-13 11:46:38 +01:00
Tomas Mraz
36709cd2d7 fix SELinux related problem in chpasswd/chgpasswd when run with -R
(patch by Petr Lautrbach) (#1747215)
2019-09-02 15:48:01 +02:00
Petr Lautrbach
3e9ca2fc33 chpasswd, chgpasswd: Run SELinux checks before chroot()
libselinux checks the state of SELinux only in the library constructor and then
uses a cached value. It can be a problem for processes which do chroot() as
there's usually no SELinux interface (/sys/fs/selinux) in the chroot. For
chpasswd/chgpasswd is enough to do SELinux checks before processes are
chroot()ed.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1747215
2019-09-02 14:37:23 +02:00
Fedora Release Engineering
6065752fdc - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-26 23:10:38 +00:00
Tomas Mraz
e17e2fa767 minor auditing fixes 2019-06-07 14:40:46 +02:00
Tomas Mraz
c2e806d82c use lckpwdf() again to disable concurrent edits of databases by other applications 2019-05-03 11:22:39 +02:00
Tomas Mraz
c5ff8b2cd3 force regeneration of getdate.c
otherwise the date parsing fix is not applied
2019-04-02 16:53:44 +02:00
Tomas Mraz
713a388dfc clarify chage manual page in regards to shadow and passwd inconsistency (#1686440) 2019-03-22 13:24:42 +01:00
Tomas Mraz
75c680d318 Ignore LOGIN_PLAIN_PROMPT variable in login.defs 2019-03-21 15:09:54 +01:00
Tim Landscheidt
875723a30b Remove obsolete requirements for post/pre scriptlets 2019-03-07 03:45:18 +00:00
Tomas Mraz
39afa9e9fb Drop the user name regexp from the manual as it is not exact. 2019-02-06 17:24:50 +01:00
Fedora Release Engineering
6f7a2acd68 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-02 15:17:20 +00:00
Tomas Mraz
1181911534 Fix manpage default for SUB_UID/GID_COUNT variables. 2019-01-31 13:44:45 +01:00
a5c5d1f162 Remove obsolete BuildRoot tag
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2019-01-29 05:36:30 +01:00
aa9270652f Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:49 +01:00
Björn Esser
2fcf41cf88
Rebuilt for libcrypt.so.2 (#1666033) 2019-01-14 18:53:28 +01:00
Tomas Mraz
7eb46d2996 usermod: guard against unsafe change of ownership of special home directories 2018-12-18 15:30:26 +01:00
Tomas Mraz
6283287fd2 Remove a trailing space from login.defs 2018-11-28 13:13:17 +01:00
Tomas Mraz
b9927e87e2 Release bump 2018-11-19 11:02:43 +01:00
Tomas Mraz
b41cff1956 use itstool instead of xml2po 2018-11-19 11:02:06 +01:00
Tomas Mraz
1a1e7474b6 Fix malformed patch. 2018-11-06 10:53:00 +01:00
Tomas Mraz
f38d60a562 Use cap_setxid file capabilities for newxidmap instead of making them setuid
Also:
limit the SYS_U/GID_MIN value to 1 as the algorithm does not work with 0
  and the 0 is always used by root anyway
manual page improvements
2018-11-06 10:40:50 +01:00
Tomas Mraz
d80def3861 fix some issues from Coverity scan
flush sssd caches - patch by Jakub Hrozek
2018-10-12 17:38:01 +02:00
Fedora Release Engineering
8362f15341 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-14 06:02:14 +00:00
Jason Tibbitts
0aa8060034 Remove needless use of %defattr 2018-07-10 01:20:51 -05:00
Tomas Mraz
38a12ac864 update to current upstream release 4.6 2018-05-28 15:25:08 +02:00
Tomas Mraz
4cb5077b68 Raise limit for passwd and shadow entry length
- also prevent writing longer entries (#1422497)
2018-04-20 16:23:31 +02:00
Tomas Mraz
8d62f944dd Add gcc buildrequires 2018-03-01 13:11:34 +01:00
eb66bf0ca5
Remove %clean section
None of currently supported distributions need that.
Last one was EL5 which is EOL for a while.

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-02-14 08:49:44 +01:00
Björn Esser
41955fa9ab
Add patch to include crypt.h, if present
Use %%make_{build,install} macros
Refresh other patches for proper alignment
2018-02-06 11:33:37 +01:00
Björn Esser
2d4f6e1972
Rebuilt for switch to libxcrypt 2018-01-20 23:08:33 +01:00
esakaiev
a6650f241c Adding tests to the new_tests branch 2018-01-05 20:39:59 +02:00
Tomas Mraz
95d0ea6880 fix regression caused by the userdel-chroot patch (#1509978) 2017-11-06 15:31:26 +01:00
Tomas Mraz
8633999acf fix userdel in chroot (#1316168)
add useful chage -E example to chage manpage
2017-11-02 11:50:59 +01:00
Tomas Mraz
9659143d38 Remove incorrect hunks from the goodname patch. 2017-09-15 18:00:17 +02:00
Tomas Mraz
b90f1c3912 do not allow "." and ".." user names 2017-09-15 17:54:22 +02:00
Tomas Mraz
2c7fd6de84 allow switching to secondary group without checking the membership
(patch from upstream)
2017-08-14 11:03:28 +02:00
Fedora Release Engineering
46349c33e5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild 2017-08-03 08:23:19 +00:00
Fedora Release Engineering
3a17ec0f47 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-27 18:30:31 +00:00
Tomas Mraz
ec99eade4e update to current upstream release 4.5 2017-07-21 14:04:11 +02:00
Fedora Release Engineering
ba9340caf5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild 2017-02-11 13:21:56 +00:00
Tomas Mraz
bb62fd7837 fix regression in useradd - not processing defaults properly (#1369979) 2016-08-25 11:24:38 +02:00
Tomas Mraz
457acab6b4 Add buildrequires for docbook. 2016-08-23 16:51:22 +02:00
Tomas Mraz
86cbf7e19d Add proper buildrequires for autotools. 2016-08-23 16:30:57 +02:00
Tomas Mraz
6c18d5356b Update patches for rebase 2016-08-23 16:06:06 +02:00
Tomas Mraz
f8ab516d30 new upstream release fixing low impact security issue 2016-08-23 16:03:52 +02:00
Tomas Mraz
c50e17082d guard for localtime() and gmtime() failure 2016-06-14 11:34:10 +02:00
Tomas Mraz
abed79ee4e chpasswd, chgpasswd: open audit when starting 2016-05-30 11:59:54 +02:00
Tomas Mraz
f884cd4c94 chgpasswd: do not remove it
- chpasswd, chgpasswd: add selinux_check_access call (#1336902)
2016-05-26 21:05:16 +02:00
Tomas Mraz
a359c84a6e userdel: fix userdel -f with /etc/subuid present (#1316168) 2016-03-17 17:40:43 +01:00
Tomas Mraz
1bf254df98 usermod: properly return error during password manipulation 2016-02-09 11:54:02 +01:00
Tomas Mraz
b1dccbc445 add possibility to clear or set lastlog record for user via lastlog 2016-02-03 14:01:19 +01:00
Tomas Mraz
05ccc5cb0b Correct changelog date. 2016-01-08 10:02:44 +01:00
Tomas Mraz
904910f545 do not use obscure permissions for binaries
- remove unused commands from login.defs(5) cross-reference
2016-01-08 10:02:12 +01:00
Tomas Mraz
4e08f5dd0a Remove obsolete patch. 2015-12-14 17:57:58 +01:00
Tomas Mraz
c2f1a1c502 document that groupmems is not setuid root
- document that expiration of the password after inactivity period
  locks the user account completely
2015-11-06 14:34:35 +01:00
Tomas Mraz
25899fefb0 Multiple fixes.
- unlock also passwords locked with passwd -l
- prevent breaking user entry by entering a password containing colon
- fix possible DoS when locking the database files for update
- properly use login.defs from the chroot in useradd
2015-08-27 15:53:13 +02:00
Dennis Gilmore
283bf24723 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild 2015-06-19 00:44:03 +00:00
Tomas Mraz
8b4e03b994 new upstream release with support for subordinate uids and gids 2014-11-26 15:58:28 +01:00
Tomas Mraz
04260e2340 small adjustments to the audit patch 2014-11-25 11:58:16 +01:00
Tomas Mraz
e77fc2805e Cast gid_t to unsigned long when printing. 2014-10-20 13:49:44 +02:00
Tomas Mraz
e1ce821d45 update auditing to cover more events and fix some incorrect audit records
(auditing patch by Steve Grubb (#1151580))
- apply the same new allocation algorithm to uids as for gids
2014-10-17 17:03:29 +02:00
Tomas Mraz
af13db915f discard obsolete matchpathcon cache after semanage_commit() 2014-09-10 10:28:53 +02:00
Tomas Mraz
d29b2a8def disallow all-numeric user and group names (#1139318) 2014-09-09 17:39:08 +02:00
Tomas Mraz
4c1ef1cd21 Multiple fixes
- label the newly created home dir correctly (#1077809)
- mention that chage -d 0 forces password change (#1135010)
- improve date parsing and error detecting in chage
- avoid full group database scanning in newgrp in most common case
- report error if usermod asked for moving homedir and it does not exist
2014-08-29 14:28:48 +02:00
183c869703 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild 2014-08-18 02:08:56 +00:00
Tom Callaway
972907741d fix license handling 2014-08-05 10:56:28 -04:00
Tom Callaway
9120a44c3f fix license handling 2014-08-05 08:57:58 -04:00
Tom Callaway
5ac7a63576 fix license handling 2014-08-05 08:57:03 -04:00
Tom Callaway
1e95b5b479 fix license handling 2014-08-05 08:55:45 -04:00
Tomas Mraz
fd2973e24f revert the last change as it is not really needed 2014-07-14 10:34:08 +02:00
Tomas Mraz
6a7e42e7e9 put system users and groups into /usr/lib/{passwd,group} if
the files exist and SHADOW_USE_USRLIB environment variable is set
  Patch by Colin Walters
2014-07-10 17:06:38 +02:00
Tomas Mraz
efff9fe79f ignore getgrgid() errors for now 2014-07-02 13:30:31 +02:00
Tomas Mraz
dad42cc2f5 improve group allocation algorithm - patch by Stephen Gallager (#1089738) 2014-06-30 15:22:33 +02:00
Dennis Gilmore
c509d20844 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild 2014-06-08 01:14:33 -05:00
Tomas Mraz
a8136ba211 clean up login.defs manpage
- properly document userdel -f behavior
2014-02-12 11:50:55 +01:00
Tomas Mraz
8d1ef4078b clean up login.defs manpage
- properly document userdel -f behavior
2014-02-12 11:43:04 +01:00
Tomas Mraz
317fc748b3 document that the directory where user's home is created must exist 2013-10-18 16:33:21 +02:00
Tomas Mraz
462b4b2f45 Fix bogus dates in changelog 2013-07-25 14:30:32 +02:00
Tomas Mraz
a451dc3d55 slightly more meaningful error messages if crypt() returns NULL (#988184)
- explicit suid permissions
2013-07-25 13:26:18 +02:00
Tomas Mraz
047af921d9 fix useradd man page bugs 2013-07-19 08:08:10 +02:00
Tomas Mraz
4eaf9cda61 fix useradd man page bugs 2013-07-19 07:44:18 +02:00
Tomas Mraz
32f6a78157 report error to stdout when SELinux context for home directory
cannot be determined (#973647)
- audit the changing home directory owner (#885797)
- do not set the default SELinux MLS range (#852676)
2013-06-14 15:27:20 +02:00
Tomas Mraz
a253a4a28b improve the failure syslog message in useradd (#830617) 2013-03-19 18:46:14 +01:00
Tomas Mraz
0bdf7eb7a5 improve the failure syslog message in useradd (#830617) 2013-03-19 18:43:43 +01:00
Tomas Mraz
257f1c1652 Fix a typo. 2013-02-20 15:42:28 +01:00
Tomas Mraz
c85c93b88e keep the original context if matchpathcon() fails (#912399) 2013-02-20 15:30:31 +01:00
Tomas Mraz
778c4c228d fix bugs in merge_group_entries() 2013-01-29 14:17:57 +01:00
Tomas Mraz
6a8565830d /etc/default is owned by glibc-common now (#894194) 2013-01-11 10:45:13 +01:00
Tomas Mraz
44a40b2f4e new upstream version
- use the original file permissions when creating backup (#853102)
2012-09-19 20:33:30 +02:00
Peter Vrabec
cae35b95ab make /etc/default/useradd world-readable (#835137) 2012-07-25 12:44:17 +02:00
Dennis Gilmore
3481ee2a8f - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild 2012-07-21 14:29:08 -05:00
Peter Vrabec
8cd7b2fcb7 pwconv/grpconv skipped 2nd of consecutive failures (#832995) 2012-06-18 13:38:31 +02:00
Peter Vrabec
8994f4c05c - fix selinux context handling
- reset selinux context on files copied from skel
2012-03-22 16:51:40 +01:00
Peter Vrabec
4c8c528414 upgrade 2012-03-20 17:39:28 +01:00
Peter Vrabec
c2e7e463a1 compile with PIE and RELRO flags (#784349) 2012-02-07 18:04:27 +01:00
Dennis Gilmore
f660173551 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild 2012-01-13 21:52:35 -06:00
Peter Vrabec
5f231e7c37 fix leaks in .IDs patch (#734340) 2011-12-20 13:53:56 +01:00
Peter Vrabec
20341fa201 free memory associated with SELinux security context 2011-11-16 17:17:29 +01:00
Peter Vrabec
22f8cbe3bf - replace semanage call by library call
- useradd man page (#739147)
2011-11-10 17:16:04 +01:00
Peter Vrabec
4897d3d6b7 man page adjustment (userdel -Z) 2011-08-02 14:09:56 +02:00
Peter Vrabec
3a49560688 fixing semanage issue (#701355) 2011-08-02 13:07:03 +02:00
Peter Vrabec
8e39d10d31 do not replace /etc/login.defs on upgrade (temporary) 2011-07-25 15:06:13 +02:00
Peter Vrabec
d410224971 man page fixes 2011-06-29 10:14:51 +02:00
Peter Vrabec
8c0da063a2 spec file fixes 2011-06-28 17:21:30 +02:00
Peter Vrabec
46dd21926b - fixing Linux login <-> SELinux login mapping
(#639900), (#639975), (#639976)
2011-06-28 16:32:18 +02:00
Peter Vrabec
f7bb2ec63f refer to PAM in /etc/login.defs 2011-06-27 16:12:59 +02:00
Peter Vrabec
4d00d71784 fix shadow-4.1.4.2-underflow.patch 2011-06-06 09:07:51 +02:00
Peter Vrabec
6e8f608032 fix integer underflow in laslog (#706321) 2011-05-31 10:00:39 +02:00
Peter Vrabec
5d7612da5b upgrade 2011-05-23 14:58:07 +02:00
Peter Vrabec
e997448056 home directory on fs with noacl + remove faillog 2011-02-10 11:23:21 +01:00
Peter Vrabec
ca4ecc57a6 useradd man page (-m option) #523265 2011-02-09 11:07:44 +01:00
Peter Vrabec
b76f93c25b - do not use gshadow functions from glibc(#674234) 2011-02-01 17:10:35 +01:00
Peter Vrabec
8d9482059f fix Bug #665780
- fix gshadow functions from shadow utils
- make shadow utils use gshadow functions from glibc
2011-01-06 09:41:43 +01:00
Fedora Release Engineering
11d8bcbcab dist-git conversion 2010-07-29 12:42:28 +00:00
Peter Vrabec
30f3024f75 fix pwck/grpck hang 2010-07-20 09:20:10 +00:00
Peter Vrabec
59e397ee42 - fix integer underflow in faillog (#603683)
- use preferred GID for reserved static IDs
2010-06-14 11:15:21 +00:00
Peter Vrabec
6631e0269c add missing buildrequires 2010-04-29 15:26:31 +00:00
Peter Vrabec
4f86795e64 - preserve ACL's on files in /etc/skel Resolves: #513055 2010-04-29 15:09:49 +00:00
Peter Vrabec
d787a9d254 - newusers man page more informative
- userdel should not need to run semanage Resolves: #586330 #586408
2010-04-28 13:13:13 +00:00
Peter Vrabec
0ffcb199d6 fix man directories ownership (#569418) 2010-04-01 13:16:46 +00:00
Peter Vrabec
e772ed6ecf max group name length set to 32 characters 2010-03-26 13:55:46 +00:00
Bill Nottingham
0f8ceb4603 Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-25 23:15:30 +00:00
Peter Vrabec
446ad2234a - apply patches{1,2,3}
- enable SHA512 in /etc/login.defs
2009-11-18 09:33:28 +00:00
Peter Vrabec
cdd12ed1d1 upgrade 2009-09-07 14:56:09 +00:00
Tomáš Mráz
8c5573deab - rebuilt with new audit 2009-08-21 11:18:13 +00:00
Peter Vrabec
2b93b0c13a increase threshold for uid/gid reservations to 200 (#515667) 2009-08-05 11:50:03 +00:00
Jesse Keating
ea26d8a646 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild 2009-07-27 04:15:11 +00:00
Peter Vrabec
abc277db56 - fix a list of owned directories (#510366)
- reduce the reuse of system IDs
- speed up sys users look up on LDAP boxes (#511813)
2009-07-16 13:41:55 +00:00
Peter Vrabec
f556cf968e upgrade 2009-06-16 13:23:28 +00:00
Peter Vrabec
c28651e7a4 upgrade 2009-05-15 10:46:55 +00:00
Peter Vrabec
d4689ff3b2 lastlog fix 2009-04-22 08:58:31 +00:00
Peter Vrabec
da96b3d14b upgrade 2009-04-20 09:47:31 +00:00
Peter Vrabec
70078f8ff6 - get "-n" option back
- fix selinux issues
2009-04-14 14:12:16 +00:00
Peter Vrabec
ea53f7cab2 upgrade 2009-04-14 10:19:14 +00:00
Peter Vrabec
eab8b43860 increase release number 2009-03-24 16:09:09 +00:00
Jesse Keating
e72eda630f - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild 2009-02-26 00:46:27 +00:00
Peter Vrabec
333b6be1e7 - fix license tag (#226416)
- get rid of tabs in spec file (#226416)
- convert HOWTO to UTF8 (#226416)
2009-01-19 13:48:19 +00:00
Peter Vrabec
8e69e8df38 Add policycoreutils as Requires, because of restorecon (#478494) 2009-01-05 12:57:44 +00:00
Jesse Keating
306f53c11b - Add setup as a Requires. Perhaps this should be a files requires.
(#477529)
2008-12-21 16:54:46 +00:00
Peter Vrabec
53b6c2ec17 - groupmems: check username for valid character (#455603)
- groupmems: don't segfault on nonexistent group (#456088)
2008-09-24 13:26:18 +00:00
Peter Vrabec
60ae26e9e9 fix usermod SELinux user mappings change (#458766) 2008-09-11 11:47:39 +00:00
Peter Vrabec
be8c9d1e92 audit improvements, thnx. to sgrubb@redhat.com 2008-09-02 14:12:30 +00:00
Peter Vrabec
87ffe9ce68 fix groupmems issues (#459825) 2008-09-02 08:46:52 +00:00
Peter Vrabec
edcb9d8b59 ix configure options (#456748) 2008-07-28 11:45:33 +00:00
Peter Vrabec
d763ffe596 recreate selinux patch 2008-07-24 08:30:14 +00:00
Peter Vrabec
543cfc5cc2 increase release number 2008-07-23 14:53:58 +00:00
Peter Vrabec
fd27fd21e3 provide man getspnam by man-pages 2008-07-22 10:16:36 +00:00
Peter Vrabec
79c2e98279 upgrade 2008-05-26 13:17:35 +00:00
Peter Vrabec
f59529bd69 fix salt size problem (#447136) 2008-05-20 11:44:16 +00:00
Peter Vrabec
b83095da8b upgrade 2008-04-05 13:17:48 +00:00
Peter Vrabec
34e80945bb add faster reset patch 2008-03-07 15:34:03 +00:00
Peter Vrabec
b4dd99d31b improve newgrp audit patch 2008-03-07 15:06:15 +00:00
Peter Vrabec
d58e4bd862 fix selinux labeling (#433757) 2008-03-03 14:14:07 +00:00
Peter Vrabec
37c1b28cf9 fix groupmems segmentation fault (#430813) 2008-02-19 12:01:10 +00:00
Peter Vrabec
2c3e028c8e fix newgrp audit event 2008-02-13 12:54:32 +00:00
Peter Vrabec
0b4d54c804 - new upgrade release from new upstream
- provide vipw and vigr
2007-12-12 15:07:44 +00:00
Peter Vrabec
1bed265897 do not create mail spool entries for system accounts (#402351) 2007-11-29 15:08:46 +00:00
Peter Vrabec
7a19049eec fix timestamps when moving home dirs to another file system (#278571) 2007-10-18 10:38:36 +00:00
Bill Nottingham
96de9ca62a makefile update to properly grab makefile.common 2007-10-15 19:22:59 +00:00
Peter Vrabec
85535f3d97 localized man pages marked with %lang 2007-10-08 17:46:20 +00:00
Peter Vrabec
86ed907411 rebuild 2007-08-22 15:44:51 +00:00
Peter Vrabec
00fc3d1cfb fix "CAVEATS" section of groupadd man page (#245590) 2007-06-26 14:22:36 +00:00
Peter Vrabec
9d9e9cc197 fix infinitive loop if there are duplicate entries in /etc/group (#240915) 2007-06-05 13:18:36 +00:00
Peter Vrabec
b17301efe0 do not run find_new_uid() twice and use getpwuid() to check UID uniqueness
(#236871)
2007-06-05 13:09:03 +00:00
29 changed files with 1872 additions and 2035 deletions

1
.fmf/version Normal file
View file

@ -0,0 +1 @@
1

61
.gitignore vendored
View file

@ -1,5 +1,56 @@
shadow-4.0.16.tar.bz2
shadow-4.0.16-nscd.c
shadow-4.0.17.tar.bz2
shadow-4.0.17-login.defs
shadow-4.0.18.1.tar.bz2
shadow-4.1.4.2.tar.bz2
/shadow-4.1.4.3.tar.bz2
/shadow-4.1.5.tar.bz2
/shadow-4.1.5.1.tar.bz2
/shadow-4.1.5.1.tar.bz2.sig
/shadow-4.2.1.tar.xz
/shadow-4.2.1.tar.xz.sig
/shadow-4.3.1.tar.gz
/shadow-4.5.tar.xz
/shadow-4.5.tar.xz.asc
/shadow-4.6.tar.xz
/shadow-4.6.tar.xz.asc
/shadow-4.8.tar.xz
/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
/shadow-4.12.3.tar.xz
/shadow-4.12.3.tar.xz.asc
/shadow-4.13.tar.xz
/shadow-4.13.tar.xz.asc
/shadow-4.14.0.tar.xz
/shadow-4.14.0.tar.xz.asc
/shadow-4.15.0rc2.tar.xz
/shadow-4.15.0rc2.tar.xz.asc
/shadow-4.15.0rc3.tar.xz
/shadow-4.15.0rc3.tar.xz.asc
/shadow-4.15.0.tar.xz
/shadow-4.15.0.tar.xz.asc
/shadow-4.15.1.tar.xz
/shadow-4.15.1.tar.xz.asc
/shadow-4.16.0.tar.xz
/shadow-4.16.0.tar.xz.asc
/shadow-4.17.0-rc1.tar.xz
/shadow-4.17.0-rc1.tar.xz.asc
/shadow-4.17.0.tar.xz
/shadow-4.17.0.tar.xz.asc
/shadow-4.17.4.tar.xz
/shadow-4.17.4.tar.xz.asc
/shadow-4.18.0.tar.xz
/shadow-4.18.0.tar.xz.asc
/shadow-4.19.0.tar.xz
/shadow-4.19.0.tar.xz.asc
/shadow-4.19.2.tar.xz
/shadow-4.19.2.tar.xz.asc
/shadow-4.19.3.tar.xz
/shadow-4.19.3.tar.xz.asc
/shadow-4.20.0-rc2.tar.xz
/shadow-4.20.0-rc2.tar.xz.asc
/shadow-4.20.0-rc3.tar.xz
/shadow-4.20.0-rc3.tar.xz.asc
/shadow-4.20.0.tar.xz
/shadow-4.20.0.tar.xz.asc

339
gpl-2.0.txt Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

5
passwd.pamd Normal file
View file

@ -0,0 +1,5 @@
#%PAM-1.0
# This tool only uses the password stack.
password substack system-auth
-password optional pam_gnome_keyring.so use_authtok
password substack postlogin

View file

@ -0,0 +1,51 @@
summary: Tier 0 functional tests for shadow-utils
description: |
Run comprehensive system tests for shadow-utils. These tests validate user and group
account management functionality by testing actual system operations including user
creation, password management, group operations, and verification of system files
(i.e. /etc/passwd, /etc/shadow).
provision:
how: virtual
image: fedora
prepare:
- name: Install general dependencies
how: install
package:
- expect
- gcc
- git
- libssh-devel
- python3-devel
- python3-pip
- name: Setup SSH keys for localhost testing
how: shell
script:
- ssh-keygen -t rsa -f /root/.ssh/id_rsa -N "" -q
- cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
- chmod 600 /root/.ssh/authorized_keys
- ssh-keyscan -H localhost >> /root/.ssh/known_hosts
- name: Clone shadow repository
how: shell
script:
- git clone https://github.com/shadow-maint/shadow.git /tmp/shadow-test
- name: Copy test topology for Fedora CI
how: shell
script:
- cp tests/mhc-fedora-ci.yaml /tmp/shadow-test/tests/system
- name: Install test dependencies
how: shell
script:
- pip3 install -r /tmp/shadow-test/tests/system/requirements.txt
execute:
how: tmt
duration: 30m
script: |
cd /tmp/shadow-test/tests/system
pytest --mh-config=mhc-fedora-ci.yaml --mh-lazy-ssh -v

View file

@ -1,133 +0,0 @@
--- shadow-4.0.11.1/src/groupadd.c.vipw 2005-07-19 11:50:45.000000000 +0000
+++ shadow-4.0.11.1/src/groupadd.c 2005-08-04 15:14:58.000000000 +0000
@@ -438,6 +451,7 @@
int main (int argc, char **argv)
{
+ struct stat s;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
@@ -492,6 +506,11 @@
OPENLOG ("groupadd");
#endif /* USE_PAM */
+ if (stat("/etc/gtmp", &s) == 0) {
+ fputs("vigr lockfile (/etc/gtmp) is present.\n", stderr);
+ fail_exit(1);
+ }
+
#ifdef SHADOWGRP
is_shadow_grp = sgr_file_present ();
#endif
--- shadow-4.0.11.1/src/userdel.c.vipw 2005-08-04 15:16:06.000000000 +0000
+++ shadow-4.0.11.1/src/userdel.c 2005-08-04 15:18:15.000000000 +0000
@@ -577,6 +577,7 @@
struct group *grp;
int arg;
int errors = 0;
+ struct stat s;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
@@ -637,6 +638,11 @@
OPENLOG ("userdel");
+ if (stat("/etc/ptmp", &s) == 0) {
+ fputs("vipw lockfile (/etc/ptmp) is present.\n", stderr);
+ fail_exit(1);
+ }
+
is_shadow_pwd = spw_file_present ();
#ifdef SHADOWGRP
is_shadow_grp = sgr_file_present ();
--- shadow-4.0.11.1/src/groupmod.c.vipw 2005-08-04 15:20:09.000000000 +0000
+++ shadow-4.0.11.1/src/groupmod.c 2005-08-04 15:21:27.000000000 +0000
@@ -407,6 +407,7 @@
int main (int argc, char **argv)
{
struct group *grp;
+ struct stat s;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
@@ -458,6 +459,11 @@
}
#endif /* USE_PAM */
+ if (stat("/etc/gtmp", &s) == 0) {
+ fputs("vigr lockfile (/etc/gtmp) is present.\n", stderr);
+ exit(1);
+ }
+
OPENLOG ("groupmod");
#ifdef SHADOWGRP
--- shadow-4.0.11.1/src/groupdel.c.vipw 2005-08-04 15:22:00.000000000 +0000
+++ shadow-4.0.11.1/src/groupdel.c 2005-08-04 15:23:10.000000000 +0000
@@ -222,6 +222,7 @@
int main (int argc, char **argv)
{
struct group *grp;
+ struct stat s;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
@@ -276,6 +277,11 @@
}
#endif /* USE_PAM */
+ if (stat("/etc/gtmp", &s) == 0) {
+ fputs("vigr lockfile (/etc/gtmp) is present.\n", stderr);
+ exit(1);
+ }
+
OPENLOG ("groupdel");
#ifdef SHADOWGRP
--- shadow-4.0.11.1/src/usermod.c.vipw 2005-08-04 15:23:30.000000000 +0000
+++ shadow-4.0.11.1/src/usermod.c 2005-08-04 15:25:31.000000000 +0000
@@ -1224,6 +1224,7 @@
int main (int argc, char **argv)
{
int grp_err = 0;
+ struct stat s;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
@@ -1245,6 +1246,12 @@
user_groups[0] = (char *) 0;
OPENLOG ("usermod");
+
+ if (stat("/etc/ptmp", &s) == 0) {
+ fputs("vipw lockfile (/etc/ptmp) is present.\n", stderr);
+ fail_exit(1);
+ }
+
is_shadow_pwd = spw_file_present ();
#ifdef SHADOWGRP
--- shadow-4.0.11.1/src/useradd.c.vipw 2005-08-04 15:25:54.000000000 +0000
+++ shadow-4.0.11.1/src/useradd.c 2005-08-04 15:28:42.000000000 +0000
@@ -1651,6 +1651,7 @@
int main (int argc, char **argv)
{
+ struct stat s;
#ifdef USE_PAM
pam_handle_t *pamh = NULL;
struct passwd *pampw;
@@ -1669,6 +1670,11 @@
OPENLOG ("useradd");
+ if (stat("/etc/ptmp", &s) == 0) {
+ fputs("vipw lockfile (/etc/ptmp) is present.\n", stderr);
+ fail_exit(1);
+ }
+
sys_ngroups = sysconf (_SC_NGROUPS_MAX);
user_groups = malloc ((1 + sys_ngroups) * sizeof (char *));

View file

@ -1,92 +0,0 @@
--- shadow-4.0.13/src/newgrp.c.newgrpPwd 2005-09-15 18:44:12.000000000 +0200
+++ shadow-4.0.13/src/newgrp.c 2005-10-21 16:02:16.000000000 +0200
@@ -333,25 +333,37 @@ int main (int argc, char **argv)
}
#endif
- /*
- * see if she is a member of this group. If she isn't a member, she
- * needs to provide the group password. If there is no group
- * password, she will be denied access anyway.
- *
- */
- if (!is_on_list (grp->gr_mem, name))
- needspasswd = 1;
+ /* Needn't password:
+ * - default user's GID = group ID
+ * - members of group
+ * - root
+ * Need password:
+ * - all others users
+ *
+ * -- Karel Zak <kzak@redhat.com> 2004/03/29
+ */
+ if (getuid ()!=0)
+ {
+ if (grp->gr_gid==pwd->pw_gid)
+ needspasswd = 0;
+ else if (is_on_list (grp->gr_mem, name))
+ needspasswd = 0;
+ else
+ needspasswd = 1;
/*
* If she does not have either a shadowed password, or a regular
* password, and the group has a password, she needs to give the
* group password.
*/
- if ((spwd = getspnam (name)))
- pwd->pw_passwd = spwd->sp_pwdp;
-
- if (pwd->pw_passwd[0] == '\0' && grp->gr_passwd[0])
- needspasswd = 1;
+ if (!needspasswd)
+ {
+ if ((spwd = getspnam (name)))
+ pwd->pw_passwd = spwd->sp_pwdp;
+ if (pwd->pw_passwd[0] == '\0' && grp->gr_passwd[0])
+ needspasswd = 1;
+ }
+ }
/*
* Now i see about letting her into the group she requested. If she
@@ -362,7 +374,21 @@ int main (int argc, char **argv)
* Note that she now has to provide the password to her own group,
* unless she is listed as a member. -- JWP
*/
- if (getuid () != 0 && needspasswd) {
+ if (needspasswd) {
+
+ /* note: the original util-linux newgrp didn't ask for pasword if
+ * there is no password. It's better directly give up.
+ * -- kzak@redhat.com
+ */
+ if (grp->gr_passwd==NULL || grp->gr_passwd[0] == '\0') {
+ /*
+ * there is no password, print out "Sorry" and give up
+ */
+ sleep (1);
+ fputs (_("Sorry.\n"), stderr);
+ goto failure;
+ }
+
/*
* get the password from her, and set the salt for
* the decryption from the group file.
@@ -378,15 +404,6 @@ int main (int argc, char **argv)
cpasswd = pw_encrypt (cp, grp->gr_passwd);
strzero (cp);
- if (grp->gr_passwd[0] == '\0') {
- /*
- * there is no password, print out "Sorry" and give up
- */
- sleep (1);
- fputs (_("Sorry.\n"), stderr);
- goto failure;
- }
-
if (strcmp (cpasswd, grp->gr_passwd) != 0) {
SYSLOG ((LOG_INFO,
"Invalid password for group `%s' from `%s'",

View file

@ -1,77 +0,0 @@
--- shadow-4.0.14/man/useradd.8.goodname 2006-01-05 17:54:26.000000000 +0100
+++ shadow-4.0.14/man/useradd.8 2006-01-05 18:01:18.000000000 +0100
@@ -166,8 +166,6 @@
Similarly, if the username already exists in an external user database such as NIS,
\fBuseradd\fR
will deny the user account creation request.
-.PP
-Usernames must begin with a lower case letter or an underscore, and only lower case letters, underscores, dashes, and dollar signs may follow. In regular expression terms: [a\-z_][a\-z0\-9_\-]*[$]
.SH "FILES"
.TP
\fI/etc/passwd\fR
--- shadow-4.0.14/libmisc/chkname.c.goodname 2005-08-31 19:24:57.000000000 +0200
+++ shadow-4.0.14/libmisc/chkname.c 2006-01-05 17:59:45.000000000 +0100
@@ -18,16 +18,24 @@
static int good_name (const char *name)
{
/*
- * User/group names must match [a-z_][a-z0-9_-]*[$]
- */
- if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_'))
+ * User/group names must match gnu e-regex:
+ * [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?
+ *
+ * as a non-POSIX, extension, allow "$" as the last char for
+ * sake of Samba 3.x "add machine script"
+ */
+ if (!*name || !((*name >= 'a' && *name <= 'z')
+ || (*name >= 'A' && *name <= 'Z')
+ || (*name >= '0' && *name <= '9')
+ || *name == '_' || *name == '.'))
return 0;
while (*++name) {
- if (!((*name >= 'a' && *name <= 'z') ||
- (*name >= '0' && *name <= '9') ||
- *name == '_' || *name == '-' ||
- (*name == '$' && *(name + 1) == '\0')))
+ if (!( (*name >= 'a' && *name <= 'z')
+ || (*name >= 'A' && *name <= 'Z')
+ || (*name >= '0' && *name <= '9')
+ || *name == '_' || *name == '.' || *name == '-'
+ || (*name == '$' && *(name + 1) == '\0')))
return 0;
}
@@ -43,10 +51,9 @@
#endif
/*
- * User names are limited by whatever utmp can
- * handle (usually max 8 characters).
+ * User names are limited by whatever utmp can handle.
*/
- if (strlen (name) > sizeof (ut.ut_user))
+ if (strlen(name) + 1 > sizeof(ut.ut_user))
return 0;
return good_name (name);
@@ -54,11 +61,13 @@
int check_group_name (const char *name)
{
- /*
- * Arbitrary limit for group names - max 16
- * characters (same as on HP-UX 10).
- */
- if (strlen (name) > 16)
+#if HAVE_UTMPX_H
+ struct utmpx ut;
+#else
+ struct utmp ut;
+#endif
+
+ if (strlen(name) + 1 > sizeof(ut.ut_user))
return 0;
return good_name (name);

View file

@ -1,58 +0,0 @@
--- shadow-4.0.17/man/useradd.8.lOption 2006-11-02 18:23:50.000000000 +0100
+++ shadow-4.0.17/man/useradd.8 2006-11-02 18:23:50.000000000 +0100
@@ -96,6 +96,9 @@
\fB\-m\fR
option. The default is to not create the directory and to not copy any files.
.TP 3n
+\fB-l\fR
+Do not add the user to the last login log file. This is an option added by Red Hat.
+.TP 3n
\fB-n\fR
A group having the same name as the user being added to the system will be created by default. This option will turn off this Red Hat Linux specific behavior. When this option is used, users by default will be placed in whatever group is specified in \fI/etc/default/useradd\fR. If no default group is defined, group 1 will be used.
.TP 3n
--- shadow-4.0.17/src/useradd.c.lOption 2006-11-02 18:23:50.000000000 +0100
+++ shadow-4.0.17/src/useradd.c 2006-11-02 18:26:46.000000000 +0100
@@ -124,6 +124,7 @@
Gflg = 0, /* secondary group set for new account */
kflg = 0, /* specify a directory to fill new user directory */
mflg = 0, /* create user's home directory if it doesn't exist */
+ lflg = 0, /* do not add user to lastlog database file */
Mflg = 0, /* do NOT create user's home directory no matter what */
nflg = 0, /* do NOT create a group having the same name as the user */
oflg = 0, /* permit non-unique user ID to be specified with -u */
@@ -630,6 +631,7 @@
" -K, --key KEY=VALUE overrides /etc/login.defs defaults\n"
" -m, --create-home create home directory for the new user\n"
" account\n"
+ " -l, do not add user to lastlog database file\n"
" -M, do not create user's home directory(overrides /etc/login.defs)\n"
" -r, create system account\n"
" -o, --non-unique allow create user with duplicate\n"
@@ -1041,7 +1043,7 @@
{NULL, 0, NULL, '\0'}
};
while ((c =
- getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:mMnrop:s:u:",
+ getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:mlMnrop:s:u:",
long_options, NULL)) != -1) {
switch (c) {
case 'b':
@@ -1181,6 +1183,9 @@
case 'm':
mflg++;
break;
+ case 'l':
+ lflg++;
+ break;
case 'o':
oflg++;
break;
@@ -1549,7 +1554,7 @@
* no user with this UID exists yet (entries for shared UIDs
* are left unchanged). --marekm
*/
- if (!getpwuid (user_id)) {
+ if (!getpwuid (user_id) && !lflg) {
faillog_reset (user_id);
lastlog_reset (user_id);
}

View file

@ -1,15 +0,0 @@
diff -Nurp shadow-4.0.17.orig/src/useradd.c shadow-4.0.17/src/useradd.c
--- shadow-4.0.17.orig/src/useradd.c 2006-10-02 18:25:30.000000000 +0100
+++ shadow-4.0.17/src/useradd.c 2006-10-02 18:25:43.000000000 +0100
@@ -1611,6 +1611,10 @@ static void create_home (void)
_
("%s: cannot create directory %s\n"),
Prog, user_home);
+#ifdef WITH_AUDIT
+ audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
+ "adding home directory", user_name, user_id, 0);
+#endif
fail_exit (E_HOMEDIR);
}
chown (user_home, user_id, user_gid);

View file

@ -1,12 +0,0 @@
--- shadow-4.0.17/man/groupdel.8.exitValues 2006-10-04 22:40:59.000000000 +0200
+++ shadow-4.0.17/man/groupdel.8 2006-10-04 22:43:51.000000000 +0200
@@ -45,6 +45,9 @@
\fI2\fR
invalid command syntax
.TP 3n
+\fI6\fR
+specified group doesnt exist
+.TP 3n
\fI8\fR
can't remove user's primary group
.TP 3n

View file

@ -1,58 +0,0 @@
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# 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_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# 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
# Use MD5 or DES to encrypt password? Red Hat use MD5 by default.
MD5_CRYPT_ENAB yes

View file

@ -1,13 +0,0 @@
--- shadow-4.0.17/lib/commonio.c.fdInherit 2006-08-04 10:56:52.000000000 +0200
+++ shadow-4.0.17/lib/commonio.c 2006-08-04 11:00:05.000000000 +0200
@@ -457,6 +457,10 @@
}
return 0;
}
+
+ /* not not inherit fd */
+ fcntl(fileno(db->fp), F_SETFD, FD_CLOEXEC);
+
#ifdef WITH_SELINUX
db->scontext = NULL;
if ((is_selinux_enabled () > 0) && (!db->readonly)) {

View file

@ -1,378 +0,0 @@
--- shadow-4.0.18.1/man/groupadd.8.redhat 2006-07-30 22:53:48.000000000 +0200
+++ shadow-4.0.18.1/man/groupadd.8 2006-12-06 16:29:01.000000000 +0100
@@ -14,7 +14,7 @@
groupadd \- create a new group
.SH "SYNOPSIS"
.HP 9
-\fBgroupadd\fR [\-g\ \fIGID\fR\ [\-o]] [\-f] [\-K\ \fIKEY\fR=\fIVALUE\fR] \fIgroup\fR
+\fBgroupadd\fR [\-g\ \fIgid\fR\ [\-o]] [\-r] [\-f] [\-K\ \fIKEY\fR=\fIVALUE\fR] \fIgroup\fR
.SH "DESCRIPTION"
.PP
The
@@ -32,10 +32,13 @@
\fB\-g\fR
is turned off).
.TP 3n
+\fB-r\fR
+This flag instructs \fBgroupadd\fR to add a system account. The first available \fIgid\fR lower than 499 will be automatically selected unless the \fB-g\fR option is also given on the command line. This is an option added by Red Hat.
+.TP 3n
\fB\-g\fR \fIGID\fR
The numerical value of the group's ID. This value must be unique, unless the
\fB\-o\fR
-option is used. The value must be non\-negative. The default is to use the smallest ID value greater than 999 and greater than every other group. Values between 0 and 999 are typically reserved for system accounts.
+option is used. The value must be non\-negative. The default is to use the smallest ID value greater than 500 and greater than every other group. Values between 0 and 499 are typically reserved for system accounts.
.TP 3n
\fB\-h\fR, \fB\-\-help\fR
Display help message and exit.
--- shadow-4.0.18.1/man/useradd.8.redhat 2006-07-30 22:54:26.000000000 +0200
+++ shadow-4.0.18.1/man/useradd.8 2006-12-06 16:29:01.000000000 +0100
@@ -25,7 +25,7 @@
\fB\-D\fR
option, the
\fBuseradd\fR
-command creates a new user account using the values specified on the command line and the default values from the system. Depending on command line options, the useradd command will update system files and may also create the new user's home directory and copy initial files.
+command creates a new user account using the values specified on the command line and the default values from the system. Depending on command line options, the useradd command will update system files and may also create the new user's home directory and copy initial files. The version provided with Red Hat Linux will create a group for each user added to the system by default.
.SH "OPTIONS"
.PP
The options which apply to the
@@ -65,7 +65,7 @@
The number of days after a password expires until the account is permanently disabled. A value of 0 disables the account as soon as the password has expired, and a value of \-1 disables the feature. The default value is \-1.
.TP 3n
\fB\-g\fR, \fB\-\-gid\fR \fIGROUP\fR
-The group name or number of the user's initial login group. The group name must exist. A group number must refer to an already existing group. The default group number is 1 or whatever is specified in
+The group name or number of the user's initial login group. The group name must exist. A group number must refer to an already existing group.
\fI/etc/default/useradd\fR.
.TP 3n
\fB\-G\fR, \fB\-\-groups\fR \fIGROUP1\fR[\fI,GROUP2,...\fR[\fI,GROUPN\fR]]]
@@ -76,6 +76,9 @@
\fB\-h\fR, \fB\-\-help\fR
Display help message and exit.
.TP 3n
+\fB-M\fR
+The user's home directory will not be created, even if the system wide settings from \fI/etc/login.defs\fR is to create home dirs.
+.TP 3n
\fB\-m\fR, \fB\-\-create\-home\fR
The user's home directory will be created if it does not exist. The files contained in
\fISKEL_DIR\fR
@@ -93,6 +96,9 @@
\fB\-m\fR
option. The default is to not create the directory and to not copy any files.
.TP 3n
+\fB-n\fR
+A group having the same name as the user being added to the system will be created by default. This option will turn off this Red Hat Linux specific behavior. When this option is used, users by default will be placed in whatever group is specified in \fI/etc/default/useradd\fR. If no default group is defined, group 1 will be used.
+.TP 3n
\fB\-K\fR, \fB\-\-key\fR \fIKEY\fR=\fIVALUE\fR
Overrides /etc/login.defs defaults (UID_MIN, UID_MAX, UMASK, PASS_MAX_DAYS and others).
@@ -118,6 +124,9 @@
The encrypted password, as returned by
\fBcrypt\fR(3). The default is to disable the account.
.TP 3n
+\fB-r\fR
+This flag is used to create a system account. That is, a user with a UID lower than the value of UID_MIN defined in \fI/etc/login.defs\fR and whose password does not expire. Note that \fBuseradd\fR will not create a home directory for such an user, regardless of the default setting in \fI/etc/login.defs\fR. You have to specify \fB-m\fR option if you want a home directory for a system account to be created. This is an option added by Red Hat
+.TP 3n
\fB\-s\fR, \fB\-\-shell\fR \fISHELL\fR
The name of the user's login shell. The default is to leave this field blank, which causes the system to select the default login shell.
.TP 3n
@@ -161,6 +170,8 @@
The system administrator is responsible for placing the default user files in the
\fI/etc/skel/\fR
directory.
+.br
+This version of useradd was modified by Red Hat to suit Red Hat user/group conventions.
.SH "CAVEATS"
.PP
You may not add a user to a NIS group. This must be performed on the NIS server.
@@ -181,6 +192,9 @@
\fI/etc/group\fR
Group account information.
.TP 3n
+\fI/etc/gshadow\fR
+Secure group account information.
+.TP 3n
\fI/etc/default/useradd\fR
Default values for account creation.
.TP 3n
--- shadow-4.0.18.1/man/chpasswd.8.redhat 2006-07-30 22:53:40.000000000 +0200
+++ shadow-4.0.18.1/man/chpasswd.8 2006-12-06 16:24:59.000000000 +0100
@@ -24,7 +24,7 @@
\fIuser_name\fR:\fIpassword\fR
.PP
-By default the supplied password must be in clear\-text. Default encryption algorithm is DES. Also the password age will be updated, if present.
+By default the supplied password must be in clear\-text. Default encryption algorithm is DES, but this setting can be changed in \fI/etc/login.defs\fR. Red Hat uses MD5 to encrypt passwords by default. Also the password age will be updated, if present.
.PP
This command is intended to be used in a large system environment where many accounts are created at a single time.
.SH "OPTIONS"
--- shadow-4.0.18.1/man/newusers.8.redhat 2006-07-30 22:54:08.000000000 +0200
+++ shadow-4.0.18.1/man/newusers.8 2006-12-06 16:24:59.000000000 +0100
@@ -35,6 +35,8 @@
This field will be checked for existence as a directory and a new directory with the same name will be created if it does not already exist. The ownership of the directory will be set to be that of the user being created or updated.
.PP
This command is intended to be used in a large system environment where many accounts are updated at a single time.
+.PP
+Default encryption algorithm is DES, but this setting can be changed in \fI/etc/login.defs\fR. Red Hat uses MD5 to encrypt passwords by default.
.SH "CAVEATS"
.PP
The input file must be protected since it contains unencrypted passwords.
--- shadow-4.0.18.1/src/useradd.c.redhat 2006-07-28 19:42:48.000000000 +0200
+++ shadow-4.0.18.1/src/useradd.c 2006-12-06 16:29:01.000000000 +0100
@@ -81,7 +81,7 @@
static gid_t def_group = 100;
static const char *def_gname = "other";
static const char *def_home = "/home";
-static const char *def_shell = "";
+static const char *def_shell = "/sbin/nologin";
static const char *def_template = SKEL_DIR;
static const char *def_create_mail_spool = "no";
@@ -93,7 +93,7 @@
#define VALID(s) (strcspn (s, ":\n") == strlen (s))
static const char *user_name = "";
-static const char *user_pass = "!";
+static const char *user_pass = "!!";
static uid_t user_id;
static gid_t user_gid;
static const char *user_comment = "";
@@ -124,8 +124,10 @@
Gflg = 0, /* secondary group set for new account */
kflg = 0, /* specify a directory to fill new user directory */
mflg = 0, /* create user's home directory if it doesn't exist */
- nflg = 0, /* create a group having the same name as the user */
+ Mflg = 0, /* do NOT create user's home directory no matter what */
+ nflg = 0, /* do NOT create a group having the same name as the user */
oflg = 0, /* permit non-unique user ID to be specified with -u */
+ rflg = 0, /* create a system account */
sflg = 0, /* shell program for new account */
uflg = 0; /* specify user ID for new account */
@@ -633,6 +635,8 @@
" -K, --key KEY=VALUE overrides /etc/login.defs defaults\n"
" -m, --create-home create home directory for the new user\n"
" account\n"
+ " -M, do not create user's home directory(overrides /etc/login.defs)\n"
+ " -r, create system account\n"
" -o, --non-unique allow create user with duplicate\n"
" (non-unique) UID\n"
" -p, --password PASSWORD use encrypted password for the new user\n"
@@ -685,11 +689,20 @@
spent->sp_namp = (char *) user_name;
spent->sp_pwdp = (char *) user_pass;
spent->sp_lstchg = time ((time_t *) 0) / SCALE;
- spent->sp_min = scale_age (getdef_num ("PASS_MIN_DAYS", -1));
- spent->sp_max = scale_age (getdef_num ("PASS_MAX_DAYS", -1));
- spent->sp_warn = scale_age (getdef_num ("PASS_WARN_AGE", -1));
- spent->sp_inact = scale_age (def_inactive);
- spent->sp_expire = scale_age (user_expire);
+ if (!rflg) {
+ spent->sp_min = scale_age (getdef_num ("PASS_MIN_DAYS", -1));
+ spent->sp_max = scale_age (getdef_num ("PASS_MAX_DAYS", -1));
+ spent->sp_warn = scale_age (getdef_num ("PASS_WARN_AGE", -1));
+ spent->sp_inact = scale_age (def_inactive);
+ spent->sp_expire = scale_age (user_expire);
+ }
+ else {
+ spent->sp_min = scale_age(-1);
+ spent->sp_max = scale_age(-1);
+ spent->sp_warn = scale_age(-1);
+ spent->sp_inact = scale_age(-1);
+ spent->sp_expire = scale_age(-1);
+ }
spent->sp_flag = -1;
}
@@ -837,8 +850,14 @@
const struct passwd *pwd;
uid_t uid_min, uid_max;
- uid_min = getdef_unum ("UID_MIN", 1000);
- uid_max = getdef_unum ("UID_MAX", 60000);
+ if (!rflg) {
+ uid_min = getdef_unum ("UID_MIN", 500);
+ uid_max = getdef_unum ("UID_MAX", 60000);
+ }
+ else {
+ uid_min = 1;
+ uid_max = getdef_unum ("UID_MIN", 500) - 1;
+ }
/*
* Start with some UID value if the user didn't provide us with
@@ -868,7 +887,7 @@
#endif
exit (E_NAME_IN_USE);
}
- if (uflg && user_id == pwd->pw_uid) {
+ if (!oflg && uflg && user_id == pwd->pw_uid) {
fprintf (stderr, _("%s: UID %u is not unique\n"),
Prog, (unsigned int) user_id);
#ifdef WITH_AUDIT
@@ -923,8 +942,13 @@
const struct group *grp;
gid_t gid_min, gid_max;
- gid_min = getdef_num ("GID_MIN", 500);
- gid_max = getdef_num ("GID_MAX", 60000);
+ if (!rflg) {
+ gid_min = getdef_unum ("GID_MIN", 500);
+ gid_max = getdef_unum ("GID_MAX", 60000);
+ } else {
+ gid_min = 1;
+ gid_max = getdef_unum ("GID_MIN", 500) - 1;
+ }
/*
* Start with some GID value if the user didn't provide us with
@@ -1022,7 +1046,7 @@
{NULL, 0, NULL, '\0'}
};
while ((c =
- getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:mMop:s:u:",
+ getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:mMnrop:s:u:",
long_options, NULL)) != -1) {
switch (c) {
case 'b':
@@ -1194,6 +1218,15 @@
user_id = get_uid (optarg);
uflg++;
break;
+ case 'n':
+ nflg++;
+ break;
+ case 'r':
+ rflg++;
+ break;
+ case 'M':
+ Mflg++;
+ break;
default:
usage ();
}
@@ -1201,6 +1234,9 @@
}
}
+ if (mflg && Mflg) /* the admin is not decided .. create or not ? */
+ usage();
+
/*
* Certain options are only valid in combination with others.
* Check it here so that they can be specified in any order.
@@ -1706,6 +1742,14 @@
}
#endif /* USE_PAM */
+ if (!rflg) /* for system accounts defaults are ignored and we
+ * do not create a home dir -- gafton */
+ if (getdef_bool("CREATE_HOME"))
+ mflg = 1;
+
+ if (Mflg) /* absolutely sure that we do not create home dirs */
+ mflg = 0;
+
/*
* See if we are messing with the defaults file, or creating
* a new user.
@@ -1736,7 +1780,7 @@
* to that group, use useradd -g username username.
* --bero
*/
- if (!gflg) {
+ if ( !(nflg || gflg) ) {
if (getgrnam (user_name)) {
fprintf (stderr,
_
@@ -1787,25 +1831,18 @@
("%s: warning: the home directory already exists.\n"
"Not copying any file from skel directory into it.\n"),
Prog);
-
- } else if (getdef_str ("CREATE_HOME")) {
- /*
- * RedHat added the CREATE_HOME option in login.defs in their
- * version of shadow-utils (which makes -m the default, with
- * new -M option to turn it off). Unfortunately, this
- * changes the way useradd works (it can be run by scripts
- * expecting some standard behaviour), compared to other
- * Unices and other Linux distributions, and also adds a lot
- * of confusion :-(.
- * So we now recognize CREATE_HOME and give a warning here
- * (better than "configuration error ... notify administrator"
- * errors in every program that reads /etc/login.defs). -MM
- */
- fprintf (stderr,
- _
- ("%s: warning: CREATE_HOME not supported, please use -m instead.\n"),
- Prog);
}
+ /* Warning removed to protect the innocent. */
+ /*
+ * The whole idea about breaking some stupid scripts by creating a new
+ * variable is crap - I could care less about the scripts. Historically
+ * adduser type programs have always created the home directories and
+ * I don't like the idea of providing a script when we can fix the
+ * binary itself. And if the scripts are using the right options to the
+ * useradd then they will not break. If not, they depend on unspecified
+ * behavior and they will break, but they were broken anyway to begin
+ * with --gafton
+ */
create_mail ();
--- shadow-4.0.18.1/src/groupadd.c.redhat 2006-07-28 19:38:52.000000000 +0200
+++ shadow-4.0.18.1/src/groupadd.c 2006-12-06 16:29:01.000000000 +0100
@@ -74,6 +74,7 @@
static int oflg = 0; /* permit non-unique group ID to be specified with -g */
static int gflg = 0; /* ID value for the new group */
static int fflg = 0; /* if group already exists, do nothing and exit(0) */
+static int rflg = 0; /* for adding system accounts (Red Hat) */
/* local function prototypes */
static void usage (void);
@@ -100,6 +101,7 @@
"Options:\n"
" -f, --force force exit with success status if the specified\n"
" group already exists\n"
+ " -r, create system account\n"
" -g, --gid GID use GID for the new group\n"
" -h, --help display this help message and exit\n"
" -K, --key KEY=VALUE overrides /etc/login.defs defaults\n"
@@ -198,8 +200,13 @@
const struct group *grp;
gid_t gid_min, gid_max;
- gid_min = getdef_unum ("GID_MIN", 1000);
- gid_max = getdef_unum ("GID_MAX", 60000);
+ if (!rflg) {
+ gid_min = getdef_unum ("GID_MIN", 500);
+ gid_max = getdef_unum ("GID_MAX", 60000);
+ } else {
+ gid_min = 1;
+ gid_max = getdef_unum ("GID_MIN", 500) - 1;
+ }
/*
* Start with some GID value if the user didn't provide us with
@@ -430,7 +437,7 @@
};
while ((c =
- getopt_long (argc, argv, "fg:hK:o", long_options,
+ getopt_long (argc, argv, "frg:hK:o", long_options,
&option_index)) != -1) {
switch (c) {
case 'f':
@@ -443,6 +450,12 @@
*/
fflg++;
break;
+ case 'r':
+ /*
+ * create a system group
+ */
+ rflg++;
+ break;
case 'g':
gflg++;
group_id = get_gid (optarg);

View file

@ -1,473 +0,0 @@
--- /dev/null 2007-01-16 10:10:52.644263000 +0100
+++ shadow-4.0.17/libmisc/system.c 2007-01-16 18:24:34.000000000 +0100
@@ -0,0 +1,37 @@
+#include <config.h>
+
+#ident "$Id: shell.c,v 1.13 2006/01/18 19:38:27 kloczek Exp $"
+
+#include <stdio.h>
+#include <sys/wait.h>
+#include <fcntl.h>
+#include "prototypes.h"
+#include "defines.h"
+
+int safe_system(const char *command, const char *argv[], const char *env[], int ignore_stderr)
+{
+ int status = -1;
+ int fd;
+ pid_t pid;
+
+ pid = fork();
+ if (pid < 0)
+ return -1;
+
+ if (pid) { /* Parent */
+ waitpid(pid, &status, 0);
+ return status;
+ }
+
+ fd = open("/dev/null", O_RDWR);
+ /* Child */
+ dup2(fd,0); // Close Stdin
+ if (ignore_stderr)
+ dup2(fd,2); // Close Stderr
+
+ execve(command, (char *const *) argv, (char *const *) env);
+ fprintf (stderr,
+ _("Failed to exec '%s'\n"), argv[0]);
+ exit (-1);
+}
+
--- shadow-4.0.17/libmisc/Makefile.am.useradd 2005-09-05 18:21:37.000000000 +0200
+++ shadow-4.0.17/libmisc/Makefile.am 2007-01-16 18:24:34.000000000 +0100
@@ -41,6 +41,7 @@
setugid.c \
setupenv.c \
shell.c \
+ system.c \
strtoday.c \
sub.c \
sulog.c \
--- shadow-4.0.17/libmisc/copydir.c.useradd 2006-07-10 06:35:56.000000000 +0200
+++ shadow-4.0.17/libmisc/copydir.c 2007-01-16 18:24:34.000000000 +0100
@@ -54,7 +54,7 @@
static struct link_name *links;
#ifdef WITH_SELINUX
-static int selinux_file_context (const char *dst_name)
+int selinux_file_context (const char *dst_name)
{
security_context_t scontext = NULL;
--- shadow-4.0.17/man/usermod.8.xml.useradd 2006-06-16 18:11:04.000000000 +0200
+++ shadow-4.0.17/man/usermod.8.xml 2007-01-16 18:24:34.000000000 +0100
@@ -226,6 +226,19 @@
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>
+ <option>-Z</option>, <option>--selinux-user</option>
+ <replaceable>SEUSER</replaceable>
+ </term>
+ <listitem>
+ <para>
+ The SELinux user for the user's login. The default is to leave this
+ field the blank, which causes the system to select the default
+ SELinux user.
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect1>
--- shadow-4.0.17/man/useradd.8.xml.useradd 2006-06-16 18:11:04.000000000 +0200
+++ shadow-4.0.17/man/useradd.8.xml 2007-01-16 18:24:34.000000000 +0100
@@ -251,6 +251,19 @@
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>
+ <option>-Z</option>, <option>--selinux-user</option>
+ <replaceable>SEUSER</replaceable>
+ </term>
+ <listitem>
+ <para>
+ The SELinux user for the user's login. The default is to leave this
+ field blank, which causes the system to select the default SELinux
+ user.
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
<refsect2 id='changing_the_default_values'>
--- shadow-4.0.17/man/useradd.8.useradd 2007-01-16 18:24:34.000000000 +0100
+++ shadow-4.0.17/man/useradd.8 2007-01-16 18:24:34.000000000 +0100
@@ -137,6 +137,9 @@
The numerical value of the user's ID. This value must be unique, unless the
\fB\-o\fR
option is used. The value must be non\-negative. The default is to use the smallest ID value greater than 999 and greater than every other user. Values between 0 and 999 are typically reserved for system accounts.
+.TP 3n
+\fB\-Z\fR, \fB\-\-selinux-user\fR \fISEUSER\fR
+The SELinux user for the user's login. The default is to leave this field blank, which causes the system to select the default SELinux user.
.SS "Changing the default values"
.PP
When invoked with the
--- shadow-4.0.17/man/usermod.8.useradd 2007-01-16 18:24:34.000000000 +0100
+++ shadow-4.0.17/man/usermod.8 2007-01-16 18:24:34.000000000 +0100
@@ -90,6 +90,10 @@
\fB\-p\fR
or
\fB\-L\fR.
+.TP 3n
+\fB\-Z\fR, \fB\-\-selinux-user\fR \fISEUSER\fR
+The SELinux user for the user's login. The default is to leave this field blank, which causes the system to select the default SELinux user.
+
.SH "CAVEATS"
.PP
--- shadow-4.0.17/lib/prototypes.h.useradd 2006-02-07 17:36:30.000000000 +0100
+++ shadow-4.0.17/lib/prototypes.h 2007-01-16 18:24:34.000000000 +0100
@@ -52,6 +52,9 @@
/* copydir.c */
extern int copy_tree (const char *, const char *, uid_t, gid_t);
extern int remove_tree (const char *);
+#ifdef WITH_SELINUX
+extern int selinux_file_context (const char *dst_name);
+#endif
/* encrypt.c */
extern char *pw_encrypt (const char *, const char *);
@@ -147,6 +150,9 @@
/* shell.c */
extern int shell (const char *, const char *, char *const *);
+/* system.c */
+extern int safe_system(const char *command, const char *argv[], const char *env[], int ignore_stderr);
+
/* strtoday.c */
extern long strtoday (const char *);
--- shadow-4.0.17/lib/defines.h.useradd 2005-09-05 18:22:03.000000000 +0200
+++ shadow-4.0.17/lib/defines.h 2007-01-16 18:24:34.000000000 +0100
@@ -342,4 +342,7 @@
#include <libaudit.h>
#endif
+#ifdef WITH_SELINUX
+#include <selinux/selinux.h>
+#endif
#endif /* _DEFINES_H_ */
--- shadow-4.0.17/src/useradd.c.useradd 2007-01-16 18:24:34.000000000 +0100
+++ shadow-4.0.17/src/useradd.c 2007-01-16 18:24:34.000000000 +0100
@@ -100,6 +100,7 @@
static const char *user_home = "";
static const char *user_shell = "";
static const char *create_mail_spool = "";
+static const char *user_selinux = "";
static long user_expire = -1;
static int is_shadow_pwd;
@@ -170,6 +171,7 @@
static int get_groups (char *);
static void usage (void);
static void new_pwent (struct passwd *);
+static void selinux_update_mapping (void);
static long scale_age (long);
static void new_spent (struct spwd *);
@@ -361,6 +363,7 @@
def_create_mail_spool = xstrdup (cp);
}
}
+ fclose(fp);
}
/*
@@ -648,7 +651,10 @@
" -p, --password PASSWORD use encrypted password for the new user\n"
" account\n"
" -s, --shell SHELL the login shell for the new user account\n"
- " -u, --uid UID force use the UID for the new user account\n"
+ " -u, --uid UID force use the UID for the new user account\n"
+#ifdef WITH_SELINUX
+ " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping\n"
+#endif
"\n"));
exit (E_USAGE);
}
@@ -1048,11 +1054,18 @@
{"non-unique", no_argument, NULL, 'o'},
{"password", required_argument, NULL, 'p'},
{"shell", required_argument, NULL, 's'},
+#ifdef WITH_SELINUX
+ {"selinux-user", required_argument, NULL, 'Z'},
+#endif
{"uid", required_argument, NULL, 'u'},
{NULL, 0, NULL, '\0'}
};
while ((c =
- getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:mlMnrop:s:u:",
+#ifdef WITH_SELINUX
+ getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:mlMnrop:s:u:Z:",
+#else
+ getopt_long (argc, argv, "b:c:d:De:f:g:G:k:K:mlMnrop:s:u:",
+#endif
long_options, NULL)) != -1) {
switch (c) {
case 'b':
@@ -1236,6 +1249,17 @@
case 'M':
Mflg++;
break;
+#ifdef WITH_SELINUX
+ case 'Z':
+ if (is_selinux_enabled() > 0)
+ user_selinux = optarg;
+ else {
+ fprintf (stderr,_("%s: -Z requires SELinux enabled kernel\n"), Prog);
+
+ exit (E_BAD_ARG);
+ }
+ break;
+#endif
default:
usage ();
}
@@ -1603,6 +1627,33 @@
grp_update ();
}
+static void selinux_update_mapping () {
+
+#ifdef WITH_SELINUX
+ if (is_selinux_enabled() <= 0) return;
+
+ if (*user_selinux) { /* must be done after passwd write() */
+ const char *argv[7];
+ argv[0] = "/usr/sbin/semanage";
+ argv[1] = "login";
+ argv[2] = "-a";
+ argv[3] = "-s";
+ argv[4] = user_selinux;
+ argv[5] = user_name;
+ argv[6] = NULL;
+ if (safe_system(argv[0], argv, NULL, 0)) {
+ fprintf (stderr,
+ _("%s: warning: the user name %s to %s SELinux user mapping failed.\n"),
+ Prog, user_name, user_selinux);
+#ifdef WITH_AUDIT
+ audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
+ "adding SELinux user mapping", user_name, user_id, 0);
+#endif
+ }
+ }
+#endif
+
+}
/*
* create_home - create the user's home directory
*
@@ -1612,7 +1663,11 @@
*/
static void create_home (void)
{
+
if (access (user_home, F_OK)) {
+#ifdef WITH_SELINUX
+ selinux_file_context (user_home);
+#endif
/* XXX - create missing parent directories. --marekm */
if (mkdir (user_home, 0)) {
fprintf (stderr,
@@ -1840,6 +1895,15 @@
usr_update ();
+ create_mail ();
+
+ nscd_flush_cache ("passwd");
+ nscd_flush_cache ("group");
+
+ close_files ();
+
+ selinux_update_mapping();
+
if (mflg) {
create_home ();
if (home_added)
@@ -1863,13 +1927,6 @@
* with --gafton
*/
- create_mail ();
-
- nscd_flush_cache ("passwd");
- nscd_flush_cache ("group");
-
- close_files ();
-
#ifdef USE_PAM
if (retval == PAM_SUCCESS)
pam_end (pamh, PAM_SUCCESS);
--- shadow-4.0.17/src/userdel.c.useradd 2007-01-16 18:24:34.000000000 +0100
+++ shadow-4.0.17/src/userdel.c 2007-01-16 18:24:34.000000000 +0100
@@ -792,6 +792,17 @@
#endif
}
+#ifdef WITH_SELINUX
+ if (is_selinux_enabled() > 0) {
+ const char *argv[5];
+ argv[0] = "/usr/sbin/semanage";
+ argv[1] = "login";
+ argv[2] = "-d";
+ argv[3] = user_name;
+ argv[4] = NULL;
+ safe_system(argv[0], argv, NULL, 1);
+ }
+#endif
/*
* Cancel any crontabs or at jobs. Have to do this before we remove
* the entry from /etc/passwd.
--- shadow-4.0.17/src/usermod.c.useradd 2007-01-16 18:24:34.000000000 +0100
+++ shadow-4.0.17/src/usermod.c 2007-01-16 18:29:45.000000000 +0100
@@ -90,6 +90,7 @@
static char *user_home;
static char *user_newhome;
static char *user_shell;
+static const char *user_selinux = "";
static long user_expire;
static long user_inactive;
static long sys_ngroups;
@@ -132,6 +133,7 @@
static int get_groups (char *);
static void usage (void);
static void new_pwent (struct passwd *);
+static void selinux_update_mapping (void);
static void new_spent (struct spwd *);
static void fail_exit (int);
@@ -301,6 +303,9 @@
" -s, --shell SHELL new login shell for the user account\n"
" -u, --uid UID new UID for the user account\n"
" -U, --unlock unlock the user account\n"
+#ifdef WITH_SELINUX
+ " -Z, --selinux-user new selinux user mapping for the user account\n"
+#endif
"\n"));
exit (E_USAGE);
}
@@ -925,13 +930,20 @@
{"move-home", no_argument, NULL, 'm'},
{"non-unique", no_argument, NULL, 'o'},
{"password", required_argument, NULL, 'p'},
+#ifdef WITH_SELINUX
+ {"selinux-user", required_argument, NULL, 'Z'},
+#endif
{"shell", required_argument, NULL, 's'},
{"uid", required_argument, NULL, 'u'},
{"unlock", no_argument, NULL, 'U'},
{NULL, 0, NULL, '\0'}
};
while ((c =
+#ifdef WITH_SELINUX
+ getopt_long (argc, argv, "ac:d:e:f:g:G:hl:Lmop:s:u:UZ:",
+#else
getopt_long (argc, argv, "ac:d:e:f:g:G:hl:Lmop:s:u:U",
+#endif
long_options, NULL)) != -1) {
switch (c) {
case 'a':
@@ -1080,6 +1092,16 @@
Uflg++;
break;
+#ifdef WITH_SELINUX
+ case 'Z':
+ if (is_selinux_enabled() > 0)
+ user_selinux = optarg;
+ else {
+ fprintf (stderr, _("%s: -Z requires SELinux enabled kernel\n"), Prog);
+ exit (E_BAD_ARG);
+ }
+ break;
+#endif
default:
usage ();
}
@@ -1549,6 +1571,8 @@
if (Gflg || lflg)
grp_err = grp_update ();
+ selinux_update_mapping();
+
if (mflg)
move_home ();
@@ -1580,3 +1604,62 @@
exit (E_SUCCESS);
/* NOT REACHED */
}
+
+static void selinux_update_mapping () {
+#ifdef WITH_SELINUX
+ const char *argv[7];
+
+ if (is_selinux_enabled() <= 0) return;
+
+ if (*user_selinux) {
+ argv[0] = "/usr/sbin/semanage";
+ argv[1] = "login";
+ argv[2] = "-m";
+ argv[3] = "-s";
+ argv[4] = user_selinux;
+ argv[5] = user_name;
+ argv[6] = NULL;
+ if (safe_system(argv[0], argv, NULL, 1)) {
+ argv[2] = "-a";
+ if (safe_system(argv[0], argv, NULL, 0)) {
+ fprintf (stderr,
+ _("%s: warning: the user name %s to %s SELinux user mapping failed.\n"),
+ Prog, user_name, user_selinux);
+#ifdef WITH_AUDIT
+ audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
+ "modifying User mapping ", user_name, user_id, 0);
+#endif
+ }
+ }
+ }
+
+ if (dflg || *user_selinux) {
+ argv[0] = "/usr/sbin/genhomedircon";
+ argv[1] = NULL;
+ if(safe_system(argv[0], argv, NULL,0)) {
+ fprintf (stderr,
+ _("%s: warning: unable to relabel the homedir %s for %s.\n"),
+ Prog, user_home, user_name);
+#ifdef WITH_AUDIT
+ audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
+ "relabeling home directory", user_name, user_id, 0);
+#endif
+ }
+
+ argv[0] = "/sbin/restorecon";
+ argv[1] = "-F";
+ argv[2] = "-R";
+ argv[3] = user_home;
+ argv[4] = NULL;
+ if (safe_system(argv[0], argv, NULL, 0)) {
+ fprintf (stderr,
+ _("%s: warning: unable to relabel the homedir %s for %s.\n"),
+ Prog, user_home, user_name);
+#ifdef WITH_AUDIT
+ audit_logger (AUDIT_USER_CHAUTHTOK, Prog,
+ "relabeling home directory", user_name, user_id, 0);
+#endif
+ }
+ }
+#endif
+}
+

View file

@ -1,11 +0,0 @@
--- shadow-4.0.18.1/src/usermod.c.appendOption 2007-01-14 14:04:29.000000000 +0100
+++ shadow-4.0.18.1/src/usermod.c 2007-01-14 14:05:04.000000000 +0100
@@ -905,7 +905,7 @@
*/
int c;
static struct option long_options[] = {
- {"append", required_argument, NULL, 'a'},
+ {"append", no_argument, NULL, 'a'},
{"comment", required_argument, NULL, 'c'},
{"home", required_argument, NULL, 'd'},
{"expiredate", required_argument, NULL, 'e'},

View file

@ -1,113 +0,0 @@
--- shadow-4.0.18.1/src/useradd.c.findNewUidOnce 2007-05-16 13:16:51.000000000 +0200
+++ shadow-4.0.18.1/src/useradd.c 2007-05-16 14:12:52.000000000 +0200
@@ -847,8 +847,9 @@
* find_new_uid - find the next available UID
*
* find_new_uid() locates the next highest unused UID in the password
- * file, or checks the given user ID against the existing ones for
- * uniqueness.
+ * file.
+ * It doesn't make sense to use find_new_uid(), if UID is specified
+ * via "-u" option.
*/
static void find_new_uid (void)
{
@@ -867,12 +868,7 @@
memset (index, 0, sizeof (char) * uid_max + 1);
}
- /*
- * Start with some UID value if the user didn't provide us with
- * one already.
- */
- if (!uflg)
- user_id = uid_min;
+ user_id = uid_min;
/*
* Search the entire password file, either looking for this
@@ -886,42 +882,24 @@
setpwent ();
while ((pwd = getpwent ())) {
#endif
- if (strcmp (user_name, pwd->pw_name) == 0) {
- fprintf (stderr, _("%s: name %s is not unique\n"),
- Prog, user_name);
-#ifdef WITH_AUDIT
- audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "adding user",
- user_name, user_id, 0);
-#endif
- exit (E_NAME_IN_USE);
- }
- if (!oflg && uflg && user_id == pwd->pw_uid) {
- fprintf (stderr, _("%s: UID %u is not unique\n"),
- Prog, (unsigned int) user_id);
-#ifdef WITH_AUDIT
- audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "adding user",
- user_name, user_id, 0);
-#endif
- exit (E_UID_IN_USE);
- }
- if (!uflg && !rflg && pwd->pw_uid >= user_id) {
+ if (!rflg && pwd->pw_uid >= user_id) {
if (pwd->pw_uid > uid_max)
continue;
user_id = pwd->pw_uid + 1;
}
/* create index of occupied system accounts UIDs */
- if (!uflg && rflg && (pwd->pw_uid <= uid_max))
+ if (rflg && (pwd->pw_uid <= uid_max))
index[pwd->pw_uid] = 1;
}
/* find free system account */
- if(!uflg && rflg) {
+ if(rflg) {
for( user_id = uid_max; (user_id >= uid_min) && index[user_id]; user_id--);
if ( user_id < uid_min ) {
fprintf (stderr, _("%s: can't get unique UID\n"), Prog);
fail_exit (E_UID_IN_USE);
- }
+ }
}
/*
@@ -930,7 +908,7 @@
* free UID starting with UID_MIN (it's O(n*n) but can be avoided
* by not having users with UID equal to UID_MAX). --marekm
*/
- if (!uflg && user_id == uid_max + 1) {
+ if (user_id == uid_max + 1) {
for (user_id = uid_min; user_id < uid_max; user_id++) {
#ifdef NO_GETPWENT
pw_rewind ();
@@ -1590,9 +1568,6 @@
struct passwd pwent;
struct spwd spent;
- if (!oflg)
- find_new_uid ();
-
/*
* Fill in the password structure with any new fields, making
* copies of strings.
@@ -1911,7 +1886,17 @@
/* first, seek for a valid uid to use for this user.
* We do this because later we can use the uid we found as
* gid too ... --gafton */
- find_new_uid ();
+ if (!uflg)
+ find_new_uid ();
+ else {
+ if (getpwuid (user_id)) {
+ fprintf (stderr, _("%s: UID %u is not unique\n"), Prog, (unsigned int) user_id);
+#ifdef WITH_AUDIT
+ audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "adding user", user_name, user_id, 0);
+#endif
+ exit (E_UID_IN_USE);
+ }
+ }
}
/* do we have to add a group for that user? This is why we need to

View file

@ -1,32 +0,0 @@
--- shadow-4.0.18.1/src/useradd.c.gid 2006-11-04 14:09:53.000000000 +0100
+++ shadow-4.0.18.1/src/useradd.c 2006-11-04 14:15:09.000000000 +0100
@@ -207,11 +207,8 @@
char *errptr;
gid = strtol (grname, &errptr, 10);
- if (*errptr || errno == ERANGE || gid < 0) {
- fprintf (stderr,
- _("%s: invalid numeric argument '%s'\n"), Prog, grname);
- exit (E_BAD_ARG);
- }
+ if (*grname != '\0' && *errptr == '\0' && errno != ERANGE && gid >= 0)
+ return getgrgid (gid);
return getgrnam (grname);
}
--- shadow-4.0.18.1/src/usermod.c.gid 2006-11-04 14:15:23.000000000 +0100
+++ shadow-4.0.18.1/src/usermod.c 2006-11-04 14:16:42.000000000 +0100
@@ -166,11 +166,8 @@
char *errptr;
val = strtol (grname, &errptr, 10);
- if (*errptr || errno == ERANGE || val < 0) {
- fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog,
- grname);
- exit (E_BAD_ARG);
- }
+ if (*grname != '\0' && *errptr == '\0' && errno != ERANGE && val >= 0)
+ return getgrgid (val);
return getgrnam (grname);
}

View file

@ -1,178 +0,0 @@
--- shadow-4.0.18.1/src/usermod.c.groupLoop 2007-05-25 11:51:33.000000000 +0200
+++ shadow-4.0.18.1/src/usermod.c 2007-05-25 11:51:33.000000000 +0200
@@ -628,7 +628,7 @@
continue;
changed = 0;
- if (!gr_update (ngrp)) {
+ if (!gr_update_entry (grp, ngrp)) {
fprintf (stderr,
_("%s: error adding new group entry\n"), Prog);
SYSLOG ((LOG_ERR, "error adding group entry"));
@@ -770,7 +770,7 @@
/*
* Update the group entry to reflect the changes.
*/
- if (!sgr_update (nsgrp)) {
+ if (!sgr_update_entry (sgrp, nsgrp)) {
fprintf (stderr,
_("%s: error adding new group entry\n"), Prog);
SYSLOG ((LOG_ERR, "error adding shadow group entry"));
--- shadow-4.0.18.1/src/userdel.c.groupLoop 2007-05-25 11:51:33.000000000 +0200
+++ shadow-4.0.18.1/src/userdel.c 2007-05-25 11:51:33.000000000 +0200
@@ -153,7 +153,7 @@
exit (13); /* XXX */
}
ngrp->gr_mem = del_list (ngrp->gr_mem, user_name);
- if (!gr_update (ngrp))
+ if (!gr_update_entry (grp, ngrp))
fprintf (stderr,
_("%s: error updating group entry\n"), Prog);
@@ -252,7 +252,7 @@
if (was_admin)
nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name);
- if (!sgr_update (nsgrp))
+ if (!sgr_update_entry (sgrp, nsgrp))
fprintf (stderr,
_("%s: error updating group entry\n"), Prog);
#ifdef WITH_AUDIT
--- shadow-4.0.18.1/src/useradd.c.groupLoop 2007-05-25 11:51:33.000000000 +0200
+++ shadow-4.0.18.1/src/useradd.c 2007-05-25 11:54:28.000000000 +0200
@@ -727,30 +727,6 @@
struct sgrp *nsgrp;
#endif
- /*
- * Test for unique entries of user_groups in /etc/group
- * pvrabec@redhat.com
- */
- char **user_groups_tmp = user_groups;
-
- while (*user_groups_tmp) {
- int count = 0;
-
- for (gr_rewind (), grp = gr_next (); grp && count < 2;
- grp = gr_next ()) {
- if (strcmp (*user_groups_tmp, grp->gr_name) == 0) {
- count++;
- }
- }
- if (count > 1) {
- fprintf (stderr,
- "%s: error not unique group names in group file\n",
- Prog);
- fail_exit (E_GRP_UPDATE);
- }
- user_groups_tmp++;
- }
-
/* Locking and opening of the group files moved to open_files() --gafton */
/*
@@ -780,7 +756,7 @@
* update the group entry to reflect the change.
*/
ngrp->gr_mem = add_list (ngrp->gr_mem, user_name);
- if (!gr_update (ngrp)) {
+ if (!gr_update_entry (grp, ngrp)) {
fprintf (stderr,
_("%s: error adding new group entry\n"), Prog);
fail_exit (E_GRP_UPDATE);
@@ -828,7 +804,7 @@
* update the group entry to reflect the change.
*/
nsgrp->sg_mem = add_list (nsgrp->sg_mem, user_name);
- if (!sgr_update (nsgrp)) {
+ if (!sgr_update_entry (sgrp, nsgrp)) {
fprintf (stderr,
_("%s: error adding new group entry\n"), Prog);
fail_exit (E_GRP_UPDATE);
--- shadow-4.0.18.1/lib/sgroupio.c.groupLoop 2005-08-31 19:24:56.000000000 +0200
+++ shadow-4.0.18.1/lib/sgroupio.c 2007-05-25 11:51:33.000000000 +0200
@@ -146,6 +146,13 @@
return commonio_update (&gshadow_db, (const void *) sg);
}
+int sgr_update_entry(const struct sgrp *oldgr, const struct sgrp *newgr)
+{
+ return commonio_update_entry(&gshadow_db, (const void *) oldgr,
+ (const void *) newgr);
+}
+
+
int sgr_remove (const char *name)
{
return commonio_remove (&gshadow_db, name);
--- shadow-4.0.18.1/lib/groupio.c.groupLoop 2005-08-31 19:24:56.000000000 +0200
+++ shadow-4.0.18.1/lib/groupio.c 2007-05-25 11:51:33.000000000 +0200
@@ -128,6 +128,12 @@
return commonio_remove (&group_db, name);
}
+int gr_update_entry(const struct group *oldgr, const struct group *newgr)
+{
+ return commonio_update_entry(&group_db, (const void *) oldgr,
+ (const void *) newgr);
+}
+
int gr_rewind (void)
{
return commonio_rewind (&group_db);
--- shadow-4.0.18.1/lib/sgroupio.h.groupLoop 2005-03-31 07:14:49.000000000 +0200
+++ shadow-4.0.18.1/lib/sgroupio.h 2007-05-25 11:51:33.000000000 +0200
@@ -11,4 +11,5 @@
extern int sgr_rewind (void);
extern int sgr_unlock (void);
extern int sgr_update (const struct sgrp *);
+extern int sgr_update_entry(const struct sgrp *oldgr, const struct sgrp *newgr);
extern int sgr_sort (void);
--- shadow-4.0.18.1/lib/commonio.c.groupLoop 2007-05-25 11:51:33.000000000 +0200
+++ shadow-4.0.18.1/lib/commonio.c 2007-05-25 11:51:33.000000000 +0200
@@ -826,6 +826,36 @@
return 1;
}
+int commonio_update_entry(struct commonio_db *db, const void *oldgr,
+ const void *newgr)
+{
+ struct commonio_entry *tmp;
+
+ if (!db->isopen || db->readonly) {
+ errno = EINVAL;
+ return 0;
+ }
+
+ tmp = db->head;
+ while (tmp != NULL) {
+ if (oldgr == tmp->eptr)
+ break;
+ tmp = tmp->next;
+ }
+
+ /* Didn't find this in the database; hop out */
+ if (tmp == NULL)
+ return 0;
+
+ tmp->eptr = db->ops->dup(newgr);
+ if (tmp->eptr == NULL)
+ return 1;
+ tmp->changed = 1;
+
+ db->changed = 1;
+
+ return 1;
+}
void commonio_del_entry (struct commonio_db *db, const struct commonio_entry *p)
{
--- shadow-4.0.18.1/lib/groupio.h.groupLoop 2005-03-31 07:14:49.000000000 +0200
+++ shadow-4.0.18.1/lib/groupio.h 2007-05-25 11:51:33.000000000 +0200
@@ -10,4 +10,6 @@
extern int gr_rewind (void);
extern int gr_unlock (void);
extern int gr_update (const struct group *);
+extern int gr_update_entry(const struct group *oldgr, const struct group *newgr);
extern int gr_sort (void);
+

View file

@ -1,36 +0,0 @@
--- shadow-4.0.17/src/chpasswd.c.overflow 2006-11-08 11:09:32.000000000 +0100
+++ shadow-4.0.17/src/chpasswd.c 2006-11-08 13:13:15.000000000 +0100
@@ -239,9 +239,13 @@
newpwd = cp;
if (!eflg) {
if (md5flg) {
- char salt[12] = "$1$";
+ char tmp[12];
+ char salt[15] = "\0";
- strcat (salt, crypt_make_salt ());
+ strcpy( tmp, crypt_make_salt ());
+ if( !strncmp( tmp, "$1$", 3) )
+ strcat( salt, "$1$");
+ strcat( salt, tmp);
cp = pw_encrypt (newpwd, salt);
} else
cp = pw_encrypt (newpwd, crypt_make_salt ());
--- shadow-4.0.17/src/chgpasswd.c.overflow 2006-11-08 13:13:40.000000000 +0100
+++ shadow-4.0.17/src/chgpasswd.c 2006-11-08 13:17:24.000000000 +0100
@@ -243,9 +243,13 @@
newpwd = cp;
if (!eflg) {
if (md5flg) {
- char salt[12] = "$1$";
+ char tmp[12];
+ char salt[15] = "\0";
- strcat (salt, crypt_make_salt ());
+ strcpy( tmp, crypt_make_salt ());
+ if( !strncmp( tmp, "$1$", 3) )
+ strcat( salt, "$1$");
+ strcat( salt, tmp);
cp = pw_encrypt (newpwd, salt);
} else
cp = pw_encrypt (newpwd, crypt_make_salt ());

View file

@ -1,149 +0,0 @@
--- shadow-4.0.18.1/src/useradd.c.sysAccount 2007-03-12 10:49:14.000000000 +0100
+++ shadow-4.0.18.1/src/useradd.c 2007-03-12 12:15:57.000000000 +0100
@@ -854,6 +854,7 @@
{
const struct passwd *pwd;
uid_t uid_min, uid_max;
+ char * index;
if (!rflg) {
uid_min = getdef_unum ("UID_MIN", 500);
@@ -862,6 +863,8 @@
else {
uid_min = 1;
uid_max = getdef_unum ("UID_MIN", 500) - 1;
+ index = alloca (sizeof (char) * uid_max +1);
+ memset (index, 0, sizeof (char) * uid_max + 1);
}
/*
@@ -901,11 +904,24 @@
#endif
exit (E_UID_IN_USE);
}
- if (!uflg && pwd->pw_uid >= user_id) {
+ if (!uflg && !rflg && pwd->pw_uid >= user_id) {
if (pwd->pw_uid > uid_max)
continue;
user_id = pwd->pw_uid + 1;
}
+ /* create index of occupied system accounts UIDs */
+ if (!uflg && rflg && (pwd->pw_uid <= uid_max))
+ index[pwd->pw_uid] = 1;
+
+ }
+
+ /* find free system account */
+ if(!uflg && rflg) {
+ for( user_id = uid_max; (user_id >= uid_min) && index[user_id]; user_id--);
+ if ( user_id < uid_min ) {
+ fprintf (stderr, _("%s: can't get unique UID\n"), Prog);
+ fail_exit (E_UID_IN_USE);
+ }
}
/*
@@ -946,6 +962,7 @@
{
const struct group *grp;
gid_t gid_min, gid_max;
+ char * index;
if (!rflg) {
gid_min = getdef_unum ("GID_MIN", 500);
@@ -953,7 +970,9 @@
} else {
gid_min = 1;
gid_max = getdef_unum ("GID_MIN", 500) - 1;
- }
+ index = alloca (sizeof (char) * gid_max +1);
+ memset (index, 0, sizeof (char) * gid_max + 1);
+ }
/*
* Start with some GID value if the user didn't provide us with
@@ -978,12 +997,16 @@
user_gid = grp->gr_gid;
return;
}
- if (grp->gr_gid >= user_gid) {
+ if (!rflg && grp->gr_gid >= user_gid) {
if (grp->gr_gid > gid_max)
continue;
user_gid = grp->gr_gid + 1;
}
+ /* create index of occupied system accounts GIDs */
+ if (rflg && (grp->gr_gid <= gid_max))
+ index[grp->gr_gid] = 1;
}
+
#ifndef NO_GETGRENT /* glibc does have this, so ... */
/* A quick test gets here: if the UID is available
* as a GID, go ahead and use it */
@@ -992,6 +1015,18 @@
return;
}
#endif
+
+ /* find free system account */
+ if(rflg) {
+ for( user_gid = gid_max; (user_gid >= gid_min) && index[user_gid]; user_gid--);
+ if ( user_gid < gid_min ) {
+ fprintf (stderr,
+ "%s: can't get unique gid (run out of GIDs)\n",
+ Prog);
+ fail_exit (4);
+ }
+ }
+
if (user_gid == gid_max + 1) {
for (user_gid = gid_min; user_gid < gid_max; user_gid++) {
#ifdef NO_GETGRENT
--- shadow-4.0.18.1/src/groupadd.c.sysAccount 2007-03-12 10:49:14.000000000 +0100
+++ shadow-4.0.18.1/src/groupadd.c 2007-03-12 10:49:14.000000000 +0100
@@ -199,6 +199,7 @@
{
const struct group *grp;
gid_t gid_min, gid_max;
+ char * index;
if (!rflg) {
gid_min = getdef_unum ("GID_MIN", 500);
@@ -206,7 +207,9 @@
} else {
gid_min = 1;
gid_max = getdef_unum ("GID_MIN", 500) - 1;
- }
+ index = alloca (sizeof (char) * gid_max +1);
+ memset (index, 0, sizeof (char) * gid_max + 1);
+ }
/*
* Start with some GID value if the user didn't provide us with
@@ -251,12 +254,25 @@
Prog, (unsigned int) group_id);
fail_exit (E_GID_IN_USE);
}
- if (!gflg && grp->gr_gid >= group_id) {
+ if (!gflg && !rflg && grp->gr_gid >= group_id) {
if (grp->gr_gid > gid_max)
continue;
group_id = grp->gr_gid + 1;
}
+ /* create index of occupied system accounts UIDs */
+ if (!gflg && rflg && (grp->gr_gid <= gid_max))
+ index[grp->gr_gid] = 1;
+ }
+
+ /* find free system account */
+ if(!gflg && rflg) {
+ for( group_id = gid_max; (group_id >= gid_min) && index[group_id]; group_id--);
+ if ( group_id < gid_min ) {
+ fprintf (stderr, _("%s: can't get unique GID\n"), Prog);
+ fail_exit (E_GID_IN_USE);
+ }
}
+
if (!gflg && group_id == gid_max + 1) {
for (group_id = gid_min; group_id < gid_max; group_id++) {
#ifdef NO_GETGRENT

View file

@ -1,11 +0,0 @@
--- shadow-4.0.7/lib/Makefile.am.noinst 2005-01-18 01:08:48.000000000 +0100
+++ shadow-4.0.7/lib/Makefile.am 2005-03-01 16:38:38.018234957 +0100
@@ -3,7 +3,7 @@
DEFS =
-lib_LTLIBRARIES = libshadow.la
+noinst_LTLIBRARIES = libshadow.la
libshadow_la_LDFLAGS = -version-info 0:0:0
libshadow_la_LIBADD = $(INTLLIBS) $(LIBCRYPT) $(LIBSKEY) $(LIBMD) $(LIBSELINUX)

32
shadow-bsd.txt Normal file
View file

@ -0,0 +1,32 @@
/*
* Copyright (c) 1990 - 1994, Julianne Frances Haugh
* Copyright (c) 1996 - 2000, Marek Michałkiewicz
* Copyright (c) 2000 - 2006, Tomasz Kłoczko
* Copyright (c) 2007 - 2011, 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.
*/

View file

@ -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>

315
shadow-utils.login.defs Normal file
View file

@ -0,0 +1,315 @@
#
# 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 therefore be configured elsewhere. Refer to
# /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*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
#
MAIL_DIR /var/spool/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:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 8
PASS_WARN_AGE 7
# Currently SU_WHEEL_ONLY is not supported
# Currently CRACKLIB_DICTPATH is not supported
#
# Min/max values for automatic uid selection in useradd(8)
#
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
# Extra per user uids
SUB_UID_MIN 524288
SUB_UID_MAX 600100000
SUB_UID_COUNT 65536
#
# Min/max values for automatic gid selection in groupadd(8)
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
# Extra per user group ids
SUB_GID_MIN 524288
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
#
# Maximum number of attempts to change password if rejected (too easy)
#
PASS_CHANGE_TRIES 5
#
# Warn about weak passwords (but still allow them) if you are root.
#
PASS_ALWAYS_WARN yes
#
# Number of significant characters in the password for crypt().
# Default is 8, don't change unless your crypt() is better.
# Ignored if MD5_CRYPT_ENAB set to "yes".
#
#PASS_MAX_LEN 8
# 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.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# Enables userdel(8) to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
#
# 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

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,2 @@
7ebc6a5cd0207246a6b2c9ebf9b30391 shadow-4.0.16-nscd.c
e7751d46ecf219c07ae0b028ab3335c6 shadow-4.0.18.1.tar.bz2
e91727c55dbafc9915250e31535f13bb shadow-4.0.17-login.defs
SHA512 (shadow-4.20.0.tar.xz) = 0b8afded372e4d37a78f38cb972c0ab877870ef6356cdd1c45be3c708af3d1496c6f87de6bf6a5b1d217d4d52d7e2d15c28b26530949cc6de0231a4028930406
SHA512 (shadow-4.20.0.tar.xz.asc) = e4b134543768f323df30a1e450c22086d013020928d62bd3207db7f633beea3587b67802da5b575d5a794e8c2bebd7a0abeba6ed69d44bf08adc37df3bf352ac

13
tests/mhc-fedora-ci.yaml Normal file
View file

@ -0,0 +1,13 @@
provisioned_topologies:
- shadow
domains:
- id: shadow
hosts:
- hostname: localhost
role: shadow
conn:
type: ssh
host: localhost
user: root
artifacts:
- /var/log/*