Comment obtenir une liste des mises à jour de sécurité sur la ligne de commande dans Debian / Ubuntu

26

Dans l'outil GUI, vous pouvez obtenir une liste de packages avec des mises à jour de sécurité. Cela peut-il être fait sur la ligne de commande dans Debian ou Ubuntu?

Normalement, je pourrais utiliser "apt-get upgrade" qui me montrerait ce qui est mis à niveau, mais je voudrais savoir lesquels sont des mises à jour de sécurité.

Stephen Paulger
la source
juste pour Ubuntu 14.04, 16.04 et 18.04 LTS: askubuntu.com/a/1128270/92504
Angel

Réponses:

5

Utilisez l'application de mise à niveau sans assistance.

sudo unattended-upgrade

Cela vous permet d'installer uniquement les mises à jour de sécurité automatiquement, mais vous pouvez l'appeler manuellement si nécessaire.

Andy H
la source
J'aime cette réponse car vous avez réellement pensé à ce que j'essayais de faire et la mise à niveau sans assistance est quelque chose que j'ai installé aujourd'hui pour essayer.
Stephen Paulger
13
Cela ne répond cependant pas à la question.
reinierpost
4
Si telle est la réponse, la question était fausse. À tout le moins, il a évolué et devrait être modifié en conséquence et / ou marqué comme un double de askubuntu.com/questions/194/…
mc0e
39
apt-get upgrade -s | grep -i security

... est ce que le plug-in Nagios check-apt utilise pour compter les mises à jour de sécurité en attente, ce qui est similaire à ce que vous recherchez.

smin
la source
Mais il ne trouve pas de mise à jour de sécurité bash pour shellshock?
linjunhalida
3
Cela donne des faux positifs sur les paquets avec "security" dans le nom, tels que "xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security", etc.
Shnatsel
2
@Shnatsel pour une vérification en ligne de commande, c'est très simple ... vous pouvez facilement voir s'il s'agit d'un faux positif ou non. De plus, si vous connaissez le nom actuel de votre système d'exploitation, vous pouvez écrire grep -i xenial-securityet cela devrait réduire le faux positif à peu près à zéro.
Alexis Wilke
1
@Shnatsel grep Debian-Securityserait donc une meilleure solution?
Pablo A
Ceci est utile pour obtenir le nombre de regular;securitymises à jour disponibles. L' -poption de répertorier les noms de packages disponibles pour la mise à jour ne fait cependant pas de distinction entre les mises à jour régulières et les mises à jour de sécurité (au moins le 16.04) ... donc ce n'est pas un moyen viable d'obtenir une liste des mises à jour de sécurité disponibles pour autant que je sache.
mattpr
10

Sur ubuntu, vous devriez pouvoir utiliser apt-check, c'est celui qui remplit votre motd avec le nombre de mises à jour de sécurité disponibles.

topdog
la source
2
Je ne peux pas voir ça sur Debian ou Ubuntu.
Stephen Paulger
5
apt-check se trouve dans / usr / lib / update-notifier /. Essayez / usr / lib / update-notifier / apt-check --human-readable pour un message simple.
u2702
2
Je ne suis pas convaincu que cela montre quoi que ce soit d'utile. Pour obtenir la liste, vous devez ajouter --package-names( -p), mais cela ne semble pas faire la différence entre les mises à jour régulières et les mises à jour de sécurité.
Auspex
5

Vous pouvez obtenir une liste avec cette commande:

sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'
Fabrizio Regini
la source
2
Vous avez envoyé TOUTES les sorties pour /dev/nullne rien saluer!
Auspex
Cela ne semble pas fonctionner avec fidèle. il montre à la place tous les packages qui doivent être mis à jour.
Point-virgule
Je suppose que cela vous montrerait ce que la mise à niveau sans assistance allait faire, et si vous l'aviez configuré pour ne faire que des mises à jour de sécurité, peut-être que cette recette fonctionnerait. Mais la réponse est au mieux terriblement incomplète.
mc0e
Aujourd'hui, j'ai résolu ce besoin de modifier un peu apt-check. Vérifiez cet essentiel: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
Paolo Perego
3

J'ai une version modifiée update-notifierqui prend un commutateur supplémentaire: --security-package-namesqui ne produit que les noms des packages liés à la sécurité. Je l'ai en tant qu'essentiel (jusqu'à ce que je crée une demande de fusion dans le projet correspondant dans le tableau de bord). Jusque-là, il peut être exécuté comme suit:

Courir

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

Sortie

Cela donne une sortie au format: nom du package , version installée et version candidate :

...
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
...
mandark
la source
3

Basé sur la réponse de Fabrizio Regini ci-dessus.

Pour 12.04 / Précis:

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

Pour 14.04 / Trusty:

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

Et une variante s'est effondrée après avoir lu les autres réponses - je crois que cela répond au problème des faux positifs et est raisonnablement léger.

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

Je crois que la réponse à la question posée par l'OP est de savoir comment voir la liste des packages, et non comment installer uniquement les packages de sécurité. S'appuyant sur la réponse de @topdog Vous devez utiliser: /usr/lib/update-notifier/apt-check -p Où le -pdrapeau représente les packages

alonisser
la source
1
cela répertorie tous les packages et pas seulement les mises à jour de sécurité
confiq
apt-check semble indisponible dans Debian Jessie. Il reste sur les systèmes Wheezy mis à jour mais les nouvelles installations n'ont plus le commun update-notifier. Connaissez-vous une alternative?
janvier
@jan il est toujours là, dans le cadre de update-notifier-common
Auspex
@Auspex Ce package n'existe plus dans Jessie. Il n'y a que update-notifierce qui est un paquet de transition obsolète gnome-packagekit. Voyez ici .
janvier
1
@jan Désolé, j'ai pris la parole de debian pour cela. J'ai recherché le fichier, packages.debian.org/… et il m'a dit You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results., mais quand vous cliquez sur le lien pour ce résultat, il vous ditPackage not available in this suite.
Auspex
0

Ces deux commandes cracheront la liste. Dirigez-vous vers wc -l pour voir combien sont derrière. ;-)

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

Toujours valide pour les distributions plus anciennes ou si vous avez désactivé les référentiels de mise à jour, mais la sécurité est activée:

sudo apt-get upgrade -s| grep ^Inst |grep Security 
flickerfly
la source
Faites attention. Si vous générez /tmp/security.list de cette façon lors de l'exécution en tant que root, vous êtes vulnérable à une attaque basée sur un lien symbolique.
mc0e
Je ne peux pas obtenir cette approche (le premier bloc de code) sur Ubuntu 14.04. L' -oDir::Etc::Sourcelistoption ne semble pas désactiver l'ensemble standard de référentiels.
mc0e
0

Je pense que la réponse de @smin est fondamentalement une bonne approche, mais un peu lâche avec l'expression régulière, comme l'a noté @Shnatsel.

Que dis-tu de ça:

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

Cela répertorie les noms des packages ainsi que les versions que vous souhaitez installer. Vous pouvez retirer -$2la déclaration d'impression si vous ne voulez pas que les versions s'y trouvent.

[Cela pourrait probablement être rendu un peu plus léger en utilisant awk au lieu de perl]

mc0e
la source