summaryrefslogtreecommitdiff
path: root/parabolaweb-changepassword.real.in
diff options
context:
space:
mode:
Diffstat (limited to 'parabolaweb-changepassword.real.in')
-rw-r--r--parabolaweb-changepassword.real.in25
1 files changed, 19 insertions, 6 deletions
diff --git a/parabolaweb-changepassword.real.in b/parabolaweb-changepassword.real.in
index 942ec66..e2f6437 100644
--- a/parabolaweb-changepassword.real.in
+++ b/parabolaweb-changepassword.real.in
@@ -24,25 +24,38 @@ usage() {
main() {
. @pkgconffile@
-
[[ -e "${WEBDIR}/manage.py" ]]
[[ -n "${WEBUSER}" ]]
- RUSER=${SUDO_USER:-${SUID_USER:-$USER}}
- EUSER=${USER}
+ REAL_USER=$USER
+ if ! { [[ $SUID_USER == root ]] || $SUID_USER == "$WEBUSER" ]]; }; then
+ unset SUDO_USER SUDO_UID SUDO_GID SUDO_COMMAND
+ fi
+
+ # The use-cases I want to handle:
+ # REAL SUID SUDO | NAME_OF others?
+ # user$ changepassword root user - | user no
+ # user$ sudo changepassword root root user | user yes
+ # user$ sudo -u web changepassword root web user | user yes
+ # web$ changepassword root web - | web yes
+ # root# changepassword root root - | root yes
+ # user$ /lib/.../changepasswoed user - - | user no
+ local NAME_OF=${SUDO_USER:-${SUID_USER:-$REAL_USER}}
+ local PERM_OF=${SUID_USER:-$REAL_USER}
- if [[ $EUSER == root ]] || [[ $EUSER == "$WEBUSER" ]]; then
+ local username
+ if [[ $PERM_OF == root ]] || [[ $PERM_OF == "$WEBUSER" ]]; then
if [[ $# -gt 1 ]]; then
usage >&2
return 1
fi
- username=${1:-$RUSER}
+ username=${1:-$NAME_OF}
else
if [[ $# -gt 0 ]]; then
usage >&2
return 1
fi
- username=$RUSER
+ username=$NAME_OF
fi
sudo -u "${WEBUSER}" python2 "${WEBDIR}/manage.py" changepassword "${username}"