![无法使用 sudo - ubuntu 20.04](https://linux22.com/image/768929/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20sudo%20-%20ubuntu%2020.04.png)
一个经典错误
由于错误,我们sudo chown -R ubuntu:www-data /
在 ubuntu 20.04 AWS EC2 服务器上执行了此操作。虽然有很多帖子表明我无法挽救机器并必须重新安装一台新机器 - 但我想复制在此服务器上运行的 postgres。目前我们无法使用 sudo 执行任何命令。因此我们无法启动 postgres 或通过 phppgadmin 登录。
我们已完成以下工作:
- 停止实例
- 分离卷
- 创建了一个新的实例
- 附加卷
- 挂载卷
- 在新实例中更改为 root
- 做了
chown -R root:root /mnt/rescue
(将其改为root:ubuntu
,,ubuntu:ubuntu
等等) - 做了
chmod -R 4755 /mnt/rescue
(也做了0755
,ug-s
等) - 退出根目录
umount /mnt/rescue
- 关闭救援实例
- 分离卷
- 将卷连接到损坏的机器。机器指示新所有者 - 但 sudo 不起作用。
- 我们尝试创建一个新实例 - 附加这个更正的卷,更新 /etc/fstab - 重新启动实例。我们将卷与机器合并。重新启动后 - 仍然是同样的问题 - 无法使用 sudo。
我们当然可以重新创建机器或进行备份和恢复。但是,一些关键任务数据驻留在 postgres 中。我如何 sudo 或从死机的 postgres 中检索文件。
我们经常会遇到这样的错误:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
但是,当我在 /usr 或 /usr/bin 内部的任何地方执行 ls -l 时,所有文件的全部所有权仍属于 ubuntu:ubuntu 或我们尝试过的其他组合。
答案1
尝试设置 setuid 位并使其对 root 具有可执行权限,这是 sudo 的默认权限 (rws)
chmod u+s /mnt/rescue/usr/bin/sudo
chmod +x /mnt/rescue/usr/bin/sudo
虽然这对于拯救系统很有用,但还有许多其他文件和目录具有不同的权限和所有权,单独设置它们可能很繁琐。