diff --git a/scripts/zmb-ad_auto-map-root.sh b/scripts/zmb-ad_auto-map-root.sh new file mode 100644 index 0000000..e2c0957 --- /dev/null +++ b/scripts/zmb-ad_auto-map-root.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +set -e + +SMB_CONF="/etc/samba/smb.conf" +USERMAP_FILE="/etc/samba/user.map" +KEYTAB_PATH="/root/admin.keytab" +SYSTEMD_SERVICE="/etc/systemd/system/kinit-admin.service" +SYSTEMD_TIMER="/etc/systemd/system/kinit-admin.timer" +BASH_PROFILE="/root/.bash_profile" + +# 1. Domain & Realm aus smb.conf auslesen +DOMAIN_NAME=$(awk -F '=' '/^[[:space:]]*workgroup[[:space:]]*=/ {gsub(/ /, "", $2); print $2}' "$SMB_CONF") +REALM_NAME=$(awk -F '=' '/^[[:space:]]*realm[[:space:]]*=/ {gsub(/ /, "", $2); print toupper($2)}' "$SMB_CONF") + +if [[ -z "$DOMAIN_NAME" || -z "$REALM_NAME" ]]; then + echo "[FEHLER] Konnte 'workgroup' oder 'realm' aus smb.conf nicht auslesen." + exit 1 +fi + +echo "[INFO] Domain: $DOMAIN_NAME" +echo "[INFO] Realm: $REALM_NAME" + +# 2. user.map schreiben +echo "!root = ${DOMAIN_NAME}\\Administrator" > "$USERMAP_FILE" +echo "[OK] Benutzerzuordnung geschrieben in $USERMAP_FILE" + +# 3. smb.conf patchen +if ! grep -q "^username map *= *$USERMAP_FILE" "$SMB_CONF"; then + sed -i "/^\[global\]/a username map = $USERMAP_FILE" "$SMB_CONF" + echo "[OK] smb.conf wurde um 'username map' ergänzt." +else + echo "[INFO] 'username map' bereits gesetzt." +fi + +# 4. Keytab erzeugen +echo "[INFO] Erzeuge Keytab für Administrator..." +samba-tool domain exportkeytab "$KEYTAB_PATH" --principal="administrator@$REALM_NAME" +chmod 600 "$KEYTAB_PATH" +echo "[OK] Keytab gespeichert unter $KEYTAB_PATH" + +# 5. systemd-Service + Timer für automatisches kinit +echo "[INFO] Erstelle systemd-Service & Timer..." + +cat > "$SYSTEMD_SERVICE" < "$SYSTEMD_TIMER" <> "$BASH_PROFILE" <