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

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

29
задан 23 January 2012 в 00:12

2 ответа

Вещи рассмотреть:

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

  • , Что это утверждает, что установило? Например, это утверждает, что установило ядро или iconset, но является им большой только 1 МБ?

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

Способы протестировать вещи надежно:

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

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

, Что это, это дает мне "песочницу" (иначе известный как "YAY I ВИНТОВ CAN!") с копией на доступе для записи ко всему на моем компьютере, включая мой корневой каталог - поэтому, если противное противное .deb делает sudo rm -rf /*, , я не ТЕРЯЮ ДАННЫХ!

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

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

32
ответ дан 23 January 2012 в 00:12

Если Вы загружаете пакет с недоверяемых или сомнительных источников, являются параноидальными. На популярных форумах как 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) может предоставить быстрый обзор содержания файла. Клавиши со стрелками, страница, up/down, дом/конец может быть полезен для навигации, 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, загружающемся от Живого CD и использования ps aux, top, strace -f -o logfile.txt programname для дальнейшего анализа.

20
ответ дан 23 January 2012 в 00:12

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

Похожие вопросы: