这篇小文是讲述在Linux下怎样禁用一个用户的。当你不想永久的移除一个用户,而只是想要让它被禁止,而无法使用此用户登录使用系统的时候,下文可能对你有些用处。这个用户仍然可以做一些事情--比如邮箱自动收到邮件,但他将不能用他的账户登录、接收邮件。

现代linux系统使用/etc/shadow来保存被加密的用户口令,最快的,禁用某个用户的办法是修改在/etc/shadow中保存的口令。一般情况下,一个活动的用户账户在/etc/shadow中可能是像下面这样的:

user:$1$eFd7EIOg$EeCk6XgKktWSUgi2pGUpk.:13852:0:99999:7:::

其中第二个区域是被加密的口令。

如果我们修改口令,而使用“*”或者“!”替代,那么这个账户就将不能被使用,这就意味着无法通过它的账户和口令登录,比如像这样子:

user:*:13852:0:99999:7:::

这种方法是最不推荐的,因为如果这么做,而当你以后打算再次启用这个账户的时候会发现原本的用户口令被弄丢了(当然,你也可以选择把那段密文存储在其他地方什么的)。从这个角度上说,使用下面这个命令来禁用一个账户可能更加好

passwd <username> -l

当你操作成功后,控制台会输出“口令已被改变(Password changed)”。事实上,这个操作只是修改了shadow文件,在原本的密文前面加了个“!”,就像这样:

user:!$1$eFd7EIOg$EeCk6XgKktWSUgi2pGUpk.:13852:0:99999:7:::

当然,我们可以直接手工干这个活,如果我们愿意的话 ;-)。 如果你打算重新启用这个账户,只需要用下面这个命令来解锁:

passwd <username> -u

或者只是删除掉/etc/shadow文件,用户口令的密文前面的“!”即可。


这儿插一句,有人评论中提示,passwd -l并不能真的禁掉某用户,它只是让password永远无法验证通过.如果用户用的是rsa-key验证,还是可以用的.

正确的打开方式应该是:

usermod -e 1 <username>

又,个人觉得比较好的方法应该是

usermod -L <username>

这样就锁定了用户

usermod -U <username>

这样可以解锁用户.

当然,如果你不需要这些东西而打算永久的移除掉一个用户,你只要执行命令:

userdel <username>

这个命令可以保存用户的文件(包括用户目录,邮件等等)。 或者执行如下命令--这会删除该用户在系统中的所有文件:

userdel -r <username>

执行这条命令前要注意的是这个用户将哪个目录作为自己的home目录,就个人经验,我曾经使用这个命令,结果把整个系统干崩了,因为那家伙居然把“/”目录作为他的home目录 ;-) 。

英文原文地址: http://www.ducea.com/2007/12/05/howto-disable-a-user-account-in-linux/


另外附加两个可能要用到的命令 添加一个用户到组中

usermod -a -G group_name user_name

将某用户移出某组

gpasswd -d user_name group_name

一个用户至少要有一个组,因此把一个用户的组退得一个不剩可能是不行的,最多将其改为其它组。用法是

usermod -G group_name user_name

这个等于是刷新了一下组。

查看用户的组还可以用

id user_name
Categories: Code

Yu

Ideals are like the stars: we never reach them, but like the mariners of the sea, we chart our course by them.

Leave a Reply

Your email address will not be published. Required fields are marked *