如何恢复目录/文件的默认chown权限?

我使用的是Ubuntu 13.04 x86_64。

我想在我的主目录中拥有所有内容。 所以我执行了这两个命令。

sudo chown -RcH rootkea ~ sudo chown -RcL rootkea ~ 

现在由于那些链接到文件系统中其他文件的符号链接,我不小心拥有了位于我的主目录之外的文件。
我注意到的直接后果是:

  1. sudo不工作

     $ sudo sudo: effective uid is not 0, is sudo installed setuid root? 
  2. 系统变得如此缓慢。 当我点击关机/重启时,它就会被绞死。 每次我必须手动关闭机器电源。
  3. 创建一个不确定大小的日志文件/var/log/cups/error_log ,它消耗我硬盘的最后一个字节(经过相当长的时间)。 上次是17.8 GB!
    该文件的内容只是这两行不可重复地重复:

     E [24/May/2013:02:27:52 +0530] File "/usr/lib/cups/notifier/dbus" has insecure permissions (0100755/uid=1000/gid=0). W [24/May/2013:02:27:52 +0530] Notifier for subscription 531 (dbus://) went away, retrying! 

很明显cups计划也搞砸了。

现在我不知道有多少其他程序进入了无法使用状态。

有没有办法撤消上述两个命令的影响?
如何将默认权限设置恢复到整个文件系统?

正如gertvdijk建议的那样 (通过引用这个问题 ),重新安装几乎总是解决这个问题的最佳和最简单的方法(并且你可以确定它将完全修复它的唯一方法),特别是如果你不确切知道权限的确切位置改变了或改变了什么。

私人建议的 这种方法可能有效,您可能认为值得一试。 但是,文件和文件夹的版本与版本之间存在一些差异,以及它们的所有权和权限。 此外,除了重新安装之外的任何解决方案,您永远不会知道是否存在具有错误权限的某些文件或文件夹,这可能在将来某些时候导致问题。

您通常可以通过修复其所有权来修复 – 或者至少取得进展 – 解决sudo无法正常工作的问题(即问题1,如您所列出的那样):

 pkexec chown root:root /usr/bin/sudo 

在像您这样的情况下,这主要是作为一种便利措施,以便在重新安装之前更轻松地执行您需要完成的任何管理任务。 (或者在尝试应用更复杂的解决方案之前。)如果重要文件(例​​如文档)的备份不是完全最新的,那么备份现在肯定是有序的。

最后,请注意,它只是被修改的所有权 ,而不是权限 。 因此,您可以尝试以递归方式将目录的所有权更改回root。 但是,这也不太可能解决问题,因为:

  • 目前还不清楚你是否确切知道哪些目录已被更改。
  • 某些文件不应该由root拥有,因为它们必须由系统中权限较低的部分访问; 过于严格地设置其所有权或权限可能会破坏系统。
  • 如果由root拥有,某些文件可能会导致安全漏洞。 setuid可执行文件始终以拥有它的用户身份运行。 您的系统可能包含setuid可执行文件,这些可执行文件始终以某些特权用户身份运行; 让它们以root身份运行可能会很糟糕。 或者有人可能 – 有意或无意地 – 创建了一个setuid文件(没有权限让它由root拥有)。 如果你让它归root所有,它将以root身份执行,无论是谁运行它。 那可能非常糟糕。

所以,如果这是一个生产系统,你应该重新安装。