没有密码的用户 - 如何从非 root 帐户登录到该帐户

Lav*_*vya 36 password sudo scientific-linux useradd

我刚刚开始使用 Scientific Linux (7.0)(虽然我认为这个问题可能与发行无关......)。内核版本为 3.10.0-123.20.1.el7.x86_64。

回到我的问题。

我切换到rootaccount 并从那里test-account使用命令创建了一个新的用户帐户adduser test-account。它没有提示我输入密码,我也没有使用提供密码的选项。所以我猜这是一个“无密码”帐户。我可以从 root 帐户登录到这个帐户 - 我想即使测试帐户有密码我也可以不提供密码。但是,当我尝试从第三个帐户登录此(测试帐户)时 - 它会提示我输入密码。只是按下Enter不起作用。

是否可以从非 root 帐户登录到此帐户。有没有办法(无需切换到 root 或使用sudo)?

Nat*_*Coy 36

默认情况下,在企业 GNU/Linux 及其衍生产品上,该adduser命令会创建一个用户,该用户在您为该用户明确指定密码之前一直处于禁用状态。

这是 CentOS 6.5 上的示例,它应该与 Scientific Linux 相同。

 $ sudo adduser test
 $ sudo grep test /etc/shadow
 test:!!:123456:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

那是因为在/etc/shadow文件中,密码字段是!!,正如您在示例中看到的那样。

一旦您passwd为此帐户运行,它将更改用户的密码并允许用户能够登录。

因此,您应该能够做的是让用户没有密码,只需创建一个帐户然后删除密码即可。

 $ sudo adduser test
 $ sudo passwd -d test
 Removing password for user test.
 passwd: Success
 $ su test
 $ whoami
 test
Run Code Online (Sandbox Code Playgroud)

现在,在我的示例中,任何用户都应该能够以用户身份使用su和登录test。您将不必使用sudo来作为帐户登录。

尽管这是可能的并且您可以拥有一个没有密码的帐户,但不建议这样做。如果您只是为用户设置密码,则应该允许您登录。

$ sudo passwd test
[sudo] password for <YOURACCOUNT>:
Changing password for user test.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Run Code Online (Sandbox Code Playgroud)

  • `root` 用户可以 `su` 进入任何有 shell 的帐户。例如,如果 shell 被设置为 `/bin/false`,它就不会工作。这就是‘root’的神奇之处!许多用户帐户没有有效的外壳程序,仅用于以该用户身份执行特定程序。例如 `apache` 用户和 apache 网络服务器。 (2认同)