diff options
Diffstat (limited to 'parabolaweb-changepassword.real.in')
-rw-r--r-- | parabolaweb-changepassword.real.in | 25 |
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}" |