Como obter uma lista de atualizações de segurança na linha de comando no Debian / Ubuntu

26

Na ferramenta GUI, você pode obter uma lista de pacotes com atualizações de segurança. Isso pode ser feito na linha de comando no Debian ou Ubuntu?

Normalmente, eu poderia usar o "apt-get upgrade" que me mostraria o que está sendo atualizado, mas gostaria de saber quais são as atualizações de segurança.

Stephen Paulger
fonte
apenas para o Ubuntu 14.04, 16.04 e 18.04 LTS: askubuntu.com/a/1128270/92504
Angel

Respostas:

5

Use o aplicativo de atualização autônoma.

sudo unattended-upgrade

Isso permite instalar apenas atualizações de segurança automaticamente, mas você pode chamá-lo manualmente, se necessário.

Andy H
fonte
Gosto dessa resposta, pois você realmente pensou no que eu poderia estar tentando fazer e a atualização autônoma é algo que instalei hoje para experimentar.
Stephen Paulger 5/09/12
13
Na verdade, ele não responde à pergunta.
reinierpost
4
Se esta é a resposta, então a pergunta estava errada. Pelo menos, evoluiu, e deve ser editado em conformidade e / ou marcada como um duplicado de askubuntu.com/questions/194/...
mc0e
39
apt-get upgrade -s | grep -i security

... é o que o plug-in Nagios check-apt usa para contar as atualizações de segurança pendentes, semelhantes ao que você está procurando.

smin
fonte
Mas ele não consegue encontrar a atualização de segurança do bash para o shellshock?
Linjunhalida 28/09/14
3
Isso fornece falsos positivos em pacotes com "segurança" no nome, como "xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security" etc.
Shnatsel
2
@Shnatsel para uma verificação de linha de comando, é muito fácil ... você pode ver facilmente se é um falso positivo ou não. Além disso, se você souber o nome atual do seu sistema operacional, poderá escrever grep -i xenial-securitye reduzir o falso positivo para praticamente zero.
Alexis Wilke
1
@Shnatsel, então grep Debian-Securityseria uma solução melhor?
Pablo A
Isso é útil para obter o número de regular;securityatualizações disponíveis. A -popção de listar os nomes dos pacotes disponíveis para atualização, no entanto, não distingue entre atualizações regulares e atualizações de segurança (pelo menos no 16.04) ... portanto, essa não é uma maneira viável de obter uma lista de atualizações de segurança disponíveis, tanto quanto eu sei.
mattpr 27/02
10

No ubuntu, você deve poder usar o apt-check, é o que preenche seu motd com o número de atualizações de segurança disponíveis.

melhor cão
fonte
2
Não vejo isso no debian ou no ubuntu.
Stephen Paulger
5
O apt-check está em / usr / lib / update-notifier /. Tente / usr / lib / update-notifier / apt-check --human-readable para obter uma mensagem direta.
U2702 18/10/2014
2
Não estou convencido de que isso mostre algo útil. Para obter a lista, você precisa adicionar --package-names( -p), mas parece não diferenciar entre atualizações regulares e atualizações de segurança.
Auspex
5

Você pode obter uma lista com este comando:

sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'
Fabrizio Regini
fonte
2
Você enviou TODA a saída para /dev/nullnão receber nada!
Auspex
Isso parece não funcionar com confiança. mostra todos os pacotes que precisam de atualização.
Temido ponto e vírgula
Eu acho que isso mostraria o que a atualização autônoma faria e, se você a configurasse para fazer apenas atualizações de segurança, talvez essa receita funcione. A resposta, porém, é na melhor das hipóteses, lamentavelmente incompleta.
Mc0e
Hoje resolvi essa necessidade modificando um pouco o apt-check. Verifique esta lista: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
Paolo Perego
3

Eu tenho uma versão modificada update-notifierque requer uma opção adicional: --security-package-namesque gera apenas os nomes de pacotes relacionados à segurança. Eu tenho isso como uma essência (até criar uma solicitação de mesclagem no projeto relevante na barra de ativação). Até lá, ele pode ser executado da seguinte maneira:

Corre

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

Saída

Isso fornece uma saída do formato: nome do pacote , versão instalada e versão 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
...
mandark
fonte
3

Com base na resposta de Fabrizio Regini acima.

Para 12.04 / Preciso:

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

Para 14.04 / Trusty:

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

E uma variante juntou-se após ler as outras respostas - acredito que isso atenda à questão do falso positivo e seja razoavelmente leve.

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

Acredito que responder à pergunta que o OP faz é como ver a lista de pacotes, e não como instalar apenas pacotes de segurança. Com base na resposta do @topdog Você deve usar: /usr/lib/update-notifier/apt-check -p Onde a -pbandeira representa pacotes

alonisser
fonte
1
este Listas de todos os pacotes e não somente atualizações de segurança
confiq
O apt-check parece indisponível no Debian Jessie. Ele permanece nos sistemas Wheezy atualizados, mas as novas instalações não têm mais o update-notifier-common. Você conhece uma alternativa?
jan
@jan ele ainda está lá, como parte de update-notifier-common
Auspex
@Auspex Esse pacote não existe mais em Jessie. Existe apenas update-notifierum pacote transitório desatualizado para gnome-packagekit. Veja aqui .
janeiro
1
@jan Desculpe, aceitei a palavra do debian. Procurei o arquivo, packages.debian.org/... e ele me disse You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results., mas então quando você realmente clicar no link para esse resultado, ele diz-lhePackage not available in this suite.
Auspex
0

Esses dois comandos cuspirão na lista. Canalize para wc -l para ver quantos estão por trás. ;-)

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

Ainda válido para distros mais antigos ou se você tiver atualizações de repositório desativadas, mas a segurança está ativada:

sudo apt-get upgrade -s| grep ^Inst |grep Security 
flickerfly
fonte
Seja cuidadoso. Se você gerar /tmp/security.list dessa maneira enquanto estiver executando como root, ficará vulnerável a um ataque baseado em link simbólico.
Mc0e
Não consigo obter essa abordagem (o primeiro bloco de código) no Ubuntu 14.04. A -oDir::Etc::Sourcelistopção não parece desativar o conjunto padrão de repositórios.
Mc0e
0

Acho que a resposta do @smin é basicamente uma boa abordagem, mas um pouco frouxa com o regex, como observado por @Shnatsel.

Que tal agora:

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

Isso lista os nomes dos pacotes junto com as versões que você deseja instalar. Você pode retirar -$2a declaração de impressão se não quiser as versões.

[Isso provavelmente poderia ser um pouco mais leve usando awk em vez de perl]

mc0e
fonte