我用命令创建了一个用户--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
。