| # Copyright 2018 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| description "Start arc-appfuse-provider D-Bus service" |
| author "chromium-os-dev@chromium.org" |
| |
| start on started arc-boot-continue |
| stop on stopped arc-boot-continue |
| |
| script |
| logger -t "${UPSTART_JOB}" "Start ${UPSTART_JOB}" |
| set -x |
| |
| # Start constructing minijail0 args... |
| args="" |
| |
| # Use minimalistic-mountns profile. |
| args="$args --profile=minimalistic-mountns" |
| |
| # Run as arc-appfuse-provider user & group. |
| args="${args} -u arc-appfuse-provider -g arc-appfuse-provider" |
| |
| # CAP_SYS_ADMIN for mounting file systems. |
| args="${args} -c 0x200000" |
| |
| # Enter a new network namespace. |
| args="$args -e" |
| |
| # Enter a new IPC namespace. |
| args="$args -l" |
| |
| # Set no_new_privs. |
| args="$args -n" |
| |
| # Enter a new cgroup namespace. |
| args="$args -N" |
| |
| # Enter a new PID namespace. |
| args="$args -p" |
| |
| # Seccomp filter. |
| args="$args -S /usr/share/policy/arc-appfuse-provider-seccomp.policy" |
| |
| # Enter a new UTS namespace. |
| args="$args --uts" |
| |
| # Mount tmpfs on /run. |
| UID="$(id -u arc-appfuse-provider)" |
| GID="$(id -g arc-appfuse-provider)" |
| TMPFS_DATA="mode=755,size=10M,uid=${UID},gid=${GID}" |
| args="$args -k tmpfs,/run,tmpfs,MS_NOSUID|MS_NODEV|MS_NOEXEC,${TMPFS_DATA}" |
| |
| # Bind /run/dbus to communicate with dbus-daemon. |
| args="$args -b /run/dbus" |
| |
| # Bind /dev/fuse to mount FUSE file systems. |
| args="$args -b /dev/fuse" |
| |
| args="$args -- /usr/bin/arc-appfuse-provider --mount_root=/run/appfuse" |
| exec minijail0 $args |
| end script |
| |
| post-stop exec logger -t "${UPSTART_JOB}" "Post-stop ${UPSTART_JOB}" |