Jak uzyskać listę aktualizacji zabezpieczeń w wierszu poleceń w Debian / Ubuntu

26

W narzędziu GUI możesz uzyskać listę pakietów z aktualizacjami bezpieczeństwa. Czy można to zrobić w wierszu poleceń w Debianie lub Ubuntu?

Zwykle mogę użyć „apt-get upgrade”, który pokaże mi, co jest aktualizowane, ale chciałbym wiedzieć, które to aktualizacje zabezpieczeń.

Stephen Paulger
źródło
tylko dla Ubuntu 14.04, 16.04 i 18.04 LTS: askubuntu.com/a/1128270/92504
Angel

Odpowiedzi:

5

Użyj aplikacji nienadzorowanej aktualizacji.

sudo unattended-upgrade

Umożliwia to automatyczne instalowanie tylko aktualizacji zabezpieczeń, ale w razie potrzeby można je wywołać ręcznie.

Andy H.
źródło
Podoba mi się ta odpowiedź, ponieważ tak naprawdę myślałeś o tym, co mogę zrobić, a uaktualnienie nienadzorowane to coś, co zainstalowałem dzisiaj, aby wypróbować.
Stephen Paulger,
13
Jednak tak naprawdę nie odpowiada na pytanie.
reinierpost
4
Jeśli to jest odpowiedź, pytanie było błędne. Przynajmniej ewoluował i powinien być odpowiednio edytowany i / lub oznaczony jako duplikat askubuntu.com/questions/194/…
mc0e
39
apt-get upgrade -s | grep -i security

... jest tym, czego używa wtyczka Nagios check-apt do liczenia oczekujących aktualizacji zabezpieczeń, które są podobne do tego, czego szukasz.

uśmiechać się
źródło
Ale nie może znaleźć aktualizacji zabezpieczeń bash dla shellshock?
linjunhalida
3
Daje to fałszywe alarmy dla pakietów z „security” w nazwie, takich jak „xml-security-c-utils”, „debian-security-support”, „modsecurity-crs”, „security-node” itp.
Shnatsel
2
@ Shnatsel do sprawdzania wiersza poleceń, to bardzo łatwe ... możesz łatwo sprawdzić, czy jest to fałszywie dodatni, czy nie. Ponadto, jeśli znasz obecną nazwę swojego systemu operacyjnego, możesz napisać grep -i xenial-securityi powinno to zredukować liczbę fałszywie dodatnich do prawie zera.
Alexis Wilke
1
@Shnatsel, więc grep Debian-Securitybyłoby lepszym rozwiązaniem?
Pablo A
Jest to przydatne do uzyskania liczby regular;securitydostępnych aktualizacji. -pOpcja do listy nazw pakietów dostępnych dla aktualizacji nie rozróżniają zwykłych i bezpieczeństwa aktualizacjach jednak (przynajmniej na 16.04) ... więc nie jest to opłacalne sposób, aby uzyskać listę dostępnych aktualizacji zabezpieczeń o ile mogę powiedzieć.
mattpr
10

Na Ubuntu powinieneś być w stanie użyć apt-check, to ten, który wypełnia twój motd liczbą dostępnych aktualizacji bezpieczeństwa.

topdog
źródło
2
Nie widzę tego na Debianie ani Ubuntu.
Stephen Paulger
5
apt-check znajduje się w / usr / lib / update-notifier /. Spróbuj / usr / lib / update-notifier / apt-check --human-readable, aby uzyskać prostą wiadomość.
u2702
2
Nie jestem przekonany, że pokazuje coś pożytecznego. Aby uzyskać listę, musisz dodać --package-names( -p), ale wydaje się, że nie rozróżnia ona zwykłych aktualizacji od aktualizacji bezpieczeństwa.
Auspex,
5

Możesz uzyskać listę za pomocą tego polecenia:

sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'
Fabrizio Regini
źródło
2
Wysłałeś WSZYSTKIE dane wyjściowe, aby /dev/nullnic nie było grep!
Auspex,
To nie działa z zaufanym. pokazuje wszystkie pakiety, które zamiast tego wymagają aktualizacji.
Przerażony średnikiem
Myślę, że to pokaże ci, co zamierza zrobić aktualizacja bez nadzoru, a jeśli skonfigurowałeś ją tylko do aktualizacji zabezpieczeń, może ten przepis zadziałałby. Odpowiedź jest jednak w najlepszym razie żałośnie niepełna.
mc0e,
Dziś rozwiązałem tę potrzebę modyfikując trochę apt-check. Sprawdź tę treść: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
Paolo Perego
3

Mam zmodyfikowaną wersję, update-notifierktóra przyjmuje dodatkowy przełącznik: --security-package-namesktóry wyświetla tylko nazwy pakietów związanych z bezpieczeństwem. Mam to jako istotę (dopóki nie utworzę żądania scalenia w odpowiednim projekcie w starterze). Do tego czasu można go uruchomić w następujący sposób:

Biegać

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

Wydajność

Daje to wynik formatu: nazwa pakietu , zainstalowana wersja i wersja kandydująca :

...
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
źródło
3

Na podstawie powyższej odpowiedzi Fabrizio Regini.

Dla 12.04 / Precyzja:

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

W przypadku 14.04 / Trusty:

sudo unattended-upgrade --dry-run -d | grep 'Checking' | grep security | awk '{ print $2 }'
blazerwy
źródło
1

I wariant połączył się po przeczytaniu innych odpowiedzi - uważam, że to rozwiązuje problem fałszywie pozytywny i jest dość lekki.

sudo unattended-upgrade --dry-run -d 2>/dev/null  | awk '/Checking/ && /archive:..*-security. / {print $2}'
zadzwonić
źródło
0

Uważam, że odpowiadając na pytanie, jakie OP zadaje, jak wyświetlić listę pakietów, a nie jak instalować tylko pakiety bezpieczeństwa. Opierając się na odpowiedzi @topdog Powinieneś użyć: /usr/lib/update-notifier/apt-check -p Gdzie -pflaga oznacza pakiety

alonisser
źródło
1
zawiera listę wszystkich pakietów, a nie tylko aktualizacje zabezpieczeń
confiq
apt-check wydaje się niedostępny w Debian Jessie. Pozostaje na zaktualizowanych systemach Wheezy, ale nowe instalacje nie mają już wspólnego programu aktualizującego-powiadamiającego. Czy znasz alternatywę?
stycznia
@jan wciąż tam jest, jako część update-notifier-common
Auspex,
@Auspex Ten pakiet nie istnieje już w Jessie. Jest tylko to, update-notifierco jest przestarzałym pakietem przejściowym gnome-packagekit. Zobacz tutaj .
sty
1
@jan Przepraszamy, wziąłem na to słowo Debiana. Szukałem pliku paczek.debian.org/... i powiedział mi You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results., ale kiedy Package not available in this suite.
kliknąłeś
0

Te dwa polecenia wyplują listę. Przeciągnij do wc -l, aby zobaczyć, ile jest za nimi. ;-)

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

Nadal obowiązuje dla starszych dystrybucji lub jeśli masz wyłączone repozytorium aktualizacji, ale zabezpieczenia włączone:

sudo apt-get upgrade -s| grep ^Inst |grep Security 
Flickerfly
źródło
Bądź ostrożny. Jeśli wygenerujesz /tmp/security.list w ten sposób podczas działania jako root, jesteś podatny na atak oparty na dowiązaniu symbolicznym.
mc0e
Nie mogę uzyskać tego podejścia (pierwszy blok kodu) na Ubuntu 14.04. Ta -oDir::Etc::Sourcelistopcja nie wyłącza standardowego zestawu repozytoriów.
mc0e
0

Myślę, że odpowiedź @smin jest zasadniczo dobrym podejściem, ale nieco luźnym z wyrażeniem regularnym, jak zauważył @Shnatsel.

Co powiesz na to:

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

Zawiera listę nazw pakietów wraz z wersjami, które chcesz zainstalować. Możesz -$2usunąć wyciąg z instrukcji, jeśli nie chcesz wersji.

[Prawdopodobnie można to zrobić tylko trochę lżejszą za pomocą awk zamiast perla]

Mc0e
źródło