在平时工作中,有时候会要求禁止一些用户的登录,以便系统变更或者安全,这里介绍几种常见的方法:
一、最常用方式,修改用户的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切换到锁定用户下
<strong>注意:</strong>通过
usermod
或
passwd
锁定账号,不会对做了
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命令都将无法登陆系统!