我在尝试更改我的rails应用程序公用文件夹的权限时不小心执行了命令chown -R root /。我相信这会更改对/目录中所有文件夹的权限。所以我的问题是,这到底有多危险,实际上更好的问题是,有没有办法消除这一危险?
find
,不适合该组的所有文件都是由root拥有的,然后将它们全部授予与该组匹配的用户。记录故障,并逐个处理。
我在尝试更改我的rails应用程序公用文件夹的权限时不小心执行了命令chown -R root /。我相信这会更改对/目录中所有文件夹的权限。所以我的问题是,这到底有多危险,实际上更好的问题是,有没有办法消除这一危险?
find
,不适合该组的所有文件都是由root拥有的,然后将它们全部授予与该组匹配的用户。记录故障,并逐个处理。
Answers:
缓解此问题的一种方法(无法解决,但可以帮助您解决问题)是在类似系统上运行一个过程,以收集文件的适当所有权。我赞赏完全匹配的机会有些渺茫,但是如果两个操作系统的水平都相同并且安装了相似的软件包,那么您可能会很幸运。
将文件许可权收集到一个文件中之后,您就可以在自己的系统上运行一个过程,以从好的文件中读取文件和权限/所有权并替换为您的文件和权限。我在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 *其他内容*目录*文件名
非常不完全。
从某种意义上说,“非常”是,如果命令确实通过了,那么您的安全性就会受到影响。您现在不知道哪些路径具有什么所有者,应该允许谁去做。
从某种意义上说“不太完全”-您确定自己是root用户,并且命令执行到最后吗?如果您取消了它,则一看到它就可以了,那么您可能会很幸运,而且维修率可能很低。如果您不是root用户,则该命令不应该能够执行此操作,除非您执行了类似的操作sudo ...
。
没有单一的补救措施。如果有备份,则可以还原到该备份。您可能需要检查备份中的所有权并应用它们。如果您一直在使用rootkit(例如rkhunter)检查程序,它可能会列出最基本的所有权,并且有可能对其进行修复。(不太可能)。
在Fedora至少,RPM命令有选择--setperms
和--setugids
使用那些可以解决大部分的系统所拥有的文件一样rpm --setugids -a
。要(某种程度上)为每个用户修复文件,您可以为每个用户做chown -R user /home/user
。上面可能还没有解决剩余的问题,特别是如果您有某种服务器(Web,FTP,其他),则必须一一处理。
其他发行版可能具有类似的机制。或者做一个完全刷新(即,重新安装所有东西,就像是在某种程度上破坏。好吧,这是莫名其妙地损坏。)
[是的,这仍然是Unix的一种相当残酷的教学方式,教给毫无戒心的用户在按ENTER之前仔细考虑每个命令,并谨慎使用root 。考虑一下自己的教导。]
setuid
和 setgid
权限需要手动设置。rpm
不会还原它们。