Come ottenere un elenco di aggiornamenti di sicurezza sulla riga di comando in Debian / Ubuntu


26

Nello strumento GUI è possibile ottenere un elenco di pacchetti con aggiornamenti di sicurezza. Questo può essere fatto dalla riga di comando in Debian o Ubuntu?

Normalmente potrei usare "apt-get upgrade" che mi mostrerebbe cosa viene aggiornato, ma vorrei sapere quali sono gli aggiornamenti di sicurezza.


solo per Ubuntu 14.04, 16.04 e 18.04 LTS: askubuntu.com/a/1128270/92504
— Angel

Risposte:


5

Utilizzare l'applicazione di aggiornamento automatico.

sudo unattended-upgrade

Ciò consente di installare automaticamente solo gli aggiornamenti di sicurezza, ma è possibile chiamarlo manualmente se necessario.


Mi piace questa risposta dato che in realtà hai pensato a cosa avrei potuto provare a fare e l'aggiornamento automatico è qualcosa che ho installato oggi per provare.
— Stephen Paulger,

13
In realtà non risponde alla domanda però.
— reinierpost,

4
Se questa è la risposta, allora la domanda era sbagliata. Per lo meno, si è evoluto e dovrebbe essere modificato di conseguenza e / o contrassegnato come duplicato di askubuntu.com/questions/194/…
— mc0e

39
apt-get upgrade -s | grep -i security

... è ciò che utilizza il plug-in Nagios check-apt per contare gli aggiornamenti di sicurezza in sospeso che è simile a quello che stai cercando.


Ma non riesce a trovare l'aggiornamento di sicurezza bash per shellshock?
— Linjunhalida,

3
Questo dà falsi positivi su pacchetti con "sicurezza" nel nome, come "xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security", ecc.
— Shnatsel

2
@Shnatsel per un controllo da riga di comando, è molto semplice ... puoi facilmente vedere se si tratta di un falso positivo o meno. Inoltre, se conosci il nome attuale del tuo sistema operativo, potresti scrivere grep -i xenial-securitye dovrebbe ridurre i falsi positivi praticamente a zero.
— Alexis Wilke,

1
@Shnatsel quindi grep Debian-Securitysarebbe una soluzione migliore?
— Pablo A

Questo è utile per ottenere il numero di regular;securityaggiornamenti disponibili. L' -popzione per elencare i nomi dei pacchetti disponibili per l'aggiornamento non distingue tuttavia tra aggiornamenti regolari e di sicurezza (almeno su 16.04) ... quindi questo non è un modo fattibile per ottenere un elenco di aggiornamenti di sicurezza disponibili per quanto posso dire.
— Mattpr

10

Su Ubuntu dovresti essere in grado di usare apt-check, è quello che popola il tuo motd con il numero di aggiornamenti di sicurezza disponibili.


2
Non riesco a vederlo su Debian o Ubuntu.
— Stephen Paulger,

5
apt-check è in / usr / lib / update-notifier /. Prova / usr / lib / update-notifier / apt-check - lettura umana per un messaggio semplice.
— u2702

2
Non sono convinto che mostri qualcosa di utile. Per ottenere l'elenco, è necessario aggiungere --package-names( -p), ma non sembra distinguere tra aggiornamenti regolari e aggiornamenti di sicurezza.
— Auspex,

5

Puoi ottenere un elenco con questo comando:

sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'

2
Hai inviato TUTTO l'output a in /dev/nullmodo da non fare il grepping di nulla!
— Auspex,

Questo sembra non funzionare con fidato. mostra invece tutti i pacchetti che devono essere aggiornati.
— Temibile punto e virgola

Immagino che ti mostrerebbe che cosa avrebbe fatto l'aggiornamento automatico e che se lo avessi configurato per fare solo aggiornamenti di sicurezza, forse questa ricetta avrebbe funzionato. La risposta è, nella migliore delle ipotesi, terribilmente incompleta.
— mc0e,

Oggi ho risolto questa necessità modificando un po 'apt-check. Dai un'occhiata a
— Paolo Perego,

3

Ho una versione modificata update-notifierche richiede uno switch aggiuntivo: --security-package-namesche genera solo i nomi dei pacchetti relativi alla sicurezza. Ce l'ho come sostanza (fino a quando non creo una richiesta di unione nel progetto pertinente in launchpad). Fino ad allora può essere eseguito come segue:

Correre

curl -s https://gist.githubusercontent.com/ahmadnazir/c2444d6b09fd7bb4963a13bc577d92a3/raw/0231b94a4e46abe0a5959de5f84feda76ad2eb9d/apt-check.py \
  | python /dev/stdin --security-package-names \
  | column -t -s , \
  | sort

Produzione

Ciò fornisce un output del formato: nome del pacchetto , versione installata e versione candidata :

...
thunderbird                          1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-gnome-support            1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en                1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en-us             1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
...

3

Basato sulla risposta di Fabrizio Regini sopra.

Per 12.04 / Preciso:

sudo unattended-upgrade --dry-run -d 2>&1 /dev/null | grep 'Checking' | grep security | awk '{ print $2 }'

Per 14.04 / Trusty:

sudo unattended-upgrade --dry-run -d | grep 'Checking' | grep security | awk '{ print $2 }'

1

E una variante si è confusa dopo aver letto le altre risposte - credo che questo soddisfi il problema dei falsi positivi e sia ragionevolmente leggero.

sudo unattended-upgrade --dry-run -d 2>/dev/null  | awk '/Checking/ && /archive:..*-security. / {print $2}'

0

Ritengo che rispondere alla domanda posta dall'OP sia come visualizzare l' elenco dei pacchetti e non come installare solo i pacchetti di sicurezza. Basandoti sulla risposta di @topdog, dovresti usare: /usr/lib/update-notifier/apt-check -p Dove la -pbandiera sta per pacchetti


1
questo elenca tutti i pacchetti e non solo gli aggiornamenti di sicurezza
— confiq

apt-check sembra non disponibile in Debian Jessie. Rimane sui sistemi Wheezy aggiornati ma le nuove installazioni non hanno più il notificatore di aggiornamento comune. Conosci un'alternativa?
— gennaio

@jan è ancora lì, come parte di update-notifier-common
— Auspex,

@Auspex Quel pacchetto non esiste più in Jessie. Esiste solo update-notifierun pacchetto di transizione obsoleto per gnome-packagekit. Vedi qui .
— gennaio

1
@jan Mi dispiace, ho preso la parola di Debian per questo. Ho cercato il file, packages.debian.org/… e me lo ha detto You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results., ma poi quando fai effettivamente clic sul link per quel risultato, ti dicePackage not available in this suite.
— Auspex,

0

Questi due comandi sputeranno l'elenco. Inoltra a wc -l per vedere quanti sono dietro. ;-)

grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s

È ancora valido per le distribuzioni precedenti o se si dispone di repository di aggiornamenti disattivati, ma la sicurezza è attiva:

sudo apt-get upgrade -s| grep ^Inst |grep Security 

Stai attento. Se si genera /tmp/security.list in questo modo mentre si esegue come root, si è vulnerabili a un attacco basato sul collegamento simbolico.
— mc0e

Non riesco a ottenere questo approccio (il primo blocco di codice) su Ubuntu 14.04. L' -oDir::Etc::Sourcelistopzione non sembra disabilitare il set standard di repository.
— mc0e

0

Penso che la risposta di @smin sia sostanzialmente un buon approccio, ma un po 'sciolto con la regex, come notato da @Shnatsel.

Cosa ne pensi di questo:

apt-get upgrade -q --dry-run \
| perl -ne 'm/^Inst (\S+) \S+ \(([^\)]+) Debian-Security:8/ && print "$1-$2\n"'

Questo elenca i nomi dei pacchetti insieme alle versioni che si desidera installare. È possibile estrarre -$2la dichiarazione di stampa se non si desidera le versioni lì.

[Probabilmente questo potrebbe essere reso un po 'più leggero usando awk invece di perl]


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.