• 在创建各种云主机的时候,云服务商给的都是root用户,这很方便,但是有某些时候会造成一些困扰,日后在服务器上启动各种服务后,仅仅拥有root权限的用户才能访问更改这些服务,这样会造成一些不必要的困扰,而且也不安全。出于安全考虑,以及日后服务器的多用户管理,应该在一开始就对服务器的root用户进行禁用,仅使用sudo命令来执行某些root才能执行的命令。
  1. 工具准备:Linux云主机,SSH工具
  2. 创建拥有sudo权限的用户
    1. 注意 :在阻止对root帐户的访问之前,请确保已使用useradd命令创建了一个管理帐户,该帐户能够使用sudo命令获取root用户权限,并为该用户帐户提供强密码。 标志-m表示创建用户的主目录, -c表示注释:

       # useradd -m -c "Admin User" admin
      # passwd admin
    2. 接下来,使用usermod命令将此用户添加到适当的系统管理员组,其中开关-a表示附加用户帐户, -G指定用于添加用户的组(wheel或sudo,具体取决于您的Linux发行版):
       # usermod -aG wheel admin    #CentOS/RHEL
      # usermod -aG sudo admin #Debian/Ubuntu
    3. 创建具有管理权限的用户后,请切换到该帐户以阻止root访问。
       # su admin
  3. 更改root用户的Shell
    1. 禁用root用户登录的最简单方法是将其shell从/bin/bash/bin/bash (或允许用户登录的任何其他shell)更改为/etc/passwd文件中的/sbin/nologin ,您可以使用您喜欢的任何命令行编辑器打开进行编辑,如图所示。

       $ sudo vim /etc/passwd

      编辑保存

       root:x:::root:/root:/bin/bash
      to
      root:x:::root:/root:/sbin/nologin

      保存文件并关闭它。

      从现在开始,当root用户登录时,他/她将收到消息“ 此帐户当前不可用。 “这是默认消息,但是,您可以更改它并在文件/etc/nologin.txt中设置自定义消息。此方法仅对需要用于用户登录的shell的程序有效,否则,sudo,ftpemail客户端可以访问root帐户。

  4. 通过控制台设备(TTY)禁用root登录
    1. 第二种方法使用名为pam_securettyPAM模块,只有当用户登录“ 安全”TTY时才允许root访问,如/etc/securetty中的列表所定义。

      上述文件允许您指定允许root用户登录的TTY设备,清空此文件可防止在连接到计算机系统的任何设备上进行root登录。

      要创建空文件,请运行。

       $ sudo mv /etc/securetty /etc/securetty.orig
      $ sudo touch /etc/securetty
      $ sudo chmod /etc/securetty

      此方法有一些限制,它只影响登录,显示管理器(即gdm,kdmxdm)等程序以及启动TTY的其他网络服务。 诸如su,sudo,ssh和其他相关openssh工具之类的程序将可以访问root帐户。

  5. 禁用SSH root登录
    1. 访问远程服务器或VPS的最常用方法是通过SSH并阻止其下的root用户登录,您需要编辑/etc/ssh/ sshd_config文件。

       $ sudo vim /etc/ssh/sshd_config

      然后取消注释(如果它被注释)指令PermitRootLogin并将其值设置为no ,如屏幕截图所示。

    2. 在SSh中禁用Root登录

      完成后,保存并关闭文件。 然后重新启动sshd服务以应用最近的配置更改。

       $ sudo systemctl restart sshd
      OR
      $ sudo service sshd restart

      您可能已经知道,此方法仅影响openssh工具集,ssh,scp,sftp等程序将被阻止访问root帐户。

  6. 通过PAM限制root用户登录
    1. 可插拔认证模块 (简称PAM )是Linux系统上集中,可插拔,模块化和灵活的认证方法。 PAM通过/lib/security/pam_listfile.so模块,可以极大地灵活地限制特定帐户的权限。

      上述模块可用于引用不允许通过某些目标服务(如login,ssh和任何PAM感知程序)登录的用户列表。

      在这种情况下,我们希望通过限制对login和sshd服务的访问来禁用对系统的root用户访问。 首先在/etc/pam.d/目录中打开并编辑目标服务的文件,如图所示。

      $ sudo vim /etc/pam.d/login
      OR
      $ sudo vim /etc/pam.d/login

      接下来,在两个文件中添加以下配置。

      auth    required       pam_listfile.so \
      onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers

      完成后,保存并关闭每个文件。 然后创建普通文件/etc/ssh/deniedusers ,每行应包含一个项目,而不是世界可读的。

      在其中添加名称root,然后保存并关闭它。

      $ sudo vim /etc/ssh/deniedusers

      还要为此设置所需的权限。

      $ sudo chmod  /etc/ssh/deniedusers

      此方法仅影响支持PAM的程序和服务。 您可以通过ftp和电子邮件客户端等阻止对系统的root访问。

      有关更多信息,请参阅相关手册页。

    2. $ man pam_securetty
      $ man sshd_config
      $ man pam

Linux禁用root用户的更多相关文章

  1. REDHAT一总复习1 ssh配置 禁用root用户SSH连接

    生成SSH公钥 $ ssh-keygen 生成的公钥安装到指定的服务器上,这里安装到desktop0上的student账户 $ ssh-copy-id desktop0 $ su - 禁用root用户 ...

  2. Linux系统root用户忘记密码解决方法

    一:在linux系统启动时(如下图),按e键 二:进入到设置页面,定位到如下行: 三:按e键,进入输入界面 四:在编辑行最后面,空格,输入single,回车后回到第二步界面,只是后面多了single ...

  3. 破解Linux系统root用户密码

    linux系统的启动过程  在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程 开机自检(POST),初始化部分硬件 搜素可用于引导的启动设备(如磁盘的MBR) 读取并将控制权 ...

  4. Linux禁用root账户ssh登录

    前言 今天登录服务器的时候,控制台输出如下信息 There were 48990 failed login attempts since the last successful login. Last ...

  5. 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理:[Hadoop系列]linux SSH原理解析 操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免 ...

  6. Linux中root用户找不到JAVA_HOME

    Linux中root用户找不到JAVA_HOME   在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用于Ubunt ...

  7. KingbaseES V8R6C5禁用root用户ssh登录图形化部署集群案例

    案例说明: 对于KingbaseES V8R6C5版本在部集群时,需要建立kingbase.root用户在节点间的ssh互信,如果在生产环境禁用root用户ssh登录,则通过ssh部署会失败:在图形化 ...

  8. Ubuntu Linux启用root用户登录

    Ubuntu Linux有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起.对于其他Linux系统来 说,一般在安装过程就设定root密码,这样 ...

  9. linux非root用户执行开机启动程序

    问题 开机启动其他用户的程序或者说非root用户执行开机启动 编写开机启动脚本 编写开机启动脚本apple_tree,放到/etc/init.d,系统启动时会自动执行. 例如,/etc/init.d/ ...

随机推荐

  1. 2018HDU多校二 -F 题 Naive Operations(线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6315 In a galaxy far, far away, there are two integer ...

  2. shell脚本调用python模块

    python helloworld.py代码为 # coding:utf-8 from __future__ import print_function import sys print(sys.pa ...

  3. 使用stm32开发 USB_CAN 适配器测试

    USB_CAN 适配器测试例程 采用CDC透传模式 一.简介 CAN总线无处不在,在设计开发中,到处需要用到CAN总线调试工具,本工具可以作为CAN的基础测试工具,用于监听CAN总线,或测试CAN数据 ...

  4. 记录一次VMware与xshell远程链接的总结

    VMware 与xshell链接 说在前面 用了一年多的virtualbox,虚拟机环境的配置算是理清了,可最近参加红帽培训,大家用的都是VMware,想想我也试试吧,刚好再熟悉一下,于是就捣鼓了很久 ...

  5. JS基础-原型链和继承

    创建对象的方法 字面量创建 构造函数创建 Object.create() var o1 = {name: 'value'}; var o2 = new Object({name: 'value'}); ...

  6. Spring IoC容器与应用上下文的设计与实现

    一.前言 写这篇博文的主要目的如下: 通过相关类和接口分析IoC容器到底长什么样. 阐述笔者对Spring上下文和容器的理解. 介绍重要的类辅助理解SpringBoot的启动流程. 二.Spring ...

  7. Java面试题_第三阶段(Spring、MVC、IOC、AOP、DI、MyBatis、SSM、struts2)

    1.1 何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗? 答:1)用于创建bean对象,管理bean对象的那个容器. 2)Spring IOC 容器 ...

  8. python基础之元组讲解

    概念讲解: 1.Python 的元组与列表十分相似,但是元组的元素只可读不可修改: 2.元组使用小括号,列表使用方括号: 3.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. (1)创建一 ...

  9. linux 定时备份数据库

    说明 检查Crontab是否安装 若没有 需要先安装Crontab定时工具 安装定时工具参考(https://www.cnblogs.com/shaohuixia/p/5577738.html) 需要 ...

  10. DiskCatalogMaker for Mac常见问题解答

    DiskCatalogMaker for Mac是Mac上简单实用的磁盘管理工具,可以帮助您对多张光盘使用批量扫描模式, 生成缩略图图像选项,更加清晰,并请将其快速编目引擎与其他编目人员比较,在本篇文 ...