Deploy using the deploy user and also log who deploys using the original user.
Retaining the color was tricky but script fakes tty so we can keep all the color glory and with sed we strip colors before logging them.
# /usr/bin/capsu function log { old_IFS=$IFS IFS='' # do not split on newline when reading stdin newline=$'\n' line="" while read -d '' -n1 c # read every character do # print every character as it comes in for cap shell and password prompts printf "%s" "$c" # amend complete line with current user (but without color codes) to log # so multiple people can run capsu in parallel if [ "$c" = $newline ]; then echo "$SUDO_USER: $line" | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $1 line="" else line+=$c fi done IFS=$old_IFS } rvmsudo -u deploy script /dev/null -c "bundle exec cap $@" 2>&1 | log deploy cap.log