Autoupdates auf Linux Server aktivieren

von | Sep. 3, 2025 | Virtualisierung | 0 Kommentare

Autoupdates auf dem Linux Server aktivieren – Schritt-für-Schritt Anleitung Ubuntu

Heute zeigen wir Dir, wie Du auf Deinem Linux Ubuntu 24 Server ganz einfach automatische Updates aktivieren können, um Ihre Systeme sicher und aktuell zu halten. Autoupdates sind ein extrem wichtiger, aber oft unterschätzter Schutz gegen Angriffe durch veraltete Software. Wir haben ein praktisches Script entwickelt, das Du nur herunterladen, ausführbar machen und starten musst, um zwischen vollständigen Updates, nur sicherheitsrelevanten Updates oder keiner automatischen Updates zu wählen.

Good-to-Know-Themen

  • Das Script funktioniert zuverlässig auf frisch installierten Linux Ubuntu 24 Systemen.
  • Andere Varianten können nicht garantiert werden, aber wenn Probleme auftauchen, schreiben uns gerne auf GitHub oder in den Kommentaren.
  • Alle Befehle zum Copy-Paste findest Du in der Videobeschreibung.

YouTube Video

Best Practices

  • Regelmäßig Updates durchführen, um Sicherheitslücken zu schließen.
  • Nur sicherheitsrelevante Updates wählen, wenn Du vorsichtig starten möchten.
  • Komplette Autoupdates verwenden, wenn Du Wert auf maximale Sicherheit legen.

Wie funktioniert das Tool?

Das Tool verwendet ein Script, das auf dem Linux-Server ausgeführt wird. Durch die Ausführung des Scripts kann das System konfiguriert werden, um automatische Updates zu erhalten. Das Script bietet verschiedene Optionen, wie z.B. die Auswahl zwischen vollständigen Updates oder nur sicherheitsrelevanten Updates.

wget https://raw.githubusercontent.com/it-and-der-bar/YouTube/refs/heads/main/Eigener%20Server/Auto-Updates/auto-updates.sh
chmod +x auto-updates.sh
./auto-updates.sh

Durch die Ausführung dieses Scripts kann zwischen vollständigen Updates, nur sicherheitsrelevanten Updates oder keiner automatischen Aktualisierung gewählt werden. Dies bietet eine flexible Lösung für verschiedene Anforderungen und Bedürfnisse.

Vorteile von Autoupdates

Autoupdates bieten verschiedene Vorteile, wie z.B. die Gewährleistung der Sicherheit und Stabilität des Systems. Durch automatische Updates kann das System immer auf dem neuesten Stand gehalten werden, ohne dass manuelle Eingriffe erforderlich sind.

  • Sicherheitslücken werden geschlossen
  • Das System bleibt stabil und aktuell
  • Manuelle Eingriffe sind nicht erforderlich

Durch die Aktivierung von Autoupdates kann das System einfach und sicher konfiguriert werden, um immer auf dem neuesten Stand zu bleiben.

Wichtige Befehle für Einsteiger im Linux-Scripting

Das folgende Skript zeigt eine Reihe von wichtigen Befehlen, die für Einsteiger im Linux-Scripting relevant sind. Wir werden 4-8 dieser Befehle näher betrachten und ihre Syntax sowie ihren Nutzen erläutern.

1. if-Befehl

Der if-Befehl wird verwendet, um Bedingungen in einem Skript zu überprüfen. Die Syntax lautet:

if [ Bedingung ]; then Befehl; fi.

Beispiel:

if [ -f logo ]; then cat logo; else echo "Logo nicht gefunden"; fi.

Hier wird überprüft, ob eine Datei namens „logo“ existiert. Wenn ja, wird der Inhalt der Datei angezeigt, ansonsten wird eine Fehlermeldung ausgegeben.

2. get_auto_update_status-Funktion

Die Funktion get_auto_update_status ermittelt den aktuellen Auto-Update-Status des Systems. Sie überprüft, ob die Datei /etc/apt/apt.conf.d/20auto-upgrades existiert und ob bestimmte Zeilen in dieser Datei vorhanden sind. Die Funktion gibt dann einen der folgenden Werte zurück: „aus“, „aktiv“ oder „nur Sicherheitspatches“.

Beispiel: current_status=$(get_auto_update_status); echo "Auto Updates: $current_status";.

3. get_auto_reboot_status-Funktion

Die Funktion get_auto_reboot_status ermittelt den aktuellen Auto-Reboot-Status des Systems. Sie überprüft, ob die Datei /etc/apt/apt.conf.d/50unattended-upgrades existiert und ob bestimmte Zeilen in dieser Datei vorhanden sind. Die Funktion gibt dann einen der folgenden Werte zurück: „nicht konfiguriert“, „true“ oder „false“.

Beispiel: auto_reboot_status=$(get_auto_reboot_status); echo "Auto-Reboot: $auto_reboot_status";.

4. case-Befehl

Der case-Befehl wird verwendet, um verschiedene Aktionen basierend auf einer Eingabe auszuführen. Die Syntax lautet: case Variable in Wert1) Befehl1;; Wert2) Befehl2;; esac. Beispiel: case $option in 1) echo "Aktivierung aller automatischen Updates...";; 2) echo "Aktivierung automatischer Sicherheitsupdates...";; esac. Hier wird basierend auf der Eingabe in der Variable $option eine bestimmte Aktion ausgeführt.

5. apt-Befehle

Die apt-Befehle werden verwendet, um Pakete zu installieren, zu aktualisieren und zu konfigurieren. Beispiele: apt update, apt install -y unattended-upgrades, apt-get upgrade. Diese Befehle sind wichtig für die Systemadministration und das Management von Paketen.

6. systemctl-Befehle

Die systemctl-Befehle werden verwendet, um Systemdienste zu verwalten. Beispiele: systemctl enable unattended-upgrades, systemctl start unattended-upgrades, systemctl stop unattended-upgrades. Diese Befehle sind wichtig für die Verwaltung von Systemdiensten und deren Konfiguration.

7. sed-Befehl

Der sed-Befehl wird verwendet, um Textdateien zu bearbeiten und zu manipulieren. Beispiel: sed -i "s/alt/neu/" datei.txt. Hier wird der Text „alt“ durch „neu“ ersetzt in der Datei datei.txt.

8. read-Befehl

Der read-Befehl wird verwendet, um Benutzereingaben zu lesen und in Variablen zu speichern. Beispiel: read -p "Auswahl (1-4): " option. Hier wird die Eingabe des Benutzers in der Variable $option gespeichert.

  • if-Befehl
  • get_auto_update_status-Funktion
  • get_auto_reboot_status-Funktion
  • case-Befehl
  • apt-Befehle
  • systemctl-Befehle
  • sed-Befehl
  • read-Befehl

Voraussetzungen

  • Du musst Root-Rechte haben, um das Skript auszuführen.
  • Das Skript muss auf einem Linux-System mit apt-Paketmanager ausgeführt werden.

Das Skript

#!/bin/bash
# Funktion zur Ermittlung des aktuellen Auto-Update-Status
get_auto_update_status() {
    local status="aus"
    if [ -f /etc/apt/apt.conf.d/20auto-upgrades ]; then
        if grep -q 'APT::Periodic::Unattended-Upgrade "1"' /etc/apt/apt.conf.d/20auto-upgrades; then
            if [ -f /etc/apt/apt.conf.d/50unattended-upgrades ]; then
                # Wenn in der Konfiguration für 50unattended-upgrades Zeilen für Updates, Proposed oder Backports
                # vorhanden sind, die nicht auskommentiert sind, dann "aktiv", ansonsten "nur Sicherheitspatches"
                if grep -q '^[[:space:]]*"\${distro_id}:\${distro_codename}-updates";' /etc/apt/apt.conf.d/50unattended-upgrades || \
                   grep -q '^[[:space:]]*"\${distro_id}:\${distro_codename}-proposed";' /etc/apt/apt.conf.d/50unattended-upgrades || \
                   grep -q '^[[:space:]]*"\${distro_id}:\${distro_codename}-backports";' /etc/apt/apt.conf.d/50unattended-upgrades; then
                    status="aktiv"
                else
                    status="nur Sicherheitspatches"
                fi
            fi
        fi
    fi
    echo "$status"
}
# Funktion zur Ermittlung des aktuellen Auto-Reboot-Status
get_auto_reboot_status() {
    local status="nicht konfiguriert"
    if [ -f /etc/apt/apt.conf.d/50unattended-upgrades ]; then
        local reboot=$(grep 'Unattended-Upgrade::Automatic-Reboot' /etc/apt/apt.conf.d/50unattended-upgrades | grep -o '"[a-z]*"')
        reboot=${reboot//\"/}
        if [ -n "$reboot" ]; then
            status=$reboot
        fi
    fi
    echo "$status"
}
current_status=$(get_auto_update_status)
auto_reboot_status=$(get_auto_reboot_status)
echo "Auto Updates: $current_status"
echo "Auto-Reboot: $auto_reboot_status"
# Überprüfen, ob Root-Rechte vorliegen
if [ "$EUID" -ne 0 ]; then
  echo "Bitte als root ausführen (z.B. mit sudo)."
  exit 1
fi
echo "Bitte wählen Sie eine Option:"
echo "1) Aktivieren (Alle Updates)"
echo "2) Aktivieren (Nur Sicherheitsupdates)"
echo "3) Deaktivieren"
echo "4) Auto-Reboot ändern (aktuell: $auto_reboot_status)"
read -p "Auswahl (1-4): " option
case $option in
  1)
    echo "Aktivierung aller automatischen Updates..."
    apt update
    apt install -y unattended-upgrades
    # Periodische Konfiguration für automatische Updates
    cat <<'EOF' > /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
EOF
    # Konfiguration: Alle Update-Quellen aktivieren
    cat <<'EOF' > /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}:${distro_codename}-updates";
    "${distro_id}:${distro_codename}-proposed";
    "${distro_id}:${distro_codename}-backports";
};
Unattended-Upgrade::Mail "";
Unattended-Upgrade::Automatic-Reboot "true";
EOF
    systemctl enable unattended-upgrades
    systemctl start unattended-upgrades
    echo "Automatische Updates (alle Updates) wurden aktiviert."
    ;;
    
  2)
    echo "Aktivierung automatischer Sicherheitsupdates..."
    apt update
    apt install -y unattended-upgrades
    # Periodische Konfiguration für automatische Updates
    cat <<'EOF' > /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
EOF
    # Konfiguration: Nur Sicherheitsupdates aktivieren
    cat <<'EOF' > /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    // "${distro_id}:${distro_codename}-updates";
    // "${distro_id}:${distro_codename}-proposed";
    // "${distro_id}:${distro_codename}-backports";
};
Unattended-Upgrade::Mail "";
Unattended-Upgrade::Automatic-Reboot "true";
EOF
    systemctl enable unattended-upgrades
    systemctl start unattended-upgrades
    echo "Automatische Sicherheitsupdates wurden aktiviert."
    ;;
    
  3)
    echo "Deaktivierung automatischer Updates..."
    # Periodische Konfiguration auf deaktiviert setzen
    cat <<'EOF' > /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";
EOF
    systemctl disable unattended-upgrades
    systemctl stop unattended-upgrades
    echo "Automatische Updates wurden deaktiviert."
    ;;
    
  4)
    echo "Umschalten des Auto-Reboot-Parameters..."
    if [ -f /etc/apt/apt.conf.d/50unattended-upgrades ]; then
      # Aktuellen Auto-Reboot-Wert ermitteln
      current_reboot=$(grep 'Unattended-Upgrade::Automatic-Reboot' /etc/apt/apt.conf.d/50unattended-upgrades | grep -o '"[a-z]*"')
      current_reboot=${current_reboot//\"/}
      if [ "$current_reboot" = "true" ]; then
        new_reboot="false"
      else
        new_reboot="true"
      fi
      # Zeile in der Konfiguration anpassen
      sed -i "s/^\(Unattended-Upgrade::Automatic-Reboot \)\"[a-z]*\";/\1\"$new_reboot\";/" /etc/apt/apt.conf.d/50unattended-upgrades
      echo "Auto-Reboot wurde auf $new_reboot gesetzt."
    else
      echo "Die Datei /etc/apt/apt.conf.d/50unattended-upgrades wurde nicht gefunden."
      echo "Bitte aktivieren Sie zunächst automatische Updates."
    fi
    ;;
    
  *)
    echo "Ungültige Auswahl. Bitte führen Sie das Skript erneut aus und wählen Sie eine gültige Option (1-4)."
    exit 1
    ;;
esac

Fazit

Durch das Skript kannst Du einfach und schnell die Auto-Updates unter Linux aktivieren oder deaktivieren.

Ähnliche Themen