Linux禁止用户登录

在平时工作中,有时候会要求禁止一些用户的登录,以便系统变更或者安全,这里介绍几种常见的方法:

一、最常用方式,修改用户的shell类型为/sbin/nologin  (推荐使用

比如,禁止用户user001登录系统:

[root@ubuntu2020 ~]# cat /etc/passwd|grep user001
user001:x:2000:5555:这是游客:/home/guest0:/bin/bash
[root@ubuntu2020 ~]# usermod -s /sbin/nologin user001
[root@ubuntu2020 ~]# cat /etc/passwd|grep user001
user001:x:2000:5555:这是游客:/home/guest0:/sbin/nologin  //此时已经将用户的shell改为nologin,不允许登录

现在尝试登录切换到user001,会无法登录并给出提示信息: // 提示信息可以在/etc/nologin.txt编辑,没有则创建该文件

[user002@ubuntu2020 ~]$ su user001

Password:

该账户为已被锁定, 不允许登录

[user002@ubuntu2020 ~]$

还原则将用户的修改为原本的即可,可以通过命令或者vim直接修改/etc/passwd

[root@ubuntu2020 ~]# usermod -s /bin/bash user001
[root@ubuntu2020 ~]# su user001
[user001@ubuntu2020 root]$ cat /etc/passwd|grep user001
user001:x:2000:5555:这是游客:/home/guest0:/bin/bash

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

——————————————————————————————————————————–

二、修改用户配置文件/etc/shadow,将第二栏设置为“*”

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

[root@ubuntu2020 ~]# cat /etc/passwd|grep user001
user001:x:2000:5555:这是游客:/home/guest0:/bin/bash
[root@ubuntu2020 ~]# cat /etc/shadow|grep user001
user001:$6$QPKq./fl$.jwt7JMWW9.EBex.2MNfY6RLIkI3hhUotU15ml/Mdm.tyr7Yubqa.:18389:0:99999:7:::
[root@ubuntu2020 ~]# vim /etc/shadow
[root@ubuntu2020 ~]# su user001
[user001@ubuntu2020 root]$            // root用户仍然可以通过su切换到该用户

[user002@ubuntu2020 ~]$ su user001
Password:
su: Authentication failure
[user002@ubuntu2020 ~]$            // 非root用户则无法su登录,ssh工具也无法登录

如果让用户重新登录,则需要重设密码

[root@ubuntu2020 ~]# echo “123456”|passwd –stdin user001
Changing password for user user001.
passwd: all authentication tokens updated successfully.
[root@ubuntu2020 ~]# cat /etc/shadow|grep user001
user001:$6$vBbI/K7d$SUgM1R6t6w.HOqiek2iQwiQDUlFKli620yZUMD9BxiFJSYG4vRC0:18389:0:99999:7:::

——————————————————————————————————————————–

三、使用命令passwd     (实验发现:锁定后,做了ssh无密码信任的机器之间登录不受影响)
passwd -l 用户          //锁定账号,-l:lock
passwd -u 用户        //解禁用户,-u:unlock

[root@ubuntu2020 ~]# passwd -l user001
Locking password for user user001.
passwd: Success

[root@ubuntu2020 ~]# cat /etc/shadow|grep user001    // 本质就是在密码前面加上了双感叹号”!!”
user001:!!$6$vBbI/K7d$SU0R6t6w.HOqiek2iQwiQDUlFtgxbZ0QNtuawq9Y3fXrxSG4vRC0:18389:0:99999:7::: 

[root@ubuntu2020 ~]# su user001
[user001@ubuntu2020 root]$          // root用户仍然可以通过su切换到该用户

[user002@ubuntu2020 ~]$ su user001
Password:
su: Authentication failure
[user002@ubuntu2020 ~]$            // 非root用户则无法su登录,ssh工具也无法登录

解锁用户重新登录

[root@ubuntu2020 ~]# passwd -u user001
Unlocking password for user user001.
passwd: Success

[user002@ubuntu2020 ~]$ su user001
Password:
[user001@ubuntu2020 guest1]$

——————————————————————————————————————————–

四、使用命令usermod
usermod -L 用户         //锁定帐号,-L:lock
usermod -U 用户        //解锁帐号,-U:unlock

[root@ubuntu2020 ~]# usermod -L user001
[root@ubuntu2020 ~]# cat /etc/shadow|grep user001    // 本质就是在密码前面加上了单感叹号”!”
user001:!$6$vBbI/K7d$SU0R6t6w.HOqiek2iQwiQDUlFtgxbZ0QNtuawq9Y3fXrxSG4vRC0:18389:0:99999:7:::
[root@ubuntu2020 ~]# su user001            // root用户仍然可以通过su切换到该用户
[user001@ubuntu2020 root]$

[user002@ubuntu2020 ~]$ su user001          
Password:
su: Authentication failure
[user002@ubuntu2020 ~]$                  // 非root用户则无法su登录,ssh工具也无法登录

解锁用户重新登录

[root@ubuntu2020 ~]# usermod -U user001
[root@ubuntu2020 ~]# cat /etc/shadow|grep user001
user001:$6$vBbI/K7d$SU0R6t6w.HOqiek2iQwiQDUlFtgxbZ0QNtuawq9Y3fXrxSG4vRC0:18389:0:99999:7:::

[user002@ubuntu2020 ~]$ su user001
Password:
[user001@ubuntu2020 guest1]$

—————————————————————————————
通过第三和第四种方式,即passwd或usermod命令锁定的用户:
1)无论从root用户还是其他普通用户,都不能ssh登陆锁定用户下
2)可以从root用户su切换到锁定用户下,但是用其他普通用户不能su切换到锁定用户下

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

——————————————————————————————————————————–

五、禁止所有的用户登录(手动创建/etc/nologin文件)
如果不想让除root用户之外的其他所有用户登录系统(比如在系统维护情况下),如果按照上面的几种方式,就需要一个一个地去禁止用户登录,效率很低!

一种简洁有效的设置方式,只需要在/etc目录下建立一个nologin文件,那么Linux上的所有用户(除了root以外)都无法登录!

[root@ubuntu2020 ~]# touch /etc/nologin
[root@ubuntu2020 ~]# vim /etc/nologin
[root@ubuntu2020 ~]# cat /etc/nologin
系统维护, 暂时不允许非root登录!

此时除root之外的其他用户统统无法登陆系统了

C:\Users\Shutdown>ssh user001@192.168.1.84
user001@192.168.1.84’s password:
系统维护, 暂时不允许非root登录!

Connection closed by 192.168.1.84 port 22

注意一点:这种方法设置后,只是禁止了从外部ssh登陆本机时有效!但是在本机上,无论是从root用户还是其他普通用户使用su命令切换到锁定用户下都不受影响。

[user002@ubuntu2020 ~]$ su user001
Password:
[user001@ubuntu2020 guest1]$

解锁用户重新登录,删除/etc/nologin文件即可

[root@ubuntu2020 ~]# rm -rf /etc/nologin
[root@ubuntu2020 ~]#

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

⚑Tags: