最近,由于主引导记录出现一些混乱,我不得不重新安装我的 Ubuntu。在此之前,我将所有文件夹(不包括 root、bin、sbin、tmp、media、mnt)备份到 NTFS 分区。安装 Ubuntu 后,我使用 nautilus(通过 sudo nautilus 运行)复制回所有文件夹。之后,我重新启动了计算机。然后,现在我无法再运行 sudo,我的网络服务也无法运行。当我从终端运行 sudo 时,我收到“必须是 setuid root”错误。在 ubuntu 中,root 帐户默认被禁用,我不知道为什么所有这些文件都不再属于我的帐户。我该如何恢复?
答案1
sudo 命令必须在其可执行文件上设置 setuid 权限位。但在 Ubuntu 中,您目前无法成为 root。我认为您可以从紧急磁盘启动并使用 chmod 在 sudo 上设置此位。
答案2
正如 Fractalizer 所说,这是 sudo 上的 setuid 位的问题。有关如何修复此问题的详细说明可在此处找到:http://ubuntuforums.org/showthread.php?t=219767
除了这个程序之外,很有可能还会有其他问题。因此,一旦您解决了 sudo 的特定问题,您可能会发现其他问题也会出现。不幸的是,cp 到 NFS 共享不会保留您完全正常运行的系统所需的所有权限。尤其是在 /usr/bin 这样的地方。
答案3
您的文件不再属于您的帐户,因为您以 root 身份复制了它们。这样 root 就成为了所有者。
要返回 sudo,请从救援环境挂载您的根分区并编辑etc/group
。将您的用户帐户添加到管理员组,您应该再次拥有 sudo 访问权限。
之后,您可以更改所复制文件的所有权。您是否有另一个 ubuntu 安装,在哪里可以找到正确的所有权?
答案4
正如其他人已经说过的,这是一个权限问题。
首先,您复制到具有不同权限的 NTFS 分区,因此您可能会在此过程中丢失一些信息,尽管我从未尝试过。
其次,您可能应该复制文件以cp -p
保留模式和所有权。
最好的选择是使用tar
(或等效选项),我猜你输入了错误的命令及其选项。执行备份的一种简单方法是
tar cf /path/to/backup.tar /usr /bin /var
此外,正如其他人提到的,rsync
这是一个有效的选择。