PPA是否安全添加到我的系统中?有哪些“红旗”需要注意?

我看到有很多有趣的程序,只能通过向系统添加“PPA”来获取,但是,如果我理解正确,我们应该在官方“软件源”内添加软件到我们的系统。

对于初学者来说,有没有办法知道一个“PPA”是否安全,或者应该避免使用?用户在处理PPA时应该了解哪些提示呢?


2请参阅:http://askubuntu.com/questions/7662/is-there-any-guarantee-that-software-from-launchpad-ppas-is-free-from-viruses-an - Mechanical snail
你可以检查一下是否有可用的snappy软件包。它们往往受到安全规则的限制。虽然对于某些快照,你需要明确授予特定权限,但总体问题是相同的(你需要信任发布者)。 - Ken Sharp
9个回答

PPA(个人软件包存档)用于将特定软件添加到您的Ubuntu、Kubuntu或任何其他兼容PPA的发行版中。PPA的"安全性"主要取决于以下三个因素:
谁创建了PPA——官方的PPA来自WINE或LibreOffice,例如ppa:libreoffice/ppa,而我自己创建的PPA不同。你不认识我作为PPA维护者,因此对于我来说,信任问题和安全性非常低(因为我可能创建了损坏的软件包、不兼容的软件包或其他任何有害的东西),但是对于LibreOffice和他们在网站上提供的PPA,这会给它提供一定的安全保障。因此,取决于谁创建了PPA,他或她创建和维护PPA的时间长短将在多大程度上影响PPA对您的安全性。正如评论中提到的,PPA未经Canonical认证。
PPA有多少用户使用——例如,我在我的个人PPA中有一个http://winehq.org ,你会相信我吗?其中10个用户确认使用我的PPA,其中6个人说它很糟糕,比起Scott Ritchie在官方winehq网站上提供的ppa:ubuntu-wine/ppa更加值得信任。它拥有成千上万的用户(包括我)使用他的PPA并信任他的工作。这项工作已经有几年的历史了。您可以使用PPA统计网页检查PPA下载次数。
PPA更新了多久——假设您正在使用Ubuntu 10.04或10.10,并想使用那个特殊的PPA。你发现那个PPA的最后更新是20年前.. O.o.你使用那个PPA的机会为零。为什么?因为该PPA所需的软件包依赖关系非常老旧,而更新的软件包可能改变了太多代码,以至于它们无法与该PPA一起工作,并且如果您将该PPA的任何软件包安装到系统中,则可能会破坏您的系统。
如何更新PPA会影响是否使用它,如果他/她想要使用那个PPA的话。如果不是的话,他们宁愿去寻找一个更为更新的PPA。你不想要Banshee 0.1或Wine 0.0.0.1或OpenOffice 0.1 Beta Alpha Omega Thundercat Edition与最新的Ubuntu。你想要的是一个与你当前的Ubuntu相匹配的PPA。请记住,PPA会说明它适用于哪个Ubuntu版本,或者适用于多个Ubuntu版本。
以下是Wine PPA支持的版本的示例图像:

enter image description here

在这里,你可以看到自恐龙时代以来,这个PPA得到了支持。
关于PPA更新的一个坏处是,如果PPA维护者倾向于将特定软件包的最新、最伟大和最前沿的版本推送到PPA中。这样做的缺点是,如果你要测试最新的东西,你肯定会遇到一些bug。尽量选择那些更新到稳定版本而不是不稳定、测试或开发版本的PPA,因为它可能/肯定会包含bug。拥有最新版本的想法也是为了测试并指出发现的问题并解决它们。这方面的一个例子是每日Xorg PPAs和每日Mozilla PPAs。如果你使用每日版,你将获得大约3个每日更新的X.org或Firefox。这是因为他们在那里付出了努力,如果你使用他们的每日PPAs,意味着你想帮助寻找bug或进行开发,而不是用于生产环境。
基本上,只要坚持使用这三个PPA,你就会安全无虞。始终要查找PPA的创建者/维护者。始终要看看有多少用户使用它,并且要看看PPA的更新情况。像OMGUbuntuPhoronixSlashdotThe HWebUp8甚至在AskUbuntu这里都是寻找许多用户和文章谈论并推荐一些他们已经测试过的PPA的好来源。 稳定的PPA示例 - LibreOffice、OpenOffice、Banshee、Wine、Kubuntu、Ubuntu、Xubuntu、PlayDeb、GetDeb、VLC是我个人经验中好而安全的PPA。 半稳定的PPA - X-Swat PPA是介于最新和稳定之间的中间PPA。 Bleeding Edge PPA - Xorg-Edgers是一个前沿的PPA,尽管我应该提到,在12.04之后,这个PPA变得越来越稳定。我仍然会将其标记为前沿的,但对于终端用户来说已经足够稳定了。 可选PPA - Handbrake在这里为用户提供了一种选择,你想要一个稳定版本还是想要前沿(也称为快照)版本。在这种情况下,你可以选择你想要使用的版本。
请注意,在使用X-Swat PPA和Xorg-Edgers PPA时,你将得到两者之间的混合版本(以Xorg-Edgers为优先)。这是因为两者都试图包含几乎相同的软件包,所以它们将互相覆盖,只有最新的软件包会显示在你的存储库中(除非你手动告诉它从X-Swat获取软件包)。
有些PPA在添加到存储库时可能会更新一些软件包,因为它们会用自己的版本覆盖某个软件包,以确保PPA软件在您的系统上正常工作。这可能是一些代码软件包、Python版本等等。而像LibreOffice PPA这样的PPA将删除您系统中所有OpenOffice的存在,并安装LibreOffice软件包。基本上,阅读其他用户对特定软件包的评论,并查看该软件包是否与您的Ubuntu版本兼容。
正如Jeremy Bicha在下面的评论中所建议的那样,一些最新版本的PPA(包括在PPA中添加Alpha、Beta或RC质量的软件)可能会潜在地损坏整个系统(在最糟糕的情况下)。Jeremy提到了一个例子。

这对于安装主题如equinox、elementary等所需的众多PPA是否属实? - abel
2是的。這適用於任何 PPA。請記住,PPA只是一種通過某人將其升級,以更新程序或一組程序的便捷方式。因此,這是一個某人專門為了讓某事物與最新/較老的系統兼容而花費時間的地方。但由於這是由人完成的,可能會出現一些錯誤。 - Luis Alvarado
20如何发现一个PPA有多少用户? - damien
添加PPA会给黑客留下一些可以通过的漏洞吗? - mathmaniage
@mathmaniage 源代码必须由系统上传和构建,因此源代码可随时查看。 - Ken Sharp
@damien和其他人想知道的:请参考此答案中的示例,了解如何操作。 - Pedro A
@damien 我已经编辑了答案,添加了关于用户数量的信息。请查看 PPA 统计数据。https://ppa-stats.sheth.io - Archisman Panigrahi
回复:检查#2:有多少用户使用了被俄罗斯RAT感染的SolarWinds Orion平台?18k。大家都知道人多安全? - mirekphd

要在Launchpad上开发PPA,贡献者必须已经签署了Ubuntu行为准则。这意味着开发者必须遵守一组最低标准。
通常人们应该参考Ubuntu论坛,看看谁使用过特定的PPA,并且是否可能导致任何问题。
对于一个“新手”或者“菜鸟”来说,我最好的建议是在你对命令行、潜在错误信息和一些如何诊断问题的方法有一定了解之前,最好远离PPA。
要删除导致问题的PPA,大多数情况下可以使用“ppa_purge”。
如果你感到紧张,那么考虑使用像clonezilla这样的工具对你的计算机进行图像备份。这样,如果出现问题并且无法解决,至少你有一种快速恢复计算机到开始之前状态的方法。
话虽如此,PPA非常有用,可以获得软件的最新版本,尤其对于那些不打算每6个月升级并坚持使用Ubuntu的LTS版本的用户来说。

1我希望你的回答能放在最上面,专门给初学者提供建议。:( - Braiam
@fossFreedom:如果我通过ppa或apt-get install命令安装,我会收到自动更新吗? - Rajat Gupta
1@user01 - 如果创建PPA的人更新了软件包的新版本,是的 - 如果您先添加了PPA,然后执行apt-get install package命令,您将自动获得更新。 - fossfreedom
4当然,一个恶意用户不会因为需要签署行为准则而停止他的行为... - evilsoup
1备份无法保护您免受数字盗窃的威胁(例如,恶意PPA将您的浏览器Cookie或SSH密钥发送回家)。如果您真的感到紧张,可以安全地在虚拟机、容器或schroot中安装和运行PPA。 - joeytwiddle

所有其他人在这里列出的问题都非常重要,我们需要理解。话虽如此,由于这是开源的,我们可以准确地了解PPA与Ubuntu软件包版本之间的变化。我们将以this duplicate中的PPA为例。
首先,我们将从PPA中获取源代码,使用dget工具下载Debian源代码包的所有部分,只需提供dsc文件的链接即可:
dget -u https://launchpad.net/~anton0/+archive/unity/+files/unity_5.12-0ubuntu2~ppa1.dsc

我通过点击“查看包详情”找到了该链接。

View package details

然后:

find dsc file

接下来,我们将获取Ubuntu存档中软件包的源代码。
apt-get source unity

最后,我们将使用debdiff来查看这两个软件包的源代码之间的差异。
debdiff unity_5.12-0ubuntu1.1.dsc unity_5.12-0ubuntu2~ppa1.dsc

那个命令的输出大约有三百行长,所以我会把它放在一个pastebin上,而不是直接放在窗口里。现在,我不能保证代码有多好,因为我不太了解C++,但它似乎在做它声称的事情,没有任何恶意行为。

2+1,但是你的Pastebin链接已经失效。 - unforgettableidSupportsMonica
这是一个很好的示例,展示了如何检查PPA软件包的操作。与pastebin的链接完全无关。+1 - Ken Sharp

这不仅仅是恶意软件的问题,正如已经提到的那样。还有一些软件可能仍处于测试阶段,尚未准备好用于生产。如果你安装并依赖它来完成工作,你可能会发现它存在错误、不可靠,并且可能会崩溃,导致你所做的工作丢失。
其中一些软件可能与Ubuntu的其他方面(如Unity或Gnome)不兼容,引起难以追踪的问题,甚至可能使你的系统不稳定。
这并不是因为软件本身不好,而是因为它可能尚未经过完全测试,或者因为它被提供给人们进行测试,但尚未打算作为生产软件普遍发布。因此,你应该谨慎使用,尽管其中一些确实非常好。
几个月前,我从一个特定的PPA安装了一个推荐的软件包,结果破坏了我的系统,以至于我不得不重新安装Ubuntu。当时我是一个新用户,不知道还能做什么;如果我有更多的知识,也许我可以解决问题并恢复系统,而不需要重新安装(尽管这对我学习Ubuntu也有帮助,但如果我在机器上保存了工作,我就会丢失它)。
所以要小心,多问问题,经常备份(!!!),并且要知道恶意软件的可能性很小(虽然不是完全没有可能)。

PPA是一个包含可安装软件的网络文件夹。实际上,它并没有比这更复杂的东西。当你安装一个软件包时,你需要使用root权限,并且该软件包有一些脚本会被执行,因此它们会以root身份运行。这意味着安装任何软件都是危险的,你确实需要信任开发者或分发商。
无论是apt存档还是PPA,都会定期检查已安装软件的更新情况。其中的“问题”在于,任何人都可以提供一个新版本的你已安装软件的软件包。例如,你可以添加一个PPA来获取一个漂亮的主题和该主题的自动更新。但是一旦你添加了该软件源,所有者就可以添加一个修补过的openssh-server软件包,然后它将出现在Ubuntu的更新中。这可能是在你添加PPA一年之后才发生,所以你需要注意更新。

PPA系统确实可以防止第三方篡改软件包,所以如果您信任开发者/分发商,那么PPA是非常安全的。例如,如果您安装Google Chrome,他们会添加一个PPA,以便您可以自动更新它。他们添加了"deb http://dl.google.com/linux/chrome/deb/ stable main"。如果您使用的DNS服务器被黑客攻击,将dl.google.com指向其他地方,那么他们可能会向所有已安装Chrome的用户推送修补过的软件。但由于无法用Google的私钥签名,Ubuntu将拒绝安装这些软件。因此,在这方面,PPA是非常安全的。

无法确定PPA是否安全。这取决于使用它来分发软件的人。对于自由软件,人们可以查看源代码,判断其是否安全。当许多人使用存档(例如Ubuntu的常规存档)时,就有了同行评审。用户较少的小型存档就没有这个,因此它们的可信度较低。主要教训是,无论使用什么系统,安装软件时都应该小心。


Luis Alvarado的回答的基础上,你应该意识到以下风险:

  • 恶意软件包—软件包可能会试图对你造成伤害。这对它们来说很容易,因为它们可以以管理员权限运行任何代码。
  • 质量差或不兼容的软件—某个应用程序可能无法正常工作。它可能会意外地通过干扰其他软件、破坏你的数据或泄露私人信息等方式造成损害。

而你应该注意以下因素:

  • 维护者的诚信—维护者是否会秘密地试图对你造成伤害?
  • 维护者的安全性—维护者是否容易受到第三方的攻击?
  • 维护者的可靠性—维护者是否会在合理的时间范围内回应更新需求?他们是否致力于长期维护PPA?
  • 仓库的安全性—软件包是否由维护者签名?
  • 软件的性能—软件是否没有错误并且与你的系统兼容?

PPA上的软件包没有经过恶意软件等方面的检查。因此,尽管有人可能为您打包类似XBMC的软件,但他们很容易也会添加一些间谍软件/恶意软件。这就是为什么您不应该随便添加任何随机的PPA。

请问一下,XMBC 是什么意思?我在使用 Ubuntu 还比较新手。 - kernel_panic
XBMC是一款媒体中心软件。它是一款优秀且安全的软件。他只是将其作为一个例子,可以是任何软件。 - Anonymous
在Ubuntu中,恶意软件能做什么?它应该对任何事情都需要请求权限,对吗? - kernel_panic
一旦你安装了它(即给予它root权限将其文件复制到系统目录并运行自定义脚本),它可以对系统进行任何操作。这就是为什么从可信源安装软件包非常重要的原因。 - arrange
错误。当你安装一款软件时,此时你是以 root 用户的身份在进行操作。很容易利用这个权限来做坏事。 - tgm4883

当你添加ppa并通过它安装程序时。
基本上,你给予了该程序在允许的可执行区域(/bin/ /sbin/ /usr/bin/)中驻留的权限。
现在,如果程序本身是/已经成为恶意软件,那么系统不会对此提出抱怨,因为你是那个考虑其可信性而添加ppa的人。
当程序来自Ubuntu存储库时,它们首先会经过检查(我想说是彻底的,但我不确定:P),所以来自Ubuntu存储库的程序肯定没有恶意软件/间谍软件。
对于任何其他ppa,是否信任它完全取决于你/用户的决定。

在Ubuntu中,恶意软件能做什么?它应该对任何事情都需要请求权限,对吗? - kernel_panic
6当您安装软件时,它会要求获取根权限(屏幕变暗并输入密码)。在这一点上,它可以做任何事情:删除您计算机中的所有内容,安装键盘记录器,将您的桌面背景更改为Hello Kitty,等等。 - SCdF
1@sanjayasanjuubuntu:在安装过程中,它会要求权限以驻留在可执行区域,一旦驻留成功,它就可以轻松地访问任何非su信息。有些程序需要su权限才能执行,但如果程序本身在打包时添加了额外的负载(即恶意软件),那么当你输入密码时,它可以毫无问题地执行。 - wisemonkey
Dev PPAs是最安全的途径,也需要在Launchpad上查看贡献者的持续时间。这些因素确保使用PPAs来获取最新程序的系统是安全稳定的。我发现通过这种方式可以让我的LTS版本长时间运行,并且能够使用我所需的特定新版本程序。 - Arup Roy Chowdhury

不确定为什么有些人觉得嘲笑寻求知识的人很有趣。

关于PPA

"sudo add-apt-repository universe"

"add-apt-repository"是一个特殊工具,帮助我们在计算机上安装新程序。就像给你的玩具收藏添加新玩具一样。

"universe"是计算机存放许多不同程序的一个特殊地方。就像一个巨大的玩具商店,有很多不同的玩具可以选择。

因此,当我们在计算机上键入"sudo add-apt-repository universe"时,我们正在告诉它给我们使用来自名为"universe"的特殊地方的许多不同程序的权限。就像拿到了巨大玩具商店的钥匙,可以挑选很多有趣的新玩具来玩耍!

我为什么要相信universe?

当我们在命令"sudo add-apt-repository universe"的背景下谈论"universe"时,实际上是指Ubuntu Linux操作系统开发者维护和支持的一个特殊软件仓库。

软件仓库就像一个大型在线图书馆,存储着许多不同的程序,您可以在计算机上下载和安装。universe仓库包含许多开源软件程序,可以免费使用。

Ubuntu Linux的开发人员是开源软件社区中备受尊敬的一群人,他们以精心策划和维护软件程序而闻名于世。他们还定期更新这些程序,以确保它们的使用安全可靠。
简而言之,您可以信任universe存储库,因为它由一群值得信赖的开发人员维护,致力于提供安全可靠的高质量软件程序。
为什么我应该信任deadsnakes?
“sudo add-apt-repository ppa:deadsnakes/ppa”是一个命令,它将个人软件包存档(PPA)添加到您的Ubuntu Linux操作系统中。
PPA是由个人或一群个人在官方Ubuntu Linux存储库之外维护的软件存储库。在这种情况下,“deadsnakes” PPA由“deadsnakes”团队维护,他们为Ubuntu用户提供更新和替代版本的Python编程语言。
通过运行此命令,您将向系统添加“deadsnakes” PPA,从而允许您下载并安装由“deadsnakes”团队提供的Python编程语言软件包。
需要注意的是,尽管PPA可以是软件包的有用来源,但它们并没有得到Ubuntu Linux开发人员的官方支持,并且可能不会经过与官方存储库中的软件包相同的严格测试和质量保证。
因此,在向系统添加PPA时应该谨慎,并只使用来自可信源的PPA。在这种情况下,"deadsnakes"团队是Python编程社区中备受尊敬的团体,他们的PPA通常被认为是一个安全可靠的Python软件包来源。