sudo:必须是 setuid root

sudo:必须是 setuid root

最近,由于主引导记录出现一些混乱,我不得不重新安装我的 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这是一个有效的选择。

相关内容