这是一个理论问题。如果我以正确的权限运行这些命令会怎样?我怎样才能恢复su和sudo?
答案1
scp
以 root身份从“已知的、良好/bin/su
的/usr/bin/sudo
”相邻服务器登录到控制台。
答案2
这些二进制文件都不需要重新安装软件包 - 因此您只需获得 root 访问权限并使用 或您的系统使用的任何软件包管理器重新安装包含这些二进制文件的软件包apt
-yum
应该不需要做任何比这更戏剧性的事情。
诀窍是获得 root 访问权限。如果 root 帐户已解锁并且您知道密码(如果您正在使用密码,su
那么您就知道密码),那么这很简单。此时只需以 root 身份登录系统并重新安装软件包即可。
如果您没有 root 访问权限,那么您可以尝试重新启动进入恢复模式(如果您的发行版启用了该模式) - 如果是这样,它将给您一个 root 提示,您可以重新安装所需的软件包。
如果您无法使恢复模式工作或未启用它,那么您需要启动 Live CD。使用 live CD 启动后,您可以将系统的根文件系统挂载到某个位置,chroot 到其中并以这种方式重新安装软件包。例如:
cd /location/of/new/root
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
cp /etc/resolv.conf etc/resolv.conf
chroot /location/of/new/root /bin/bash
# <install packages here>
答案3
如果可以通过 SSH 进行 root 访问,则从另一台服务器恢复二进制文件(或从最新备份上传两个文件 -你确实备份了系统,不是吗?- 在任何合适的服务器上并从那里下载它们):
ssh root@woundedserver "cd /usr/bin; wget http://myamazonserver/files/su; chmod 4755 su"
or
scp /usr/bin/su root@woundedserver:/usr/bin
# I never remember whether scp preserves permissions, so just to be sure:
ssh root@woundedserver "chmod 4755 /usr/bin/su"
or even (I just tried, the md5sums match after the copy)
cat /a/good/su/binary | ssh root@woundedserver "cat >/usr/bin/su; chmod 4755 /usr/bin/su"
如果 root 不允许通过 SSH 登录,或者您禁用了这种可能性或也关闭了 SSH 端口,我怀疑唯一的方法是使用 init“hack”启动,或者从救援 CD 启动。那应该可以工作。
如果你还保护 GRUB 并可能加密文件系统,要么等待发现可利用的漏洞,要么重新安装最新备份中的所有内容。您确实备份了系统,不是吗?:-)