如何启用或禁用用户?

我正在使用Ubuntu 12.04桌面版。我有3个用户:user1(管理员),user2(标准用户)和guest(访客)。我想禁用user1并启用user2,使其自动登录且无需密码,但在我这样做之后,除了guest用户之外,我无法登录到user1和user2账户。我被剥夺了所有的管理员权限。我不知道有哪些选项可供我选择,以及如何启用root或作为管理员的用户。

这可能会有所帮助:http://askubuntu.com/q/161074/83046 - green
5个回答

账户过期

让账户过期以禁止用户从任何来源登录,包括ssh

# disallow peter from logging in
sudo usermod --expiredate 1 peter

这是您重新启用该帐户的方法:
# set expiration date of peter to Never
sudo usermod --expiredate "" peter

锁定密码
要禁用/锁定用户帐户的密码,请使用以下命令。这不会在Ubuntu上禁止ssh访问。它会在密码哈希前加上一个!,以使任何密码都无法匹配。
# take away peters password
sudo passwd -l peter

解锁他的方法是:
# give peter back his password
sudo passwd -u peter

密码过期

这个命令在不同的平台上似乎有所不同。在Ubuntu上,密码过期会要求用户在登录后设置一个新密码。但这并不适用于禁用账户。

# make peter think of a new password on login
sudo passwd -e  YYYY-MM-DD peter

你应该像@vorburger的回答中解释的那样,将锁定密码和过期帐户合并为一个命令(usermod -L -e 1 [用户名])和(usermode -U -e "" [用户名])。 - Basil A
但是我认为你区分ssh的方式很好。 - Basil A

使用此功能来锁定账户:
sudo usermod -L -e 1 [username]

解锁一个被锁定的账户,需要执行以下操作:
sudo usermod -U -e "" [username]

注意:

(禁用和锁定用户账户是同一个意思。)

要禁用/锁定用户账户,请使用以下命令:

sudo passwd -l [user_name]

e.g.

sudo passwd -l samual

给用户账户设置一个过期日期,以便自动禁用/锁定。
sudo passwd -e  YYYY-MM-DD [user_name]

e.g.

sudo passwd -e  2013-05-31 samual

要重新启用一个被禁用的用户,请使用passwd命令并加上-u选项。
sudo passwd -u [username]

e.g.

sudo passwd -u training

启用root账户并更改root密码,请按照以下步骤进行操作。
1) su -
2) passwd

输入root账户的新密码,然后退出。如果问题没有解决,请告诉我。
如果您需要其他任何帮助或进一步澄清,请随时告诉我。

当我这样做时,它要求密码并且root用户未启用,管理员账户user1也已禁用。 - user150330
@user150330 我已经更新了答案检查,它在最后面。 - Hrish
@user150330 你的问题解决了吗? - Hrish
4从man页面中翻译:-l 注意,这并不禁用账户。用户仍然可以使用其他身份验证令牌(例如SSH密钥)登录。要禁用账户,管理员应该使用usermod --expiredate 1(将账户的过期日期设置为1970年1月2日)。 - Levon
3我可以确认passwd -l ...不会停止键入身份验证。刚刚测试过了。 - Oli
"passwd -e [user]" 命令不接受参数。按照 @abstrakor 的建议,使用 "usermod" 命令。 - Jared Clemence

除了之前的解决方案,另一种方法是在/etc/passwd文件中将要禁用的用户的bash替换为/bin/false。
编辑/etc/passwd文件,找到包含您的用户的行,然后将/bin/bash更改为/bin/false。 不要更新其他行
........
username:x:1000:1000:User:/home/username:/bin/false

你的答案会删除根目录。这是你想要的吗? - David
我没有说要替换/etc/passwd的内容,只是将要禁用的用户的/bin/bash替换为/bin/false。我更新了我的回答以使其更清晰。 - Jos

在Ubuntu 18.04中进行测试

用例:禁用一个账户,使用户无法登录。

使用root权限:"passwd -l -e 用户名"

这样账户就被锁定了,旧密码也会过期

要恢复用户:"passwd -u 用户名"

在此之后,用户必须输入旧密码并设置一个新密码才能重新登录

希望对您有所帮助

注意:当您禁用一个账户时,尝试使用身份文件(例如abc.pem)进行SSH登录也会失败