在我們運維工作中,會經常要求一些使用者不允許登陸系統,以加固系統安全。今天這裡介紹下鎖定賬號登陸的幾種方法:
一、最常用方式,修改使用者的shell型別為/sbin/nologin (推薦使用)
這種方式會更加人性化一點,因為不僅可以禁止使用者登入,還可以在禁用登陸時給提示告訴它這麼做的原因。
修改/etc/nologin.txt,沒有的話就手動新建一個,在裡面新增給被禁止使用者的提示(這種方式的所有使用者的鎖定資訊都在這個檔案中,在登陸時給與提示)。
如下,禁用wangshibo賬號登陸系統:
[root@host-192-168-1-117 ~]# useradd wangshibo
[root@host-192-168-1-117 ~]# echo "123456"|passwd --stdin wangshibo
Changing password for user wangshibo.
passwd: all authentication tokens updated successfully.
[root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo //或者使用shell型別修改命令"usermod -s /sbin/nologin wangshibo"
wangshibo:x:500:500::/home/wangshibo:/bin/bash
[root@host-192-168-1-117 ~]# sed -i 's#/home/wangshibo:/bin/bash#/home/wangshibo:/sbin/nologin#g' /etc/passwd
[root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/sbin/nologin
[root@host-192-168-1-117 ~]# touch /etc/nologin.txt
[root@host-192-168-1-117 ~]# cat /etc/nologin.txt
In order to protect the system security, this type of user is locked!
現在嘗試用wangshibo賬號登陸系統,就會被拒絕,並給出提示資訊:
[ops@host-192-168-1-117 ~]$ su - wangshibo
Password:
In order to protect the system security, this type of user is locked!
[ops@host-192-168-1-117 ~]$
解禁使用者登陸就是把shell改為它原有的就可以了
[root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/sbin/nologin
[root@host-192-168-1-117 ~]# sed -i 's#/home/wangshibo:/sbin/nologin#/home/wangshibo:/bin/bash#g' /etc/passwd
[root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/bin/bash
[root@host-192-168-1-117 ~]# su - ops
[ops@host-192-168-1-117 ~]$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]$
---------------------------------------------------------------------------------------
可以使用usermod命令修改使用者的shell型別,加-s引數,如
[root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/bin/bash
[root@host-192-168-1-117 ~]# usermod wangshibo -s /sbin/nologin
[root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/sbin/nologin
另外注意下一個小細節:
這一種方法,無論是從root使用者,還是從其他使用者,都不能ssh登陸或su切換到鎖定賬號下
---------------------------------------------------------------------------------------
二、修改使用者配置檔案/etc/shadow,將第二欄設定為“*”
使用這種方式會導致該使用者的密碼丟失,要再次使用時,需重設密碼。一般不推薦這種方式!
[root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo
wangshibo:x:500:500::/home/wangshibo:/bin/bash
[root@host-192-168-1-117 ~]# cat /etc/shadow|grep wangshibo
wangshibo:$1$0/5NU4y2$OBGISa8yaloVNYVLFCoP3.:17133::::::
[root@host-192-168-1-117 ~]# cat /etc/shadow|grep wangshibo # 將第二欄密碼設定為*
wangshibo:*:17133::::::
[root@host-192-168-1-117 ~]# su - ops
[ops@host-192-168-1-117 ~]$ su - wangshibo #不能登陸系統
Password:
su: incorrect password
解禁使用者登陸,需要重置密碼
[root@host-192-168-1-117 ~]# echo "123456"|passwd --stdin wangshibo
Changing password for user wangshibo.
passwd: all authentication tokens updated successfully.
[root@host-192-168-1-117 ~]# cat /etc/shadow|grep wangshibo
wangshibo:$1$RPfkekf7$QAUGmJ0SCIb64aEvJvNif1:17133::::::
[ops@host-192-168-1-117 ~]$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]$
三、使用命令passwd (實驗發現:鎖定後,做了ssh無密碼信任的機器之間登入不受影響)
passwd -l 使用者 //鎖定賬號,-l:lock
passwd -u 使用者 //解禁使用者,-u:unlock
[root@host-192-168-1-117 ~]# passwd -l wangshibo
Locking password for user wangshibo.
passwd: Success
[ops@host-192-168-1-117 ~]$ su - wangshibo
Password:
su: incorrect password
[root@host-192-168-1-117 ~]# passwd -u wangshibo
Unlocking password for user wangshibo.
passwd: Success
[ops@host-192-168-1-117 ~]$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]$
四、使用命令usermod
usermod -L 使用者 //鎖定帳號,-L:lock
usermod -U 使用者 //解鎖帳號,-U:unlock
[root@host-192-168-1-117 ~]# usermod -L wangshibo
[ops@host-192-168-1-117 ~]$ su - wangshibo
Password:
su: incorrect password
[root@host-192-168-1-117 ~]# usermod -U wangshibo
[ops@host-192-168-1-117 ~]$ 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使用者之外的其他所有使用者登入系統(比如在系統維護情況下),如果按照上面的幾種方式,就需要一個一個地去禁止使用者登入,這就是一種很傻X的工作方式,效率也很低!
下面介紹一種簡潔有效的設定方式:
只需要在/etc目錄下建立一個nologin文件,那麼Linux上的所有使用者(除了root以外)都無法登入!!
[root@host-192-168-1-117 ~]# touch /etc/nologin
在/etc/nologin(注意:這可不是第一種方式中的nologin.txt)檔案裡面可以自定義一些內容,告訴使用者為何無法登入。
[root@host-192-168-1-117 ~]# cat /etc/nologin
抱歉,系統維護中,暫時禁止登陸!
這樣,就會發現除root之外的其他使用者統統無法登陸系統了。
[root@linux-node2 ~]# ssh root@192.168.1.117
抱歉,系統維護中,暫時禁止登陸!
[root@host-192-168-1-117 ~]#
[root@linux-node2 ~]# ssh wangshibo@192.168.1.117
wangshibo@192.168.1.117's password:
抱歉,系統維護中,暫時禁止登陸!
Connection closed by 192.168.1.117
[root@linux-node2 ~]# ssh ops@192.168.1.117
ops@192.168.1.117's password:
抱歉,系統維護中,暫時禁止登陸!
Connection closed by 192.168.1.117
注意一點:
這種方法設定後,只是禁止了從外部ssh登陸本機時有效!但是在本機上,無論是從root使用者還是其他普通使用者使用su命令切換到鎖定使用者下都不受影響。
[root@host-192-168-1-117 ~]# su - ops
[ops@host-192-168-1-117 ~]$ su - wangshibo
Password:
[wangshibo@host-192-168-1-117 ~]$
解禁帳號也簡單,直接將/etc/nologin刪除就行了!
[root@host-192-168-1-117 ~]# rm -f /etc/nologin
[root@host-192-168-1-117 ~]# 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.117's password:
[wangshibo@host-192-168-1-117 ~]$
以上幾種鎖定賬號的設定完成後,在遠端使用ssh命令都將無法登陸系統!