Post

Linux - 锁定账号

Linux - 锁定账号

[toc]

锁定账号的设置完成后,在远程使用ssh命令将无法登陆系统

shell –> /sbin/nologin (推荐使用)

不仅可以禁止用户登录,还可以在禁用登陆时给提示告诉它这么做的原因。

修改/etc/nologin.txt,没有的就手动新建, 在里面添加给被禁止用户的提示(这种方式的所有用户的锁定信息都在这个文件中,在登陆时给与提示)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
禁用wangshibo账号登陆系统:
# useradd wangshibo
# echo "123456"|passwd --stdin wangshibo
Changing password for user wangshibo.
passwd: all authentication tokens updated successfully.

# cat /etc/passwd|grep wangshibo    //或者使用shell类型修改命令"usermod -s /sbin/nologin wangshibo"
wangshibo:x:500:500::/home/wangshibo:/bin/bash

# sed -i 's#/home/wangshibo:/bin/bash#/home/wangshibo:/sbin/nologin#g' /etc/passwd
# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/sbin/nologin

# touch /etc/nologin.txt
# cat /etc/nologin.txt
In order to protect the system security, this type of user is locked!


现在用wangshibo账号登陆系统,就会被拒绝,并给出提示信息:
$ su - wangshibo
Password:
In order to protect the system security, this type of user is locked!


解禁用户登陆就是把shell改为它原有的就可以了
# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/sbin/nologin

# sed -i 's#/home/wangshibo:/sbin/nologin#/home/wangshibo:/bin/bash#g' /etc/passwd
# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/bin/bash


$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]

---------------------------------------------------------------------------------------

使用usermod命令修改用户的shell类型,加-s参数,如

# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/bin/bash

# usermod wangshibo -s /sbin/nologin

# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/sbin/nologin

另外注意下一个小细节:
这一种方法,无论是从root用户,还是从其他用户,都不能ssh登陆或su切换到锁定账号下

---------------------------------------------------------------------------------------

二、修改 /etc/shadow,将第二栏设置为 *

使用这种方式会导致该用户的密码丢失,要再次使用时,需重设密码。一般不推荐这种方式!

1
2
3
4
5
6
7
8
9
10
11
12
13
# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/bin/bash

# cat /etc/shadow|grep wangshibo
wangshibo:$1$0/5NU4y2$OBGISa8yaloVNYVLFCoP3.:17133::::::

# cat /etc/shadow|grep wangshibo      # 将第二栏密码设置为 *
wangshibo:*:17133::::::

# su - ops
$ su - wangshibo                 #不能登陆系统
Password:
su: incorrect password

解禁用户登陆,需要重置密码

1
2
3
4
5
6
7
8
9
10
# echo "123456"|passwd --stdin wangshibo
Changing password for user wangshibo.
passwd: all authentication tokens updated successfully.

# cat /etc/shadow|grep wangshibo
wangshibo:$1$RPfkekf7$QAUGmJ0SCIb64aEvJvNif1:17133::::::

$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]$

三、使用命令passwd (锁定后,做了ssh无密码信任的机器之间登录不受影响)

passwd -l 用户 //锁定账号,-l:lock passwd -u 用户 //解禁用户,-u:unlock

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# passwd -l wangshibo
Locking password for user wangshibo.
passwd: Success

$ su - wangshibo
Password:
su: incorrect password

# passwd -u wangshibo
Unlocking password for user wangshibo.
passwd: Success

$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]

四、使用命令usermod

usermod -L 用户 //锁定帐号,-L:lock usermod -U 用户 //解锁帐号,-U:unlock

1
2
3
4
5
6
7
8
9
10
11
# usermod -L wangshibo

$ su - wangshibo
Password:
su: incorrect password

# usermod -U wangshibo

$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]$

这里有个细节需要注意一下: 第三和第四种方式,即passwd或usermod命令锁定的用户: 1)无论从root用户还是其他普通用户,都不能ssh登陆锁定用户下 2)可以从root用户su切换到锁定用户下,但是用其他普通用户不能su切换到锁定用户下


注意:通过usermod或passwd锁定账号,不会对做了ssh互信的机器造成登录影响;但要是在sshd_config里做了DenyUsers的限制,则就彻底禁止了ssh动作,互信也受影响。

五、禁止所有的用户登录(手动创建/etc/nologin文件)

不想让除root用户之外的其他所有用户登录系统(比如在系统维护情况下),按照上面的几种方式,就需要一个一个地去禁止用户登录

只需要在/etc目录下建立一个nologin文档,那么Linux上的所有用户(除了root以外)都无法登录!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# touch /etc/nologin

/etc/nologin(注意:这可不是第一种方式中的nologin.txt)文件里面可以自定义一些内容,告诉用户为何无法登录。

# cat /etc/nologin
抱歉,系统维护中,暂时禁止登陆!

root之外的其他用户统统无法登陆系统了。


# ssh root@192.168.1.117
抱歉,系统维护中,暂时禁止登陆!

# ssh wangshibo@192.168.1.117
wangshibo@192.168.1.117s password:
抱歉,系统维护中,暂时禁止登陆!
Connection closed by 192.168.1.117

# ssh ops@192.168.1.117
ops@192.168.1.117s password:
抱歉,系统维护中,暂时禁止登陆!
Connection closed by 192.168.1.117

注意一点:
这种方法设置后,只是禁止了从外部ssh登陆本机时有效!但是在本机上,无论是从root用户还是其他普通用户使用su命令切换到锁定用户下都不受影响。
# su - ops
$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]$

解禁帐号也简单,直接将/etc/nologin删除就行了!
# rm -f /etc/nologin
# ll /etc/nologin
ls: cannot access /etc/nologin: No such file or directory

[root@linux-node2 ~]# ssh wangshibo@192.168.1.117
wangshibo@192.168.1.117s password:
[wangshibo@host-192-168-1-117 ~]$

.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.