Files
shadow/tests/usertools/01/run2
nekral-guest 39beb1da3a 105_zn_CN was just applied to upstream repository.
Tag 104_man-sv, 101_ja, and 103_man-de as going to be fixed in 4.0.18.2.
2007-10-27 12:51:13 +00:00

160 lines
3.9 KiB
Bash
Executable File

#!/bin/sh
set -e
cd $(dirname $0)
# Rational:
# Test that if a user is created, removed and another user is created, the
# UID of the first user is reused.
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
cp data/{passwd,shadow,group,gshadow} /etc/
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 "Create user test1..."
useradd test1
echo "OK"
echo "test if the user was added"
echo -n " passwd..."
getent passwd test1 |
egrep "^test1:x:([0-9]+):\\1::/home/test1:/bin/sh$"
echo " OK"
uid=$(getent passwd test1|sed -ne "s/test1:x:\([0-9]*\):.*/\\1/p")
# uid must be greater than UID_MIN (in login.defs)
echo -n " uid: $uid < 1000..."
test $uid -ge 1000
echo " OK"
echo -n " group..."
getent group test1 | egrep "^test1:x:$uid:$"
echo " OK"
echo -n " shadow..."
getent shadow test1 | egrep "^test1:!:[0-9]+:0:99999:7:::$"
echo " OK"
echo -n " gshadow..."
egrep "^test1:!::$" /etc/gshadow
echo " OK"
# the home directory should not exist
echo -n " no homedir..."
test -d /home/test1 && exit 1 || true
echo " OK"
echo -n " number of lines"
test $(( lines_passwd + 1 )) = $(wc -l /etc/passwd | cut -f1 -d" ")
echo -n "."
test $(( lines_group + 1 )) = $(wc -l /etc/group | cut -f1 -d" ")
echo -n "."
test $(( lines_shadow + 1 )) = $(wc -l /etc/shadow | cut -f1 -d" ")
echo -n "."
test $(( lines_gshadow + 1 )) = $(wc -l /etc/gshadow | cut -f1 -d" ")
echo -n "."
echo " OK"
echo -n "delete this user..."
userdel test1
echo "OK"
echo "check if the user was deleted"
echo -n " no entries..."
egrep "^test1:" \
/etc/passwd /etc/group /etc/shadow /etc/gshadow && exit 1 || true
echo " OK"
echo -n " no homedir..."
test -d /home/test1 && exit 1 || true
echo " OK"
echo -n " number of lines"
test $lines_passwd = $(wc -l /etc/passwd | cut -f1 -d" ")
echo -n "."
test $lines_group = $(wc -l /etc/group | cut -f1 -d" ")
echo -n "."
test $lines_shadow = $(wc -l /etc/shadow | cut -f1 -d" ")
echo -n "."
test $lines_gshadow = $(wc -l /etc/gshadow | cut -f1 -d" ")
echo -n "."
echo " OK"
echo -n "Create user test2..."
useradd test2
echo "OK"
echo "test if the user was added with the same uid"
echo -n " passwd..."
getent passwd test2 |
egrep "^test2:x:$uid:$uid::/home/test2:/bin/sh$"
echo " OK"
echo -n " group..."
getent group test2 | egrep "^test2:x:$uid:$"
echo " OK"
echo -n " shadow..."
getent shadow test2 | egrep "^test2:!:[0-9]+:0:99999:7:::$"
echo " OK"
echo -n " gshadow..."
egrep "^test2:!::$" /etc/gshadow
echo " OK"
# the home directory should not exist
echo -n " no homedir..."
test -d /home/test2 && exit 1 || true
echo " OK"
echo -n " number of lines"
test $(( lines_passwd + 1 )) = $(wc -l /etc/passwd | cut -f1 -d" ")
echo -n "."
test $(( lines_group + 1 )) = $(wc -l /etc/group | cut -f1 -d" ")
echo -n "."
test $(( lines_shadow + 1 )) = $(wc -l /etc/shadow | cut -f1 -d" ")
echo -n "."
test $(( lines_gshadow + 1 )) = $(wc -l /etc/gshadow | cut -f1 -d" ")
echo -n "."
echo " OK"
echo -n "delete this user..."
userdel test2
echo "OK"
echo "check if the user was deleted"
echo -n " no entries..."
egrep "^test2:" \
/etc/passwd /etc/group /etc/shadow /etc/gshadow && exit 1 || true
echo " OK"
echo -n " no homedir..."
test -d /home/test2 && exit 1 || true
echo " OK"
echo -n " number of lines"
test $lines_passwd = $(wc -l /etc/passwd | cut -f1 -d" ")
echo -n "."
test $lines_group = $(wc -l /etc/group | cut -f1 -d" ")
echo -n "."
test $lines_shadow = $(wc -l /etc/shadow | cut -f1 -d" ")
echo -n "."
test $lines_gshadow = $(wc -l /etc/gshadow | cut -f1 -d" ")
echo -n "."
echo " OK"