从错误的 chown 命令中恢复

Chr*_*ian 5 linux centos chown

我打算将目录的所有权更改为apache:apache,但我最终运行了:

chown -R apache:apache /
Run Code Online (Sandbox Code Playgroud)

坏的!很坏!当它开始说时,我知道发生了什么:

chown:更改`/proc/2694/fd/48'的所有权:权限被拒绝

那时我停止了一切(Ctrl + C)。


我目前的系统是一台运行 Virtualbox 的服务器,运行 CentOS 5。这个问题发生在 VM 内部。

目前似乎一切正常,但我还没有重新启动系统,老实说,我担心如果我做了一些事情会崩溃。

我不知道chown的顺序,我是否应该担心并假设重启后会发生某些事情?有没有办法在不依赖备份的情况下从这个问题中恢复?我每天都有一个,但我认为可能有更简单的方法。

Ign*_*ams 9

rpm --setugids将恢复传递给它的包的所有权。通过-a以恢复所有包。您可能还需要--setperms恢复 setuid/setgid 权限。


glg*_*lgl 7

有一个旧的备份会很好,但恕我直言,能够提取所有权数据就足够了。

我会这样做:

  • 首先,备份当前状态。

  • 然后根据RPMDB恢复原来的属性。这可能会修复你的很多文件

  • 要识别和修复剩余的文件,请查找仍受此问题影响的所有文件。这些是属于apache:apache并处于“搜索顺序”之前的文件/proc。也许你会

    ls -U /
    
    Run Code Online (Sandbox Code Playgroud)

    首先获取之前的根级别条目列表/proc(我想这是您取消该过程的地方)。

    然后做一个

    find /foo /bar /baz -user apache -group apache
    
    Run Code Online (Sandbox Code Playgroud)

    更换foobarbaz与之前确定的条目。将find的输出重定向到一个文件。

  • 从备份中提取给定文件的所有所有权数据并将其应用于文件。