在我们运维工作中,会经常要求一些用户不允许登陆系统,以加固系统安全。今天这里介绍下锁定账号登陆的几种方法:

一、最常用方式,修改用户的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
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 ~]$

二、修改用户配置文件/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
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 ~]$

五、禁止所有的用户登录(手动创建/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登陆系统,也禁止了使用su切换到该账号下!
但是第五种方法设置后,只是禁止了从外部ssh登陆本机时有效!但是在本机上使用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 ~]$

Linux下锁定账号,禁止登录系统的设置总结的更多相关文章

  1. Linux下锁定账号,禁止登录系统的设置总结【转】

    在我们运维工作中,会经常要求一些用户不允许登陆系统,以加固系统安全.今天这里介绍下锁定账号登陆的几种方法: (推荐使用)这种方式会更加人性化一点,因为不仅可以禁止用户登录,还可以在禁用登陆时给提示告诉 ...

  2. Linux下SSH免密码登录

    转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...

  3. ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问(转)

    转自:http://blog.csdn.net/pennyliang/article/details/8556662 ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访 ...

  4. Linux下一个简单的日志系统的设计及其C代码实现

    1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...

  5. Linux下使用fstatfs/statfs查询系统相关信息

    Linux下使用fstatfs/statfs查询系统相关信息 1.   功能 #include < sys/statfs.h > int statfs(const char *path, ...

  6. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

  7. 详解Linux下iptables中的DNAT与SNAT设置(转)

    详解Linux下iptables中的DNAT与SNAT设置 这篇文章主要介绍了Linux下iptables中的DNAT与SNAT设置,是Linux网络配置中的基础知识,需要的朋友可以参考下   原文连 ...

  8. Linux下Tomcat端口、进程以及防火墙设置

     Linux下Tomcat端口.进程以及防火墙设置 1,查看tomcat进程: #ps -aux | grep tomcat(或者ps -ef | grep tomcat都行) 可以看到现在运行着两个 ...

  9. 转:Linux下同时启动两个Tomcat进行设置

    转: Linux下同时启动两个Tomcat进行设置 解压tar.gz:tar -zxvf apache-tomcat-6.0.41.tar.gz 至相应的路径下,可解压至两个不同的路径或者相同的路径下 ...

随机推荐

  1. VSS、RSS、PSS、USS

    VSS:Virtual Set Size,虚拟耗用内存.它是一个进程能访问的所有内存空间地址的大小.这个大小包含了一些没有驻留在RAM中的内存,就像mallocs已经被分配,但还没有写入.VSS很少用 ...

  2. Android Activity动画

    动画XML文件 slide_right_in.xml <?xml version="1.0" encoding="utf-8"?> <set ...

  3. 【代码笔记】iOS-3个section,每个都有header.

    一,效果图: 二,工程目录. 三,代码 RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  4. 网络热恋之SDWebImage

    SDWebImage-master 是一个非常强大的三方. 当需要应用SDWeb时把文件夹里的SDWebImage文件夹放入工程里. 在需要使用网络获取图片的文件里进入头文件#import " ...

  5. OC 多态

    OC 多态 多态的概念 没有继承,就没有多态 不同类的对象能够定义相同名称的方法 当父类对象的指针或引用指向子类对象时,会进行动态监测,调用真实的方法 C++只有虚函数才能实现多态,OC中所有方法都可 ...

  6. Hibernate 事务管理

    一. 事务包含四个基本特性:简称ACID: 1. Atomic(原子性):全部成功或全部失败: 2. Consistency(一致性):只有合法数据才能被写入,不合法则回滚到最初状态: 3. Isol ...

  7. symfony2 controller

    1.基本概念 一次http请求    输入(Request):header信息.get信息.post数据等 输出(Response):symfony经过处理返回的信息,包括页面.json字符串.URL ...

  8. flashdevelop生成swc库

    flashdevelop没有直接支持生成swc的工程,但flashdevelop生成swc也比较方便,不用任何插件. swc库是由 flexsdk的compc.exe生成的,其实我们通过这个命令行也可 ...

  9. 布局display

    什么是布局: 浏览器以正确的大小将元素摆放在正确的位置上. 布局:元素摆放的模式. 影响元素大小和位置的css属性: display  position   float  flex display 设 ...

  10. Amoeba for MySQL---分布式数据库Proxy解决方案

    Amoeba是什么? Amoeba(变形虫)项目,致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy ...