Merge commit 'jrollins/master'
[monkeysphere.git] / src / share / common
index 2a20c1c9311e203f0f30009da0ba91172fad1ca3..773c11fe9fe42a6e3ef21ba5ecc9f856fb64500e 100644 (file)
@@ -92,15 +92,22 @@ log() {
 
 # run command as monkeysphere user
 su_monkeysphere_user() {
-    # if the current user is the monkeysphere user, then just eval
-    # command
-    if [ $(id -un) = "$MONKEYSPHERE_USER" ] ; then
-       eval "$@"
+    case $(id -un) in
+       # if monkeysphere user, run the command under bash
+       "$MONKEYSPHERE_USER")
+           bash -c "$@"
+           ;;
 
-    # otherwise su command as monkeysphere user
-    else
-       su "$MONKEYSPHERE_USER" -c "$@"
-    fi
+         # if root, su command as monkeysphere user
+       'root')
+           su "$MONKEYSPHERE_USER" -c "$@"
+           ;;
+
+       # otherwise, fail
+       *)
+           log error "non-privileged user."
+           ;;
+    esac
 }
 
 # cut out all comments(#) and blank lines from standard input
@@ -136,6 +143,7 @@ lock() {
            else
                lockfile -r 20 "${file}.lock" || failure "unable to lock '$file'"
            fi
+           log debug "lock created on '$file'."
            ;;
        touch)  
            if [ -n "$use_lockfileprogs" ] ; then
@@ -143,6 +151,7 @@ lock() {
            else
                : Nothing to do here
            fi
+           log debug "lock touched on '$file'."
            ;;
        remove)
            if [ -n "$use_lockfileprogs" ] ; then
@@ -150,6 +159,7 @@ lock() {
            else
                rm -f "${file}.lock"
            fi
+           log debug "lock removed on '$file'."
            ;;
        *)
            failure "bad argument for lock subfunction '$action'"
@@ -430,6 +440,8 @@ check_key_file_permissions() {
     uname="$1"
     path="$2"
 
+    log debug "checking path permission '$path'..."
+
     # return 255 if cannot stat file
     if ! stat=$(ls -ld "$path" 2>/dev/null) ; then
         log error "could not stat path '$path'."
@@ -1018,6 +1030,8 @@ update_authorized_keys() {
 
     # remove the lockfile and the trap
     lock remove "$AUTHORIZED_KEYS"
+
+    # remove the trap
     trap - EXIT
 
     # note if the authorized_keys file was updated