Cách nhận danh sách cập nhật bảo mật trên dòng lệnh trong Debian / Ubuntu


26

Trong công cụ GUI, bạn có thể nhận được một gói danh sách với các bản cập nhật bảo mật. Điều này có thể được thực hiện trên dòng lệnh trong Debian hoặc Ubuntu không?

Thông thường tôi có thể sử dụng "apt-get nâng cấp" sẽ cho tôi biết những gì đang được nâng cấp, nhưng tôi muốn biết cái nào là bản cập nhật bảo mật.


chỉ dành cho Ubuntu 14.04, 16.04 và 18.04 LTS: askubfox.com/a/1128270/92504
Angel

Câu trả lời:


5

Sử dụng ứng dụng nâng cấp không giám sát.

sudo unattended-upgrade

Điều này cho phép bạn chỉ cài đặt các bản cập nhật bảo mật tự động, nhưng bạn có thể gọi nó bằng tay nếu cần.


Tôi thích câu trả lời này vì bạn thực sự đã nghĩ về những gì tôi có thể đang cố gắng và không giám sát - nâng cấp là thứ tôi đã cài đặt hôm nay để thử.
Stephen Paulger

13
Nó không thực sự trả lời câu hỏi mặc dù.
Revierpost

4
Nếu đây là câu trả lời, thì câu hỏi đã sai. Ít nhất, nó đã phát triển và nên được chỉnh sửa cho phù hợp và / hoặc được đánh dấu là một bản sao của Askubfox.com/questions/194/ Khăn
mc0e

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

... Là những gì plugin Nagios check-apt sử dụng để đếm các bản cập nhật bảo mật đang chờ xử lý, tương tự như những gì bạn đang tìm kiếm.


Nhưng nó không thể tìm thấy bản cập nhật bảo mật bash cho shellshock?
linjunhalida

3
Điều này mang lại kết quả dương tính giả trên các gói có "bảo mật" trong tên, chẳng hạn như "xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security", v.v.
Shnatsel

2
@Shnatsel để kiểm tra dòng lệnh, rất dễ dàng ... bạn có thể dễ dàng xem liệu đó có phải là dương tính giả hay không. Ngoài ra nếu bạn biết tên hiện tại của HĐH, bạn có thể viết grep -i xenial-securityvà nó sẽ làm giảm dương tính giả xuống khá nhiều.
Alexis Wilke

1
@Shnatsel vậy grep Debian-Securitysẽ là một giải pháp tốt hơn?
Pablo A

Điều này rất hữu ích để có được số lượng regular;securitycập nhật có sẵn. Tuy nhiên, -ptùy chọn liệt kê tên gói có sẵn để cập nhật không phân biệt giữa cập nhật thường xuyên và bảo mật (ít nhất là vào ngày 16.04) ... vì vậy đây không phải là cách khả thi để có danh sách các bản cập nhật bảo mật có sẵn như tôi có thể biết.
mattpr

10

Trên Ubuntu, bạn sẽ có thể sử dụng apt-check, đây là ứng dụng phổ biến số lượng cập nhật bảo mật của bạn.


2
Tôi không thể thấy điều đó trên debian hoặc ubfox.
Stephen Paulger

5
apt-check nằm trong / usr / lib / update-notifier /. Hãy thử / usr / lib / update-notifier / apt-check - có thể đọc được cho một tin nhắn đơn giản.
u2702

2
Tôi không tin rằng nó cho thấy bất cứ điều gì hữu ích. Để có được danh sách, bạn cần thêm --package-names( -p), nhưng sau đó nó dường như không phân biệt giữa cập nhật thường xuyên và cập nhật bảo mật.
Auspex

5

Bạn có thể nhận được một danh sách với lệnh này:

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

2
Bạn đã gửi TẤT CẢ đầu ra để /dev/nullbạn sẽ không nhận được bất cứ điều gì!
Auspex

Điều này dường như không làm việc với sự tin cậy. thay vào đó, nó hiển thị tất cả các gói cần cập nhật.
Dấu chấm phẩy đáng sợ

Tôi đoán nó sẽ cho bạn thấy những gì nâng cấp không giám sát sẽ làm và nếu bạn định cấu hình nó để chỉ cập nhật bảo mật, có thể công thức này sẽ hoạt động. Câu trả lời là tốt nhất không đầy đủ.
mc0e

Hôm nay tôi đã giải quyết nhu cầu này sửa đổi một chút apt-check. Kiểm tra ý chính này: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
Paolo Perego

3

Tôi có một phiên bản sửa đổi update-notifiercó một công tắc bổ sung: --security-package-nameschỉ xuất ra các tên gói liên quan đến bảo mật. Tôi có nó như một ý chính (cho đến khi tôi tạo một yêu cầu hợp nhất trong dự án có liên quan trong launchpad). Cho đến lúc đó nó có thể được chạy như sau:

Chạy

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

Đầu ra

Điều này cung cấp một đầu ra của định dạng: tên gói , phiên bản đã cài đặtphiên bản ứng cử viên :

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

Dựa trên câu trả lời của Fabrizio Regini ở trên.

Cho 12.04 / Chính xác:

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

Đối với 14.04 / Trusty:

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

1

Và một biến thể bị mắc kẹt lại với nhau sau khi đọc các phản hồi khác - tôi tin rằng điều này để phục vụ cho vấn đề tích cực sai, và có trọng lượng khá nhẹ.

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

0

Tôi tin rằng Trả lời câu hỏi mà OP yêu cầu là làm thế nào để xem Danh sách các gói chứ không phải cách chỉ cài đặt các gói bảo mật. Dựa trên câu trả lời của @topdog Bạn nên sử dụng: /usr/lib/update-notifier/apt-check -p Trường hợp -pcờ là viết tắt của các gói


1
danh sách này liệt kê tất cả các gói và không chỉ cập nhật bảo mật
confiq 14/07/2015

apt-check dường như không có trong Debian Jessie. Nó vẫn còn trên các hệ thống Wheezy được cập nhật nhưng các bản cài đặt mới không còn phổ biến cập nhật nữa. Bạn có biết một sự thay thế?
Tháng Một

@jan nó vẫn ở đó, như là một phần của update-notifier-common
Auspex

@Auspex Gói đó không còn tồn tại trong Jessie. Chỉ update-notifiercó một gói chuyển tiếp lỗi thời cho gnome-packagekit. Xem tại đây .
Tháng Một

1
@jan Xin lỗi, tôi đã lấy từ của debian cho nó. Tôi đã tìm kiếm tập tin, tests.debian.org/ và nó nói với tôi You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results., nhưng sau đó khi bạn thực sự nhấp vào liên kết cho kết quả đó, nó sẽ cho bạn biếtPackage not available in this suite.
Auspex

0

Hai lệnh này sẽ nhổ ra danh sách. Ống đến wc -l để xem có bao nhiêu phía sau. ;-)

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

Vẫn hợp lệ cho các bản phát hành cũ hơn hoặc nếu bạn đã cập nhật repos, nhưng bảo mật trên:

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

Hãy cẩn thận. Nếu bạn tạo /tmp/security.list theo cách này trong khi chạy bằng root, thì bạn dễ bị tấn công dựa trên symlink.
mc0e

Tôi không thể có được cách tiếp cận này (khối mã đầu tiên) trên Ubuntu 14.04. Các -oDir::Etc::Sourcelisttùy chọn dường như không để vô hiệu hóa các thiết lập tiêu chuẩn của kho.
mc0e

0

Tôi nghĩ rằng câu trả lời của @smin về cơ bản là một cách tiếp cận tốt, nhưng hơi lỏng lẻo với biểu thức chính quy, như ghi nhận của @Shnatsel.

Còn cái này thì sao:

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

Điều này liệt kê tên gói cùng với các phiên bản bạn muốn cài đặt. Bạn có thể lấy -$2ra khỏi bản in nếu bạn không muốn các phiên bản ở đó.

[Điều này có lẽ có thể được thực hiện chỉ một chút trọng lượng nhẹ hơn bằng cách sử dụng awk thay vì perl]


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.