“sudo dpkg --verify” 有什么用?

“sudo dpkg --verify” 有什么用?

一切都好吗?

$ sudo dpkg --verify
[sudo] password for *******: 
??5?????? c /etc/bash.bashrc
??5?????? c /etc/gdm3/custom.conf
??5?????? c /etc/sysctl.conf
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/rtl8188ee.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rtl8192ee.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/rtl8723ae.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723be/rtl8723be.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko
??5??????   /lib/modules/4.15.0-46-generic/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
??5?????? c /etc/apparmor.d/usr.bin.webbrowser-app
??5?????? c /etc/X11/Xsession.d/99upstart
??5?????? c /etc/X11/Xsession.d/00upstart
??5?????? c /etc/xdg/autostart/print-applet.desktop
??5??????   /lib/firmware/rtlwifi/rtl8192eefw.bin
??5??????   /lib/firmware/rtlwifi/rtl8821aefw.bin
??5??????   /lib/firmware/rtlwifi/rtl8822befw.bin
??5??????   /usr/share/gnome-mahjongg/themes/postmodern.svg

答案1

来自以下手册页dpkg

--verify [package name]

通过将软件包安装的文件信息与存储在 dpkg 数据库中的文件元数据信息进行比较(自 dpkg 1.17.2 起),验证软件包名称或所有软件包(如果省略)的完整性。数据库中文件元数据信息的来源是二进制软件包本身。在安装过程中,软件包解压时会收集该元数据。

目前唯一执行的功能检查是针对文件数据库中存储的值对文件内容进行 md5sum 验证。只有当数据库包含文件 md5sum 时才会进行检查。要检查数据库中是否有任何缺失的元数据,--audit可以使用该命令。

由于您没有提供任何软件包名称,它将根据文件数据库中存储的值检查所有文件的 md5sum。这可能需要很长时间。因此,最好一次使用某个特定的软件包名称来运行它。

这里的输出是因为一些错误。

  • ?表示由于权限问题无法检查文件
  • c表示这是一个配置文件
  • 5表示验证失败

答案2

sudo dpkg --verify将检查已安装文件的完整性。运行此命令时,您将看到安装后哪些文件发生了更改。这些文件通常是配置文件。查看已更改的文件并检查它们是否有效。

我经常使用 RPM 的命令rpm -Varpm -qa,它们对连接到互联网的一些服务器进行类似的检查。通过这种方式,我监视是否有任何文件从外部被更改,或者是否有任何新的数据包被安装,这意味着我的服务器上存在安全漏洞或不速之客。当然,这些检查还不够,但这是可以做到的保护措施之一。

验证命令可能需要一段时间,但根据我的经验,它不会太长 - 几分钟。

相关内容