会发生什么

会发生什么

我不敢像标题那样做。
所以我先用 设置root密码sudo passwd root,然后将所有其他用户更改为标准用户,没有管理员,因此没有用户可以sudo
如果我想设置管理员,只需su root使用刚刚设置的密码即可。

但现在我想知道如果我一开始没有设置 root 密码,然后将所有用户更改为标准用户,会发生什么。这是否意味着这个操作系统永远不能被 sudoers 配置?有什么方法可以设置新的管理员?

答案1

会发生什么

如果您将系统配置为没有用户是管理员,那么没有人能够执行管理任务,root就像sudo(或其图形前端,例如gksugksudo, 和kdesudo) 或者PolicyKit。假设该root帐户仍处于禁用状态,您将无法以以下身份登录root(即使从虚拟控制台)或su两者皆可root。除非存在安全漏洞,这将阻止任何人在正在运行的系统中执行管理任务。

解决问题

然而,如果你这样做了,问题仍然很容易解决,假设您有机器的物理访问权限。修复此问题类似于重置忘记的密码,不同之处在于您将用户添加到sudo和/或admin组中usermod,而不是使用passwd

以下是一种方法:

  1. 启动时按住 并选择 即可进入恢复模式Shift。选择 shell 选项root。您将获得一个带有提示符的 shell #(而不是通常的$)。这意味着它是一个rootshell。您在此处运行的任何命令都将以 运行root

  2. 如果您知道您的用户名,请跳过此步骤。要找出您的用户名,请运行ls /home。这是一种非常可靠的方法,可以列出系统人类用户的用户名(同时省略内部使用但不代表真实人员的用户帐户,如www-data和)。nobody

  3. 运行这些命令来添加username成为管理员所需的组。(替换username使用实际用户名。

    usermod -a -G sudo username
    usermod -a -G admin username

    这将分别尝试将用户添加到和sudoadmin中。在 Ubuntu 11.10 之前的版本中,管理员位于组中admin。在 Ubuntu 12.04(以及未来的版本)中,管理员位于组中sudo;如果 12.04 系统是从以前的版本升级而来的,则两个组都会存在。

    因此,如果您知道哪个组,则可以将用户放入其中一个组中,或者您可以运行这两个命令,然后将其放入任何存在的组中。我建议使用两个命令执行此操作,这样如果一个组不存在,错误不会停止usermod尝试将用户添加到另一个组。

恢复模式通常可以访问。但有时它可能被破坏、禁用或需要密码,在这种情况下,您可以从实时 CD 启动,chroot进入已安装的系统并运行usermod命令。以下是执行此操作的过程,改编自我的更笼统的回答在这里

  1. 如果你还没有,请刻录 Ubuntu Live CD/DVD(Ubuntu视窗, 或者Mac OS X)或写入 Ubuntu Live USB 闪存驱动器(在Ubuntu视窗, 或者Mac OS X)。

  2. 在您的 Ubuntu 系统(不是实时 CD/DVD/USB 系统)中,在终端 (++) 中运行以下Ctrl命令。AltT您无需成为管理员即可执行此操作。

    mount | grep ' on / '
    

    on您应该在 之前和 之后添加空格/

  3. 该命令会产生类似于/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)输出的内容。前面的文本on(不包括空格)是包含 Ubuntu 系统根文件系统的分区的设备名称。记住它(或写下来)。

  4. 从实时 CD/DVD/USB 启动计算机并选择Try Ubuntu without installing(不是Install Ubuntu)。

  5. 运行这些命令,替换/dev/sda1替换为包含 Ubuntu 系统根文件系统的分区的设备名称(如果不同)(以及username您希望授予其管理能力的用户帐户名称)。

    sudo mount /dev/sda1 /mnt
    sudo chroot /mnt
    usermod -a -G sudo username
    usermod -a -G admin username
    exit
    sudo umount /mnt

    与其他方法一样,您可以使用ls /home(运行此如果您不知道用户名,可以使用以下命令chroot查看机器上的用户列表。

消除管理员的替代方案

在 Ubuntu 上,如果您是管理员,您仍需要使用sudo或 PolicyKit 进行身份验证才能以 的身份执行操作root。这被认为至少与使用su以 root 身份执行操作一样安全,因为任何能够以某种方式破坏您的帐户以读取您自己的密码(对于sudo)的人也可以读取root的密码(对于su)。此外,还有一些实质性的优势(这里解释)sudo超过su,并且启用该root帐户虽然完全可能,但在 Ubuntu 中既不推荐也不正式支持。

如果您决定,即使sudoPolicyKit 需要您的密码才能以 的身份执行操作root,但您仍然希望您自己和计算机上的所有其他人类用户以标准用户身份运行(而不是以可以以 身份运行命令的管理员身份运行root),您有两个简单的选择:

  1. 你可以启用root帐户,但如上所述,我们不鼓励这样做。此外,默认情况下,您将无法登录到图形会话root和你一样不应配置您的系统以允许此,因为运行整个图形桌面环境特别危险root(任何部分的安全漏洞都可能危及您的系统)。此外,大多数 GUI 程序都未经过测试,因此root可能存在大量可用性漏洞。如果您确实启用了root,则应仅以 root 身份从虚拟控制台登录(或使用su)。

  2. 更好的选择是仅出于管理目的创建另一个用户帐户。将此帐户设为管理员。拥有root可以使用sudoPolicyKit 执行管理任务的非帐户并不强制您使用该帐户执行日常非管理任务。

但是,大多数用户最好使用默认设置 - 至少有一个用户帐户是管理员并可以执行管理任务,但必须(重新)输入密码才能执行此操作。

答案2

确实,您将拥有一个没有管理员的系统,但可以通过启动恢复模式或使用实时会话来编辑/etc/sudoers和/或修复它/etc/group

请注意,不建议为 root 设置密码。请参阅https://help.ubuntu.com/community/RootSudo

相关内容