blob: 44b053bcf1326b4bf698c9a0411b517f791ed5c4 [file] [log] [blame]
# 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 "Downloadable content service daemon"
author "chromium-os-dev@chromium.org"
start on starting system-services
stop on stopping system-services
expect fork
respawn
respawn limit 3 10 # if the job respawns 3 times in 10 seconds, stop trying.
pre-start script
# Initialize:
# -The DLC image directory.
# -The DLC metadata directory.
for dlc_path in "/var/cache/dlc" "/var/lib/dlcservice"
do
mkdir -p "${dlc_path}"
chmod -R u+rwX,go+rX,go-w "${dlc_path}"
chown -R dlcservice:dlcservice "${dlc_path}"
done
# -The DLC preload directory.
PRELOAD_PATH="/var/cache/dlc-images"
if [[ -d "${PRELOAD_PATH}" ]]; then
chmod -R dlcservice:dlcservice "${PRELOAD_PATH}"
fi
end script
# -i Exit immediately after fork.
# -u Run as dlcservice user.
# -g Run as dlcservice group.
# -v Enter new mount namespace, allows to change mounts inside jail.
# -G Inherit supplementary groups from new uid.
# -n prevents the executable from gaining new privileges.
# -b /var/lib/metrics Mount with write permissions for uma metrics.
# -S Set seccomp filter using dlcservice-seccomp.policy.
exec minijail0 -i -u dlcservice -g dlcservice -v -G -n \
-b /var/lib/metrics,,1 \
-S /usr/share/policy/dlcservice-seccomp.policy /usr/sbin/dlcservice