Udržování vašeho systému v aktuálním stavu je důležitým faktorem pro kohokoli od jednoduchých uživatelů desktopů, vývojářů, systémových administrátorů; no, přiznejme si to, kdokoli se zařízením, které je zvláště připojeno k internetu. Debian ve výchozím nastavení není nastaven na automatické aktualizace. S povolením a konfigurací balíčků bezobslužných aktualizací však můžete snadno použít aktualizace zabezpečení, balíčků nebo dokonce nových funkcí snadným, jednoduchým a efektivním způsobem, pokud nemáte vždy čas kontrolovat nebo zapomínat. Důrazně se doporučuje povolit toto pouze kvůli bezpečnosti.
Následující návod ukáže, jak nainstalovat nebo povolit a nakonfigurovat bezobslužné upgrady na Debian 11 .
Předpoklady
- Doporučený operační systém: Debian 11 Bullseye nebo Debian 10, 9 nebo jakýkoli stále aktualizovaný systém Debian.
- Uživatelský účet: Uživatelský účet s právy sudo nebo přístup root (příkaz su) .
Aktualizace operačního systému
Aktualizujte svůj Debian 11 operační systém, abyste se ujistili, že všechny existující balíčky jsou aktuální:
sudo apt update && sudo apt upgrade
Root nebo Sudo Access
Ve výchozím nastavení, když vytvoříte svůj účet při spuštění s Debianem v porovnání s jinými distribucemi, automaticky nezíská status sudoers. Musíte mít přístup k heslu uživatele root použijte příkaz su nebo navštivte náš tutoriál Jak přidat uživatele do Sudoers na Debianu.
Instalace balíčku bezobslužných upgradů
Za prvé, pokud jste nenainstalovali bezobslužné aktualizace nebo jste odstranili balíček, musíte jej znovu nainstalovat pomocí následujícího příkazu:
sudo apt install unattended-upgrades
Ve výchozím nastavení by to mělo být nainstalováno.
Budete také muset nainstalovat balíček apt-config-auto-update pokud chcete, aby se váš systém Debian restartoval po použití aktualizací vyžadujících automatické restartování systému. Chcete-li to provést, použijte následující příkaz:
sudo apt install apt-config-auto-update
Uživatelé notebooků si budou muset nainstalovat balíček powermgmt-base pokud plánujete využít jakékoli bezobslužné možnosti využívající možnosti baterie.
sudo apt install powermgmt-base
Po dokončení instalace by měl Debian ve výchozím nastavení spustit proces. Pro ověření použijte následující příkaz:
sudo systemctl status unattended-upgrades
Příklad výstupu:
Následující příkazy systemctl vysvětlí možnosti, které musíte spustit, zastavit, povolit při spuštění, zakázat při spuštění nebo restartovat službu bezobslužných upgradů:
Spuštění bezobslužných služeb:
sudo systemctl start unattended-upgrades
Zastavení bezobslužných služeb:
sudo systemctl stop unattended-upgrades
Povolení bezobslužných služeb při spouštění:
sudo systemctl enable unattended-upgrades
Zakázání bezobslužných služeb při spouštění:
sudo systemctl disable unattended-upgrades
Restartování bezobslužných služeb:
sudo systemctl restart unattended-upgrades
Konfigurace bezobslužných upgradů
Po kontrole nebo instalaci bezobslužného upgradu nyní upravíme 50 bezobslužných upgradů konfigurační soubor pomocí vašeho oblíbeného terminálového textového editoru. Odtud můžete konfigurovat bezobslužné upgrady z některých příkladů v tomto tutoriálu a prozkoumat některé další méně používané možnosti; dokumentace v konfiguračním souboru poskytuje dobré vysvětlení každého nastavení samo o sobě.
Můžete to provést pomocí následujícího příkazu:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Příklad otevření okna a první pohled:
Povolené zdroje a aktualizace
Balíček unattended-upgrades nezpracuje řádky začínající // syntaxí . Ve výchozím nastavení se automaticky instalují pouze aktualizace zabezpečení, jak je znázorněno na řádcích níže. Nejlepší by bylo, kdybyste aktualizace zabezpečení nikdy nezakázali; zde však můžete přidat další možnosti.
Chcete-li například zahrnout normální aktualizace balíčků, které jsou ve výchozím nastavení vypnuté:
Změnit z:
// "${distro_id}:${distro_codename}-updates";
Změnou aktivujte:
"${distro_id}:${distro_codename}-updates";
Příklad konfigurace, která je součástí výchozího nastavení (doporučeno pro většinu uživatelů):
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
Příklad v živém prostředí:
Chcete-li to ještě více rozebrat, možnosti, které můžete povolit kromě výchozího nastavení:
- “${distro_id}:${distro_codename}-updates“; – tato možnost bude stejná jako spuštění aktualizace sudo apt ve vašem terminálu pro stahování aktualizací balíčků. Nejčastěji se to nedoporučuje, protože některé balíčky vyžadují ruční zásah při upgradu. Pokud nastavíte tuto sadu na černou listinu určitých balíčků, víte, že při aktualizaci bez dozoru způsobí problémy, jak je vysvětleno dále v tutoriálu.
- “${distro_id}:${distro_codename}-proposed“; – tato možnost stáhne aktualizace z testování, toto se rozhodně nedoporučuje všem uživatelům, protože balíčky jsou nestabilní a nemusí se dokonce dostat do živého prostředí.
- “${distro_id}:${distro_codename}-backports“; – tato možnost povolí zpětné porty, které se používají hlavně k aktualizaci balíčků, což je obvykle stabilnější než navrhované, ale pro všeobecné pravidlo byste si to měli před zapnutím prozkoumat, protože to může způsobit nestabilitu.
Vyloučit balíčky z aktualizací
S aktualizacemi se některé balíčky mohou stát nestabilními nebo se mohou úplně rozbít, pokud na proces nedohlížíte. Například automatický upgrade Nginx pro uživatele s kompilovaným ModSecurity se přeruší; často zde nebudete muset nic vyplňovat; toto je pouze pro dedikované servery, na kterých běží balíčky, které vyžadují zásah.
Všimněte si, že je vždy lepší použít výrazy python pro shodu balíčků:
Příklad od
// Python regular expressions, matching packages to exclude from upgrading
Unattended-Upgrade::Package-Blacklist {
// The following matches all packages starting with linux-
// "linux-";
// Use $ to explicitely define the end of a package name. Without
// the $, "libc6" would match all of them.
// "libc6$";
// "libc6-dev$";
// "libc6-i686$";
Příklad změny také vylučuje webovou aplikaci Nginx:
// Python regular expressions, matching packages to exclude from upgrading
Unattended-Upgrade::Package-Blacklist {
// The following matches all packages starting with linux-
"nginx";
// Use $ to explicitely define the end of a package name. Without
// the $, "libc6" would match all of them.
// "libc6$";
// "libc6-dev$";
// "libc6-i686$";
Příklad v živém prostředí:
Odstranit nepoužívané závislosti
Dále přejděte na automatické odstranění nepoužívaných závislostí které mají tři možnosti; výchozí hodnota je false. Volitelně však můžete tato nastavení povolit. V zásadě platí, že pokud automaticky aktualizujete balíček, závislosti a/nebo jádro a staré již nepoužívané zbytky již nejsou vyžadovány; automaticky je vyčistí a odstraní. To je obvykle pro většinu uživatelů vždy bezpečné.
Pokud si to nepřejete udělat, ponechte řádek nedotčený.
Příklad z:
// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
// Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Do automatic removal of newly unused dependencies after the upgrade
// Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
// Unattended-Upgrade::Remove-Unused-Dependencies "false";
Příklad změny:
// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Do automatic removal of newly unused dependencies after the upgrade
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Příklad v živém prostředí:
E-mailová upozornění
Nastavení e-mailových upozornění se doporučuje, zejména pokud servery běží bez obsluhy. V nastavení je skvělou možností vybrat e-mail „při změně“, takže budete dostávat upozornění pouze na změnu softwaru. Případně můžete zvolit „pouze při chybě“, takže budete dostávat upozornění pouze v případě, že dojde k chybě.
Doporučuje se vybrat při změně, protože byste měli vědět, jaké aktualizace se ve vašem systému dějí. Zde můžete také nastavit e-mailovou adresu:
Upozorňujeme, že to bude vyžadovat, abyste měli na serveru nastavené e-maily, aby upozornění fungovala.
Příklad z:
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "[email protected]"
//Unattended-Upgrade::Mail "";
Příklad změny:
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "[email protected]"
Unattended-Upgrade::Mail "[email protected]";
Příklad v živém prostředí:
Druhou možností pro e-mailová upozornění je, o čem se vlastně hlásit. Pro většinu uživatelů stačí pouze při chybě nebo při změně; nastavení hlášení na vždy způsobí potenciálně mnoho nechtěných e-mailů, ale u kritických systémů to může být opodstatněné.
Níže je uveden příklad pro only-on-error, který je vhodný pro uživatele stolních počítačů v neprodukčním prostředí/prostředí webového serveru:
Příklad z:
// Set this value to one of:
// "always", "only-on-error" or "on-change"
// If this is not set, then any legacy MailOnlyOnError (boolean) value
// is used to chose between "only-on-error" and "on-change"
//Unattended-Upgrade::MailReport "on-change";
Příklad změny:
// Set this value to one of:
// "always", "only-on-error" or "on-change"
// If this is not set, then any legacy MailOnlyOnError (boolean) value
// is used to chose between "only-on-error" and "on-change"
Unattended-Upgrade::MailReport "only-on-error";
Příklad v živém prostředí:
Možnosti automatického restartu
Přejděte dolů na možnost Automatický restart. Ve výchozím nastavení je toto vypnuto a téměř všechny stolní počítače a zejména servery se speciálním softwarem a/nebo službami toto nebudou mít zapnuté, protože to může často způsobit velké přerušení těchto softwarových služeb.
Přesto předpokládejme, že vaše služby slouží jen několika lidem. V takovém případě může být vhodné tuto možnost zapnout. Systémy Linux/Ubuntu se typicky restartují pouze kvůli aktualizaci jádra Linuxu, která je kritická, ale mám automatická upozornění na změnu. Budu vědět, že to bude potřeba udělat, a mohu to naplánovat.
Příklad z:
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";
Příklad změny:
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
Unattended-Upgrade::Automatic-Reboot "true";
Příklad v živém prostředí:
Pokud tuto možnost povolíte, můžete nastavit restart s přihlášenými uživateli nebo ne. Toto by mělo být zakázáno, protože přihlášení uživatelé a nucení odhlášení z důvodu restartu mohou způsobit přerušení pracovního prostředí, nemluvě o frustraci přihlášeného uživatele.
Pokud byste to však preferovali na:
Příklad z:
// Automatically reboot even if there are users currently logged in
// when Unattended-Upgrade::Automatic-Reboot is set to true
//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
Příklad změny:
// Automatically reboot even if there are users currently logged in
// when Unattended-Upgrade::Automatic-Reboot is set to true
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
Příklad v živém prostředí:
Pokud máte malý server v určitém časovém pásmu a víte, že je vhodný čas restartovat, řekněme ve 2 hodiny ráno a poté upravte následující:
Příklad z:
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Příklad změny:
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Příklad v živém prostředí:
Konečný kontrolní seznam pro bezobslužné upgrady
Chcete-li se ujistit, že soubory automatické aktualizace jsou přítomny v adresáři /etc/apt/apt.conf.d/ pomocí následujících příkazů:
cd /etc/apt/apt.conf.d
ls
Příklad výstupu:
ls
00CDMountPoint 10periodic 20packagekit 60icons
00trustcdrom 15update-stamp 20snapd.conf 70debconf
01autoremove 20archive 50appstream
01autoremove-kernels 20listchanges 50unattended-upgrades
Nyní otevřete soubor /etc/apt/apt.conf.d/20auto-upgrades :
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Příklad výstupu:
V následujícím souboru byste měli vidět kód příkazu níže. Pokud ne, zkopírujte a vložte:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Ve výchozím nastavení je povoleno nastavení „1“. Pokud ji však chcete deaktivovat, můžete ji změnit na „0“. Pokud nechcete kontrolovat denně, změňte číslo na „2“, díky čemuž budou automatické aktualizace kontrolovány každý druhý den. V našem návodu jsme ji například jen my změnili na 2. Doporučujeme ponechat tuto sadu na „1“:
Příklad v živém prostředí:
Uložte soubor (CTRL+O), poté stiskněte Y , poté pro ukončení stiskněte (CTRL+X) pro ukončení textového editoru.
Vytvořit Cronjob pro bezobslužné upgrady
Volitelně, pokud chcete mít plnou kontrolu nad načasováním vašich automatických upgradů, můžete vytvořit cronjob. Chcete-li to provést, nejprve otevřete crontab:
sudo crontab -e
Dále přidejte tento řádek na konec poslední položky; „načasování“ můžete libovolně upravit. Pokud s Linuxem začínáte, navštivte stránku Crontab.Guru, kde můžete získat pomoc, provést a otestovat nastavení cronu.
Níže bude ukázáno spuštění přesně každý 3. den, ve 4:00.
Příklad:
00 04 * * */3 /usr/bin/unattended-upgrade -v
Příklad v živém prostředí:
Uložte soubor (CTRL+O), poté stiskněte Y , poté pro ukončení stiskněte (CTRL+X) pro ukončení textového editoru.
Jak získat přístup k protokolům bezobslužných upgradů
A konečně, unattended-upgrades se zapisuje do svého adresáře, takže pokud chcete v souborech protokolu zkontrolovat nějaké problémy a najít chyby, najdete jej na následující cestě:
/var/log/unattended-upgrades/
Další nástroje – Zkontrolujte Restart (Debian Goodies)
Vynikajícím programem pro kontrolu, zda jste se vrátili na server, na kterém byly použity automatické aktualizace namísto kontroly protokolů nebo e-mailů, je spuštění příkazu checkrestart který vás bude informovat, pokud nějaké balíčky vyžadují restart.
Chcete-li nainstalovat checkrestart, spusťte následující příkaz:
sudo apt install debian-goodies -y
Nyní spusťte následující příkaz pro kontrolu balíčků vyžadujících restartování:
sudo checkrestart
Příklad výstupu:
Found 0 processes using old versions of upgraded files
Jak vidíte, stroj, který výukový program používá, je aktuální; pokud by však něco vyžadovalo ruční restart, bylo by to uvedeno zde ve výstupu.