it-swarm.dev

¿Cómo puedo instalar solo actualizaciones de seguridad desde la línea de comandos?

Sudo apt-get upgrade instala todas las actualizaciones, no solo las actualizaciones de seguridad. Sé que puedo usar Update Manager para seleccionar solo actualizaciones de seguridad importantes, pero ¿hay alguna manera de hacerlo desde la línea de comandos?

321
Michael Crenshaw

El paquete actualizaciones desatendidas proporciona funcionalidad para instalar actualizaciones de seguridad automáticamente.

Puede usar esto, pero en lugar de configurar la parte automática, puede llamarlo manualmente:

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

Si quieres ejecutarlo en silencio en su lugar:

Sudo unattended-upgrade

NOTA: Cuando llama a la actualización desatendida, deja la "s" al final.

Esto supone que el paquete está instalado por defecto, lo que probablemente sea. Si no, solo haz:

Sudo apt-get install unattended-upgrades

Ver también /usr/share/doc/unattended-upgrades/README.md.

307
blueyed

Algunos consejos sobre cómo administrar las actualizaciones

Esto se aplica tanto a Debian como a Ubuntu, pero siguen instrucciones más específicas para Ubuntu.

  • Mostrar solo actualizaciones de seguridad:

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

    o

    Sudo unattended-upgrade --dry-run -d
    

    o

    /usr/lib/update-notifier/apt-check -p
    
  • Mostrar todos los paquetes actualizables

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Instalar solo actualizaciones de seguridad

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

Notas:

  • A veces, Ubuntu muestra actualizaciones de seguridad como si vinieran del repositorio $ release-updates. Esto es así, me dijeron, porque los desarrolladores de Ubuntu también envían actualizaciones de seguridad al repositorio $ release-updates para acelerar su disponibilidad.

    Si ese es el caso, puede hacer lo siguiente para mostrar solo las actualizaciones de seguridad:

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

    y

    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'}
    
  • Verifique qué servicios deben reiniciarse después de las actualizaciones de paquetes. Averigüe de antemano qué paquetes va a actualizar y programe sus reinicios/reinicios. El problema aquí es que, a menos que reinicie un servicio, todavía puede estar usando una versión anterior de una biblioteca (razón más común) que se ha cargado en la memoria antes de instalar un nuevo paquete que corrige una vulnerabilidad de seguridad o lo que sea.

    checkrestart -v
    

    Sin embargo, tenga en cuenta que checkrestart puede enumerar procesos que no necesariamente deben reiniciarse. Por ejemplo, el servicio PostgreSQL puede mantener en su memoria referencia a un archivo xlog ya eliminado, lo que no es una razón válida para reiniciar el servicio.

    Por lo tanto, otra forma más confiable de verificar esto usando las utilidades estándar es el siguiente script de bash que robé descaradamente de https://locallost.net/?p=2

    Comprueba si los procesos en ejecución en un sistema todavía usan bibliotecas eliminadas en virtud de mantener copias de aquellos en la memoria activa.

    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
    
114
ILIV

reemplace _/etc/apt/preferences_ con lo siguiente:

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

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

ahora un simple _apt-get upgrade_ actualizará solo todas las actualizaciones de seguridad.

Por qué (y cómo) funciona: el archivo de preferencias fijará todos los paquetes de la distribución de Ubuntu a la prioridad 50, lo que los hará menos deseables que los paquetes ya instalados. Los archivos que se originan en el repositorio de seguridad tienen la prioridad predeterminada (500), por lo que se consideran para la instalación. Esto significa que solo los paquetes que se consideran más deseables que los instalados actualmente son actualizaciones de seguridad. Más información sobre la fijación en la página de manual de apt_preferences .

Puede promover temporalmente una cierta distribución para actualizaciones con la opción _--target-release_ que funciona con _apt-get_ y aptitude (al menos) que le permitirá fijar ciertas versiones para que sean elegibles para la actualización.

Si desea usar esto solo para scripts y no hacerlo predeterminado para el sistema, puede colocar las reglas en otra ubicación y usar esto en su lugar:

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

Esto hará que apt busque el archivo de preferencias desde una ubicación no predeterminada.

El archivo de preferencias dado como ejemplo no se aplica a repositorios de terceros, si desea anclarlos también puede usar _apt-cache policy_ para determinar fácilmente las claves necesarias para anclar.

46
Ressu

Lo siguiente se confirma en Ubuntu 14.04 LTS.

Use el paquete unattended-upgrade.

Mire el archivo /etc/apt/apt.conf.d/50unattended-upgrades. Debe haber una sección en la parte superior que sea:

// 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";
};

Observe cómo se ha configurado para permitir solo actualizaciones desatendidas para paquetes de seguridad, de forma predeterminada.

Modifique el archivo /etc/apt/apt.conf.d/10periodic similar a:

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

Esto ejecutará actualizaciones de seguridad desatendidas automáticas, una vez al día.

Ahora, para ejecutar manualmente: Sudo unattended-upgrade.

Para realizar una prueba en seco, sin hacer nada: Sudo unattended-upgrade --dry-run.

Fuente: https://help.ubuntu.com/14.04/serverguide/automatic-updates.html

12
vcardillo

Aunque es bastante feo, puede deshabilitar todos los repositorios aparte del repositorio de seguridad y luego hacer:

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

No lo he probado, pero en teoría solo encontraría actualizaciones en el repositorio de seguridad y las aplicaría ...

5
Stephen RC
  • apt-get update: solo lea las entradas en el repositorio, de acuerdo con la lista existente. Necesario para verificar qué hay de nuevo.
  • apt-get upgrade: todas las actualizaciones para paquetes instalados sin módulos del núcleo. Sin actualización de lanzamiento.
  • apt-get dist-upgrade: todas las actualizaciones para paquetes instalados también con módulos de kernel. Sin actualización de lanzamiento.
  • apt-get con el parámetro -s: solo prueba, sin cambios realizados.
3
fuser

En Debians, uso este comando para hacer solo actualizaciones de seguridad:

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

No puedo encontrar una opción en apt-get o aptitude, sin embargo, alguien tenía el misma pregunta en SuperUser. La única respuesta es:

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

Sin embargo, no hubo respuesta sobre si eso funcionó.

0
Ross