Add regression test for 'usermod -rG' -- it should not add users to groups they did not previously belong to

This commit is contained in:
James Addison 2022-11-17 12:47:31 +00:00 committed by Serge Hallyn
parent 899f7a43b1
commit 20f8ead9ec
9 changed files with 295 additions and 0 deletions

View File

@ -0,0 +1,4 @@
user foo, in group users (only in /etc/group)
user bar, in group users (only in /etc/group)
user foo, in group floppy
user bar, in group fax

View File

@ -0,0 +1,36 @@
# Default values for useradd(8)
#
# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
SHELL=/bin/foobar
#
# The default group for users
# 100=users on Debian systems
# Same as USERS_GID in adduser
# This argument is used when the -n flag is specified.
# The default behavior (when -n and -g are not specified) is to create a
# primary user group with the same name as the user being added to the
# system.
GROUP=10
#
# The default home directory. Same as DHOME for adduser
HOME=/tmp
#
# The number of days after a password expires until the account
# is permanently disabled
INACTIVE=12
#
# The default expire date
EXPIRE=2007-12-02
#
# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
# SKEL=/etc/skel
#
# Defines whether the mail spool should be created while
# creating the account
# CREATE_MAIL_SPOOL=yes

View File

@ -0,0 +1,43 @@
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:root
adm:x:4:root
tty:x:5:
disk:x:6:
lp:x:7:root
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:bar
voice:x:22:
cdrom:x:24:
floppy:x:25:foo
tape:x:26:
sudo:x:27:
audio:x:29:
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:
staff:x:50:
games:x:60:
users:x:100:foo,bar
nogroup:x:65534:
crontab:x:101:
Debian-exim:x:102:
foo:x:1000:
bar:x:1001:

View File

@ -0,0 +1,42 @@
root:*::
daemon:*::
bin:*::
sys:*::root
adm:*::root
tty:*::
disk:*::
lp:*::root
mail:*::
news:*::
uucp:*::
man:*::
proxy:*::
kmem:*::
dialout:*::
fax:*::bar
voice:*::
cdrom:*::
floppy:*::foo
tape:*::
sudo:*::
audio:*::
dip:*::
www-data:*::
backup:*::
operator:*::
list:*::
irc:*::
src:*::
gnats:*::
shadow:*::
utmp:*::
video:*::
sasl:*::
plugdev:*::
staff:*::
games:*::
users:*::
nogroup:*::
crontab:x::
Debian-exim:x::
foo:*::

View File

@ -0,0 +1,21 @@
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
Debian-exim:x:102:102::/var/spool/exim4:/bin/false
foo:x:1000:1000::/home/foo:/bin/false
bar:x:1001:1001::/home/foo:/bin/false

View File

@ -0,0 +1,21 @@
root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7:::
daemon:*:12977:0:99999:7:::
bin:*:12977:0:99999:7:::
sys:*:12977:0:99999:7:::
sync:*:12977:0:99999:7:::
games:*:12977:0:99999:7:::
man:*:12977:0:99999:7:::
lp:*:12977:0:99999:7:::
mail:*:12977:0:99999:7:::
news:*:12977:0:99999:7:::
uucp:*:12977:0:99999:7:::
proxy:*:12977:0:99999:7:::
www-data:*:12977:0:99999:7:::
backup:*:12977:0:99999:7:::
list:*:12977:0:99999:7:::
irc:*:12977:0:99999:7:::
gnats:*:12977:0:99999:7:::
nobody:*:12977:0:99999:7:::
Debian-exim:!:12977:0:99999:7:::
foo:!:12977:0:99999:7:::
bar:!:12977:0:99999:7:::

View File

@ -0,0 +1,43 @@
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:root
adm:x:4:root
tty:x:5:
disk:x:6:
lp:x:7:root
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:bar
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:
audio:x:29:
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:
staff:x:50:
games:x:60:
users:x:100:foo,bar
nogroup:x:65534:
crontab:x:101:
Debian-exim:x:102:
foo:x:1000:
bar:x:1001:

View File

@ -0,0 +1,42 @@
root:*::
daemon:*::
bin:*::
sys:*::root
adm:*::root
tty:*::
disk:*::
lp:*::root
mail:*::
news:*::
uucp:*::
man:*::
proxy:*::
kmem:*::
dialout:*::
fax:*::bar
voice:*::
cdrom:*::
floppy:*::
tape:*::
sudo:*::
audio:*::
dip:*::
www-data:*::
backup:*::
operator:*::
list:*::
irc:*::
src:*::
gnats:*::
shadow:*::
utmp:*::
video:*::
sasl:*::
plugdev:*::
staff:*::
games:*::
users:*::
nogroup:*::
crontab:x::
Debian-exim:x::
foo:*::

View File

@ -0,0 +1,43 @@
#!/bin/sh
set -e
cd $(dirname $0)
. ../../common/config.sh
. ../../common/log.sh
log_start "$0" "usermod can remove users from supplementary groups"
save_config
# restore the files on exit
trap 'log_status "$0" "FAILURE"; restore_config' 0
change_config
echo -n "Remove user foo from the 'floppy' group (usermod -rG \"floppy\" foo)..."
usermod -rG "floppy" foo
echo "OK"
echo -n "Remove user foo from the 'fax' group (usermod -rG \"fax\" foo)..."
usermod -rG "fax" foo
echo "OK"
echo -n "Check the passwd file..."
../../common/compare_file.pl config/etc/passwd /etc/passwd
echo "OK"
echo -n "Check the group file..."
../../common/compare_file.pl data/group /etc/group
echo "OK"
echo -n "Check the shadow file..."
../../common/compare_file.pl config/etc/shadow /etc/shadow
echo "OK"
echo -n "Check the gshadow file..."
../../common/compare_file.pl data/gshadow /etc/gshadow
echo "OK"
log_status "$0" "SUCCESS"
restore_config
trap '' 0