在 Centos 6.5 上我不小心输入了
chmod -R 777 /
哎呀。我很快就按 CTRL + C 退出了它,但在此之前它已经开始工作了几秒钟。
后果?嗯,已经
su root
无法正常工作(尽管可以通过 SSH 以 root 身份登录)。我不确定还有什么可能受到影响。
有什么想法我可以继续吗?只需从备份重新安装,还是我可以采取一些巧妙的措施?
非常感谢。
编辑-我真正希望的是一些 bash 魔法。
- 查找服务器上过去一小时内设置为 777 的文件
- 将它们设置为标准 Centos 6.5 安装应具有的权限值
答案1
您不仅更改了文件的权限,还可能更改了目录和设备节点。(根据 chmod 手册页,chmod 永远不会更改符号链接权限,因此至少这些是安全的。)
在 CentOS 6.x 上,可以使用以下命令找到安装了特定文件的软件包
$ rpm -q -f /bin/ls
coreutils-8.4-19.el6.x86_64
然后使用以下方法查找原始文件模式
$ rpm -q -l -v coreutils | grep /bin/ls
-rwxr-xr-x 1 root root 109208 Jun 22 2012 /bin/ls
然后使用find
和chmod
命令编写脚本,但这并不能解决所有问题,实际上可能会使情况变得更糟。除非绝对必要,否则我会避免这样做。
正如其他人所说的那样,如果不恢复备份或重新安装,就无法完全修复系统。
答案2
如果您需要保留该系统,我建议:
查找受影响的文件。(我的 chmod 变体进入目录并更改所有文件,然后按字母顺序递归进入目录。)测试您的 chmod 执行的操作 -> 这使您能够检查受影响文件的确切列表 - 希望 chmod 没有到达您的数据(
/home
或/srv
)。将所有受影响的文件设置为 r--r--r--,将所有看起来可执行的文件设置为 r-xr-xr-x,将所有目录设置为 r-xr-xr-x,将所有 /dev/ 节点设置为您选择的另一个正在运行的 Linux 系统。(这需要大量工作!)(备注:GNU/Linux 系统在只读模式下运行得很好,但可能有些文件必须是可写的 - 如果从现在起服务器不再启动:运气不好)(确保日志文件是可写的。)
重新安装所有软件包(确保配置文件将被保留)
但是,系统并不相同,可能存在严重的安全、性能和功能问题。
chmod 递归的提示:
user:/tmp/chmod$ chmod -v -R 777 .
Modus von „.“ als 0777 (rwxrwxrwx) erhalten
Modus von „./a“ als 0777 (rwxrwxrwx) erhalten
Modus von „./a/1“ als 0777 (rwxrwxrwx) erhalten
Modus von „./a/2“ als 0777 (rwxrwxrwx) erhalten
Modus von „./a/1a“ von 0755 (rwxr-xr-x) in 0777 (rwxrwxrwx) geändert
Modus von „./a/1a/g“ von 0644 (rw-r--r--) in 0777 (rwxrwxrwx) geändert
Modus von „./a/2b“ von 0755 (rwxr-xr-x) in 0777 (rwxrwxrwx) geändert
Modus von „./a/2b/h“ von 0644 (rw-r--r--) in 0777 (rwxrwxrwx) geändert
Modus von „./b“ als 0777 (rwxrwxrwx) erhalten
Modus von „./b/1“ als 0777 (rwxrwxrwx) erhalten
Modus von „./b/2“ als 0777 (rwxrwxrwx) erhalten
user:/tmp/chmod$
答案3
这也许能解决你的一些问题:
find . -type f -perm 777 -exec chmod 644 {} \;
find . -type D -perm 777 -exec chmod 755 {} \;
对于某些文件/目录