在咱們運維工做中,會常常要求一些用戶不容許登錄系統,以加固系統安全。今天這裏介紹下鎖定帳號登錄的幾種方法:node
1、最經常使用方式,修改用戶的shell類型爲/sbin/nologin (推薦使用)
這種方式會更加人性化一點,由於不只能夠禁止用戶登陸,還能夠在禁用登錄時給提示告訴它這麼作的緣由。
修改/etc/nologin.txt,沒有的話就手動新建一個,在裏面添加給被禁止用戶的提示(這種方式的全部用戶的鎖定信息都在這個文件中,在登錄時給與提示)。linux
以下,禁用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/nologinshell
[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 ~]$bash
解禁用戶登錄就是把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 ~]$ssh
---------------------------------------------------------------------------------------
可使用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/nologinthis
另外注意下一個小細節:
這一種方法,不管是從root用戶,仍是從其餘用戶,都不能ssh登錄或su切換到鎖定帳號下
---------------------------------------------------------------------------------------spa
2、修改用戶配置文件/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::::::code
[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 ~]$
3、使用命令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 ~]$
4、使用命令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
動做,互信也受影響。
5、禁止全部的用戶登陸(手動建立/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命令都將沒法登錄系統!