Linux 权限混乱--如何修复?

Linux 权限混乱--如何修复?

我正在执行 rsync 并意外地撤销了命令,因此它在主服务器上覆盖了来自备份服务器的一堆文件。

备份服务器位于 chroot jail 中,因此它覆盖了以下文件:

bin 目录:

bash  chroot-jail  cp  ls  mkdir  mv  rm  rmdir  sh  su

开发目录:

null  tty  urandom  zero

lib目录:

pam_access.so    pam_ecryptfs.so   pam_issue.so    pam_listfile.so   pam_passwdqc.so 
pam_rps.so         pam_tally.so      pam_unix_auth.so
pam_ccreds.so    pam_env.so        pam_keyinit.so  pam_localuser.so  pam_permit.so       pam_securetty.so   pam_tally2.so     pam_unix_passwd.so
pam_chroot.so    pam_exec.so       pam_krb5        pam_loginuid.so   pam_pkcs11.so       pam_selinux.so     pam_time.so       pam_unix_session.so
pam_console.so   pam_faildelay.so  pam_krb5.so     pam_mail.so       pam_postgresok.so   pam_shells.so      pam_timestamp.so  pam_userdb.so
pam_cracklib.so  pam_filter        pam_krb5afs.so  pam_mkhomedir.so  pam_pwhistory.so    pam_smb_auth.so    pam_tty_audit.so  pam_warn.so
pam_debug.so     pam_filter.so     pam_lastlog.so  pam_motd.so       pam_rhosts.so       pam_stack.so       pam_umask.so      pam_wheel.so
pam_deny.so      pam_ftp.so        pam_ldap.so     pam_namespace.so  pam_rhosts_auth.so  pam_stress.so      pam_unix.so       pam_xauth.so
pam_echo.so      pam_group.so      pam_limits.so   pam_nologin.so    pam_rootok.so       pam_succeed_if.so  pam_unix_acct.so

lib64:

ld-linux-x86-64.so.2  libaudit.so.0    libcrypt.so.1   libglib-2.0.so.0  
libpam.so.0       libresolv.so.2   libsepol.so.1    libz.so.1
libacl.so.1           libc.so.6        libcrypto.so.6  libkeyutils.so.1  libpam_misc.so.0  librt.so.1       libtermcap.so.2
libattr.so.1          libcom_err.so.2  libdl.so.2      libnsl.so.1       libpthread.so.0   libselinux.so.1  libutil.so.1

sbin:

unix_chkpwd

完成此操作后,现在我只能以 root 身份登录主服务器,所有辅助帐户都无法使用,因为权限似乎完全被搞砸了。Apache 只会提供 403 页面等。有什么办法可以修复这个问题吗?或者系统是否被搞坏了?

帐户似乎仍然列在 passwd 和 shadow 中。

答案1

正如 Bill Weiss 所说,您可能会发现从干净系统上的已知良好备份进行恢复更容易、更安全。您不仅弄乱了权限,而且还替换了文件。即使源计算机和目标计算机都是同一发行版,也不能保证它们是相同的文件,这可能会导致各种奇怪的问题。

如果您觉得必须尝试恢复,我认为有两种方法可以实现。第一种方法是使用发行版的包管理器强制重新安装受影响文件的包。第二种方法是更手动的方法:

  • 使用系统的包管理器来找出每个文件的所有者。
  • 设置一个新系统并确保在其上安装完全相同版本的软件包
  • 将文件副本上传到服务器
  • 以单用户模式启动服务器并小心地替换所有文件。
  • 设置权限/所有权以匹配。
  • 重启

可能然后发现你的系统又可以正常工作了,但我不相信它,而且它可能比清理/恢复路线花费更长的时间。

这是一个有用的命令,你可以在列表中运行完整路径受影响的文件以获取受影响软件包的列表(Debian / Ubuntu):

for a in `cat files.txt`; do dpkg -S $a |cut -d':' -f1; done |sort -u

答案2

将来您可能希望将 rdiff-backup 作为 rsync 的替代方案。具体来说,因为 rdiff-backup 有一个标志,只增加现有备份,至少这样重复的风险就消失了。

相关内容