shadow/tests/convtools/01/run
Serge Hallyn b999d48941 Add tests from the old svn tree
We're losing the svn history (which we could probably keep if we tried
hard enough) but don't consider that worthwhile.

Note these tests are destructive, so run them only in a throwaway
environment like a chroot, container, or vm.

The tests/run.all script should be the one which launches all the tests.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2014-09-17 14:42:55 -05:00

118 lines
2.1 KiB
Bash
Executable File

#!/bin/sh
set -e
cd $(dirname $0)
# Rational:
# Test that su can be used to switch to root and to a normal account
# no testsuite password
# root password: rootF00barbaz
# myuser password: myuserF00barbaz
save()
{
[ ! -d tmp ] && mkdir tmp
for i in passwd group shadow gshadow
do
[ -f /etc/$i ] && cp -dp /etc/$i tmp/$i
[ -f /etc/$i- ] && cp -dp /etc/$i- tmp/$i-
done
DATE=$(date '+%s')
DATE=$(( DATE/3600/24 ))
WARN=$( egrep "^PASS_WARN_AGE" /etc/login.defs | { read var val ; echo $val; } )
saveifs=$IFS
IFS=":"
cat data/2/shadow |
while read f1 f2 f3 f4 f5 f6 f7 f8 fres
do
echo "$f1:$f2:$DATE:$f4:$f5:$WARN:::"
done > tmp/shadow.2
IFS=$saveifs
}
restore()
{
for i in passwd group shadow gshadow
do
[ -f tmp/$i ] && cp -dp tmp/$i /etc/$i && rm tmp/$i
[ -f tmp/$i- ] && cp -dp tmp/$i- /etc/$i- && rm tmp/$i-
done
rm tmp/shadow.2
rmdir tmp
}
save
# restore the files on exit
trap 'restore' 0
for i in passwd group shadow gshadow
do
rm -f /etc/$i
done
for i in passwd group
do
cp -f data/1/$i /etc/
done
echo -n "pwconv "
pwconv
echo -n "checking..."
diff -au /etc/passwd data/2/passwd
diff -au /etc/shadow tmp/shadow.2
diff -au /etc/group data/1/group
perms=$(stat -c "%a %u %G" /etc/shadow)
if [ "$perms" != "440 0 shadow" ]
then
echo "Wrong mode or owners on /etc/shadow."
exit 1
fi
if [ -f /etc/gshadow ]
then
echo "/etc/gshadow should not exist."
exit 1
fi
echo "OK"
echo -n "grpconv "
grpconv
echo -n "checking..."
diff -au /etc/passwd data/2/passwd
diff -au /etc/shadow tmp/shadow.2
diff -au /etc/group data/2/group
diff -au /etc/gshadow data/2/gshadow
echo "OK"
echo -n "pwunconv "
pwunconv
echo -n "checking..."
diff -au /etc/passwd data/1/passwd
if [ -f /etc/shadow ]
then
echo "/etc/shadow should not exist. "
exit 1
fi
diff -au /etc/group data/2/group
diff -au /etc/gshadow data/2/gshadow
echo "OK"
echo -n "grpunconv "
grpunconv
echo -n "checking..."
diff -au /etc/passwd data/1/passwd
if [ -f /etc/shadow ]
then
echo "/etc/shadow should not exist. "
exit 1
fi
diff -au /etc/group data/1/group
if [ -f /etc/gshadow ]
then
echo "/etc/gshadow should not exist. "
exit 1
fi
echo "OK"