在我的上一篇《Linux中用户管理详解(上)》我们已经明白通过命令useradd每创建一个用户都会在相应的配置文件中添加相关的信息和创建用户的宿主目录。其实今天要和大家说的是和用户相关的linux安全问题,在安全中有一种技术人们称它为“后门”技术,其实就是说一些“小黑”,入侵到服务器后得到root权限,最常见的就是添加一个用户方便日后来访。虽然这是一个初级的技术,但是这个能够看出你对/etc/passwd和/etc/shadow文件的熟悉程度。
如果你是黑客的话,入侵到一个系统后,你为了防止管理员修改密码导致你不能登录,而你去修改密码,这不是明摆着要通知管理员他的系统已近被入侵了,所以这个时候可以通过编辑passwd和shadow文件来实现如下内容:
[root@qiuri ~]#echo "admin:x:0:0::/usr/src:/bin/bash" >> /etc/passwd
[root@qiuri ~]#echo "admin:!!:14143:0:99999:7::: " >> /etc/shadow
通过以上两条命令可以添加一个UID为0的具有管理员权限的账户,也可以编辑配置文件手工输入,当然,这里小黑们会尽量的掩盖自己创建的这个账户,首先用户名称一般会选择一个类似系统应用程序的账户,用户的主目录也不会和其它账户一样放在/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:
在实际的管理工作中,如果我们一个一个的去管理账号的话,无形中会增加我们大量的管理负担和造成不必要的错误。可以使用“用户组”来解决这些问题。那么什么是“用户组”呢?用户组就是一个具有相同特性的用户集合,在同一个组中的所有用户具有相同的组权限。一般情况下我们使用useradd创建用户的时候会创建和用户同名的用户组,但是有些时候我们需要单独的创建用户组,可以使用groupadd命令实现?命令格式如下:
groupadd [-g gid [-o]] [-r] [-f] group
我们创建一个qiuri组为例:
[root@qiuri ~]# groupadd qiuri #添加用户组
[root@qiuri~]# grep qiuri /etc/group #验证是否创建成功
qiuri:x:501:
如果我们要创建一个xifeng组同时组ID为1000
[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用户同时属于qiuri和xifeng组,可以通过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 ~]#
分享到:
相关推荐
### Linux邮件服务器详解 #### 一、Linux邮件服务器基本概念 ##### 1.1 电子邮件服务 电子邮件(E-mail)是互联网上最基本且重要的服务之一,它的应用非常广泛。发送电子邮件类似于传统邮寄书信的方式,但更为...
### Linux网络服务配置详解知识点概览 #### 一、Linux操作系统概述 - **定义与特点**:Linux是一种基于POSIX和UNIX标准的操作系统,它具备安全性高、稳定性强、源代码开放等特点,使得其在服务器领域有着广泛的应用...
- `write`命令用于在Linux系统中向其他用户发送消息。 - `shutdown –r now`用于立即重启系统,并在过程中保存内存中的信息到硬盘。 - `reboot`和`halt`分别用于重启和停止系统,但不会立即写入硬盘信息。 - `...
Linux操作系统服务器日志管理是系统运维中至关重要的环节,它为系统安全提供了强大的保障。日志文件记录了系统运行过程中的各种活动,包括错误信息、系统事件、用户登录记录以及网络服务交互等,使得管理员能追踪...
**一、用户管理** 1. **用户账户创建** - 命令格式:`useradd [选项] 用户名` - 示例:`useradd –d /home/user01 -m user01`,此命令用于创建一个新用户`user01`,并设置其主目录为`/home/user01`。其中`-d`指定...
### Linux网络属性配置详解 #### 一、网络属性概述 在网络通信中,为了使一台主机能够成功接入并参与网络通信,通常需要配置一系列的关键网络属性,包括但不限于IP地址、子网掩码、网关以及DNS服务器地址等。这些...
RADIUS(Remote Authentication Dial-In User Service)作为一种成熟的AAA解决方案,在Linux平台上构建RADIUS服务器能够极大地简化网络设备的用户管理,并提升整体安全性。 #### 二、RADIUS协议简介 RADIUS协议最初...
### Linux Proc 文件系统详解 #### 0. 绪言 ##### 0.1 简介 本文档最初是作为 SUSE Linux 的一部分而编写的,随着时间的发展,它逐渐成为了 Linux 官方文档的一部分,并随 2.4 版本后的内核广泛发布。这份文档的...
- 常用命令的学习,如文件和目录操作、文件压缩、用户管理、网络管理和进程管理等。 - **DHCP服务器**: - DHCP协议的概念与优势。 - DHCP服务的工作原理。 - 在Linux环境中安装、配置DHCP服务器的方法。 - ...
在日常运维工作中,经常需要在多台Linux服务器之间进行频繁的登录操作。为了提高效率并减少输入密码的繁琐步骤,可以通过配置SSH免密登录的方式来实现这一需求。本文将详细介绍如何在两台Linux机器之间设置SSH免密码...
- **详解SSH端口转发视频教程**:SSH端口转发对于远程访问非常重要。 #### 其他讲师精品课程: - **苏勇老师Linux系统服务系列视频教程**:涵盖了多种Linux服务的配置与管理。 - **苏勇老师LinuxDNS域名服务视频...
在Linux操作系统中,命令行工具是日常管理和操作系统的基石。...了解和熟练使用这些命令是每个Linux用户,尤其是系统管理员必备的技能。通过深入学习和实践,你将能够更有效地在Linux环境中执行各种任务。
Linux版Tableau Server的详解涉及了从基础的安装配置到高级的架构管理和安全性设置的全方位指南。接下来,我们将详细探讨该文档所覆盖的知识点。 首先,Linux版Tableau Server的管理员指南强调了部署规划的重要性。...
### Linux管理员手册知识点详解 #### 一、Linux系统概述 **1.1 操作系统的主要服务** - **文件管理:** 跟踪磁盘上的文件。 - **进程管理:** 启动程序并运行它们。 - **内存管理:** 分配内存和其他资源给不同的...
### Linux Sendmail配置详解 #### 一、电子邮件系统概述 在深入探讨Sendmail配置之前,我们首先了解一下电子邮件系统的几个核心组件及其作用。 1. **MUA(Mail User Agent,邮件用户代理)**:MUA是用户与邮件...
### Linux管理员手册知识点详解 #### 一、Linux系统概述 **1.1 操作系统的主要服务** - **核心(Kernel)**: Linux的核心是操作系统的心脏,它负责跟踪磁盘上的文件、启动和运行程序、分配内存给不同进程、管理...
### Linux系统基础知识详解 #### 一、Linux系统设备与文件管理 - **设备管理**:在Linux系统中,所有的硬件设备都是通过文件的形式来进行管理和访问的。这种方式简化了硬件的操作,使得开发人员能够更容易地编写出...