• 在创建各种云主机的时候,云服务商给的都是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. PHP原生实现简易的MVC框架

    目录结构: —|controller —|Home.php —|model —|view —|welcome.php —|index.php 基本原理: 首页 index.php 通过获得地址栏中的路 ...

  2. 源码分析 RocketMQ DLedger(多副本) 之日志复制(传播)

    目录 1.DLedgerEntryPusher 1.1 核心类图 1.2 构造方法 1.3 startup 2.EntryDispatcher 详解 2.1 核心类图 2.2 Push 请求类型 2. ...

  3. flash存储器原理及作用是什么?

    flash存储器的工作原理 flash存储器又称闪存(快闪存储器),是一种电可擦可编程只读存储器的形式,是可以在操作中被多次擦或写,EEPROM与高速RAM成为当前最常用且发展最快的两种存储技术.计算 ...

  4. Spring与Shiro整合 加载权限表达式

    Spring与Shiro整合 加载权限表达式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 如何加载权限表达式  我们在上章内容中画了一张图,里面有三个分项,用户 角色 权限: 那 ...

  5. python爬虫获取天猫与京东的商品价格

    git地址:   https://gitee.com/zhxs_code/spider_python 目前已简单实现可以爬取指定页面的价格(天猫和狗东的都可以),但是由于天猫与狗东对价格的展示方式和策 ...

  6. C++构造函数的几种使用方法

    在C++中,有一种特殊的成员函数,他的名字和类相同,没有返回值,不需要用户显示调用,用户也无法调用,而是在创建对象的时候自动执行. 这种特殊的函数就是构造函数 Constructor 构造函数的名字与 ...

  7. JAVA 使用jgit管理git仓库

    最近设计基于gitops新的CICD方案,需要通过java读写git仓库,这里简单记录下. JGit是一款pure java的软件包,可以读写git仓库,下面介绍基本使用. 引入jgit maven引 ...

  8. Vue项目无法使用局域网IP直接访问的配置方法

    一般使用 vue-cli 下来的项目是可以直接访问局域网 IP 打开的,比如 192.168.1.11:8080 .但是最近公司的一个项目只可以通过 localhost 访问. 需要配置一下,才可直接 ...

  9. CSS | 自适应两栏布局方法

    html代码: <div class="main"> <div class="left" style="background: #0 ...

  10. Another git process seems to be running in this repository

    今天在推送项目的时候git突然报如题的错误.查了一下是由于git被另外一个程序占用,产生原 原因在于Git在使用过程中遭遇了崩溃,部分被上锁资源没有被释放. 解决方案也很简单,在git中找到对应的in ...