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命令都將無法登陸系統!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM