diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:22:06 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:22:06 +0000 |
commit | 741c1ef7a4f2ac316ad6e557ddbe03023413478d (patch) | |
tree | 38890f681daa26c57e865b4feca10d0ca53e1046 /tests/cktools/01 | |
parent | Initial commit. (diff) | |
download | shadow-upstream.tar.xz shadow-upstream.zip |
Adding upstream version 1:4.5.upstream/1%4.5upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/cktools/01')
-rw-r--r-- | tests/cktools/01/data/group | 41 | ||||
-rw-r--r-- | tests/cktools/01/data/gshadow | 41 | ||||
-rw-r--r-- | tests/cktools/01/data/passwd | 19 | ||||
-rw-r--r-- | tests/cktools/01/data/run2.err | 0 | ||||
-rw-r--r-- | tests/cktools/01/data/run2.out | 13 | ||||
-rw-r--r-- | tests/cktools/01/data/shadow | 19 | ||||
-rwxr-xr-x | tests/cktools/01/run1 | 54 | ||||
-rwxr-xr-x | tests/cktools/01/run2 | 62 |
8 files changed, 249 insertions, 0 deletions
diff --git a/tests/cktools/01/data/group b/tests/cktools/01/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/cktools/01/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +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: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/cktools/01/data/gshadow b/tests/cktools/01/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/cktools/01/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +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:: diff --git a/tests/cktools/01/data/passwd b/tests/cktools/01/data/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/cktools/01/data/passwd @@ -0,0 +1,19 @@ +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 diff --git a/tests/cktools/01/data/run2.err b/tests/cktools/01/data/run2.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/cktools/01/data/run2.err diff --git a/tests/cktools/01/data/run2.out b/tests/cktools/01/data/run2.out new file mode 100644 index 0000000..00df312 --- /dev/null +++ b/tests/cktools/01/data/run2.out @@ -0,0 +1,13 @@ +user 'lp': directory '/var/spool/lpd' does not exist +user 'news': directory '/var/spool/news' does not exist +user 'uucp': directory '/var/spool/uucp' does not exist +user 'www-data': directory '/var/www' does not exist +user 'list': directory '/var/list' does not exist +user 'irc': directory '/var/run/ircd' does not exist +user 'gnats': directory '/var/lib/gnats' does not exist +user 'nobody': directory '/nonexistent' does not exist +user 'Debian-exim': directory '/var/spool/exim4' does not exist +user 'test': no group 10002 +no matching password file entry in /etc/shadow +add user 'test' in /etc/shadow? No +pwck: no changes diff --git a/tests/cktools/01/data/shadow b/tests/cktools/01/data/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/cktools/01/data/shadow @@ -0,0 +1,19 @@ +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::: diff --git a/tests/cktools/01/run1 b/tests/cktools/01/run1 new file mode 100755 index 0000000..04aa793 --- /dev/null +++ b/tests/cktools/01/run1 @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +# Rational: +# Test that useradd can add an user and userdel removes it. + +save() +{ + [ ! -d tmp ] && mkdir tmp + for i in passwd group shadow gshadow + do + [ -f /etc/$i ] && cp /etc/$i tmp/$i + done + + true +} + +restore() +{ + for i in passwd group shadow gshadow + do + [ -f tmp/$i ] && cp tmp/$i /etc/$i && rm tmp/$i + done + rmdir tmp +} + +save + +# restore the files on exit +trap 'restore' 0 + +for i in passwd group shadow gshadow +do + cp data/$i /etc +done + +lines_passwd=$(wc -l /etc/passwd | cut -f1 -d" ") +lines_shadow=$(wc -l /etc/shadow | cut -f1 -d" ") +lines_group=$(wc -l /etc/group | cut -f1 -d" ") +lines_gshadow=$(wc -l /etc/gshadow | cut -f1 -d" ") + +echo "pwck accepts valid password file " +msg=$(pwck -r | grep -v "^user .*: directory .* does not exist$") +echo msg: $msg +test "$msg" = "pwck: no changes" +echo " OK" +echo "grpck accepts valid password file " +msg=$(grpck -r) +test "$msg" = "" +echo " OK" + diff --git a/tests/cktools/01/run2 b/tests/cktools/01/run2 new file mode 100755 index 0000000..df1e277 --- /dev/null +++ b/tests/cktools/01/run2 @@ -0,0 +1,62 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +# Rational: +# Test that useradd can add an user and userdel removes it. + +save() +{ + [ ! -d tmp ] && mkdir tmp + for i in passwd group shadow gshadow + do + [ -f /etc/$i ] && cp /etc/$i tmp/$i + done + + true +} + +restore() +{ + rm -f tmp/err tmp/out + for i in passwd group shadow gshadow + do + [ -f tmp/$i ] && cp tmp/$i /etc/$i && rm tmp/$i + done + rmdir tmp +} + +save + +# restore the files on exit +trap 'restore' 0 + +for i in passwd group shadow gshadow +do + cp data/$i /etc +done + +lines_passwd=$(wc -l /etc/passwd | cut -f1 -d" ") +lines_shadow=$(wc -l /etc/shadow | cut -f1 -d" ") +lines_group=$(wc -l /etc/group | cut -f1 -d" ") +lines_gshadow=$(wc -l /etc/gshadow | cut -f1 -d" ") + +echo -n "Add an user without an entry in shadow " +echo "test:x:10002:10002::/tmp:/bin/false" >> /etc/passwd +echo "OK" + +echo "Check that pwck detects it " +pwck -r > tmp/out 2> tmp/err || true +diff -au data/run2.out tmp/out +diff -au data/run2.err tmp/err +echo " OK" +echo "grpck accepts valid password file " +msg=$(grpck -r) +test "$msg" = "" +echo " OK" + +#echo -n "Make sure pwck can fix it " +#pwcd +#echo "OK" |