Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: remoting/host/installer/linux/debian/chrome-remote-desktop.init

Issue 15848019: Use sudo in remoting init.d script to get a clean per-user environment (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 ### BEGIN INIT INFO 3 ### BEGIN INIT INFO
4 # Provides: chrome-remote-desktop 4 # Provides: chrome-remote-desktop
5 # Required-Start: $remote_fs $syslog 5 # Required-Start: $remote_fs $syslog
6 # Required-Stop: $remote_fs $syslog 6 # Required-Stop: $remote_fs $syslog
7 # Default-Start: 2 3 4 5 7 # Default-Start: 2 3 4 5
8 # Default-Stop: 0 1 6 8 # Default-Stop: 0 1 6
9 # Short-Description: Chrome Remote Desktop service 9 # Short-Description: Chrome Remote Desktop service
10 ### END INIT INFO 10 ### END INIT INFO
(...skipping 28 matching lines...) Expand all
39 sleep 1 39 sleep 1
40 time_left=$((time_left - 1)) 40 time_left=$((time_left - 1))
41 done 41 done
42 (kill -0 $pid 2>/dev/null) || return `wait $pid` 42 (kill -0 $pid 2>/dev/null) || return `wait $pid`
43 43
44 echo command \"$@\" has timed out >&2 44 echo command \"$@\" has timed out >&2
45 kill $pid 45 kill $pid
46 return 1 46 return 1
47 } 47 }
48 48
49 # Usage: run_and_ignore_error [--login] user program [args...]
50 # --login:
51 # Run program in a clean login shell. This requires backgrounding, since
52 # the user's .profile or .login script might be run, which might contain
53 # blocking commands.
49 run_and_ignore_error() { 54 run_and_ignore_error() {
55 login_options=""
56 if [ "$1" = "--login" ]; then
57 login_options="-b -i"
58 shift
59 fi
60
50 user=$1 61 user=$1
51 shift 62 shift
52 exec=$1
53 shift
54 63
55 set +e 64 set +e
56 if [ "$(whoami)" = "$user" ]; then 65 if [ "$(whoami)" = "$user" ]; then
57 "$exec" "$@" 66 "$@"
58 else 67 else
59 shell="$(getent passwd "$user" | cut -d: -f7)" 68 sudo -u "$user" $login_options "$@"
60 USER="$user" LOGNAME="$user" SHELL="$shell" start-stop-daemon \
61 --chuid "$user" --exec "$exec" --start -- "$@"
62 fi 69 fi
63 } 70 }
64 71
65 do_start() { 72 do_start() {
66 log_begin_msg "Starting Chrome Remote Desktop host for $1..." 73 log_begin_msg "Starting Chrome Remote Desktop host for $1..."
67 run_and_ignore_error $1 "$HOST_PATH" --start 74 run_and_ignore_error --login $1 "$HOST_PATH" --start
68 log_end_msg $? 75 log_end_msg $?
69 } 76 }
70 77
71 do_stop() { 78 do_stop() {
72 log_begin_msg "Stopping Chrome Remote Desktop host for $1..." 79 log_begin_msg "Stopping Chrome Remote Desktop host for $1..."
73 run_with_timeout run_and_ignore_error $1 "$HOST_PATH" --stop 80 run_with_timeout run_and_ignore_error $1 "$HOST_PATH" --stop
74 log_end_msg $? 81 log_end_msg $?
75 } 82 }
76 83
77 do_reload() { 84 do_reload() {
78 log_begin_msg "Reloading Chrome Remote Desktop host configuration for $1..." 85 log_begin_msg "Reloading Chrome Remote Desktop host configuration for $1..."
79 run_and_ignore_error $1 "$HOST_PATH" --reload 86 run_and_ignore_error $1 "$HOST_PATH" --reload
80 log_end_msg $? 87 log_end_msg $?
81 } 88 }
82 89
83 do_restart() { 90 do_restart() {
84 log_begin_msg "Restarting Chrome Remote Desktop host for $1..." 91 log_begin_msg "Restarting Chrome Remote Desktop host for $1..."
85 run_and_ignore_error $1 "$HOST_PATH" --stop 92 run_and_ignore_error $1 "$HOST_PATH" --stop
86 run_and_ignore_error $1 "$HOST_PATH" --start 93 run_and_ignore_error --login $1 "$HOST_PATH" --start
87 log_end_msg $? 94 log_end_msg $?
88 } 95 }
89 96
90 for_each_user() { 97 for_each_user() {
91 for user in $USERS; do 98 for user in $USERS; do
92 $1 $user 99 $1 $user
93 done 100 done
94 } 101 }
95 102
96 case "$1" in 103 case "$1" in
(...skipping 13 matching lines...) Expand all
110 for_each_user do_restart 117 for_each_user do_restart
111 ;; 118 ;;
112 119
113 *) 120 *)
114 log_success_msg "Usage: /etc/init.d/chrome-remote-desktop" \ 121 log_success_msg "Usage: /etc/init.d/chrome-remote-desktop" \
115 "{start|stop|reload|force-reload|restart}" 122 "{start|stop|reload|force-reload|restart}"
116 exit 1 123 exit 1
117 esac 124 esac
118 125
119 exit 0 126 exit 0
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698