Contents
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.