Debian / Ubuntuのコマンドラインでセキュリティアップデートのリストを取得する方法


26

GUIツールでは、セキュリティアップデートを含むリストパッケージを取得できます。これはDebianまたはUbuntuのコマンドラインで実行できますか?

通常、私は「apt-get upgrade」を使用して、何がアップグレードされているかを表示しますが、どれがセキュリティ更新であるかを知りたいです。


回答:


5

無人アップグレードアプリケーションを使用します。

sudo unattended-upgrade

これにより、セキュリティ更新プログラムのみを自動的にインストールできますが、必要に応じて手動で呼び出すことができます。


あなたが私が何をしようとしているかについて実際に考えたので、私はこの答えが好きです、そして、無人アップグレードは私が今日試してみるためにインストールしたものです。
スティーブンポールガー

13
ただし、実際には質問には答えません。
reinierpost

4
これが答えであれば、質問は間違っていました。少なくとも進化しており、それに応じて編集するか、askubuntu.com
questions

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

... Nagios check-aptプラグインは、探しているものと同様の保留中のセキュリティ更新をカウントするために使用します。


しかし、shellshockのbashセキュリティアップデートは見つかりませんか?
リンジュンハリダ14

3
これは、などなど、 "XML-セキュリティ-C-utilsの"などの名前で、 "セキュリティ"、 "Debianのセキュリティ・サポート"、 "ModSecurityは-CRS"、 "ノード・セキュリティ"、とパッケージ上の偽陽性を与える
Shnatsel

2
コマンドラインチェックの@Shnatselは非常に簡単です。誤検知かどうかを簡単に確認できます。また、OSの現在の名前がわかっている場合は、書くgrep -i xenial-securityことができ、誤検出をほぼゼロに減らすことができます。
アレクシスウィルケ

1
@Shnatselのでgrep Debian-Security、より良い解決策でしょうか?
パブロA

これは、regular;security利用可能な更新の数を取得するのに役立ちます。-p更新のために利用可能なパッケージ名を一覧表示するためのオプションは、(少なくとも16.04上)が定期的およびセキュリティ更新プログラムを区別しません、これはセキュリティのリストを取得するための実行可能な方法ではありませんので...私の知る限りとして利用可能更新します。
mattpr

10

Ubuntuでは、apt-checkを使用できるはずです。これは、利用可能なセキュリティアップデートの数をmotdに入力するものです。


2
debianやubuntuでそれを見ることはできません。
スティーブンポーラー

5
apt-checkは/ usr / lib / update-notifier /にあります。わかりやすいメッセージについては、/ usr / lib / update-notifier / apt-check --human-readableを試してください。
u2702 14年

2
私はそれが有用なものを示すとは確信していません。リストを取得するには、追加--package-names-p)する必要がありますが、通常の更新とセキュリティ更新を区別していないようです。
Auspexの

5

次のコマンドでリストを取得できます。

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

2
すべての出力を送信した/dev/nullため、何もgrepしません。
-Auspex

これはトラスティでは機能しないようです。代わりに、更新が必要なすべてのパッケージが表示されます。
恐ろしいセミコロン

無人アップグレードが何をしようとしているかを示していると思います。セキュリティ更新のみを行うように設定した場合、このレシピが機能する可能性があります。しかし、答えはせいぜいひどく不完全です。
mc0e

今日、私はこの適切なチェックを少し修正する必要性を解決しました。この要点を確認してください:gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
パオロPEREGO

3

update-notifier追加のスイッチを使用する修正版が--security-package-namesあります。セキュリティ関連のパッケージ名のみを出力します。私はそれを要旨として持っています(ランチパッドの関連プロジェクトでマージリクエストを作成するまで)。それまでは、次のように実行できます。

走る

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

出力

これにより、パッケージ名インストール済みバージョン、および候補バージョンの形式の出力が得られます。

...
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

上記のFabrizio Reginiの回答に基づきます。

12.04 /正確な場合:

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

14.04 / Trustyの場合:

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

1

そして、他の応答を読んだ後に変種が一緒に破壊されました-これは誤検知の問題に対応し、合理的に軽量であると信じています。

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

0

OPが尋ねる質問に答えることは、パッケージのリストを表示する方法であり、セキュリティパッケージのみをインストールする方法ではないと思います。:あなたが使用する必要があります@topdogの答えに構築 フラグがパッケージの略 /usr/lib/update-notifier/apt-check -p -p


1
これには、セキュリティ更新だけでなくすべてのパッケージが一覧表示されます
confiq

apt-checkはDebian Jessieでは利用できないようです。更新されたWheezyシステムに残りますが、新規インストールにはupdate-notifier-commonがありません。代替手段を知っていますか?
1月

@janの一部として update-notifier-common
Auspex

@AuspexそのパッケージはJessieにはもう存在しません。のupdate-notifier古い移行パッケージのみがありますgnome-packagekit。こちらをご覧ください
1月

1
@janすみません、debianの言葉を受け入れました。packages.debian.org/…というファイルを検索して教えてくれましたがYou have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results.、実際にその結果のリンクをクリックすると、次のように表示されますPackage not available in this suite.
Auspex

0

これら2つのコマンドはリストを吐き出します。wc -lにパイプして、背後にいくつあるかを確認します。;-)

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

古いディストリビューションや、更新リポジトリがオフになっているがセキュリティがオンになっている場合でも有効です。

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

注意してください。rootとして実行中にこの方法で/tmp/security.listを生成すると、シンボリックリンクベースの攻撃に対して脆弱になります。
mc0e

Ubuntu 14.04ではこのアプローチ(最初のコードブロック)を取得できません。この-oDir::Etc::Sourcelistオプションは、リポジトリの標準セットを無効にしないようです。
mc0e

0

@sminの答えは基本的には良いアプローチだと思いますが、@ Shnatselが指摘しているように、正規表現では少し緩いものです。

これはどう:

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

これは、インストールするバージョンとともにパッケージ名をリストします。どうぞ-$2ますが、そこのバージョンを使用しない場合はprint文のうち。

[perlの代わりにawkを使用すると、おそらくこれを少し軽くすることができます]


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.