sudo:“有效uid不为0,是否sudo安装了setuid root?”在树莓派上

sudo:“有效uid不为0,是否sudo安装了setuid root?”在树莓派上

我已经使用 Raspberry Pi 几个星期了,并花了很多时间为我的大学项目配置一切。

我想安装 Samba 并将所有内容都作为网络文件夹。我用了sudo chown -R pi:pi /

现在,我的 sudo 已损坏,并且sudo: effective uid is not 0, is sudo installed setuid root?每次运行时都会打印(例如,sudo nano)。

这个可以修复吗?请帮助我,这样我就不必重新安装一切。我什至不记得过去几周我做了什么……太多的工作。

答案1

运行sudo chown -R pi:pi /基本上破坏了系统上每个文件的所有权。

不幸的是,对于您的情况,重新安装可能是最简单的选择。尝试手动恢复正确的所有权(大概使用不同的计算机)将非常乏味且容易出错。我建议您在重新安装之前对 Raspberry Pi 的存储进行映像,以便在重新安装后,您可以恢复所做的一些更改。

答案2

可执行文件中的位setuid意味着相关文件可能会将其有效 UID 更改为拥有用户的 UID,而不是调用/执行用户的 UID。

通过运行,sudo chwon -R pi:pi /您将sudo被用户拥有pi(非零 UID),因此,当sudo检查它是否可以将其有效 UID 更改为 0 ( root) 时,它发现它不能,因为它不再被拥有root

您可以尝试通过执行chown root:rootover来修复它sudo,但它可能会说您没有足够的权限来执行此操作,因此重新安装可能是唯一的可能性。

答案3

最简单的方法是查找并保存“过去几周”修改过的所有文件,然后重新安装并重新应用更改。

  1. 启动救援磁盘。
  2. 查找并保存“最近”更改的文件 -cd /mnt/root && tar czvf /mnt/usb/tarball.tgz --newer-mtime='2015-10-01 00:00:00' .确保这/mnt/root是 Pi 系统的根目录而不是救援磁盘的根目录,并且该文件/mnt/usb位于安全的地方,例如 USB 记忆棒
  3. 重新安装
  4. 恢复您精心保存的文件 -cd / && tar xzvf /root/tarball.tgz
  5. 重启

相关内容