root 帐户(和其他帐户)的“未设置密码”是什么意思?

Mas*_*oor 4 encryption root sudo password

几年前,我们更习惯于使用su命令更改为 root 帐户。首先,我们切换到 root 帐户,然后执行那些 root 命令。现在我们更习惯于使用sudo命令。

但是我们知道 root 帐户在那里。我们可以很容易地找到用户 root 的主目录。

$ ls -ld /root/
drwx------ 18 root root 4096 Oct 22 17:21 /root/
Run Code Online (Sandbox Code Playgroud)

现在我的观点是,声明“Ubuntu 中的 root 密码未设置”。请参阅此问题的答案。大多数答案在第一段中都有这种效果。一两个答案进一步说明“该帐户已被禁用”。

现在我的(主要)问题是,

  1. 未设置密码是什么意思?是空白吗?它是空的吗?或者其他更神秘的东西?
  2. 设置密码后,该帐户如何启用?( sudo password root)

为了更好地理解,我检查了/etc/shadow文件。由于我已经为 root 帐户设置了密码,我再也看不到里面有什么(加密密码)。因此,我创建了另一个帐户并将其禁用。/etc/shadow文件中对应的条目是,

testpassword:!:16020:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

现在也许我上面的查询需要更改为,!密码字段是什么意思?其他加密密码是那些很长的神秘字符串。为什么这种加密形式只有一个字符长?如果我!在(加密的)密码字段中输入一个,帐户是否会被禁用?

Bra*_*iam 5

未设置密码是什么意思?是空白吗?它是空的吗?或者其他更神秘的东西?

只是不存在。默认情况下禁用root帐户,因此它不需要密码。所以,最相似的是undefined(在 JavaScript 中)或(null)(在其他语言中)。它只是未设置。

设置密码后,该帐户如何启用?

实际上,设置密码只是其中的一部分,但不会启用帐户。您需要使用以下方法启用该帐户:

sudo usermod -U root
Run Code Online (Sandbox Code Playgroud)

然后用 设置密码passwd

这是什么一个!在密码字段是什么意思?

摘自man shadow

以感叹号开头的密码字段表示密码已锁定。行上的其余字符代表密码被锁定之前的密码字段。

这可能意味着帐户被锁定。但是也:

如果密码字段包含一些不是 crypt(3) 有效结果的字符串,例如!or*,用户将无法使用 unix 密码登录(但用户可以通过其他方式登录系统) .

无论哪种方式,任何帐户!都无法使用使用影子文件的应用程序登录。

为什么这种加密形式只有一个字符长?

未加密。看上面。

如果我放一个 ! 帐户是否会被禁用?在(加密的)密码字段中?

也见上文。