Files
shop10/scripts/fix-shop-permissions.sh
T

53 lines
1.7 KiB
Bash

#!/bin/bash
# Права на каталог магазина для пользователя systemd (www-data)
# sudo bash "$SHOP_ROOT/scripts/fix-shop-permissions.sh"
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=shop-root.sh
source "$SCRIPT_DIR/shop-root.sh"
SHOP_SERVICE_USER="${SHOP_SERVICE_USER:-www-data}"
if [ "$(id -u)" -ne 0 ]; then
echo "Запустите от root: sudo bash $0"
exit 1
fi
if ! id "$SHOP_SERVICE_USER" &>/dev/null; then
echo "Ошибка: пользователь $SHOP_SERVICE_USER не найден"
exit 1
fi
echo "=== Права Shop: $SHOP_ROOT$SHOP_SERVICE_USER ==="
# CRLF из Windows → 203/EXEC в systemd
if [ -d "$SHOP_ROOT/scripts" ]; then
find "$SHOP_ROOT/scripts" -name '*.sh' -type f -exec sed -i 's/\r$//' {} +
fi
chown -R "$SHOP_SERVICE_USER:$SHOP_SERVICE_USER" "$SHOP_ROOT"
# Исполняемые скрипты (wait-postgres.sh для ExecStartPre)
if [ -d "$SHOP_ROOT/scripts" ]; then
chmod +x "$SHOP_ROOT"/scripts/*.sh 2>/dev/null || true
fi
# npm cache/logs для www-data
for dir in /var/www/.npm /var/www/.cache; do
mkdir -p "$dir"
chown -R "$SHOP_SERVICE_USER:$SHOP_SERVICE_USER" "$dir"
done
if [ -f "$SHOP_ROOT/.env" ]; then
chmod 640 "$SHOP_ROOT/.env"
chown "$SHOP_SERVICE_USER:$SHOP_SERVICE_USER" "$SHOP_ROOT/.env"
fi
# Родительские каталоги — traverse для www-data
chmod o+x /opt /opt/shop 2>/dev/null || true
echo "OK: владелец $SHOP_SERVICE_USER, скрипты +x"
echo "Проверка unit: grep ExecStartPre /etc/systemd/system/shop.service"
echo " sudo systemctl daemon-reload && sudo systemctl restart shop"