From 8383d2bab03519f152fc410febc2e91d0e22ad2f Mon Sep 17 00:00:00 2001 From: "lambroslambrou@chromium.org" Date: Tue, 11 Jun 2013 10:56:18 +0000 Subject: Use sudo in remoting init.d script to get a clean per-user environment Using 'sudo' to start the per-user process ensures the ulimits (and hopefully other environment settings) are set properly. BUG=169802 Review URL: https://chromiumcodereview.appspot.com/15848019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205486 0039d316-1c4b-4281-b951-d872f2087c98 --- .../linux/debian/chrome-remote-desktop.init | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'remoting/host') diff --git a/remoting/host/installer/linux/debian/chrome-remote-desktop.init b/remoting/host/installer/linux/debian/chrome-remote-desktop.init index 4230632..2fc0d0d 100755 --- a/remoting/host/installer/linux/debian/chrome-remote-desktop.init +++ b/remoting/host/installer/linux/debian/chrome-remote-desktop.init @@ -46,25 +46,32 @@ run_with_timeout() { return 1 } +# Usage: run_and_ignore_error [--login] user program [args...] +# --login: +# Run program in a clean login shell. This requires backgrounding, since +# the user's .profile or .login script might be run, which might contain +# blocking commands. run_and_ignore_error() { + login_options="" + if [ "$1" = "--login" ]; then + login_options="-b -i" + shift + fi + user=$1 shift - exec=$1 - shift set +e if [ "$(whoami)" = "$user" ]; then - "$exec" "$@" + "$@" else - shell="$(getent passwd "$user" | cut -d: -f7)" - USER="$user" LOGNAME="$user" SHELL="$shell" start-stop-daemon \ - --chuid "$user" --exec "$exec" --start -- "$@" + sudo -u "$user" $login_options "$@" fi } do_start() { log_begin_msg "Starting Chrome Remote Desktop host for $1..." - run_and_ignore_error $1 "$HOST_PATH" --start + run_and_ignore_error --login $1 "$HOST_PATH" --start log_end_msg $? } @@ -83,7 +90,7 @@ do_reload() { do_restart() { log_begin_msg "Restarting Chrome Remote Desktop host for $1..." run_and_ignore_error $1 "$HOST_PATH" --stop - run_and_ignore_error $1 "$HOST_PATH" --start + run_and_ignore_error --login $1 "$HOST_PATH" --start log_end_msg $? } -- cgit v1.1