Quelles précautions dois-je prendre avec .debs que je trouve sur Internet?

29

Donc, je naviguais sur le Web l'autre jour, et je suis tombé sur quelques endroits qui voulaient que je télécharge des .debfichiers - et puisque ceux-ci sont installés par root (et en tant que tels ont les "pouvoirs" et capacités de root), je n'étais pas sûr de ça.

jrg
la source

Réponses:

32

Choses à considérer:

  • Le site est-il bien connu? Par exemple, s'agissait-il d'un blog aléatoire couvert de publicités, d'un utilisateur aléatoire sur un forum ou d'un site bien connu et respecté?

  • Que prétend-il installer? Par exemple, prétend-il installer un noyau ou un jeu d'icônes, mais est-il seulement gros de 1 Mo?

  • Dans quelle mesure est-ce "important" que vous ayez le contenu de cela .deb?

Façons de tester les choses en toute sécurité:

J'utilise arkose( son dans le repos standard Installer Arkose ) sandboxing avec mes debs (et d'autres choses) - utilisez-le quelque chose comme ceci:

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

Qu'est-ce que cela me donne un "bac à sable" (autrement connu comme "YAY I CAN SCREW UP!") Avec un accès en copie sur tout à mon ordinateur, y compris mon répertoire personnel - donc si le méchant méchant le .debfait sudo rm -rf /*, JE DONNE NE PERDEZ AUCUNE DONNÉE!

FAIRE DES SAUVEGARDES est une autre chose qui n'est pas assez soulignée . Ces informations sont extrêmement utiles et nous avons de nombreuses questions sur le sujet.

En bref, assurez-vous d'y penser et ne téléchargez pas simplement un deb aléatoire et installez-le.

jrg
la source
2
Ouvrez le .debrouleau de fichiers pour voir ce qu'il y a à l'intérieur. Bien que je dois dire que j'ai téléchargé un deb aléatoire d'un utilisateur aléatoire sur un thread aléatoire sur les forums Ubuntu pour résoudre mes problèmes avec mon imprimante, cela a fonctionné.
Uri Herrera
20

Si vous téléchargez un package à partir de sources non fiables ou douteuses, soyez paranoïaque. Sur les forums populaires comme ubuntuforums.org, si un utilisateur fait son premier message contenant uniquement un court texte comme "installez ceci, ça marche pour moi!", Suivi d'un lien, faites attention à ce lien et / ou aux instructions.

N'utilisez pas de packages binaires si possible, en particulier à partir de sources non fiables. Obtenez la source (pour les packages officiels Ubuntu, cela peut être fait avec apt-get source package-name) et jetez un coup d'œil.

Si le package en question est petit, il peut être utile de l'analyser. Je préfère utiliser le terminal pour cela parce que j'ai alors un accès rapide à d' autres outils de ligne de commande puissante comme ls, find, file, less, vim, grep, sed, dpkget beaucoup d' autres. Utilisez la complétion de tabulation (c'est-à-dire frapper Tabpour terminer les commandes et les noms de fichiers), cela fait vraiment gagner du temps!

Pour télécharger un fichier .deb, vous pouvez utiliser le navigateur, mais copier le lien puis l'utiliser wgetest plus rapide car vous pouvez déjà l'expérimenter.

$ 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

Ensuite, il est temps de vérifier le fichier lui-même. less(à travers lesspipe) peut fournir un aperçu rapide du contenu du fichier. Les touches fléchées, page haut / bas, accueil / fin peuvent être utiles pour naviguer, Qquitte le programme.

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

Après cela, vous obtenez un aperçu des dépendances du package et du type de fichiers qu'il contient éventuellement. Il est temps d'extraire les fichiers et d'analyser le contenu à l'aide dpkg-deb. La première commande extrait l'arborescence des fichiers dans un répertoire nouvellement créé fs, la seconde l'extrait vers DEBIANcar aucune autre cible n'est spécifiée:

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

Nous allons utiliser à lessnouveau pour analyser le contenu des scripts de maintenance ( par exemple les fichiers qui seront utilisés / exécutés lors de l' installation (et l' élimination). prerm, preinst, postrm, postinstSont des scripts exécutés avant / après le retrait / l' installation qui sont les fichiers les plus importants pour analyser . Utilisez :net :ppour basculer entre les fichiers. En appuyant sur =, vous obtenez le nom de fichier actuel et le numéro de ligne ainsi que le nombre de fichiers qui sont dans la liste.

$ less DEBIAN/*

Si les scripts de package semblent sains d'esprit, il est temps d'analyser le contenu installé (utilisez la tabulation). Pour les scripts shell et les scripts interprétés (comme Python), l'analyse est plus facile (en supposant que vous connaissez le langage).

$ 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

Portez une attention particulière aux fichiers de configuration, en particulier s'ils utilisent des répertoires tels que /etc/init(pour les scripts de démarrage) ou /etc/modprobe.d(options de chargement des modules du noyau).

Pour les binaires, lddpeut donner une idée de l'utilisation d'un programme. Le programme ci-dessous ressemble à un programme graphique qui utilise 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)
...

Une fois que vous êtes sûr que le paquet semble valide, vous pouvez aller sur l' installer dans le démarrage VirtualBox partir d' un CD en direct et l' utilisation ps aux, top, strace -f -o logfile.txt programnamepour une analyse ultérieure.

Lekensteyn
la source