如果所有用户都设置为标准而未设置 root 密码会发生什么

LYg*_*LYg 3 root users

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

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

Eli*_*gan 6

会发生什么

如果您配置您的系统,使任何用户是管理员,那么没有人将能够执行管理任务rootsudo(或它的图形前端,如gksugksudokdesudo)或PolicyKit的。假设该root帐户保持禁用状态,您将无法以root(甚至从虚拟控制台)或su-to-身份登录root。除非可能存在安全漏洞,否则任何人都无法在正在运行的系统中执行管理任务。

解决问题

但是,如果您这样做,假设您可以物理访问机器,问题仍然很容易解决。解决此问题类似于重置忘记的密码,不同之处在于您使用 将用户添加到sudo和/或adminusermod,而不是使用 重置他们的密码passwd

这是一种方法:

  1. 通过Shift在启动时按住并选择它来启动到恢复模式。选择root外壳选项。你会得到一个带有#提示的 shell (而不是通常的$)。这意味着它是一个root外壳。您在此处运行的任何命令都以root.

  2. 如果您知道您的用户名,请跳过此步骤。要找出您的用户名,请运行ls /home。这是一个非常可靠的方式列出你的系统的人类用户的用户名(同时省略了用户帐户像www-datanobody其内部使用,但并不代表真正的人)。

  3. 运行这些命令以添加username到必要的组以成为管理员。(替换username为实际用户名。)

    usermod -a -G sudo username
    usermod -a -G admin username
    Run Code Online (Sandbox Code Playgroud)

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

    所以你可以把用户放在一个,如果你知道哪个,或者你可以运行这两个命令并将它们放在任何存在的地方。我建议使用两个命令执行此操作,以便如果一个组不存在,则错误不会停止usermod尝试将用户添加到另一组。

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

  1. 如果您还没有,请刻录 Ubuntu live CD/DVD(在UbuntuWindowsMac OS X 上)或编写 Ubuntu live USB 闪存驱动器(在UbuntuWindowsMac OS X 上)。

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

    mount | grep ' on / '
    
    Run Code Online (Sandbox Code Playgroud)

    您应该包括前空间on和后/

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

  4. 从 Live CD/DVD/USB 启动计算机并选择Try Ubuntu without installing(not 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
    Run Code Online (Sandbox Code Playgroud)

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

消除管理员的替代方法

在 Ubuntu 上,当您是管理员时,您仍然需要使用sudo或 PolicyKit 进行身份验证以执行root. 这被认为至少与使用suroot 执行操作一样安全,因为任何可以以读取您自己的密码 (for sudo)的方式破坏您帐户的人也可以读取root的密码 (for su)。此外,over有一些显着的优点(在此处解释),虽然很有可能启用该帐户,但在 Ubuntu 中既不推荐也不官方支持。sudosuroot

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

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

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

但是,大多数用户最好使用默认设置——其中至少有一个用户帐户是管理员并且可以执行管理任务,但必须(重新)输入他们的密码才能这样做。