데비안 / 우분투의 명령 행에서 보안 업데이트 목록을 얻는 방법


26

GUI 도구에서 보안 업데이트가 포함 된 목록 패키지를 얻을 수 있습니다. 데비안이나 우분투의 커맨드 라인 에서이 작업을 수행 할 수 있습니까?

일반적으로 "apt-get upgrade"를 사용하여 업그레이드중인 항목을 표시 할 수 있지만 보안 업데이트가 무엇인지 알고 싶습니다.


우분투 14.04, 16.04 및 18.04 LTS : askubuntu.com/a/1128270/92504
Angel

답변:


5

무인 업그레이드 응용 프로그램을 사용하십시오.

sudo unattended-upgrade

이를 통해 보안 업데이트 만 자동으로 설치할 수 있지만 필요한 경우 수동으로 호출 할 수 있습니다.


나는 내가하려는 일에 대해 실제로 생각하고 무인 업그레이드는 오늘 시험해보기 위해 설치 한 것이므로이 대답을 좋아합니다.
Stephen Paulger

13
실제로 질문에 대답하지는 않습니다.
reinierpost

4
이것이 답이라면 질문이 잘못되었습니다. 최소한, 그것은 진화했고, 따라서 적절하게 편집 및 / 또는 askubuntu.com/questions/194/…
mc0e

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

... Nagios check-apt 플러그인이 찾고있는 것과 유사한 보류중인 보안 업데이트를 계산하는 데 사용하는 것입니다.


그러나 shellshock에 대한 bash 보안 업데이트를 찾을 수 없습니까?
linjunhalida

3
"xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security"등과 같이 이름에 "security"가있는 패키지에 대해 오탐 (false positive)이 발생합니다.
Shnatsel

2
명령 줄 검사를위한 @Shnatsel, 그것은 매우 쉽다 ... 당신은 그것이 거짓 긍정인지 아닌지를 쉽게 볼 수있다. 또한 OS의 현재 이름을 알고 있다면 쓸 grep -i xenial-security수 있으며 오 탐지를 거의 0으로 줄여야합니다.
Alexis Wilke 2016 년

1
@ Shnatsel grep Debian-Security더 나은 솔루션이 될까요?
파블로 A

regular;security사용 가능한 업데이트 수 를 얻는 데 유용 합니다. -p이 보안의 목록을 얻을 수있는 가능한 방법이되지 않도록 업데이트를 사용할 수있는 패키지 이름은 ... (적어도 16.04에) 그러나 일반 및 보안 업데이트를 구분하지 않는 목록 옵션은 지금까지 내가 말할 수있는 가능한 업데이트합니다.
mattpr

10

우분투에서는 apt-check를 사용할 수 있어야합니다. 이것은 사용 가능한 보안 업데이트 수로 motd를 채우는 것입니다.


2
데비안이나 우분투에서는 볼 수 없습니다.
Stephen Paulger

5
apt-check는 / usr / lib / update-notifier /에 있습니다. 간단한 메시지를 보려면 / usr / lib / update-notifier / apt-check --human-readable을 시도하십시오.
u2702

2
나는 그것이 유용한 것을 보여주는 확신하지 않습니다. 목록을 얻으려면 --package-names( -p) 을 추가해야 하지만 정기 업데이트와 보안 업데이트를 구분하지 않는 것 같습니다.
Auspex

5

이 명령으로 목록을 얻을 수 있습니다.

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

2
당신은 /dev/null아무것도 출력하지 않도록 모든 출력을 보냈습니다 !
Auspex

이것은 신뢰할 수없는 것으로 보입니다. 대신 업데이트가 필요한 모든 패키지가 표시됩니다.
공포의 세미콜론

무인 업그레이드가 수행 할 작업을 보여줄 것이라고 생각합니다. 보안 업데이트 만 수행하도록 구성하면이 레시피가 작동 할 것입니다. 그러나 대답은 기껏해야 불완전합니다.
mc0e

오늘 나는 약간의 apt-check를 수정 해야하는이 문제를 해결했습니다. 이 요점을 확인하십시오 : gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
Paolo 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

산출

package name , installed version후보 버전 형식으로 출력됩니다 .

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

Debian Jessie에서는 apt-check를 사용할 수없는 것 같습니다. 업데이트 된 Wheezy 시스템에 남아 있지만 새로 설치하면 더 이상 update-notifier-common이 없습니다. 대안을 알고 있습니까?
jan

@jan 그것은 여전히 ​​존재합니다. update-notifier-common
Auspex

@Auspex 해당 패키지는 더 이상 Jessie에 없습니다. 에 update-notifier대한 오래된 과도기적 패키지 만 있습니다 gnome-packagekit. 여기를 참조 하십시오 .
jan

1
@jan 죄송합니다. 데비안의 말을 들었습니다. 나는 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

이 두 명령은 목록을 뱉어냅니다. 얼마나 많은 것이 뒤에 있는지 보려면 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 

조심해. 루트로 실행하는 동안이 방법으로 /tmp/security.list를 생성하면 symlink 기반 공격에 취약합니다.
mc0e

우분투 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버전을 원하지 않으면 인쇄 문 을 제거 할 수 있습니다 .

[이것은 아마도 perl 대신 awk를 사용함으로써 약간 더 가벼워 질 수있다]


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.