|
@@ -12,6 +12,12 @@
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
+# ── Configuration ─────────────────────────────────────────────────────────
|
|
|
|
|
+DOCROOT="/var/www/html"
|
|
|
|
|
+APACHE_USER="www-data"
|
|
|
|
|
+APACHE_GROUP="www-data"
|
|
|
|
|
+APACHE_CONF="/etc/apache2/conf-available/dev.conf"
|
|
|
|
|
+
|
|
|
# ── Colors for output ─────────────────────────────────────────────────────
|
|
# ── Colors for output ─────────────────────────────────────────────────────
|
|
|
RED='\033[0;31m'
|
|
RED='\033[0;31m'
|
|
|
GREEN='\033[0;32m'
|
|
GREEN='\033[0;32m'
|
|
@@ -52,12 +58,6 @@ fi
|
|
|
echo ""
|
|
echo ""
|
|
|
echo "Note: sudo commands will prompt for your password if required."
|
|
echo "Note: sudo commands will prompt for your password if required."
|
|
|
|
|
|
|
|
-# ── Configuration ─────────────────────────────────────────────────────────
|
|
|
|
|
-DOCROOT="/home/josef/Code"
|
|
|
|
|
-APACHE_USER="www-data"
|
|
|
|
|
-APACHE_GROUP="www-data"
|
|
|
|
|
-APACHE_CONF="/etc/apache2/conf-available/dev.conf"
|
|
|
|
|
-
|
|
|
|
|
# ── 1. Install Apache, PHP, and required modules ──────────────────────────
|
|
# ── 1. Install Apache, PHP, and required modules ──────────────────────────
|
|
|
echo ""
|
|
echo ""
|
|
|
echo "→ Installing Apache (apache2), PHP, and required modules..."
|
|
echo "→ Installing Apache (apache2), PHP, and required modules..."
|
|
@@ -100,6 +100,24 @@ sudo setfacl -R -d -m g:"$APACHE_GROUP":r-x "$DOCROOT"
|
|
|
|
|
|
|
|
echo -e "${GREEN}✓${NC} Permissions configured (ACLs set for $CURRENT_USER and $APACHE_USER)"
|
|
echo -e "${GREEN}✓${NC} Permissions configured (ACLs set for $CURRENT_USER and $APACHE_USER)"
|
|
|
|
|
|
|
|
|
|
+# Grant traverse-only (--x) access on every ancestor directory above DOCROOT
|
|
|
|
|
+# (e.g. /home/josef) so Apache can reach it. This is required when DOCROOT
|
|
|
|
|
+# lives under a user's home directory, since home dirs are typically 750 and
|
|
|
|
|
+# ACLs on DOCROOT itself don't help if a parent blocks the path.
|
|
|
|
|
+echo ""
|
|
|
|
|
+echo "→ Ensuring '$APACHE_USER' can traverse into $DOCROOT..."
|
|
|
|
|
+
|
|
|
|
|
+PARENT_DIR="$(dirname "$DOCROOT")"
|
|
|
|
|
+while [[ "$PARENT_DIR" != "/" && -n "$PARENT_DIR" ]]; do
|
|
|
|
|
+ if ! sudo -u "$APACHE_USER" test -x "$PARENT_DIR" 2>/dev/null; then
|
|
|
|
|
+ sudo setfacl -m u:"$APACHE_USER":--x "$PARENT_DIR"
|
|
|
|
|
+ echo " Granted traverse (--x) access on $PARENT_DIR"
|
|
|
|
|
+ fi
|
|
|
|
|
+ PARENT_DIR="$(dirname "$PARENT_DIR")"
|
|
|
|
|
+done
|
|
|
|
|
+
|
|
|
|
|
+echo -e "${GREEN}✓${NC} Traverse access confirmed for $APACHE_USER"
|
|
|
|
|
+
|
|
|
# ── 4. Create/update Apache configuration ─────────────────────────────────
|
|
# ── 4. Create/update Apache configuration ─────────────────────────────────
|
|
|
echo ""
|
|
echo ""
|
|
|
echo "→ Creating Apache configuration: $APACHE_CONF"
|
|
echo "→ Creating Apache configuration: $APACHE_CONF"
|