我已经使用 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:root
over来修复它sudo
,但它可能会说您没有足够的权限来执行此操作,因此重新安装可能是唯一的可能性。
答案3
最简单的方法是查找并保存“过去几周”修改过的所有文件,然后重新安装并重新应用更改。
- 启动救援磁盘。
- 查找并保存“最近”更改的文件 -
cd /mnt/root && tar czvf /mnt/usb/tarball.tgz --newer-mtime='2015-10-01 00:00:00' .
确保这/mnt/root
是 Pi 系统的根目录而不是救援磁盘的根目录,并且该文件/mnt/usb
位于安全的地方,例如 USB 记忆棒 - 重新安装
- 恢复您精心保存的文件 -
cd / && tar xzvf /root/tarball.tgz
- 重启