¿Qué precauciones debo tomar con .debs que encuentro en Internet?

29

Así que estaba navegando por la web el otro día, y me encontré con algunos lugares que querían que descargara .debarchivos, y como están instalados por root (y como tales tienen los "poderes" y capacidades de root), no estaba seguro sobre eso.

jrg
fuente

Respuestas:

32

Cosas para considerar:

  • ¿Qué tan conocido es el sitio? Por ejemplo, ¿era un blog aleatorio cubierto de anuncios, era un usuario aleatorio en algún foro o era un sitio conocido y respetado?

  • ¿Qué dice instalar? Por ejemplo, ¿afirma instalar un núcleo o un conjunto de iconos, pero tiene solo 1 MB de tamaño?

  • ¿Qué tan "importante" es tener el contenido de esto .deb?

Formas de probar cosas de forma segura:

Uso arkose( está en los Instalar arkose repositorios estándar ) sandboxing con mis debs (y otras cosas). Úselo de esta manera:

sudo arkose -n -c "cd $PWD; $SHELL"

Lo que eso me da es una "caja de arena" (también conocida como "YAY I CAN SCREW UP!") Con acceso de copia en escritura a todo en mi computadora, incluido mi directorio de inicio, así que si el desagradable desagradable lo .debhace sudo rm -rf /*, NO LO HAGO ¡PIERDA CUALQUIER DATO!

Otra cosa que no está lo suficientemente estresada es HACER COPIAS DE SEGURIDAD . Esos son extremadamente útiles, y tenemos muchas preguntas sobre el tema.

En resumen, solo asegúrese de pensarlo, y no solo descargue una deb aleatoria e instálela.

jrg
fuente
2
Abre el .debarchivo con el rodillo para ver qué hay dentro. Aunque debo decir que descargué un deb aleatorio de un usuario aleatorio en un hilo aleatorio en los foros de Ubuntu para solucionar mis problemas con mi impresora, funcionó.
Uri Herrera
20

Si está descargando un paquete de fuentes no confiables o cuestionables, sea paranoico. En foros populares como ubuntuforums.org, si un usuario hace su primera publicación que contiene solo un texto breve como "¡instalar esto, funciona para mí!", Seguido de un enlace, tenga cuidado con ese enlace y / o instrucciones.

No use paquetes binarios si es posible, especialmente de fuentes no confiables. Obtenga la fuente (para los paquetes oficiales de Ubuntu, esto se puede hacer con apt-get source package-name) y eche un vistazo.

Si el paquete en cuestión es pequeño, puede valer la pena analizarlo. Yo prefiero usar el terminal para eso porque entonces acceso rápido a otras herramientas de gran alcance de línea de comandos como ls, find, file, less, vim, grep, sed, dpkgy muchos otros. Haga uso de completar pestañas (es decir, presionar Tabpara completar comandos y nombres de archivos), ¡realmente ahorra tiempo!

Para descargar un archivo .deb, puede usar el navegador, pero copiar el enlace y luego usarlo wgetes más rápido ya que ya puede experimentar con él.

$ mkdir /tmp/foo && cd /tmp/foo
$ wget http://nl.archive.ubuntu.com/ubuntu/pool/main/n/nvidia-common/nvidia-common_0.2.35_amd64.deb

A continuación, es hora de verificar el archivo en sí. less(a través lesspipe) puede proporcionar una visión general rápida del contenido del archivo. Las teclas de flecha, página arriba / abajo, inicio / fin pueden ser útiles para navegar, Qsale del programa

$ less nvidia-common_0.2.35_amd64.deb
nvidia-common_0.2.35_amd64.deb:
 new debian package, version 2.0.
 size 10802 bytes: control archive= 1877 bytes.
     197 bytes,    11 lines   *  config               #!/bin/sh
     703 bytes,    16 lines      control              
     741 bytes,    10 lines      md5sums              
     163 bytes,     9 lines   *  postinst             #!/bin/sh
     206 bytes,     8 lines   *  postrm               #!/bin/sh
     827 bytes,    38 lines   *  preinst              #!/bin/sh
     263 bytes,    14 lines   *  prerm                #!/bin/sh
     365 bytes,    12 lines      templates            
 Package: nvidia-common
 Version: 1:0.2.35
 Architecture: amd64
 Maintainer: Ubuntu Developers <[email protected]>
 Installed-Size: 156
 Pre-Depends: dpkg (>= 1.15.7.2)
 Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2), python (<< 2.8), debconf (>= 0.5.00) | debconf-2.0, pciutils, python-apt
 Conflicts: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
 Replaces: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
 Section: admin
 Priority: optional
 Description: Find obsolete NVIDIA drivers
  This package will find obsolete NVIDIA drivers in use,
  detect the hardware and recommend the most appropriate
  driver.
 Python-Version: 2.6, 2.7

*** Contents:
drwxr-xr-x root/root         0 2011-09-07 11:06 ./
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/doc/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/doc/nvidia-common/
-rw-r--r-- root/root      1174 2011-09-07 11:07 ./usr/share/doc/nvidia-common/changelog.gz
-rw-r--r-- root/root       466 2011-06-24 14:45 ./usr/share/doc/nvidia-common/copyright
...

Después de esto, obtiene una visión general de las dependencias del paquete y qué tipo de archivos contiene. Tiempo para extraer los archivos y analizar los contenidos usando dpkg-deb. El primer comando extrae el árbol de archivos en un directorio recién creado fs, el segundo lo extrae DEBIANporque no se especifica ningún otro objetivo:

$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb

Vamos a utilizar lessde nuevo para analizar el contenido de los programas de desarrollador (es decir, los archivos que se van a utilizar / se ejecutan durante la instalación (y eliminación). prerm, preinst, postrm, postinstSon las secuencias de comandos se ejecutan antes / después de la eliminación / instalación que son los archivos más importantes para analizar Use :ny :ppara cambiar entre los archivos. Al presionar =, obtiene el nombre del archivo actual y el número de línea, así como el número de archivos que están en la lista.

$ less DEBIAN/*

Si las secuencias de comandos del paquete se ven sanas, es hora de analizar el contenido instalado (use tabulación completa). Para los scripts de shell y los scripts interpretados (como Python), el análisis es más fácil (suponiendo que se le conoce con el lenguaje).

$ less fs/usr/bin/nvidia-detector    # fs<TAB><TAB>/usr/ <TAB><TAB>bin ...
$ less fs/usr/lib/nvidia/pre-install
$ ls -la fs/usr/lib     # quickly check the directory contents, my memory is weak
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 .
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 ..
drwxr-xr-x 2 peter peter  60 2011-09-07 11:06 nvidia
drwxr-xr-x 3 peter peter  60 2011-09-07 11:06 python2.6
drwxr-xr-x 3 peter peter  60 2011-09-07 11:06 python2.7
$ # I conclude: python2.6 is not a symlink to python2.7
$ less fs/usr/lib/python2.7/dist-packages/NvidiaDetector/*
press 'v' to open an editor (e.g. nano, vim) to get syntax highlighting if preferable

Preste especial atención a los archivos de configuración, especialmente si están utilizando directorios como /etc/init(para scripts de inicio) u /etc/modprobe.d(opciones para cargar módulos del kernel).

Para los archivos binarios, lddpuede dar una idea de para qué podría usarse un programa. El siguiente programa se parece a un programa gráfico que usa OpenGL.

$ ldd /usr/bin/glxgears
    linux-vdso.so.1 =>  (0x00007fff7d3ff000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007fa2ead11000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa2eaa8d000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa2ea754000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa2ea3b5000)
...

Después de que esté seguro de que el paquete se parece válida, puede ir en instalarlo en VirtualBox arrancar desde un Live CD y el uso ps aux, top, strace -f -o logfile.txt programnamepara su posterior análisis.

Lekensteyn
fuente