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.
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 standard ) 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.
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.