Linux用户管理详解(中)-转发

2023-05-16

      在我的上一篇Linux中用户管理详解(上)》我们已经明白通过命令useradd每创建一个用户都会在相应的配置文件中添加相关的信息和创建用户的宿主目录。其实今天要和大家说的是和用户相关的linux安全问题,在安全中有一种技术人们称它为“后门”技术,其实就是说一些“小黑”,入侵到服务器后得到root权限,最常见的就是添加一个用户方便日后来访。虽然这是一个初级的技术,但是这个能够看出你对/etc/passwd/etc/shadow文件的熟悉程度。

如果你是黑客的话,入侵到一个系统后,你为了防止管理员修改密码导致你不能登录,而你去修改密码,这不是明摆着要通知管理员他的系统已近被入侵了,所以这个时候可以通过编辑passwdshadow文件来实现如下内容:
[root@qiuri ~]#echo "admin:x:0:0::/usr/src:/bin/bash" >> /etc/passwd
[root@qiuri ~]#echo "admin:!!:14143:0:99999:7::: " >> /etc/shadow
通过以上两条命令可以添加一个UID0的具有管理员权限的账户,也可以编辑配置文件手工输入,当然,这里小黑们会尽量的掩盖自己创建的这个账户,首先用户名称一般会选择一个类似系统应用程序的账户,用户的主目录也不会和其它账户一样放在/home下。总之尽量的逃过哪些粗心的管理员。
当然,还没有设置密码是不能够通过远程可以连接上服务器的,这个时候用passwd来设置一下:输入要设置的密码,之后查看/etc/shadow配置文件后密码位已近成为md5加密的乱码。
[root@qiuri ~]# passwd admin                                                         
[root@qiuri ~]# grep admin /etc/shadow
admin:$1$1IoPDSJW$3NxLHwcXeutWT1lIMb4Zy1:14163:0:99999:7:::
这个时候我们可以测试一下登录,这个时候我们没有必要退出后再登录,我们可以使用su命令切换用户,大家在使用这条命令的时候最常见的问题如下:
[root@qiuri ~]# su admin
bash-3.1#
[root@qiuri ~]# su – admin
bash-3.1#
咋看起来这两条命令没有什么区别,当我们使用su admin命令的时候,我们输入一个认为可用的命令的时候会得到“command not found”的错误信息。是由于su命令不能在根用户环境中的读操作。为了解决这个问题,只能在给su命令添加一个”–”的选项,也就是su – admin这样的格式。我们使用pwd查看一下这两个命令的区别:
[root@qiuri ~]# su admin
bash-3.1# pwd
/root
bash-3.1# su - admin
-bash-3.1# pwd
/usr/src
看到了吧,其实这两个命令的区别就是:使用su命令切换用户后,不会修改当前登录会话的目录或者环境;而su – 后,通常会修改用户的登录目录为用户自己的根目录,并且用户自己的变量也可以使用了。或许有人还有疑问为何提示符为”-bash-3.1#”了,其实这个”-bash-3.1”不是关键,主要是看”#””$”来区别用户的类型。这里变为”-bash-3.1”的原因是我们创建的admin用户没有自己的初始配置文件,我们使用命令创建用户的时候都会从/etc/skel这个目录中复制到用户的宿主目录。这里查看一下这个配置文件:
[root@qiuri ~]# ls -al /etc/skel/
total 48
drwxr-xr-x  2 root root  4096 09-18 21:26 .
drwxr-xr-x 94 root root 12288 10-11 20:27 ..
-rw-r--r--  1 root root    24 2006-07-12 .bash_logout
-rw-r--r--  1 root root   176 2006-07-12 .bash_profile
-rw-r--r--  1 root root   124 2006-07-12 .bashrc
[root@qiuri ~]#
我们看到这些都是一下隐藏文件,这些文件是用于用户的环境变量的shell脚本,用户登录后可以修改这些文件。我在以后的文章中详细介绍这些文件的用途。
那我们就将这些文件复制过去看看:
[root@qiuri ~]# cp -r /etc/skel/.* /usr/src
[root@qiuri ~]# su - admin
[root@qiuri ~]# pwd
/usr/admin
当然,通过这种方法创建的后门用户很容易被细心的管理员发现,但是如果你对这些配置文件不是很熟悉的话也是很难发现问题。这就是火能助人,也能杀人的道理。
当发现这样的用户,我们需要做的是将其删除,删除用户的命令是userdel
1)userdel命令用于删除linux系统中的用户账号,命令格式如下:
userdel [-r] user_name
一般,在使用这条命令的时候,如果不添加”-r”的话,不会删除用户的宿主目录,这样就可以保存该用户在系统中的文件,要是想删除的话我们可以手工的去删除该目录。但是你已经确认该宿主目录中的文件可以删除,直接使用”-r”这样就可以一次性的删除用户操作。
[root@qiuri ~]#userdel –r admin
2)手工删除用户
手工删除一个用户需要执行如下步骤:
/etc/passwd/etc/shadow/etc/group配置文件中删除该用户的相关条目,之后删除该用户的宿主目录。
但是,在我们工作的过程中,为了提高系统的安全性最常用的就是禁用和启用账户。可以使用usermod命令来禁用账号:
[root@qiuri ~]# grep u1 /etc/shadow    #禁用前查看一下
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]# usermod -L u1     #禁用账号
[root@qiuri ~]# grep u1 /etc/shadow   #再次查看一下,发现多出一个"!",表明用户已禁用
u1:!$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]#
当因工作需要的时候,可以将已禁用的账号u1重新启用,命令如下:
[root@qiuri ~]# usermod -U u1    #重新启用账号
[root@qiuri ~]# grep u1 /etc/shadow   #发现"!"已经移除,表明用户已启用
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]#
从上边的操作可以看出usermod命令禁用和启用账号功能是通过在/etc/shadow 配置文件中,在用户密码位之前添加和删除"!"实现的。当然也可以使用手工添加或删除"!"来实现效果。
不知道大家还记不记得我在上一篇文章中提到可以通过设置shadow文件中的“账号失效期”来设置账号的有效期限。这里也可以使用usermod命令实现,命令格式如下:
usermod –e YYYY-MM-DD name
通过这个命令可以设置用户账号的过期时间,就是说在此日期之前用户账户生效,过了这个日期后用户将禁止登录。设置后如下所示:
[root@qiuri ~]# usermod -e 2008-10-18 u1    #设置账号过期时间
[root@qiuri ~]# grep u1 /etc/shadow    #验证结果
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7::14170:
[root@qiuri ~]#
在实际的管理工作中,如果我们一个一个的去管理账号的话,无形中会增加我们大量的管理负担和造成不必要的错误。可以使用“用户组”来解决这些问题。那么什么是“用户组”呢?用户组就是一个具有相同特性的用户集合,在同一个组中的所有用户具有相同的组权限。一般情况下我们使用useradd创建用户的时候会创建和用户同名的用户组,但是有些时候我们需要单独的创建用户组,可以使用groupadd命令实现?命令格式如下:
groupadd [-g gid [-o]] [-r] [-f] group
我们创建一个qiuri组为例:

[root@qiuri ~]# groupadd qiuri  #添加用户组
[root@qiuri~]# grep qiuri /etc/group    #验证是否创建成功
qiuri:x:501:
如果我们要创建一个xifeng组同时组ID1000
[root@qiuri ~]# groupadd -g 1000 xifeng     #添加组ID为1000的用户组
[root@qiuri ~]# grep xifeng /etc/group       #验证结果
xifeng:x:1000:
我们会创建组了,但是如何将用户添加到相应的组呢?一般有以下几种情况?
 1) 创建用户的时候指定用户属于那个用户组
例如:我们创建一个test用户,同时这个用户属于qiuri组,这个时候系统就不会再建立与用户名同名的用户组账号了。命令格式:
uersadd -g group_name user_name
创建过程:
[root@qiuri ~]# grep qiuri /etc/group      #确认用户组qiuri是否存在
qiuri:x:1001:
[root@qiuri ~]# useradd -g qiuri test    #将创建用户指定到qiuri组
[root@qiuri ~]# grep test /etc/passwd  #查看用户是否创建成功,是否属于组qiuri。
test:x:510:1001::/home/test:/bin/bash
[root@qiuri ~]# grep qiuri /etc/group
qiuri:x:1001:
说明:验证用户属于那个组的时候也可以使用命令groups user_name来查询。
2)更改用户的用户组
一般什么时候需要更改用户组呢?例如:我们在创建用户的时候忘记指定用户属于那个用户组,这个时候我们执行此命令。可以使用usermod –g来更新组的名称,这里我们将test用户从qiuri组更改到xifeng组。命令格式:
uermod –g group_name user_name
更改过程:
[root@qiuri ~]# usermod -g xifeng test   #更改用户所属于的组
[root@qiuri ~]# grep test /etc/passwd    #确认用户组ID是否发生变化
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]# grep xifeng /etc/group   #确认组ID为1000的组是否是xifeng。
xifeng:x:1000:
[root@qiuri ~]#
3) 将用户添加到其它组
一个用户可以同时属于多个组,例如:test用户同时属于qiurixifeng组,可以通过usermod –G命令来实现。注意:这条命令执行的前提条件是确认该用户是否存在,也就是说是将已有用户添加到相应的组。命令格式:
usermod –G group_name user_name
方法一、添加过程:
[root@qiuri ~]# usermod -G qiuri test     #让用户test同时属于qiuri组
[root@qiuri ~]# grep test /etc/passwd    #查看一下用户配置文件,无变化
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group  
#查看一下用户组配置文件中关于xifeng和qiuri组。个人认为使用groups test命令查看更方便些。
xifeng:x:1000:
qiuri:x:1001:test
[root@qiuri ~]#
gpasswd –a user_name group_name 方法二、添加过程:
[root@qiuri ~]# gpasswd -a test qiuri  #让用户test同时属于qiuri组
Adding user test to group qiuri
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group  #验证结果
xifeng:x:1000:
qiuri:x:1001:test
[root@qiuri ~]# grep test /etc/passwd
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]#
groupmod -n  new_group_name old_ group_name
例如:将组qiuri更改为qiurixifeng
[root@qiuri ~]# groupmod -n qiurixifeng qiuri  #修改组名称
[root@qiuri ~]# grep qiuri /etc/group   #确认结果
qiurixifeng:x:1001:test
[root@qiuri ~]#
和组名称对应的就是用户名称,我们可以usermod –l修改用户名称,命令格式如下:
usermod –l new_user_name old_ user_name 
[root@qiuri ~]# usermod -l qiuri test    #修改用户名称
[root@qiuri ~]# grep qiuri /etc/passwd  #验证结果
qiuri:x:501:501::/home/test:/bin/bash
最后要介绍删除组的命令groupdel,命令格式如下:
groupdel group_name
当我们需要修改组的名称的时候可以使用groupmod -n实现,命令格式: 或者使用gpasswd命令,命令格式如下:
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group  #查看一下qiuri和xifeng组是否存在
qiuri:x:1001:
xifeng:x:1000:
[root@qiuri ~]# groupdel qiuri   #删除qiuri组
[root@qiuri ~]# groupdel xifeng  #删除xifeng组
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group   #确认结果
[root@qiuri ~]#
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux用户管理详解(中)-转发 的相关文章

  • 报错:ModuleNotFoundError: No module named ‘PIL‘

    运行代码的时候报错 xff0c 如图所示 xff1a 表示python中没有配置pillow库 纠正的步骤 xff1a window 43 R xff0c 并且在框中输入cmd 进入python所在的目录下 xff0c cd appdata
  • Window10 Excel复制粘贴卡死

    Windows10 Excel复制粘贴卡死 excel复制大量数据有时卡死 xff0c 关机重启也没用 网上找了好多方法没效果 xff0c 突然想到windows10有个云剪切板功能 xff0c 就想关了试试没想到解决了 xff0c 哈哈哈
  • (Latex)期刊论文里的数学字符怎么打出来的?

    xff08 Latex xff09 期刊论文里的数学字符怎么打出来的 导入包试一试 by 今天不飞了 最近边查文献边写文章 xff0c 看到别人文章公式里的变量那叫一个花里胡哨 xff0c 再看看自己的 不能忍 xff0c 我也要 于是搜集
  • 面试:ARM篇

    1 IIC I2C 1 由日本飞利浦公司研发的一种 串行半双工的总线 2 采用两根线 SCL 和 SDA 特点 1 硬件比较简单 比较节约资源的一种总线 2 主要用于两个芯片之间的通信 也可以是多主机多从机 但基本不用 3 传输速度一般在4
  • 工作日志——首次通过k8s Elasticsearch获取新建Pod的日志缓慢的原因

    使用k8s Elasticsearch查看pod日志的时候偶尔会遇到这样的情况 xff0c 在创建完容器并运行后去查看日志的时候总是加载不出来 xff0c 需要等待十几秒甚至一分钟才能加载 我 有幸 被分配来解决这个问题 xff0c 经过一
  • WSL2 安装 Ubuntu-20.04 子系统CUDA(Win10和Win11)

    1 安装WSL的CUDA驱动 驱动下载地址 xff1a https developer nvidia com cuda wsl 选好你自己的显卡类型 下载完成后直接默认安装就行 2 安装WSL2 xff08 使用Ubuntu 20 04版本
  • ROS MELODIC ARM64的一些源

    默认注释了源码镜像以提高 apt update 速度 xff0c 如有需要可自行取消注释 deb https mirrors tuna tsinghua edu cn ubuntu ports bionic main restricted
  • 手写spring核心原理Version3

    上两篇博文手写spring核心原理Version1和手写spring核心原理Version2分别介绍了如何完成一个自动注入 以及如何用设计模式进行重构 xff0c 接下来这篇将仿照SpringMVC对参数列表以及methodMapping进
  • Netty Reactor线程模型

    前两篇博文分别介绍了Java 线程模型 xff1a BIO NIO和Reactor线程模型 xff0c 本篇博文将介绍Reactor线程模型在Netty中的实际应用 Netty模型 Netty模型的简单介绍 Netty 主要基于主从 Rea
  • JVM:类的加载过程

    类的加载过程 类的加载过程整体可以分为五个阶段 xff1a 加载 验证 准备 解析 初始化 xff0c 其中验证 准备和解析又被概括为链接 加载 通过一个类的全限定名获取定义此类的二进制字节流 xff1b 将这个字节流所代表的的静态存储结构
  • Hive On Tez 进度条不显示问题修复

    问题描述 用Hive客户端使用beeline命令执行SQL的时候 xff0c 有些情况下会显示进度条 xff0c 有些情况不显示进度条 显示进度条的情况 设置默认执行引擎为Tez lt property gt lt name gt hive
  • DataTables从安装到入门的详细教程之一:DataTables介绍及安装

    DataTables介绍 Datatables是一款jquery表格插件 它是一个高度灵活的工具 xff0c 可以将任何HTML表格添加高级的交互功能 分页 xff0c 即时搜索和排序 几乎支持任何数据源 xff1a DOM xff0c j
  • CSS换行和不换行

    强制不换行 div white space nowrap 自动换行 div word wrap break word word break normal 强制英文单词断行 div word break break all
  • Linux:Shell脚本基本命令

    24 span class token keyword if span span class token punctuation span span class token punctuation span span class token
  • Spring Boot设置值:分别用@ConfigurationProperties和@Value给属性设值及其区别

    目录 64 ConfigurationProperties给属性映射值 编写JavaBean 编写配置文件 测试类 xff1a 运行结果 xff1a 64 Value给属性设置值 编写JavaBean 运行结果 xff1a 64 Confi
  • Mac Intrellij IDEA中使用debug调试

    目录 一 Debug开篇 二 基本用法 amp 快捷键 三 变量查看 四 计算表达式 五 智能步入 六 断点条件设置 七 多线程调试 八 回退断点 九 中断Debug 十 附 xff1a JRebel激活 Debug用来追踪代码的运行流程
  • Docker创建容器步骤解析

    创建hello world容器 以创建一个简单的hello world容器为例 xff0c 介绍docker创建容器的几大步骤 运行命令 xff1a docker run hello world docker运行步骤分析
  • 什么是代理服务器及其作用

    什么是代理服务器 代理服务器 xff08 Proxy Server xff09 是网上提供转接功能的服务器 xff0c 在一般情况下 xff0c 我们使用网络浏览器直接去连接其他Internet站点取得网络信息时 xff0c 是直接联系到目
  • sudo apt-get update执行失败问题解决

    错误 在执行sudo apt get update命令时 xff0c 执行结果失败 xff0c 错误信息如下 xff1a 获取 xff1a 1 http repo mysql com trusty InRelease 33 5 kB 100
  • @EntityListeners(AuditingEntityListener.class)介绍

    64 EntityListeners 源码 Specifies the callback listener classes to be used for an entity or mapped superclass This annotat

随机推荐

  • windows配置hadoop(详细)

    一 环境 windows7 64位 hadoop2 7 二 安装java1 8 xff0c 并配置环境变量 下载地址 xff1a http www oracle com technetwork java javase downloads j
  • Windows更新策略配置

    两个步骤 1 开启自动更新服务 2 配置自动更新策略 开启服务 Windows Update的服务名为wuauserv 可以通过命令行的方式进行开启 xff08 管理员权限 xff09 xff0c sc命令使用方法 xff1a sc命令使用
  • 数据库、MySQL与Python这一篇就够了

    lt 1 gt 数据库介绍 什么是数据库 xff1f 数据库 xff08 Database xff09 是按照数据结构来组织 存储和管理数据的仓库 xff0c 每个数据库都有一个或多个不同的API用于创建 xff0c 访问 xff0c 管理
  • Python:同行if...else...详细教程

    我最近为游戏Apple Clicker写成就系统 xff0c 加上后整个程序的代码竟然超过2200行 xff0c 窗口启动时间也很慢 xff0c 主要是if else 使用的太多 于是查了查缩短代码的方法 xff0c 总结如下 xff1a
  • ARM:驱动开发1

    linux内核模块 1 模块三要素 xff1a 内核模块不能单独执行 xff0c 也不能自动执行 span class token comment 入口 xff1a span span class token keyword static
  • Python:环境变量配置方法 详细教程

    最近有人问我如何配置python环境变量 xff0c 这篇文章就向大家介绍python环境变量配置方法 python环境变量的配置方法 xff1a 首先鼠标右键此电脑 xff0c 选择属性 xff1b 然后点击高级系统设置 xff0c 点击
  • Python - 字符串格式化详解(%、format)

    有人问我python的format函数怎么用 xff0c 这篇文章向大家介绍format函数用法 Python在字符串格式化的两种方式 format xff0c 关于整数的输出 o xff1a oct 八进制 d xff1a dec 十进制
  • Python 字典(Dictionary)操作详解

    这篇文章主要介绍了Python 字典 Dictionary 的详细操作方法 xff0c 需要的朋友可以参考下 Python字典是另一种可变容器模型 xff0c 且可存储任意类型对象 xff0c 如字符串 数字 元组等其他容器模型 一 创建字
  • Python中zipfile压缩包模块的使用

    本文主要介绍了Python中zipfile压缩包模块的使用 xff0c zipfile 模块提供了创建 读取 写入 添加及列出 ZIP 文件的工具 xff0c 本文做一个简单的总结 简介 ZIP 文件格式是一个常用的归档与压缩标准 xff0
  • python中@contextmanager实例用法总结

    本文是对python中 64 contextmanager的简单总结 在对于python中的装饰器 xff0c 我们一般会使用它辅助方法 在我们学习的上下文管理器中 xff0c 有一个 64 contextmanager装饰器 xff0c
  • 【Python】中文乱码问题与解决方案 深入分析

    一直以来 xff0c python中的中文编码就是一个极为头大的问题 xff0c 经常抛出编码转换的异常 xff0c python中的str和unicode到底是一个什么东西呢 xff1f 在本文中 xff0c 以 39 哈 39 来解释作
  • 004.CMake构建目标的小练习

    文章目录 HelloWorld项目与hello exeSayHello库的创建和使用查看依赖关系总结 前文说了如何使用add executable 和add library 命令定义对应的目标 xff0c 本文建立一个玩具项目 xff0c
  • swift 中错误处理

    swift 中错误处理 1 开发环境说明2 自定义错误类型3 try 的使用方式4 do catch的使用5 try 的使用方式6 defer的使用7 养眼图片一张 1 开发环境说明 系统版本 xff1a macOS Catalina 10
  • verilog实现基于Cordic算法的双曲函数计算

    Cordic算法可以用FPGA硬件来实现三角函数 xff0c 向量旋转 xff0c 指数函数以及三角函数等数值计算 xff0c 它是一种从一般的矢量旋转方程中推导得出 采用用不断的旋转求出对应的正弦余弦值 xff0c 是一种近似求解法 旋转
  • Matlab中table类型使用技巧

    在处理一些较复杂的表格数据时 xff0c 直接导入为数组并不方便处理 xff0c 这时候需要使用table类型数据来更好的存储和处理数据 例如 xff0c 在处理某实验数据时 xff0c 将excel直接导入至matlab中的table数据
  • C语言常用算法排序

    1 冒泡排序 xff08 面试常问 xff09 1 普通 span class token comment 小 gt 大 span span class token macro property span class token direc
  • javascript

    今天同事遇到一个跨域传值的问题 xff0c 源系统编码为UTF 8 xff0c 目标系统编码为GB2312 后来自己做了一个测试 写在这里 留作以后参考 源系统code br var i 61 34 http localhost 8080
  • linux 挂载分区 方法及参数

    挂载EXT2 EXT3分区时参数说明 xff1a 1 ro rw 只读 读写 2 exec noexec 允许 不允许执行 3 dev nodev 允许 不允许设备挂载 4 suid sgid nosuid nosgid 允许 不允许使用s
  • Linux中用户管理详解(上)--转发

    在 Linux 系统中 xff0c 所有的用户和组像一个国家 如果国家要繁荣昌盛的话 xff0c 需要治理得当 xff0c 需要有主 席或者总统 xff0c 以及地方官员和老百姓组成 在 linux 中如果你对安全需求比较苛刻 xff0c
  • Linux用户管理详解(中)-转发

    在我的上一篇 Linux中用户管理详解 上 我们已经明白通过命令useradd 每创建一个用户都会在相应的配置文件中添加相关的信息和创建用户的宿主目录 其实今天要和大家说的是和用户相关的linux 安全问题 xff0c 在安全中有一种技术人