保证Linux系统安全——账号管理

不管是Windows操作系统还是Linux操作系统,想要登录系统必须要有合法的账户及密码。本篇博文主要介绍Linux系统下的账户信息。

博文大纲:
一、Linux系统的账号及群组
1.UID与GID;
2.使用者账号;
(1)/etc/passwd文件结构;
(2)/etc/shadow文件结构;
3.有效群组与初始群组;
(1)/etc/group文件结构;
(2)有效群组与初始群组;
(3)/etc/gshadow文件结构;
二、账号管理指令;
(1)useradd命令
(2)passwd命令
(3)chage命令
(4)usermod命令
(5)userdel命令
(6)groupadd命令
(7)groupmod命令
(8)groupdel命令
(9)gpasswd命令
(10)id指令

一、Linux系统的账号及群组

作为Linux系统管理员,相当重要的环节就是“管理账号”。因为整个系统都是你在管理,并且所有系统的合法用户的申请都需要你的同意以及分配相应的权限,来完成日常工作。这就能看出“管理账号”的重要性!

1.UID与GID

虽然我们用户登录Linux操作系统时,输入的是我们的合法账号,但是其实LInux操作系统并不会直接认识你的“账号名称”的,它仅仅认识账户所对应的ID。至于账户的存在是为了让人们可以更好地记忆。当你登录操作系统时,输入的账号信息,“Shell翻译官”负责将找到账户对应的ID号码,系统才能决定该账号是否可以登录操作系统。

关于登录时会有两个ID号码,来判断你的身份信息,是否可以登录操作系统。每个登录的使用者至少都会具有两个ID:一个是使用者ID(UID);一个是群组ID(GID)。

我们在对文件、目录进行查看属主、属组时,非常友好的显示出了用户名、组名,但是系统也是根据UID、GID来进行判断的。账户对应的UID、GID存放在/etc/passwd文件中。

2.使用者账号

Linux系统上的用户如果需要登录Linux操作系统来取得对应的Shell环境进行工作时,需要经过以下几步:

  • 首先:查找/etc/passwd文件是否存在相应的账号信息,如果没有则跳出;如果存在的话,则将该账号对应的UID与GID在/etc/passwd、/etc/group中读取出来,另外,该账号的宿主目录及Shell环境也将一并读取出来;
  • 其次:就是核对密码是否正确。这时Linux系统会进入/etc/shadow文件中找出对应的账户与UID,核对输入的密码是否正确;
  • 最后:如果上述条件都没有问题的话,这是才会正常的登录到Linux系统中;

当用户登录Linux操作系统时,/etc/passwd、/etc/shadow文件是系统进行读取的(这也是为什么非法操作者将特殊账户写到/etc/passwd文件中的缘故)。所以如果想要备份Linux系统的账号时,这两个文件也一定需要备份!

下面中重点介绍一下/etc/passwd/(存放用户UID、GID)、etc/shadow(存放用户密码)的文件:

(1)/etc/passwd文件结构

/etc/passwd文件的构造是这样的:每一行都代表一个账号、有几行就表示系统中存在几个账号,里面很多账号都是系统正常运行所需使用的,我们将其成为系统程序用户。注意,这些账号不可以随意的进行删除、修改等操作。

/etc/passwd文件的架构是这样的:

我们以root用户为例,每段用“:”进行分隔,一共是7段。各段的含义如下:

  • 第一段:账号名称;就是我们用来正常登陆操作系统的名称!需要对应UID;
  • 第二段:密码占位符;早期的UNIX操作系统的密码就是存在在此的,但是因为这个文件一般的用户都可以读取,所以经过Linux的发展,密码信息后来存放在/etc/shadow文件中,但是此处会有一个“x”的标志;
  • 第三段:账户所对应的UID;关于UID的取值范围如图:
  • 第四段:用户所对应的GID;这段信息与/etc/group文件信息有关,用来规范组名与GID的对应关系;
  • 第五段:用户信息说明栏;这段信息就是用来解释这个账号的意义而已;
  • 第六段:用户的宿主目录;我们都知道,root用户宿主目录就是/root目录,则普通用户的宿主目录在/home/用户名;
  • 第七段:用户登录系统时所使用的Shell环境

(2)/etc/shadow文件结构

/etc/shadow文件结构也是一行对应一个用户信息,不过这个文件主要是用来存放用户密码信息的,同时这个文件中的内容不允许随意的进行修改、删除等操作。文件结构如下:

我们同样以root用户为例,每段用“:”进行分隔,一共是9段。各段的含义如下:

  • 第一段:账号名称;必须与/etc/passwd文件中的名称对应即可!
  • 第二段:密码;这个字段才是真正的密码,而且是经过加密后密码信息。这些加密信息也可以使用特殊的解密工具进行查看。所以/etc/shadow文件的权限一般是“-rw-------”或者“----------”,只有root用户才可进行读取、修改。注意这个文件的权限一般情况不建议乱动,否则可能会出现麻烦!
  • 第三段:最近更改密码的日期;不过很奇怪,为什么是18167呢?这是因为计算Linux日期的时间是1970年1月1号作为1的累加日期,计算方法如下:
    [[email protected] ~]# awk -F : ‘{print $1,$3}‘ /etc/shadow | grep root
    root 18167
    [[email protected] ~]# date -d "1970-1-1 18167 days" "+%Y/%m/%d %H:%m:%s"
    2019/09/28 00:09:1569600000
  • 第四段:密码不可更改的天数;表示这个账号的密码在最近一次修改之后,需要经过多长时间才可以被修改。0表示随时,99999表示不允许被修改;
  • 第五段:密码需要重新变更的天数(有效期);强制更改密码的天数。99999表示没有限制;
  • 第六段:密码变更期限前的警告天数;如果是7的话,还有7天过期时,开始提醒;
  • 第七段:密码过期后的账号宽限时间(失效期);如果是7的话,表示密码到期7天内仍然可以使用,如果过期时,登录操作系统,会强制提示修改密码;
  • 第八段:账号失效日期;表示这个账号在规定的日期之后,将不可被使用;
  • 第九段:保留;以备新功能的加入;

一般用户密码忘记之后,可以请系统管理员重新进行设置;但是root密码忘记之后,就必须进行系统急救模式,重新设置!

3.有效群组与初始群组

通过使用者账号,我们了解到了跟用户有关的两个文件:/etc/passwd、/etc/shadow文件,我们还需了解跟群组有关的两个配置文件:/etc/group、/etc/gshadow文件。

(1)/etc/group文件结构

/etc/group文件就是存放GID与组名的对应关系的文件,文件结构如下:

/etc/group文件同样是每一行代表一个群组,也是使用“:”进行分隔,共四段,每段的含义:

  • 第一段:组名;与第三字段的GID相对应;
  • 第二段:群组密码;同样是密码占位符,通常是系统管理员进行设置的;
  • 第三段:GID;就是/etc/passwd第四个字段所对应的GID;
  • 第四段:此群组支持的账号名称;就是包含哪些用户加入这个群组中;

我们来简单的了解一下UID/GID与密码之间的对应关系,如图:

(2)有效群组与初始群组

/etc/passwd文件中第四个字段对应的GID,就是所谓的初始群组;
使用“groups”命令可以查看其有效群组,如果一个用户同时加入多个群组,查看的第一个群组名便是用户的有效群组;可以使用“newgrp 群组名”进行有效群组的切换。使用“newgrp 群组名”命令时,会进入特殊的Shell环境中,设置完成之后,需要使用“exit”命令退出当前Shell环境中。

(3)/etc/gshadow文件结构

文件结构如图:

使用“:”分隔,也是四个字段,每个字段的含义:

  • 第一段:组名;
  • 第二段:密码栏,开头为“!”表示无合法面膜,所以无群组管理员;
  • 第三段:群组管理员的账号;
  • 第四段:加入群组支持的所属账号;

二、账号管理指令

(1)useradd命令

useradd命令,用于添加用户。常用的参数,如图:

我们平时添加账号时,如果没有太多的需求,直接“useradd 用户名”即可!这是因为系统已经设置了很多默认值。

我们使用“useradd 用户名”创建账号时,系统会默认给我们做以下事情:

  • 在/etc/passwd文件中添加一行与账号相关的数据,包括建立UID/GID/宿主目录等;
  • 在/etc/shadow文件中将此账号的密码相关参数写入,但是尚未有密码;
  • 在/etc/group文件中加入一个以账号相同的组名;
  • 在/home目录下建立一个与账号同名的用户家目录,且权限为700;

我们可以使用“useradd -D”命令来查看系统所设置的默认值,如图:

除了这些基本的账号设定值之外,UID/GID还有密码参数在/etc/login.defs文件中,如图:

(2)passwd命令

passwd命令主要用于给用户设置跟密码相关的内容,常用参数如图:

(3)chage命令

chage命令主要用于设置更加详细的密码参数功能。具体参数,如图:

(4)usermod命令

usermod命令主要用于设置账户相应的参数,常用的参数,如图:

(5)userdel命令

userdel命令就是为了删除用户,常用的选项只有一个:
-r:连同用户的宿主目录一起删除;

(6)groupadd命令

groupadd命令用于添加新的用户组,主要的参数有:
-g:后面接某个指定的GID;
-r:创建系统群组;

(7)groupmod命令

常用的参数有:
-g:修改既有的GID号;
-n:修改既有的群组名称;

(8)groupdel命令

groupdel命令用于删除群组!

(9)gpasswd命令

使用方法:“gpasswd 群组名”,常用的参数,如图:

关于群组管理员使用的参数:

(10)id指令

主要用于查询某人或自己的相关的UID/GID等信息。使用方法“id 用户名”即可!

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14157628/2446117

时间: 2024-11-06 10:34:56

保证Linux系统安全——账号管理的相关文章

保证Linux系统安全之使用iptables工具管理防火墙

随着企业中使用Linux系统的增加,保证Linux系统安全成为运维人员的必备技能之一. Linux系统本身有很强大的防护措施:防火墙.那么如何管理防火墙就成为重中之重. 随着CentOS 7.CentOS 8的出现,越来越多的人喜欢使用firewalld工具来管理防火墙.因为它不仅可以通过命令行设置,也可以通过图形化设置.关于使用firewalld工具管理Linux防火墙,可参考保证Linux系统安全之使用firewalld工具管理防火墙 下面我们主要介绍iptables工具管理防火墙. 本人第

保证Linux系统安全之firewalld防火墙配置地址伪装和端口转发详解

通过保证Linux系统安全之firewalld防火墙入门详解认识Linux系统firewalld防火墙,并可以编写一些相对简单一些的防火墙规则.Linux防火墙可以充当路由器(网关).路由器上的NAT技术,同样可以通过Linux防火墙来实现.地址伪装和端口转发说白了就是路由器中的NAT技术. 一.地址伪装和端口转发简介 firewalld防火墙支持两种类型的NAT: (1)地址伪装 地址伪装:基于源地址进行转换,通过地址伪装,NAT设备将经过设备的数据包转发到指定接收方,同时将通过的数据包的源地

Linux系统软件包的管理   3月30日课程

Linux系统软件包的管理 一. rpm工具 rpm Redhat Package Manager, 设计理念是开放的,不仅仅是在RedHat平台上,在SUSE上也是可以使用的. rpm包名字构成由-和.分成了若干部分,如abrt-cli-2.0.8-15.el6.centos.i686.rpm, abrt-cli:是包名 2.0.8-15:是版本号 el6:指的是redhat企业版6 centos:指的是这是在centos上用的 i686:指的是平台类型 有些rpm包并没有写具体的平台而是no

Linux系统的磁盘管理及分区应用

要求: 第一部分:磁盘分区 1)为虚拟机添加一块80GB.SCSI接口的硬盘 2)划分2个10GB的EXT4主分区,剩余的作为扩展分区 3)划分一个2G的swap交换分区 4)划分一个10G的FAT32的VFAT逻辑分区 第二部分:新磁盘分区的应用 a)将系统中的普通用户king的宿主目录迁移到所添加的新硬盘的其中一个主分区上 并能实现开机自动挂载,不影响开机时用户king的正常登陆(修改fstab配置文件) b)实现新添加交换分区的开机自动挂载(修改fstab配置文件) c)实现先添加另一个主

linux系统的日常管理2

linux系统的任务计划 crond命令简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. Linux下的任务调度分为两类,系统任务调度和用户任务调度. 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等.在/etc目录下有一个crontab文

Linux系统程序包管理

Linux程序包管理 API:Application Program Interface ABI:Application Binary INnterface Unix-like,系统上的二级制格式的应用程序文件格式为 ELF Windows系统的二级制格式的应用程序文件格式为: exe,msi 库级别的虚拟化: Linux:WinE,可以实现在Linux系统上运行Windows的二进制可执行程序 Windows:Cywin,可以实现在Windows系统上运行Linux的位二进制可执行程序 各种编

Linux系统程序包管理工具 RPM

什么是RPM: RPM全名是"RedHat Package Manager",简称为RPM,这套软件管理机制是由RedHat这家公司发展而来的.RPM是以一种数据库记录的方式来将你所需要的软件安装到你的Linux系统的一套管理机制.其最大的特点就是将你要安装的软件先编译过,并且打包成为RPM机制的安装包,通过包装好的软件里面默认的数据库记录这个软件安装时必须具备的依赖属性软件,具备就安装.不具备就不予安装. 程序的组成部分: 编译之前:源代码 编译文件 二进制程序:/bin, /sbi

Linux 系统下 “账户管理”

1.新增与移除使用者: useradd, 相关配置文件, passwd, usermod, userdel 要如何在 Linux 的系统新增一个用户啊?呵呵-真是太简单了-我们登入系统时会输入 (1)账号 (2)密码, 所以建立一个可用的账号同样的也需要这两个数据.那账号可以使用 useradd 来新建用户,密码给予则使用 passwd 这个指令!这两个指令下达方法如下: ? useradd [[email protected] ~]# useradd [-u UID] [-g 初始群组] [-

关于linux系统sudo权限管理的相关问题

本人初学linux运维,在观看oldboy视频教程后,对学习到的知识进行总结,知识内容均出自oldboy视频教程. ######################################################################################### linux系统中,只有root用户才能添加和删除用户,而在工作中,假如有很多个运维工程师作为普通用户,我们希望一部分的普通用户可以实现只有在root用户下才能实现的操作,但不是能干所有root用能干的事儿