Tôi nên dùng biện pháp phòng ngừa nào với .debs trên internet?


29

Vì vậy, tôi đã duyệt web vào một ngày khác và tôi đã đi qua một vài nơi muốn tôi tải xuống .debcác tệp - và vì chúng được cài đặt bởi root (và như vậy có "quyền hạn" và khả năng của root), tôi đã không chắc chắn với điều đó.

Câu trả lời:


32

Những điều cần cân nhắc:

  • Làm thế nào nổi tiếng là các trang web? Ví dụ: đó có phải là một blog ngẫu nhiên được bao phủ trong quảng cáo, nó là một người dùng ngẫu nhiên trên một số diễn đàn, hay nó là một trang web nổi tiếng, được tôn trọng?

  • Nó yêu cầu cài đặt cái gì? Ví dụ: nó có yêu cầu cài đặt kernel hoặc iconet không, nhưng nó chỉ lớn 1MB?

  • Làm thế nào "quan trọng" là bạn có nội dung của điều này .deb?

Các cách để kiểm tra mọi thứ một cách an toàn:

Tôi sử dụng arkose( trong repos tiêu chuẩn Cài đặt arkose ) sandboxing với các cuộc tranh luận của tôi (và những thứ khác) - sử dụng nó như thế này:

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

Có gì mà nó cho tôi một "sandbox" (hay còn gọi là "YAY Tôi có thể vít lên!") Với copy-on-write quyền truy cập vào tất cả mọi thứ trên máy tính của tôi, trong đó có thư mục chính của tôi - vì vậy nếu khó chịu khó chịu .debkhông sudo rm -rf /*, tôi DON 'TẤT CẢ MỌI DỮ LIỆU!

Một điều nữa không đủ căng thẳng là MAKE BACKUPS . Đó là những điều cực kỳ hữu ích, và chúng tôi có nhiều câu hỏi về chủ đề này.

Nói tóm lại, chỉ cần đảm bảo rằng bạn nghĩ về nó và không chỉ tải xuống một cuộc tranh luận ngẫu nhiên và cài đặt nó.


2
Mở .debcon lăn với File xem những gì bên trong. Mặc dù tôi phải nói rằng tôi đã tải xuống một cuộc tranh luận ngẫu nhiên từ một người dùng ngẫu nhiên trên một chuỗi ngẫu nhiên trên các diễn đàn Ubuntu để khắc phục sự cố của tôi với máy in của tôi, nhưng nó đã hoạt động.
Uri Herrera

20

Nếu bạn đang tải xuống một gói từ các nguồn không đáng tin cậy hoặc nghi vấn, hãy hoang tưởng. Trên các diễn đàn phổ biến như ubuntuforums.org, nếu người dùng tạo bài đăng đầu tiên của mình chỉ chứa một văn bản ngắn như "cài đặt cái này, làm việc cho tôi!", Theo sau là một liên kết, hãy cẩn thận với liên kết và / hoặc hướng dẫn đó.

Không sử dụng các gói nhị phân nếu có thể, đặc biệt là từ các nguồn không đáng tin cậy. Lấy nguồn (đối với các gói Ubuntu chính thức, điều này có thể được thực hiện apt-get source package-name) và xem xét nó.

Nếu gói trong câu hỏi là nhỏ, nó có thể có giá trị phân tích nó. Tôi thích sử dụng các thiết bị đầu cuối cho điều đó bởi vì tôi sau đó phải công cụ mạnh mẽ dòng lệnh khác như truy cập nhanh ls, find, file, less, vim, grep, sed, dpkgvà rất nhiều người khác. Sử dụng hoàn thành tab (tức là nhấn Tabđể hoàn thành các lệnh và tên tệp), nó thực sự tiết kiệm thời gian!

Để tải xuống tệp .deb, bạn có thể sử dụng trình duyệt, nhưng sao chép liên kết và sau đó sử dụng wgetnhanh hơn vì bạn đã có thể thử nghiệm với nó.

$ 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

Tiếp theo, đã đến lúc kiểm tra tệp. less(thông qua lesspipe) có thể cung cấp một cái nhìn tổng quan nhanh về nội dung tập tin. Các phím mũi tên, trang lên / xuống, home / end có thể hữu ích cho việc điều hướng, Qthoát khỏi chương trình.

$ 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
...

Sau này, bạn có được cái nhìn tổng quan về các phụ thuộc gói và loại tệp nào có thể chứa. Thời gian để giải nén các tập tin và phân tích nội dung bằng cách sử dụng dpkg-deb. Lệnh đầu tiên trích xuất cây tệp trong một thư mục mới được tạo fs, lệnh thứ hai trích xuất nó DEBIANvì không có mục tiêu nào khác được chỉ định:

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

Chúng tôi sẽ sử dụng lessmột lần nữa để phân tích các nội dung của kịch bản duy trì (tức là các tập tin mà sẽ được sử dụng / chạy trong khi cài đặt (và xóa). prerm, preinst, postrm, postinstLà kịch bản chạy trước / sau khi loại bỏ / cài đặt mà là hầu hết các tập tin quan trọng để phân tích Sử dụng :n:pđể chuyển đổi giữa các tệp. Bằng cách nhấn =, bạn sẽ có được tên tệp và số dòng hiện tại cũng như số lượng tệp trong danh sách.

$ less DEBIAN/*

Nếu các tập lệnh gói trông có vẻ lành mạnh, đã đến lúc phân tích nội dung được cài đặt (sử dụng hoàn thành tab). Đối với tập lệnh shell và tập lệnh được giải thích (như Python), việc phân tích sẽ dễ dàng hơn (giả sử rằng bạn đã biết ngôn ngữ này).

$ 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

Đặc biệt chú ý đến các tệp cấu hình, đặc biệt nếu chúng đang sử dụng các thư mục như /etc/init(đối với tập lệnh khởi động) hoặc /etc/modprobe.d(tùy chọn để tải các mô-đun hạt nhân).

Đối với các tệp nhị phân, lddcó thể đưa ra ý tưởng chương trình có thể được sử dụng cho mục đích gì. Chương trình dưới đây trông giống như một chương trình đồ họa sử dụng 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)
...

Sau khi bạn chắc chắn rằng gói trông hợp lệ, bạn có thể tiếp tục cài đặt nó trong VirtualBox khởi động từ đĩa CD và sử dụng trực tiếp ps aux, top, strace -f -o logfile.txt programnameđể phân tích thêm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.