“ chown -R root /”我怎么搞砸了?


8

我在尝试更改我的rails应用程序公用文件夹的权限时不小心执行了命令chown -R root /。我相信这会更改对/目录中所有文件夹的权限。所以我的问题是,这到底有多危险,实际上更好的问题是,有没有办法消除这一危险?


3
此操作无法自动撤消,是的,它对您的系统(包括但不限于各种主目录)有重大影响。希望您最近有备份。祝好运。
弗雷德里克·哈米迪

有些程序会检查您的系统是否具有适当的权限和文件所有权。我认为Tripwire是早期的产品。如果您没有多个用户,则仅通过从此类工具获取报告和/或修复程序就可以解决这种情况。
minopret

另请阅读以下很棒的建议,即“不要以任何会使它变得更糟的方式做出反应”和“不要以为最坏的假设”。或记住使用笑话版本的这些重要的常规故障排除步骤:紧急操作员:“不要惊慌,您确定您的朋友死了吗?” 来电者:BANG:“是的,他已经死了。”
minopret

在大多数情况下,在正常系统上,您应该能够从文件组中分辨出所有者的身份。因此find,不适合该组的所有文件都是由root拥有的,然后将它们全部授予与该组匹配的用户。记录故障,并逐个处理。
13年

您是否已以root用户身份运行该命令?(我希望不要...)
Axel

Answers:


7

缓解此问题的一种方法(无法解决,但可以帮助您解决问题)是在类似系统上运行一个过程,以收集文件的适当所有权。我赞赏完全匹配的机会有些渺茫,但是如果两个操作系统的水平都相同并且安装了相似的软件包,那么您可能会很幸运。

将文件许可权收集到一个文件中之后,您就可以在自己的系统上运行一个过程,以从好的文件中读取文件和权限/所有权并替换为您的文件和权限。我在Linux上有几个小型的本地应用程序,它们可以做到这一点。

例如

777*0*0*S*16*1334559119*1334532895*1361208513*/usr/lib32/*libgomp.so.1
644*0*0*F*67370*1359536382*1359374461*1359717843*/usr/lib32/*librt.a
644*0*0*F*59044*1334559119*1334532931*1355405098*/usr/lib32/*libgomp.so.1.0.0
644*0*0*F*1238*1359536382*1359374461*1359717843*/usr/lib32/*libBrokenLocale.a
777*0*0*S*17*1359536382*1359374460*1361208513*/usr/lib32/*libdl.so
644*0*0*F*905712*1334559116*1334533011*1355405098*/usr/lib32/*libstdc++.so.6.0.16
777*0*0*S*15*1333306601*1323929512*1361208513*/usr/lib32/*libbz2.so.1.0
777*0*0*S*24*1359536382*1359374460*1361208513*/usr/lib32/*libnss_files.so
644*0*0*F*1128*1359536382*1359374462*1359717843*/usr/lib32/*crt1.o

RWX * UID * GID *其他内容*目录*文件名


5

首先,如果命令仍在运行,请停止它!

现在,一切都将属于根,这是很成问题的。

您应该尝试从最新备份中还原信息。

同样重要的是在检查所有正在运行的应用程序以及用户在引导时启动它们之前,不要重新启动系统。如果这样做,由于权限问题,其中一些可能无法正常启动。

祝好运。


3

非常不完全。

从某种意义上说,“非常”是,如果命令确实通过了,那么您的安全性就会受到影响。您现在不知道哪些路径具有什么所有者,应该允许谁去做。

从某种意义上说“不太完全”-您确定自己是root用户,并且命令执行到最后吗?如果您取消了它,则一看到它就可以了,那么您可能会很幸运,而且维修率可能很低。如果您不是root用户,则该命令不应该能够执行此操作,除非您执行了类似的操作sudo ...

没有单一的补救措施。如果有备份,则可以还原到该备份。您可能需要检查备份中的所有权并应用它们。如果您一直在使用rootkit(例如rkhunter)检查程序,它可能会列出最基本的所有权,并且有可能对其进行修复。(不太可能)。


2

在Fedora至少,RPM命令有选择--setperms--setugids使用那些可以解决大部分的系统所拥有的文件一样rpm --setugids -a。要(某种程度上)为每个用户修复文件,您可以为每个用户做chown -R user /home/user。上面可能还没有解决剩余的问题,特别是如果您有某种服务器(Web,FTP,其他),则必须一一处理。

其他发行版可能具有类似的机制。或者做一个完全刷新(即,重新安装所有东西,就像是在某种程度上破坏。好吧,这莫名其妙地损坏。)

[是的,这仍然是Unix的一种相当残酷的教学方式,教给毫无戒心的用户在按ENTER之前仔细考虑每个命令,并谨慎使用root 。考虑一下自己的教导。]


setuidsetgid权限需要手动设置。rpm不会还原它们。
jnas

1

如果您使用的OSX苹果在磁盘实用程序中提供了还原功能来解决此问题。如果您使用的是Linux发行版,我可以肯定地说您将必须手动重做所有权限。无论哪种情况,都请拍一下手,不要再做


在Linux上不可能完全从中恢复。即使可以使系统正常运行,您也可能会错过一些不稳定因素或安全漏洞,这些东西以后可能会再次咬住您。我想说,从备份或重建方法中恢复可能是必要的。
克里斯·库尔

0

不幸的是,我不知道有什么方法可以“撤消”它,但是您可能可以将系统文件保留为root用户所有,并将$ HOME中的所有文件恢复为您所有(并且对系统)。此时,您可以在$ HOME目录中不需要的文件上修复每个文件的权限和/或所有者。是的,这很痛苦,但我认为没有简单的解决方法。无论如何,这就是我要做的。


0

我想说的是,您说的很“拧”。最好的方法(也是最有效的)是从良好的备份中重新安装和还原关键项目。抱歉,这种情况通常不会很快解决,但结局不错。祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.