如果我删除所有用户密码会怎样?

jco*_*ora 4 security password root ssh account-restrictions

我有一个没有密码的 root 用户的 Fedora VPS。我使用 SSH 密钥登录。

我在该服务器上还有另一个权限较低的帐户,用于 Web 管理。我现在也删除了它的密码。

例如,如果服务器上没有拥有密码的用户,那么如果我丢失了 SSH 密钥,究竟会发生什么?由于无法登录,服务器会永远不可用吗?

此外,sudo当 root 用户和调用用户都没有密码时,程序会如何运行?我试过了,它甚至没有要求我输入密码:它确实有效,因为user ALL=(ALL) ALL我的 sudoers 文件中有那一行(我应该改变它吗?)

slm*_*slm 6

如果您删除/etc/passwd文件的第二个字段,则用户可以毫无挑战地登录。简单地尝试登录就可以让他们进入。所以像这样的事情可能不是你想要做的。

root:$1$iM/2lekk$rXUAcF5fY8ddLL.B1bkH63:12242:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

/etc/passwd 入门

                               passwd 文件的 ss

  1. 用户名:用户登录时使用,长度为1~32个字符。
  2. 密码:x 字符表示加密的密码存储在 /etc/shadow 文件中。
  3. 用户 ID (UID):必须为每个用户分配一个用户 ID (UID)。UID 0(零)为 root 用户保留,UID 1-99 为其他预定义帐户保留。此外,UID 100-999 由系统为管理和系统帐户/组保留。
  4. 组 ID (GID):主要组 ID(存储在 /etc/group 文件中)
  5. 用户 ID 信息:评论字段。它允许您添加有关用户的额外信息,例如用户的全名、电话号码等。此字段由finger 命令使用。
  6. 主目录:用户登录时所在目录的绝对路径。如果此目录不存在,则用户目录变为 /
  7. 命令/外壳:命令或外壳的绝对路径 (/bin/bash)。通常,这是一个外壳。请注意,它不一定是外壳。

借用了解 /etc/passwd 文件格式

禁用密码登录

有此字段之间是空白和含有X(一种微妙的不同:x:),和一个:!:在所述/etc/shadow文件中。这意味着该帐户被故意设置为不允许登录,这可能是您所追求的。

/etc/shadow

root:!:15669:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

任何帐户都可以这样做,如果您真的只想允许ssh使用公钥/私钥登录,这可能是我建议您这样做的方式。

其他问题

例如,如果服务器上没有拥有密码的用户,那么如果我丢失了 SSH 密钥,究竟会发生什么?由于无法登录,服务器会永远不可用吗?

只要您可以物理访问服务器,您就可以随时访问系统。需要重新启动,使用 VPS 可能有点困难,但应该是可能的。

您通常将系统引导到单用户模式,此时您可以根据需要编辑/etc/passwd&/etc/shadow文件。

此外,当 root 用户和调用用户都没有密码时,sudo 程序的行为如何?我试过了,它甚至没有要求我输入密码:它确实有效,因为我的 sudoers 文件中有该用户 ALL=(ALL) ALL 行(我应该更改吗?)

是的,没有密码使用sudo变得更加困难。在处理sudo. 请参阅此 U&L 问答,标题为:设置 sudo 密码与登录密码不同


mic*_*has 2

大多数时候没有密码就很好。

是的,如果您只允许通过 ssh 密钥进行身份验证,并且您丢失了 ssh 密钥,则您将无法再登录。在这种情况下,您可以启动一些 Live CD,安装原始系统并添加 root 密码。(如果您没有这样的选项,也许最好设置 root 密码,以防万一。)

Sudo 可以配置为不询问任何密码。有一个NOPASSWD:选项可以激活它。(看man sudoers。)

请注意,还有许多其他方法可用于身份验证。您可以通过配置PAM系统来激活它们。