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"