如何禁用用户登录?

如何禁用用户登录?

我用命令创建了一个用户--disabled-login。然后我必须更改密码,以便我可以登录用户并测试一些东西。我现在想再次禁用登录,我看到了这篇文章: `adduser --disabled-login` 是做什么的?

所以我使用sudo passwd user然后将其设置为!.但是,当我尝试登录时,我可以使用密码登录!。那么如何再次禁用它呢?

请注意,我也尝试过*作为密码。

答案1

我认为你的困惑源于你不明白它的作用!

加密的密码存储在/etc/shadow.例如,创建一个名为的新用户new-user并为其指定12345678密码后,我们会得到以下条目:

$ sudo cat /etc/shadow
(...)
new-user:$6$zVbJcpZE$Bqnxr5cDkwjKOE06iAZu7/qIuH9UGXex28TU/aD0osft9DfdPVzcVwq2j410YxoPlZR310.heZyxaQq4iwWy9.:18038:0:99999:7:::

new-user您现在可以通过执行su new-user并输入 12345678密码来切换。您可以new-user通过在密码前面添加!以下内容来禁用密码 :

$ sudo cat /etc/shadow
(...)
new-user:!$6$zVbJcpZE$Bqnxr5cDkwjKOE06iAZu7/qIuH9UGXex28TU/aD0osft9DfdPVzcVwq2j410YxoPlZR310.heZyxaQq4iwWy9.:18038:0:99999:7:::

new-user从现在开始,即使提供正确的密码,您也将无法切换到:

$ su new-user
Password:
su: Authentication failure

请注意,/etc/shadow手动修改非常危险,不建议这样做。您可以使用 实现相同的效果sudo passwd -l new-user。正如man passwd所说:

   -l, --lock
       Lock the password of the named account. This option
       disables a password by changing it to a value which matches
       no possible encrypted value (it adds a ´!´ at the beginning
       of the password).

例如:

$ sudo passwd -l new-user
passwd: password expiry information changed.

但是,请注意,passwd -l不会禁用帐户,它仅禁用密码这意味着用户仍然可以使用其他方法登录系统,如下man passwd所示:

       Note that this does not disable the account. The user may
       still be able to login using another authentication token
       (e.g. an SSH key). To disable the account, administrators
       should use usermod --expiredate 1 (this set the account's
       expire date to Jan 2, 1970).

       Users with a locked password are not allowed to change
       their password.

答案2

看起来您误解了当 中存在*or!作为“密码值”时发生的情况/etc/shadow。您无法通过实际将密码更改为单字符*!.此类单字符值是使用诸如 之类的命令锁定用户帐户的结果usermod -L

如果您想了解更多,请阅读:密码字段中的感叹号和星号

答案3

您正在寻找usermod --lock

相关内容