34 lines
922 B
Text
34 lines
922 B
Text
|
#!/bin/sh
|
||
|
#
|
||
|
# create user-specific suid binaries to call ezmlm-web.cgi
|
||
|
#
|
||
|
# parameters: [USERNAME] DESTINATION_FILE
|
||
|
# e.g.: john ~john/public_html/cgi-bin/ezmlm-web
|
||
|
# only root may choose a USERNAME
|
||
|
#
|
||
|
|
||
|
set -eu
|
||
|
|
||
|
C_SOURCE=/usr/share/ezmlm-web/index.c
|
||
|
|
||
|
which cc >/dev/null || { echo "no compiler (cc) installed - sorry" >&2; exit 1; }
|
||
|
|
||
|
[ $(id -u) -ne 0 ] && [ $# -ne 1 ] && echo "Syntax (for non-root): $(basename $0) DESTINATION_FILE" >&2 && exit 1
|
||
|
[ $(id -u) -eq 0 ] && [ $# -gt 2 -o $# -lt 1 ] && echo "Syntax (for root): $(basename $0) [USERNAME] DESTINATION_FILE" >&2 && exit 1
|
||
|
|
||
|
if [ $# -eq 1 ]
|
||
|
then EZ_USER=$(id -un)
|
||
|
EZ_FILE=$1
|
||
|
else EZ_USER=$1
|
||
|
EZ_FILE=$2
|
||
|
fi
|
||
|
|
||
|
cc -o "$EZ_FILE" "$C_SOURCE"
|
||
|
if [ $(id -u) -eq 0 ]
|
||
|
then chown "$EZ_USER". "$EZ_FILE" || { echo "the user '$EZ_USER' does not exist" >&2; rm "$EZ_FILE"; exit 1; }
|
||
|
fi
|
||
|
chmod u+s "$EZ_FILE"
|
||
|
|
||
|
echo "Successfully created '$EZ_FILE' for user '$EZ_USER'."
|
||
|
|