如果在未设置root密码的情况下将所有用户设置为标准,会发生什么

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

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

会发生什么

如果您将系统配置为没有用户是管理员,则没有人能够以root身份执行带有sudo (或其图形前端,如gksugksudokdesudo )或PolicyKit的管理任务。 假设root帐户仍然处于禁用状态,您将无法以root身份登录(即使是从虚拟控制台登录),也无法以su -to- root身份登录。 除非可能存在安全漏洞,否则会阻止任何人在正在运行的系统中执行管理任务。

解决问题

但是,如果您这样做,假设您可以物理访问计算机, 问题仍然很容易解决 。 解决此问题类似于重置忘记密码,除非您使用usermod将用户添加到sudo和/或admin组,而不是使用passwd重置其密码。

这是一种方法:

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

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

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

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

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

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

恢复模式通常是可访问的。 但偶尔可能会损坏,禁用或需要密码,在这种情况下,您可以从Live CD启动, chroot到已安装的系统,然后运行usermod命令。 这是一个这样做的程序,改编自我在这里更为一般的答案 :

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

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

     mount | grep ' on / ' 

    你应该在/之前和之后包括空格。

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

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

  5. 运行这些命令,将/dev/sda1替换为包含Ubuntu系统根文件系统的分区的设备名称(如果不同)(以及具有您希望提供管理function的用户帐户名称的用户名)。

     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进行身份validation以root身份执行操作。 这被认为至少与使用su以root身份执行操作一样安全,因为任何可以以这种方式破坏您的帐户以读取您自己的密码(对于sudo )的人也可以读取root的密码(对于su )。 此外, sudo over su还有一些实质性的优点( 在此解释 ),并且在Ubuntu中既不推荐也不正式支持root帐户。

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

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

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

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

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

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