CentOS8基础篇5:用户账号与用户组的创建

news2024/12/23 23:45:28

一、用户与用户组概念

Linux是一个多用户、多任务的服务器操作系统,多用户多任务指可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。

Linux用户是根据角色定义的,具体分为三种角色:

超级用户:拥有对系统的最高管理权限,默认是root用户。

普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如www用户、ftp用户等。

虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

用户和用户组的对应关系有:一对一、一对多、多对一和多对多。

Linux系统中每一个用户都至少属于一个用户组,管理员可以通过对用户组的管理来设置用户对系统的访问权限,从而在一定程度上保证了对系统访问的安全性。

在使用useradd命令创建用户的时候,系统除创建该用户外,默认情况下还会创建一个同名的用户组,作为该用户的用户组,同时还会在/home目录下创建同名的目录作为该用户的主目录。如果一个用户属于多个组,那么记录在/etc/passwd文件中的组称为该用户的主组,其他的组称为附属组。

主要组(主组):每个用户有且只有一个主要组。

附属组(补充组):用户可以是零个或多个附属组成员。一般用于帮助确保用户具有对系统中文件 及其他资源的访问权限。

二、与用户管理相关的系统文件

1.用户信息配置文件/etc/passwd

在Linux系统中,用户信息被存放在系统的/etc/passwd文件中,系统的每一个合法用户对应于该文件中的一行记录。这行记录定义了该用户的属性。由于所有的用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/shadow配置文件中。

在passwd配置文件中,每行均由7个字段构成,各个字段之间用“:”分隔,每个字段都代表该用户某方面的信息。

在passwd配置文件中,从左到右各个字段的含义如下:

用户名:用户登录系统时使用的用户名。

口令:存放加密的口令,被/etc/shadow文件保护。

用户标识号(UID):系统内部用它来标识用户,每个用户的UID都是唯一的。

用户组标识号(GID):系统内部用它来标识用户所属的组,这里的GID是主组GID。

注释性描述:为了方便管理和记忆该用户而添加的信息。

用户主目录:也称家目录,用户登录系统后所进入的目录。

命令解释器:指示该用户使用的Shell,CentOS Linux 8默认的是bash。如果指定Shell为/sbin/nologin,则代表用户无法登录系统。

2.用户密码配置文件/etc/shadow

为了加强系统安全性,Linux操作系统提供了专门的密码管理文件。

该文件对一般用户不可读,只有root用户才能够读取。

在/etc/shadow文件中,一行对应一个用户的密码信息,每行均由9个字段构成,各个字段之间用“:”分隔。

在shadow配置文件中,从左到右各个字段的含义如下:

用户名:用户账户名。

密码:用户的加密密码。

最后一次修改的时间:从1970年1月1日起,到用户最后一次更改密码的天数。

最小时间间隔:从1970年1月1日起,到用户可以更改密码的天数,(0表示随时可以变更)。

最大时间间隔:从1970年1月1日起,到必须更改密码的天数,否则密码将过期,(99999表示永远不过期)。

警告时间:在密码过期之前多少天提醒用户更新,默认值是7天。

不活动时间:在用户密码过期之后到禁用账户的天数。

失效时间:从1970年1月1日起,到账户被禁用的天数。

标志:保留位。

3.用户组配置文件/etc/group

将用户进行分组是Linux系统对用户进行管理及控制访问权限的一种手段。一个组中可以有多个用户,一个用户也可以属于多个组。系统中所有的组信息存放于/etc/group文件,其中一行对应一个用户组的信息,每行均由4个字段构成,各个字段之间用“:”分隔。

/etc/group文件中各字段的含义从左到右分别是:

组名:组的名称。

组口令:用户组的口令,用x表示口令是被/etc/gshadow文件保护的。

组标识号(GID):系统内部用它来标识用户组,每个用户组的GID都是唯一的。

组成员:该组的成员。

4.用户组密码配置文件/etc/gshadow

该文件用于定义用户组口令、组管理员等信息,该文件只有root用户可读。

/etc/gshadow文件中各字段的含义从左到右分别是:

组名:组的名称。

组口令:用户组的口令,保存已加密的口令。

组的管理员帐号:组的管理员帐号,管理员有权对该组添加、删除帐号。

组成员:该组的成员,多个用户用“,”分开。

三、用户管理

1.用useradd命令创建用户

创建或添加新用户要用useradd命令来实现。

命令格式: useradd    [选项]     用户名

选项

功能说明

-d

指定用户主目录

-g

指定用户组

-m

若主目录不存在,则创建

-M

不创建主目录

-s

指定登录时使用的Shell类型,默认为/bin/bash

-c

设置对该账号的注释说明文字

-r

创建系统账号(用户ID小于1000,从999起按照递减的顺序创建),默认不创建对应的主目录  

-u

手工指定新用户的ID值,该值必须唯一,且大于999。

〖例3.1〗创建用户tom。

#useradd  tom

在使用useradd命令创建用户tom,由于没有为tom指定用户组和主目录,所以系统会创建同名用户组tom作为tom用户的用户组,同时在/home目录下创建同名tom目录作为tom的主目录,并且在/var/spool/mail和/var/mail下创建与tom同名的文件,作为tom用户的邮件日志文件和备份。

〖例3.2〗创建一个名为zhangqi的用户,设置主目录为:/var/zhangqi,作为root组的成员,加注释:101school,指定用户Shell为:/bin/sh。

#useradd  –d  /var/zhangqi  –g  root  –c  101school  –s  /bin/sh  zhangqi

创建完成后,可以查看/etc/passwd的最后一行。

2.用usermod命令修改用户属性

对于已经创建好的用户,可以使用usermod命令来修改和设置账户的各项属性,包括用户名、用户主目录、用户所属组、使用Shell类型等。

命令格式: usermod      选项    用户名

〖例3.3〗修改用户zhangqi为zhangqiming。

#usermod  -l  zhangqiming  zhangqi

注意原用户名和新用户名的顺序。

〖例3.4〗修改zhangqiming的主目录为/var/zhangqiming。

#usermod  -d  /var/zhangqiming  zhangqiming

注意如果新的主目录不存在则需要先创建该主目录。

〖例3.5〗修改zhangqiming的注释信息为neusoft。

#usermod  -c  neusoft  zhangqiming

操作完成后,查看passwd文件zhangqiming用户,可以发现相关信息都已经做出了修改,因此可以发现uesrmod命令是对passwd文件的修改。

3.用userdel命令删除用户

在Linux操作系统当中,可以在userdel命令后直接加用户名,删除指定的用户。若使用选项-r,则在删除该用户的同时,将该用户对应的主目录一起删除。

命令格式:userdel  [-r]  用户名

〖例3.6〗删除zhangqiming用户及其主目录以及该用户的相关文档。

#userdel  -r  zhangqiming

删除zhangqiming用户后,查看passwd文件,发现该文件中已经不存在zhangqiming用户的信息。

4.用passwd命令管理用户登录密码

用户必须设置密码之后才能登录系统。

root用户有权设置指定用户的密码

普通用户只能设置或修改自己的密码。

passwd不加用户名,可以设置当前用户的密码。

命令格式:  passwd   [选项]  [用户名称]

passwd还可以选项管理用户的密码。

选项

功能说明

-l

锁定用户密码

-u

解锁用户密码

-S

查询用户密码状态

-d

删除用户密码

〖例3.7〗root管理员创建bob用户,并为其设置密码为“123456”,然后查看/etc/shadow文件中bob用户的密码。然后将bob的密码锁定,使bob无法登录系统,查看/etc/shadow文件的变化,再解锁bob的密码,恢复bob对系统的访问权,再次查看/etc/shadow文件的变化。

〖例3.8〗查询bob用户的密码状态,加锁后再查询bob用户的密码。

若用户密码的当前状态是解锁状态,则结果是“Password set,SHA512 crypt”。其中“SHA512 crypt”指的是密码加密方式。若用户密码被锁定,则查询用户密码状态的结果是“Password locked.”。

四、用户组管理

1.用groupadd命令创建用户组

用户组是用户的集合,通常将用户进行分类归组,便于进行访问控制。

用户与用户组属于多对多的关系,一个用户可以同时属于多个用户组,一个用户组可以包含多个不同的用户。

命令格式:groupadd  [选项]  用户组名称

常用选项是-r,功能是创建系统用户组。

〖例3.9〗创建用户组student。

#groupadd  student

2.用groupmod命令修改用户组属性

对于已经创建好的用户组,可以使用groupmod命令来修改其属性。

命令格式:groupmod  选项   组名

选项

功能说明

-n

修改组名

-g

修改组标识号GID

〖例3.10〗修改用户组student为teacher。

#groupmod  -n  teacher  student

3.用groupdel命令删除用户组

在Linux系统当中,可以在groupdel命令后直接加用户组名,删除指定的用户组。

命令格式:

groupdel  组名

在删除用户组时,被删除的用户组不能是某个用户的主组,否则无法删除。若必需删除,则应先删除该用户,然后再删除用户组。

4.用gpasswd命令维护组中成员

gpasswd命令可用于把一个用户添加到组、把一个用户从组中删除、把一个用户设为组管理员。

命令格式: gpasswd  选项  用户名  组名

选项

功能说明

-a

添加用户到组。

-d

将用户从组中删除。

-A

设置用户为组管理员。

〖例3.11〗将lili用户添加到tescher组。

#gpasswd  -a  lili  teacher

〖例3.12〗将lili设置为teacher组的管理员。用户组管理员具有可以向该组添加用户和移除用户的权限。作为组的管理员也可以使用gpasswd命令给组设置口令,只有设置了组口令,其他用户才可以通过newgrp命令切换成该组的成员身份,否则只有本组成员才能使用该组身份。

#gpasswd  -A  lili  teacher

〖例3.13〗将lili从teacher组中删除。

#gpasswd  -d  lili  teacher

五、知识扩展

1.查看用户信息的id命令

id命令用于显示用户当前的UID,GID以及所属群组的组列表。

命令格式:id  [选项]  [用户名称]

直接执行id命令不带选项表示显示当前用户的ID信息,否则只需要在id命令后面直接加上要查询的用户名即可。

选项

功能说明

-g

显示用户所属群组的ID

-G

显示用户所属附加群组的ID

-u

显示用户ID

〖例3.14〗查看lili用户的ID信息。

通过命令执行结果可以清楚地看到lili用户UID和GID信息。

2.输出指定用户所在组的groups命令

命令格式:groups  [选项]  [用户名]

选项

功能说明

--help

显示命令帮助信息

--version

显示版本号

例如显示用户lili所在的组。

3.查看当前登录用户whoami命令

whoami命令用于显示登录者自身的用户名称,本指令相当于执行“id  –un”指令,whoami显示当前用户更详细的登录信息。这一系列相关的还有w,who,whoami。

4.查看当前用户的w命令

系统管理员在任何时刻都可以查看用户的行为,在终端提示符下输入w命令。

第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登录用户总数及系统平均负载信息。

5.查看登录用户who命令

系统管理员若想知道某一时刻有哪些用户登录到系统,可以使用系统提供的who命令,该命令可以查看当前登录系统的用户及其他相关系统信息。

6.查看登录用户历史last命令

系统管理员可以随时查看用户登录的历史行为。

7.用于修改用户口令有效期限的chage命令。

密码时效是通过chage命令来管理的。

命令格式:chage  [选项]  用户名

选项

功能说明

-m

密码可更改的最小天数。为零时代表任何时候都可以更改密码

-W

用户密码到期前,提前收到警告信息的天数

-M

密码保持有效的最大天数

-E

账号到期的日期。过了这天,此账号将不可用

-d

上一次更改的日期

-i

停滞时期。如果一个密码已过期这些天,那么此账号将不可用

-l

列出当前的设置。由非特权用户来确定他们的密码或账号何时过期

〖例3.15〗查看root用户的密码信息。

8.修改用户注释信息的chfn命令

chfn命令可以修改用户的注释信息。

命令格式:

chfn  [选项]  [用户名]

选项

功能说明

-f

设置真实姓名。

-h

设置家中的电话号码。

-o

设置办公室的地址。

-p

设置办公室的电话号码。

9.修改用户Shell类型的chsh命令

命令格式:

chsh  [选项]  [用户名]

〖例3.16〗查看系统安装的Shell。

〖例3.17〗将tom用户的Shell修改为/bin/csh。

本例还可以执行#chsh  -s  /bin/csh  tom 命令来完成。如果只执行chsh命令那么修改的是当前用户的Shell。

使用chsh命令修改用户Shell其实修改的就是/etc/passwd文件里和该用户名相对应的那一行所定义的Shell字段。

项目四:用户账号与用户组的创建

操作过程:

#groupadd  dgroups01

#useradd  -g  dgroups01  dguser0101

#passwd  dguser0101

#useradd  -g  dgroups01  dguser0102

#passwd  dguser0102

#groupadd  dgroups02

#useradd  -g  dgroups02  dguser0201

#passwd  dguser0201

#useradd  -g  dgroups02  dguser0202

#passwd  dguser0202

#tail  -4  /etc/passwd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM - 内存分配

目录 JVM的简化架构和运行时数据区 JVM的简化架构 运行时数据区 PC寄存器 Java栈 Java堆 方法区 运行时常量池 本地方法栈 栈、堆、方法区交互关系 Java堆内存模型和分配 Java堆内存概述 Java堆的结构 对象的内存布局 对象的访问定位 Trace跟踪和Java堆的参数配…

【漏洞真实影响分析】Apache Kafka Connect 模块JNDI注入(CVE-2023-25194)

系列简介: 漏洞真实影响分析是墨菲安全实验室针对热点漏洞的分析系列文章,帮助企业开发者和安全从业者理清漏洞影响面、梳理真实影响场景,提升安全应急响应和漏洞治理工作效率。 漏洞概述 Apache Kafka Connect服务在2.3.0 至 3.3.2 版本中&…

sql server安装并SSMS连接

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞&#xff…

vue3使用vis绘制甘特图制作timeline可拖动时间轴,时间轴中文化

本文写作顺序:效果展示——子组件封装——父组件传值 仅js的原始图(回归初始化)、撤销(上一步)功能实现,样式需要自己调整 目录前言:参考文档文章一、实现效果:二、安装插件及依赖&a…

0代码实现接口自动化测试 —— RF框架实践

robotframework是一款关键字自动化测试框架,可能做各种类型的自动化测试。本文介绍通过 robotframework 来实现接口测试。 01、安装接口请求的第三方库 pip install robotframework-requests 在python安装目录的Lib\site-packages可以看到 02、接口关键字基础 ro…

【操作系统】操作系统IO技术底层机制和ZeroCopy

1.DMA技术详解 (1)应用程序 从 磁盘读写数据 的时序图(未用DMA技术前) (2)什么是DMA 技术 (Direct Memory Access) 直接内存访问,直接内存访问是计算机科学中的一种内存访问技术。…

设计模式之美总结(开源实战篇)

title: 设计模式之美总结(开源实战篇) date: 2023-01-10 17:13:05 tags: 设计模式 categories:设计模式 cover: https://cover.png feature: false 文章目录1. Java JDK 应用到的设计模式1.1 工厂模式在 Calendar 类中的应用1.2 建造者模式在 Calendar …

Pyton接口自动化相关【易报错问题及解决方法】

Pyton接口自动化相关【易报错问题及解决方法】 目录:导读 Python怎么链接数据库 python 链接数据库时报错 TypeError: %d format: a number is required, not str 是因为端口号写成字符串格式的了 python exists判断文件是否存在 pycharm下查看日志文件中文乱码…

【数据挖掘实战】——电力窃漏电用户自动识别

【数据挖掘实战】——电力窃漏电用户自动识别一、背景和挖掘目标二、分析方法与过程1、初步分析2、数据抽取3、探索分析4、数据预处理5、构建专家样本三、构建模型1、构建窃漏电用户识别模型2、模型评价3、进行窃漏电诊断拓展思考项目代码地址:https://gitee.com/li…

LaoCat带你认识容器与镜像(实践篇二下)

实践篇主要以各容器的挂载和附加命令为主。 本章内容 本文实操全部基于Ubuntu 20.04 宿主机 > linux服务器本身 Docker > 20.10.22 接上章内容,接下来该章围绕Docker安装并运行之RabbitMQ、ElasticSearch,大部分命令来源于DockerHub官网&#xf…

Apache日志分析器

您的Apache HTTP服务器生成的日志数据是信息的宝库。使用这些信息,您可以判断您服务器的使用情况、找出漏洞所在,并设法改进服务器结构和整体性能。审核您的Apache日志可在以下情况派上用场,其中包括:识别和纠正频繁出现的错误以增…

github相关

1.本地项目上传到远程github 1.1github上创建项目 1)github上创建项目 2)复制地址 1.2上传自己的项目 1)本地项目目录下执行 git init “git init”命令用于创建git仓库,其可以在一个已有的非git项目的根目录下执行,把已有项目初始化成为git仓库&…

微服务实战--高级篇:多级缓存:Nginx本地缓存、Redis、Tomcat、JVM缓存、数据库

多级缓存 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时…

模型部署综述

https://github.com/leeguandong/KuaiZaihttps://github.com/leeguandong/KuaiZaiAI 框架部署方案之模型部署概述 - 知乎文小P 家的 1011010 概述模型训练重点关注的是如何通过训练策略来得到一个性能更好的模型,其过程似乎包含着各种“玄学”,被戏称为“…

全局异常处理--Java实战项目篇

系列文章目录 Java后端开发功能模块思路 Spring Boot自动配置–如何切换内置Web服务器 Spring Boot读取配置文件内容的三种方式 该系列文章持续更新,更多的文章请点击我的主页查看哦! 文章目录系列文章目录前言一、出现的问题二、解决问题的方法1. 添加…

iPhone更新iOS 16.3出现应用卡死、闪退的问题怎么办?

在升级最新的 iOS 16.3 系统后,有些用户可能遇到了个别应用无法正常打开,卡死的异常情况。大家可以尝试通过如下方式解决问题。 1.重新启动应用: 如果应用出现卡死或闪退,可从 iPhone 屏幕由底往上滑(或连续按两次 H…

Java变量和数据类型,超详细整理,适合新手入门

目录 一、什么是变量? 二、变量 变量值互换 三、基本数据类型 1、八种基本数据类型 2、布尔值 3、字符串 四、从控制台输入 一、什么是变量? 变量是一种存储值的容器,它可以在程序的不同部分之间共享;变量可以存储数字、字…

C语言进阶——通讯录模拟实现

🌇个人主页:_麦麦_ 📚今日名言:只有走在路上,才能摆脱局限,摆脱执着,让所有的选择,探寻,猜测,想象都生机勃勃。——余秋雨《文化苦旅》 目录 一、前言 二、正…

让我百思不得其解的infer究竟是怎么推导类型的?

情景再现 有这么一个条件类型的基本语法: T extends U ? X : Y; 如果占位符类型U是一个可以被分解成几个部分的类型,譬如数组类型,元组类型,函数类型,字符串字面量类型等。这时候就可以通过infer来获取U类型中某个部分的类型。 …

95后外贸SOHO,年入7位数,他究竟是怎么做的?

外贸SOHO,一年到底能挣多少钱?有人说:“勤勤恳恳,年薪也就十来万吧”;也有人说:“100万而已我早就已经挣到了”;还有人说:“谁说新手难出头?我做跨境半年赚200万&#xf…