为什么 Macports 拥有大量文件的所有权,我该怎么办?

为什么 Macports 拥有大量文件的所有权,我该怎么办?

我刚刚删除了 Macports。之后,我在目录中进行了一些随机检查,发现一些文件仍然以 Macports 为所有者。因此,我对所有以 Macports 为所有者的文件进行了“查找”,结果让我震惊。大量与 Macports 毫无关系的图像、Spotify 文件、崩溃日志显然都归 Macports 所有(而 Macports 已根据其自己的卸载说明被删除)。

现在我绝对不是一个好的管理员,但当我删除某些东西时,如果一切都能恢复到以前的状态就好了。此外,我甚至不知道为什么 Macports 会拥有所有这些文件的所有权。

所以...

  1. 有人能向我解释这是怎么发生的吗?如果我想再次使用 Macports,我该怎么做才能防止它再次发生。
  2. 我如何才能安全地重新获得所有权?问题是我甚至不知道“谁”曾经是手头文件的所有者。

答案1

如果这些文件应该归您所有,您可以执行以下操作:

sudo find ~ -user macports -exec chown $USER {} +

我也卸载了 MacPorts,但仍然有一个名为 的用户macports,但没有其拥有的文件。

答案2

我可以证实在我的 Mac 上也发生过类似的现象:我安装了 MacPorts 2.3.3(在 OS X 10.9.5 上),并且用户macports最近获取了我经常使用的外部驱动器上许多看似随机的文件的所有权,包括媒体文件和应用程序。

我注意到这个问题是因为今天我突然无法从 Firefox 下载到我指定的下载文件夹,该文件夹位于外部驱动器上;检查下载文件夹后,我注意到该文件夹​​的用户和组已更改为macports,并且对其他用户是只读的。经过一番搜索,我发现该用户macports已占用了外部驱动器上与 MacPorts 无关的许多其他文件。

先前的答案对我有用,例如:

sudo find /Volumes/External -user macports -exec chown $USER {} +

但是,这只会改变用户,我还需要更改组,例如:

sudo find /Volumes/External -group macports -exec chown :staff {} +

MacPorts 票证 #41039 讨论了类似的问题,并且可能对问题的根源有所启发:https://trac.macports.org/ticket/41039

更新:我已确定,在我的情况下,问题的可能原因是我偶尔将外部驱动器连接到其他 Mac,而在其中一台 Mac(我们称之为计算机 B)上,我使用的用户帐户的 uid=502(计算机 B 上未安装 MacPorts)。macports另一台计算机(我们称之为计算机 A,安装了 MacPorts)上的用户也具有 uid=502。因此,在我使用计算机 B 上的外部驱动器后,稍后当我在计算机 A 上安装外部驱动器时,我在计算机 B 上创建或修改的任何文件都将macports在计算机 A 上具有用户和组。

例如,在另一台 uid=502 的计算机上创建的任何文件,如果复制到安装了 MacPorts 的计算机(其中用户macports的 uid=502),则该计算机中的用户将拥有该文件macports。或者,如果您的计算机上曾经有一个 uid=502 的用户帐户,但后来您删除了该帐户并安装了 MacPorts,然后用户macports使用 uid=502,则曾经由已删除的用户帐户拥有的所有剩余文件现在将由用户拥有macports

相关内容