The Qube! worker can run either as a daemon (a "system service" on Windows), or a user process. When it runs as a daemon, it's said to be running in service mode. When it's run as a user process, it's said to be running in Desktop User mode.
- the worker process is usually started at system boot time and runs as long as the system is up
- the worker process runs as either a Windows service or a daemon owned by the root user on OS X and linux.
- the worker process will run jobs under a user other than root or the system service. This user is determined by the proxy_execution_mode value:
proxy_execution_mode = proxymeans it will always authenticate as the user defined in proxy_account.
proxy_execution_mode = usermeans it will always authenticate as the user who submitted the job.
the worker process will be unable to access screenspace on Windows and OS X; no processes will be able to render to a hardware buffer, applications that can only run by displaying their full GUI will usually not be able to start, etc.
- the worker process is started by a logged in user, usually when that user logs in, and is killed when the user logs out
- the worker process is owned by the logged in user
- the worker process does not re-authenticate, and all jobs are run by the user who owns the worker process
- the worker process has full access to the screenspace
Authentication in Service mode
When the Worker launches a remote job as dispatched by the Supervisor, it can potentially create several processes, all controlled by the Worker. Since Qube is designed to emulate a user executing jobs on a remote host, the Worker will have to run these processes as some user.