Re: Bug#9582: suidmanager 0.6 uploaded to master.debian.org
This works every time, with no fails due to '-o errexit'.
#!/bin/sh
#
# Register a binary
#
function setperm()
{
if [ -e $2 ]; then
chown $3.$4 $2
chmod $5 $2
fi
}
function compperm()
{
if [ $1 != $4 -o $2 != $5 -o $3 != $6 ]; then
echo "$FILE PERMISSION MISMATCH: was $1.$2 $3 changed to $4.$5 $6"
fi
}
function permdiag()
{
FILE=$2
if [ -e $FILE ]; then
compperm `find $2 -printf "%u %g %m"` $3 $4 $5
else
echo "File $FILE registered but not installed"
fi
}
function suidrun()
{
while [ 1 ]; do
read X
if [ "$X" ]; then
permdiag $X
setperm $X
else
return
fi
done
}
function with_no_errexit()
{
if echo $- | grep -q e; then
e=-e
set +e
else
e=+e
fi
eval $1
set $e
}
if [ "$1" = "" ]; then
sed </etc/suid.conf -e "/^#/d" -e "/^$/d" | suidrun
exit 0
fi
if [ "$1" = "-s" ]; then
shift
PACKAGE=$1
shift
else
PACKAGE=user
fi
if [ "$4" = "" ]; then
echo "Usage: suidregister file user group perm"
exit 1
fi
if [ ! -e $1 ]; then
echo "$1 not found"
exit 1
fi
with_no_errexit 'X=$(grep ".* $1" /etc/suid.conf)'
if [ "$X" ]; then
if expr "$X" : "user" >/dev/null; then
# Reinstate User overrides
setperm $X
echo "OVERRIDE: $X"
exit 0
else
suidunregister $1
fi
fi
echo "$PACKAGE $1 $2 $3 $4" >>/etc/suid.conf
setperm $PACKAGE $1 $2 $3 $4
--
Karl M. Hegbloom <karlheg@inetarena.com>
http://www.inetarena.com/~karlheg
Portland, OR USA
Debian GNU 1.2 Linux 2.1.36 AMD K5 PR-133
Reply to: