it-swarm-vi.com

Làm thế nào tôi có thể cài đặt chỉ cập nhật bảo mật từ dòng lệnh?

Sudo apt-get upgrade cài đặt tất cả các bản cập nhật, không chỉ cập nhật bảo mật. Tôi biết rằng tôi có thể sử dụng Trình quản lý cập nhật để chỉ chọn các cập nhật bảo mật quan trọng, nhưng có cách nào để thực hiện việc này từ dòng lệnh không?

321
Michael Crenshaw

Gói không giám sát-nâng cấp cung cấp chức năng để tự động cài đặt các bản cập nhật bảo mật.

Bạn có thể sử dụng phần này, nhưng thay vì định cấu hình phần tự động, bạn có thể gọi nó bằng tay:

Sudo unattended-upgrade -d --dry-run
Sudo unattended-upgrade -d

Thay vào đó, nếu bạn muốn chạy nó một cách lặng lẽ:

Sudo unattended-upgrade

LƯU Ý: Khi bạn gọi nâng cấp không giám sát, bạn sẽ bỏ "s" ở cuối.

Điều này giả định rằng gói được cài đặt theo mặc định, có lẽ là như vậy. Nếu không, chỉ cần làm:

Sudo apt-get install unattended-upgrades

Xem thêm /usr/share/doc/unattended-upgrades/README.md.

300
blueyed

Một vài lời khuyên về cách quản lý cập nhật

Điều này áp dụng cho cả Debian và Ubuntu, nhưng các hướng dẫn cụ thể hơn cho Ubuntu tuân theo.

  • Chỉ hiển thị cập nhật bảo mật:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    hoặc là

    Sudo unattended-upgrade --dry-run -d
    

    hoặc là

    /usr/lib/update-notifier/apt-check -p
    
  • Hiển thị tất cả các gói có thể nâng cấp

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Chỉ cài đặt cập nhật bảo mật

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print $2'} | 
        xargs apt-get install
    

Ghi chú:

  • Đôi khi Ubuntu hiển thị các cập nhật bảo mật như thể chúng đến từ kho lưu trữ cập nhật $ phát hành. Điều này là như vậy, tôi đã nói, bởi vì các nhà phát triển Ubuntu Đẩy các bản cập nhật bảo mật lên kho lưu trữ cập nhật $ phát hành cũng như để tăng tốc độ sẵn có của họ.

    Nếu đó là trường hợp, bạn có thể làm như sau để chỉ hiển thị cập nhật bảo mật:

    Sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print $2'}
    
  • Kiểm tra những dịch vụ cần được khởi động lại sau khi nâng cấp gói. Chỉ ra các gói bạn sẽ nâng cấp trước và lên lịch khởi động lại/khởi động lại. Vấn đề ở đây là trừ khi bạn khởi động lại dịch vụ, nó vẫn có thể sử dụng phiên bản cũ hơn của thư viện (lý do phổ biến nhất) được tải vào bộ nhớ trước khi bạn cài đặt gói mới khắc phục lỗ hổng bảo mật hoặc bất cứ điều gì.

    checkrestart -v
    

    Tuy nhiên, hãy nhớ rằng checkrestart có thể liệt kê các quy trình không nhất thiết phải được khởi động lại. Ví dụ: dịch vụ PostgreSQL có thể lưu trong bộ nhớ tham chiếu đến tệp xlog đã bị xóa, đây không phải là lý do hợp lệ để khởi động lại dịch vụ.

    Do đó, một cách khác, đáng tin cậy hơn, để kiểm tra điều này bằng cách sử dụng các tiện ích tiêu chuẩn là tập lệnh bash nhỏ sau đây mà tôi đã lấy cắp một cách đáng xấu hổ từ https://locallost.net/?p=2

    Nó kiểm tra xem các tiến trình đang chạy trên một hệ thống có còn sử dụng các thư viện bị xóa hay không bằng cách giữ các bản sao của chúng trong bộ nhớ hoạt động.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    
113
ILIV

thay thế /etc/apt/preferences bằng cách sau:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

bây giờ, một apt-get upgrade đơn giản sẽ chỉ nâng cấp tất cả các cập nhật bảo mật.

Tại sao (và làm thế nào) điều này hoạt động: Tệp tùy chọn sẽ ghim tất cả các gói từ phân phối Ubuntu sang mức ưu tiên 50, điều này sẽ khiến chúng ít được mong muốn hơn các gói đã cài đặt. Các tệp có nguồn gốc từ kho lưu trữ bảo mật được ưu tiên mặc định (500) để chúng được xem xét để cài đặt. Điều này có nghĩa là chỉ các gói được coi là mong muốn hơn các gói hiện được cài đặt là các bản cập nhật bảo mật. Thông tin thêm về ghim trong apt_preferences manpage .

Bạn có thể tạm thời quảng cáo một bản phân phối nhất định cho các bản cập nhật với tùy chọn --target-release hoạt động với apt-getaptitude (ít nhất) sẽ cho phép bạn ghim các bản phát hành nhất định để chúng đủ điều kiện nâng cấp.

Nếu bạn chỉ muốn sử dụng điều này cho các tập lệnh và không làm cho nó mặc định cho hệ thống, bạn có thể đặt các quy tắc vào một số vị trí khác và sử dụng điều này thay thế:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Điều này sẽ làm cho apt tìm tệp ưu tiên từ một vị trí không mặc định.

Tệp tùy chọn được cung cấp dưới dạng ví dụ không áp dụng cho kho lưu trữ của bên thứ ba, nếu bạn muốn ghim chúng quá mức, bạn có thể sử dụng apt-cache policy để dễ dàng xác định các khóa cần thiết để ghim.

46
Ressu

Những điều sau đây được xác nhận trong Ubuntu 14.04 LTS.

Sử dụng gói unattended-upgrade.

Nhìn vào tệp /etc/apt/apt.conf.d/50unattended-upgrades. Cần có một phần ở trên cùng là:

// Automatically upgrade packages from these (Origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

Lưu ý cách nó được cấu hình để chỉ cho phép nâng cấp không giám sát cho các gói bảo mật, theo mặc định.

Sửa đổi tệp /etc/apt/apt.conf.d/10periodic tương tự:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Điều này sẽ chạy nâng cấp bảo mật tự động không giám sát, một lần mỗi ngày.

Bây giờ, để chạy thủ công: Sudo unattended-upgrade.

Để kiểm tra dưới dạng chạy khô, không cần làm gì: Sudo unattended-upgrade --dry-run.

Nguồn: https://help.ubfox.com/14.04/serverguide/automatic-updates.html

11
vcardillo

Mặc dù nó khá xấu, nhưng bạn có thể vô hiệu hóa tất cả các kho lưu trữ ngoài kho lưu trữ bảo mật và sau đó thực hiện:

Sudo apt-get update && Sudo apt-get upgrade

Tôi đã không kiểm tra nó, nhưng trên lý thuyết, nó sẽ chỉ tìm thấy các bản cập nhật trong repo bảo mật và áp dụng chúng ...

5
Stephen RC
  • apt-get update: chỉ cần đọc các mục trong kho lưu trữ - theo danh sách hiện có. Cần kiểm tra những gì mới.
  • apt-get upgrade: tất cả các bản cập nhật cho các gói đã cài đặt không có mô-đun hạt nhân. Không có bản cập nhật phát hành.
  • apt-get dist-upgrade: tất cả các bản cập nhật cho các gói đã cài đặt cũng với các mô-đun hạt nhân. Không có bản cập nhật phát hành.
  • apt-get với tham số -s: chỉ kiểm tra, không có thay đổi nào được thực hiện.
3
fuser

Trên Debians tôi sử dụng lệnh này để chỉ cập nhật bảo mật:

apt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )
0
keypress

Tôi không thể tìm thấy tùy chọn trong apt-get hoặc aptitude, tuy nhiên ai đó có cùng câu hỏi trên SuperUser. Câu trả lời duy nhất là:

Check and adjust /etc/apt/apt.conf.d/50unattended-upgrade. 
Did you replace 'karmic' with the code name of your Ubuntu?

Không trả lời cho dù điều đó làm việc tuy nhiên.

0
Ross