diff options
author | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-11 10:56:18 +0000 |
---|---|---|
committer | lambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-11 10:56:18 +0000 |
commit | 8383d2bab03519f152fc410febc2e91d0e22ad2f (patch) | |
tree | 27c59aec0acf0eea6a984dcdf2603ab5002a657f | |
parent | 34a32ef2fdc9cd730b133705d455c7beea62222d (diff) | |
download | chromium_src-8383d2bab03519f152fc410febc2e91d0e22ad2f.zip chromium_src-8383d2bab03519f152fc410febc2e91d0e22ad2f.tar.gz chromium_src-8383d2bab03519f152fc410febc2e91d0e22ad2f.tar.bz2 |
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
-rwxr-xr-x | remoting/host/installer/linux/debian/chrome-remote-desktop.init | 23 |
1 files changed, 15 insertions, 8 deletions
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 $? } |