it-swarm.dev

Jak mohu nainstalovat pouze aktualizace zabezpečení z příkazového řádku?

Sudo apt-get upgrade nainstaluje všechny aktualizace, nejen aktualizace zabezpečení. Vím, že mohu pomocí Správce aktualizací vybrat pouze důležité aktualizace zabezpečení, existuje však způsob, jak to provést z příkazového řádku?

346
Michael Crenshaw

Balíček bezobslužné aktualizace poskytuje funkce pro automatickou instalaci aktualizací zabezpečení.

Můžete to použít, ale místo konfigurace automatické součásti byste ji mohli nazvat ručně:

Sudo unattended-upgrade -d --dry-run
Sudo unattended-upgrade -d

Pokud ji chcete místo toho spustit potichu:

Sudo unattended-upgrade

POZNÁMKA: Když voláte bezobslužnou aktualizaci, necháte "s" mimo konec.

To předpokládá, že balíček je nainstalován ve výchozím nastavení, což pravděpodobně je. Pokud ne, stačí:

Sudo apt-get install unattended-upgrades

Viz také /usr/share/doc/unattended-upgrades/README.md.

319
blueyed

Několik tipů, jak spravovat aktualizace

To platí jak pro Debian, tak pro Ubuntu, ale následují konkrétní pokyny pro Ubuntu.

  • Zobrazit pouze aktualizace zabezpečení:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    nebo

    Sudo unattended-upgrade --dry-run -d
    

    nebo

    /usr/lib/update-notifier/apt-check -p
    
  • Zobrazit všechny upgradovatelné balíčky

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Instalujte pouze aktualizace zabezpečení

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print $2'} | 
        xargs apt-get install
    

Poznámky:

  • Ubuntu někdy zobrazuje aktualizace zabezpečení, jako by přicházely z úložiště $ release-updates. To je pravda, protože vývojáři Ubuntu také tlačí aktualizace zabezpečení do úložiště $ release-updates, aby se urychlila jejich dostupnost.

    Pokud tomu tak je, můžete zobrazit následující aktualizace zabezpečení pouze takto:

    Sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    a

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print $2'}
    
  • Zkontrolujte, jaké služby je třeba po upgradu balíčku restartovat. Zjistěte, jaké balíčky budete upgradovat předem a naplánujte restartování/restartování. Problém je v tom, že pokud restartujete službu, může stále používat starší verzi knihovny (nejčastější důvod), která byla načtena do paměti před instalací nového balíčku, který opravuje chybu zabezpečení nebo cokoli jiného.

    checkrestart -v
    

    Mějte však na paměti, že checkrestart může obsahovat seznam procesů, které by neměly být nutně restartovány. Například služba PostgreSQL si může ve své paměti uchovávat odkaz na již smazaný soubor xlog, což není platný důvod pro restart služby.

    Proto dalším, spolehlivějším způsobem, jak to ověřit pomocí standardních utils, je následující malý bash skript, který jsem nehanebně ukradl před https://locallost.net/?p=2

    Kontroluje, zda spuštěné procesy v systému stále používají smazané knihovny na základě uchovávání kopií v aktivní paměti.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    
121
ILIV

nahradit /etc/apt/preferences s následujícím:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

nyní jednoduchý apt-get upgrade inovuje pouze všechny aktualizace zabezpečení.

Proč (a jak) to funguje: Soubor předvoleb připne všechny balíčky z distribuce Ubuntu na prioritu 50, díky čemuž budou méně žádoucí než již nainstalované balíčky. Soubory pocházející z úložiště zabezpečení mají výchozí (500) prioritu, takže jsou považovány za instalaci. To znamená, že pouze balíčky, které jsou považovány za vhodnější než aktuálně nainstalované, jsou aktualizace zabezpečení. Více informací o připnutí na apt_preferences manpage .

Můžete dočasně propagovat určitou distribuci aktualizací pomocí --target-release možnost, která pracuje s apt-get a aptitude (alespoň), které vám umožní připnout určitá vydání, aby byla způsobilá pro upgrade.

Pokud to chcete použít pouze pro skripty a neučiníte jej jako výchozí pro systém, můžete pravidla umístit na jiné místo a použít je místo toho:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Díky tomu bude apt hledat soubor předvoleb z jiného než výchozího umístění.

Soubor předvoleb uvedený jako příklad se nevztahuje na repozitáře třetích stran, pokud je chcete také připnout, můžete použít apt-cache policy pro snadné určení požadovaných klíčů pro připnutí.

46
Ressu

Následující je potvrzeno v Ubuntu 14.04 LTS.

Použijte unattended-upgrade balíček.

Podívejte se na soubor /etc/apt/apt.conf.d/50unattended-upgrades. V horní části by měla být sekce, která je:

// Automatically upgrade packages from these (Origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

Všimněte si, jak bylo nakonfigurováno tak, aby ve výchozím nastavení povolovalo pouze bezobslužné aktualizace bezpečnostních balíčků.

Upravit soubor /etc/apt/apt.conf.d/10periodic podobný:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Tím se jednou denně spustí automatické bezobslužné aktualizace zabezpečení.

Nyní ručně spustit: Sudo unattended-upgrade.

Chcete-li vyzkoušet jako suchý běh, aniž byste něco dělali: Sudo unattended-upgrade --dry-run.

Zdroj: https://help.ubuntu.com/14.04/serverguide/automatic-updates.html

12
vcardillo

Ačkoli je to celkem ošklivé, můžete deaktivovat všechna úložiště kromě úložiště zabezpečení a poté provést následující akce:

Sudo apt-get update && Sudo apt-get upgrade

Netestoval jsem to, ale teoreticky by našel pouze aktualizace v repozitáři a použil je ...

5
Stephen RC
  • apt-get update: pouze přečtěte záznamy v úložišti - podle existujícího seznamu. Je třeba zkontrolovat, co je nového.
  • apt-get upgrade: všechny aktualizace nainstalovaných balíčků bez modulů jádra. Žádná aktualizace vydání.
  • apt-get dist-upgrade: všechny aktualizace nainstalovaných balíčků také s jádrovými moduly. Žádná aktualizace vydání.
  • apt-get s parametrem -s: pouze test, žádné změny nebyly provedeny.
3
fuser

Na Debianech používám tento příkaz pouze k aktualizaci zabezpečení:

apt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )
2
keypress

Zde je skript, který toho dosahuje několika různými způsoby:

#!/usr/bin/env bash
set -e

# List upgradable packages
apt-get update
apt list --upgradable 2>/dev/null
# List security upgrades
test "$(apt-get upgrade -s -y)" && (apt-get upgrade -s -y)
# List upgradable apt packages then upgrade
apt-get update && apt-get upgrade -y  -V | grep '=>' | awk '{print$1}' && test "$(apt-get upgrade -y)"
0
Seth Bergman

Nemohu najít možnost v apt-get nebo aptitude, nicméně někdo měl na SuperUser stejnou otázk . Jedinou odpovědí je:

Check and adjust /etc/apt/apt.conf.d/50unattended-upgrade. 
Did you replace 'karmic' with the code name of your Ubuntu?

Neodpovědělo však, zda to fungovalo.

0
Ross