我正在做一个rsync,并无意中颠倒了命令,所以它覆盖了主服务器上的备份服务器上的一堆文件。
备份服务器位于chroot监狱,因此覆盖了这些文件:
bin dir:
bash chroot-jail cp ls mkdir mv rm rmdir sh su
dev dir:
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身份login,没有任何一个二级帐户工作,因为权限似乎被完全搞砸了。 阿帕奇只是服务了403页,等如何我可以解决这个问题的任何想法或是系统水洗?
帐户似乎仍然被列在passwd和shadow中。
正如Bill Weiss所说,您可能会发现在干净的系统上恢复已知的良好备份会更容易,更安全。 你不仅搞砸了权限,而且还replace了文件。 即使源机器和目标机器都是相同的发行版,也不能保证它们是相同的文件,并且会导致各种各样的古怪问题。
如果你觉得你必须尝试恢复,我有两种方式去思考。 首先是使用发行版的软件包pipe理器强制重新安装拥有受影响文件的软件包。 第二个是更手动的方法:
你可能会发现你有一个工作系统,但我不会相信它,它可能需要比干净/恢复路线更长的时间。
下面是一个有用的命令,您可以在受影响文件的完整path列表中运行以获取受影响软件包(Debian / Ubuntu)的列表:
for a in `cat files.txt`; do dpkg -S $a |cut -d':' -f1; done |sort -u
对于未来,您可能希望考虑使用rdiff-backup作为rsync的替代scheme。 特别是因为rdiff备份有一个标志只增加现有的备份,至less重复的风险已经消失。