github.com/rkt/rkt@v1.30.1-0.20200224141603-171c416fac02/dist/scripts/setup-data-dir.sh (about) 1 #!/usr/bin/env bash 2 3 # Usage: 4 # ./setup-data-dir.sh [path to rkt data dir] 5 # The script can take one parameter being a path to the rkt data 6 # directory. If none is passed, /var/lib/rkt is assumed. 7 8 # Please keep it in sync with dist/init/systemd/tmpfiles.d/rkt.conf! 9 10 set -e 11 12 if [[ $EUID -ne 0 ]]; then 13 echo "This script must be run as root" 14 exit 1 15 fi 16 17 datadir="${1}" 18 19 if [[ -z "${datadir}" ]]; then 20 datadir="/var/lib/rkt" 21 fi 22 23 # Creates the directory with the given mode and given group 24 # 1 - directory to create if it does not exist 25 # 2 - mode to set the directory to 26 # 3 - group to set the directory ownership to 27 make_directory() { 28 local dir="${1}" 29 local mode="${2}" 30 local group="${3}" 31 32 if [[ -e "${dir}" ]]; then 33 chmod "${mode}" "${dir}" 34 else 35 mkdir --mode="${mode}" "${dir}" 36 fi 37 chgrp "${group}" "${dir}" 38 } 39 40 # Creates the file with the given mode and rkt group 41 # 1 - file to create if it does not exist 42 # 2 - mode to set the file to 43 create_rkt_file() { 44 local file="${1}" 45 local mode="${2}" 46 47 if [[ ! -e "${file}" ]]; then 48 touch "${file}" 49 fi 50 chmod "${mode}" "${file}" 51 chgrp rkt "${file}" 52 } 53 54 getent group rkt-admin || groupadd --force --system rkt-admin 55 getent group rkt || groupadd --force --system rkt 56 57 if which systemd-tmpfiles; then 58 systemd-tmpfiles --create "$(realpath "$(dirname "$0")")/../init/systemd/tmpfiles.d/rkt.conf" && exit 59 fi 60 61 make_directory "${datadir}" 2750 "rkt" 62 make_directory "${datadir}/tmp" 2750 "rkt" 63 64 make_directory "${datadir}/cas" 2770 "rkt" 65 make_directory "${datadir}/cas/db" 2770 "rkt" 66 create_rkt_file "${datadir}/cas/db/ql.db" 0660 67 # the ql database uses a WAL file whose name is generated from the sha1 hash of 68 # the database name 69 create_rkt_file "${datadir}/cas/db/.34a8b4c1ad933745146fdbfef3073706ee571625" 0660 70 make_directory "${datadir}/cas/imagelocks" 2770 "rkt" 71 make_directory "${datadir}/cas/imageManifest" 2770 "rkt" 72 make_directory "${datadir}/cas/blob" 2770 "rkt" 73 make_directory "${datadir}/cas/tmp" 2770 "rkt" 74 make_directory "${datadir}/cas/tree" 2700 "rkt" 75 make_directory "${datadir}/cas/treestorelocks" 2700 "rkt" 76 make_directory "${datadir}/locks" 2750 "rkt" 77 78 make_directory "${datadir}/pods" 2750 "rkt" 79 make_directory "${datadir}/pods/embryo" 2750 "rkt" 80 make_directory "${datadir}/pods/prepare" 2750 "rkt" 81 make_directory "${datadir}/pods/prepared" 2750 "rkt" 82 make_directory "${datadir}/pods/run" 2750 "rkt" 83 make_directory "${datadir}/pods/exited-garbage" 2750 "rkt" 84 make_directory "${datadir}/pods/garbage" 2750 "rkt" 85 86 make_directory "/etc/rkt" 2775 "rkt-admin"