web-dev-qa-db-fra.com

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

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

29
jrg

Choses à considérer:

  • À quel point le site est-il connu? Par exemple, s'agissait-il d'un blog choisi au hasard dans des annonces, 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 ensemble d'icônes, mais est-ce seulement 1 Mo de gros?

  • À quel point est-il "important" que vous ayez le contenu de ce .deb?

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

J'utilise arkose ( c'est dans les dépôts standardInstall arkose ) sandboxing avec mes debs (et autres choses) - utilisez-le à peu près comme ceci:

Sudo arkose -n -c "cd $PWD; $Shell"

Qu'est-ce que cela me donne un "bac à sable" (autrement connu sous le nom de "YAY I CAN SCREW UP!") Avec un accès en copie sur écriture à tout ce qui se trouve sur mon ordinateur, y compris mon répertoire personnel - donc si le méchant .deb ne Sudo rm -rf /*, JE NE PERD PAS DE DONNEES!

Une autre chose qui n'est pas assez soulignée est FAIRE DES SAUVEGARDES . Celles-ci sont extrêmement utiles et nous avons beaucoup de questions sur le sujet.

En bref, assurez-vous d'y penser, et ne vous contentez pas de télécharger un fichier deb au hasard et de l'installer.

32
jrg

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

N'utilisez pas de paquets binaires si possible, en particulier à partir de sources non fiables. Obtenez le source (pour les paquets officiels Ubuntu, cela peut être fait avec _apt-get source package-name_) et jetez-y un coup d'oeil.

Si le paquet en question est petit, il peut être intéressant de l’analyser. Je préfère utiliser le terminal pour cela car j'ai alors un accès rapide à d'autres outils puissants en ligne de commande tels que ls, find, file, less, vim, grep, sed, dpkg et beaucoup d'autres. Utiliser la complétion par tabulation (c.-à-d. Frapper Tab compléter 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 utiliser wget est plus rapide, car vous pouvez déjà l'essayer.

_$ 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 (via lesspipe) peut donner un aperçu rapide du contenu du fichier. Les touches fléchées, page haut/bas, home/end peuvent être utiles pour naviguer, Q quitte 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 une vue d'ensemble des dépendances du paquet et du type de fichiers qu'il contient éventuellement. Il est temps d'extraire les fichiers et d'analyser le contenu à l'aide de dpkg-deb . La première commande extrait l’arborescence de fichiers dans un répertoire nouvellement créé fs, la seconde l’extrait dans DEBIAN car 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 utiliserons à nouveau less pour analyser le contenu des scripts de maintenance (c'est-à-dire les fichiers qui seront utilisés/exécutés lors de l'installation (et de la suppression). prerm, preinst, postrm, postinst sont les scripts exécutés avant/après suppression/installation, qui constituent les fichiers les plus importants à analyser. Utilisez _:n_ et _:p_ pour passer d'un fichier à l'autre. Appuyez sur _=_, vous obtenez le nom de fichier actuel et le numéro de ligne ainsi que le nombre de fichiers figurant dans la liste.

_$ less DEBIAN/*
_

Si les scripts du paquet semblent sains, il est temps d'analyser le contenu installé (utilisez la complétion par tabulation). Pour les scripts Shell et les scripts interprétés (comme Python), l'analyse est plus facile (en supposant que vous êtes connu avec 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 fichiers binaires, ldd peut donner une idée de l'utilisation d'un programme. Le programme ci-dessous ressemble à un programme graphique utilisant 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 a l'air valide, vous pouvez l'installer dans VirtualBox en démarrant à partir d'un Live CD et utiliser _ps aux_, top, _strace -f -o logfile.txt programname_ pour une analyse plus approfondie.

20
Lekensteyn