인터넷에서 찾은 .deb에 대해 어떤 예방책을 취해야합니까?


29

그래서 다른 날에 웹을 탐색하고 있었고 .deb파일 을 다운로드하기를 원하는 몇 곳을 발견했습니다. 파일은 루트로 설치 되었기 때문에 ( 그러므로 "파워"및 루트의 기능이 있기 때문에) 그것에 대해 확신하십시오.

답변:


32

고려해야 할 사항 :

  • 이 사이트는 얼마나 잘 알려져 있습니까? 예를 들어 광고에 포함 된 임의의 블로그입니까, 일부 포럼의 임의의 사용자입니까, 잘 알려진 존경받는 사이트입니까?

  • 무엇을 설치한다고 주장합니까? 예를 들어, 커널 또는 아이콘 세트를 설치한다고 주장하지만 크기가 1MB에 불과합니까?

  • 이 내용이 얼마나 "중요" .deb합니까?

안전하게 테스트하는 방법 :

내가 사용하는 arkose( 그 표준의 repos에서 아 코즈 설치 이 같이 사용 무언가 -) 내 DEBS (그리고 다른 것들)과 샌드 박스를

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

무엇 그게 내 홈 디렉토리를 포함하여, 나에게 내 컴퓨터에있는 모든에 복사 (copy-on-write) 액세스 할 수있는 "샌드 박스"( "! YAY I CAN SCREW UP"그렇지 않으면로 알려진)을 얻었다 않습니다 - 불쾌한 불쾌한 그렇게하면 .deb하지 sudo rm -rf /*, I DON 데이터를 잃어 버리지 마십시오!

충분히 강조되지 않은 또 다른 것은 MAKE BACKUPS 입니다. 그것들은 매우 도움이 되며 주제에 대해 많은 질문이 있습니다.

간단히 말해서, 당신이 그것에 대해 생각하고 무작위 deb를 다운로드하여 설치하지 마십시오.


2
.debwith with 파일 롤러를 열어 내부 내용을 확인하십시오. 내 프린터의 문제를 해결하기 위해 우분투 포럼의 임의 스레드에서 임의의 사용자로부터 임의의 deb를 다운로드했다고 말해야하지만 제대로 작동했습니다.
Uri Herrera

20

신뢰할 수 없거나 의심스러운 소스에서 패키지를 다운로드하는 경우 편집증을하십시오. ubuntuforums.org와 같은 인기있는 포럼에서 사용자가 "install this, works for me!"와 같은 짧은 텍스트 만 포함 된 첫 번째 게시물을 만든 경우 링크가 있으면 해당 링크 및 / 또는 지침에주의하십시오.

가능하면 특히 신뢰할 수없는 출처에서 바이너리 패키지를 사용하지 마십시오. 소스를 가져 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/*

패키지 스크립트가 제대로 보이지 않으면 설치된 내용을 분석해야합니다 (탭 완성 사용). 쉘 스크립트 및 해석 된 스크립트 (예 : 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)
...

패키지가 유효 보이는 것이 확실하면 갈 수있는 라이브 CD와 사용 떨어져 버추얼 부팅에 설치 ps aux, top, strace -f -o logfile.txt programname추가 분석을 위해.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.