#!/bin/bash set -euo pipefail # Normalize permissions required by TMS standard CISD initialization. # Run as root after the standard receiver media has been placed under /home/cmep4i. STANDARD_HOME_DIR="${STANDARD_HOME_DIR:-/home/cmep4i}" STANDARD_RUN_USER="${STANDARD_RUN_USER:-cmep4i}" TMS_RUN_USER="${TMS_RUN_USER:-tms}" if [ "$(id -u)" != "0" ]; then echo "this script must be executed as root" >&2 exit 77 fi id "${STANDARD_RUN_USER}" >/dev/null 2>&1 || { echo "standard run user not found: ${STANDARD_RUN_USER}" >&2 exit 66 } id "${TMS_RUN_USER}" >/dev/null 2>&1 || { echo "tms run user not found: ${TMS_RUN_USER}" >&2 exit 66 } require_dir() { local dir="$1" if [ ! -d "${dir}" ]; then echo "required directory not found: ${dir}" >&2 exit 66 fi } apply_acl() { local path="$1" if command -v setfacl >/dev/null 2>&1; then setfacl -R -m "u:${STANDARD_RUN_USER}:rwX,u:${TMS_RUN_USER}:rX" "${path}" find "${path}" -type d -exec setfacl -m "d:u:${STANDARD_RUN_USER}:rwX,d:u:${TMS_RUN_USER}:rX" {} + else echo "setfacl not found; falling back to group-readable mode only" >&2 chmod -R g+rX "${path}" fi } standard_media="${STANDARD_HOME_DIR}/cpackage" require_dir "${standard_media}" chown -R "${STANDARD_RUN_USER}:${STANDARD_RUN_USER}" "${standard_media}" chmod -R u+rwX,go-rwx "${standard_media}" apply_acl "${standard_media}" if [ -d "${standard_media}/toolsh" ]; then find "${standard_media}/toolsh" -type f -name "*.sh" -exec chmod 750 {} + fi if [ -d "${standard_media}/rabq" ]; then find "${standard_media}/rabq" -type f -name "*.sh" -exec chmod 750 {} + find "${standard_media}/rabq" -type f -name "rabbitmqadmin" -exec chmod 755 {} + fi for config in \ "${standard_media}/cmsp/01/application-prd-ci01.properties" \ "${standard_media}/cmsp/02/application-prd-ci02.properties" \ "${standard_media}/cmtp/01/application-prd-ci01.properties" \ "${standard_media}/cmtp/02/application-prd-ci02.properties" do if [ -f "${config}" ]; then chown "${STANDARD_RUN_USER}:${STANDARD_RUN_USER}" "${config}" chmod 640 "${config}" if command -v setfacl >/dev/null 2>&1; then setfacl -m "u:${STANDARD_RUN_USER}:rw,u:${TMS_RUN_USER}:r" "${config}" fi else echo "warning: standard template config not found: ${config}" >&2 fi done for dir in \ "${STANDARD_HOME_DIR}/cmsp" \ "${STANDARD_HOME_DIR}/cmtp" \ "${STANDARD_HOME_DIR}/cmep/license" \ "${STANDARD_HOME_DIR}/mysql/loadfilepath" do mkdir -p "${dir}" chown -R "${STANDARD_RUN_USER}:${STANDARD_RUN_USER}" "${dir}" chmod 750 "${dir}" if command -v setfacl >/dev/null 2>&1; then setfacl -m "u:${STANDARD_RUN_USER}:rwx,u:${TMS_RUN_USER}:rwx" "${dir}" setfacl -m "d:u:${STANDARD_RUN_USER}:rwX,d:u:${TMS_RUN_USER}:rwX" "${dir}" fi done if [ -f "${STANDARD_HOME_DIR}/cpconfig.cfg" ]; then chown "${STANDARD_RUN_USER}:${STANDARD_RUN_USER}" "${STANDARD_HOME_DIR}/cpconfig.cfg" chmod 640 "${STANDARD_HOME_DIR}/cpconfig.cfg" else touch "${STANDARD_HOME_DIR}/cpconfig.cfg" chown "${STANDARD_RUN_USER}:${STANDARD_RUN_USER}" "${STANDARD_HOME_DIR}/cpconfig.cfg" chmod 640 "${STANDARD_HOME_DIR}/cpconfig.cfg" fi if command -v setfacl >/dev/null 2>&1; then setfacl -m "u:${STANDARD_RUN_USER}:rw,u:${TMS_RUN_USER}:rw" "${STANDARD_HOME_DIR}/cpconfig.cfg" fi echo "standard permissions prepared under ${STANDARD_HOME_DIR}"