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.