b999d48941
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>
118 lines
2.1 KiB
Bash
Executable File
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"
|
|
|