Какие меры предосторожности я должен предпринять с.debs, которые я нахожу в Интернете?

Так что я просматривал Интернет на днях и наткнулся на несколько мест, которые хотели, чтобы я скачал .deb файлы - и так как они устанавливаются пользователем root (и поэтому обладают "полномочиями" и возможностями root), я не был уверен в этом.

2 ответа

Решение

Что нужно учитывать:

  • Насколько хорошо известен сайт? Например, это был случайный блог, покрытый рекламой, случайный пользователь на каком-то форуме или это хорошо известный, уважаемый сайт?

  • Что он утверждает, чтобы установить? Например, он утверждает, что устанавливает ядро ​​или набор иконок, но он имеет размер всего 1 МБ?

  • Насколько "важно", что у вас есть содержание этого .deb?

Способы безопасного тестирования:

я использую arkose ( его в стандартных репо Установить аркосе) песочница с моими девами (и другими вещами) - используйте это примерно так:

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

Что это дает мне "песочницу" (иначе известную как "Я МОГУ КРАТИТЬСЯ!") С доступом копирования на запись ко всему на моем компьютере, включая мой домашний каталог - так что, если неприятная неприятность .deb делает sudo rm -rf /* Я не теряю никаких данных!

Еще одна вещь, которая недостаточно подчеркнута, СДЕЛАТЬ РЕЗЕРВНЫЕ КОПИИ. Это очень полезно, и у нас есть много вопросов по этой теме.

Короче говоря, просто убедитесь, что вы думаете об этом, а не просто скачать случайный деб и установить его.

Если вы загружаете пакет из ненадежных или сомнительных источников, будьте параноиком. На популярных форумах, таких как ubuntuforums.org, если пользователь делает свой первый пост, содержащий только краткий текст типа "установить это, работает для меня!", За которым следует ссылка, будьте осторожны с этой ссылкой и / или инструкциями.

Не используйте бинарные пакеты, если это возможно, особенно из ненадежных источников. Получить исходный код (для официальных пакетов Ubuntu это можно сделать с помощью apt-get source package-name) и посмотрите на это.

Если рассматриваемый пакет небольшой, возможно, стоит проанализировать его. Я предпочитаю использовать терминал для этого, потому что тогда у меня будет быстрый доступ к другим мощным инструментам командной строки, таким как ls, find, file, less, vim, grep, sed, dpkg и много других. Используйте завершение табуляции (то есть нажатие клавиши Tab для завершения команд и имен файлов), это действительно экономит время!

Чтобы скачать файл.deb, вы можете использовать браузер, но скопировав ссылку, а затем использовать wget быстрее, так как вы уже можете экспериментировать с ним.

$ 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

Далее пришло время проверить сам файл. less (через lesspipe) может предоставить краткий обзор содержимого файла. Клавиши со стрелками, страница вверх / вниз, домой / конец могут быть полезны для навигации, Q выходит из программы.

$ 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 <ubuntu-devel-discuss@lists.ubuntu.com>
 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
...

После этого вы получите обзор зависимостей пакета и того, какие файлы он может содержать. Время для извлечения файлов и анализа содержимого с помощью dpkg-deb, Первая команда извлекает дерево файлов во вновь созданный каталог fs второй извлекает его DEBIAN потому что другая цель не указана:

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

Мы будем использовать less еще раз проанализировать содержимое сценариев сопровождающего (то есть файлов, которые будут использоваться / запускаться во время установки (и удаления). prerm, preinst, postrm, postinst скрипты, запускаемые до / после удаления / установки, которые являются наиболее важными файлами для анализа. использование :n а также :p переключаться между файлами. Нажав =, вы получите текущее имя файла и номер строки, а также количество файлов, которые находятся в списке.

$ less DEBIAN/*

Если скрипты пакета выглядят вменяемыми, самое время проанализировать установленное содержимое (используйте tab-завершение). Для сценариев оболочки и интерпретируемых сценариев (таких как Python) анализ проще (при условии, что вы знакомы с языком).

$ 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

Обратите особое внимание на файлы конфигурации, особенно если они используют такие каталоги, как /etc/init (для сценариев запуска) или /etc/modprobe.d (варианты загрузки модулей ядра).

Для двоичных файлов, ldd может дать представление, для чего может быть использована программа. Приведенная ниже программа выглядит как графическая программа, использующая 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)
...

Убедившись, что пакет выглядит корректно, вы можете установить его в VirtualBox, загрузить Live CD и использовать ps aux, top, strace -f -o logfile.txt programname для дальнейшего анализа.

Другие вопросы по тегам