Linux账号与用户组

news2024/12/26 23:17:07

目录

用户标识符:UID与GID

用户账号

/etc/passwd文件结构

1、账号名称

2、密码

3、UID

4、GID

5、用户信息说明栏

6、家目录

7、shell

/etc/shadow文件结构 

1、账号名称

2、密码

3、最近修改密码的日期

4、密码不可被修改的天数(与第三字段相比)

5、密码需要重新修改的天数(与第三字段相比)

6、密码需要修改期限前的警告天数(与第五字段相比)

7、密码过期后的账号宽限时间(密码失效日)(与第五字段相比)

8、账号失效日期

9、保留

关于用户组:有效与初始用户组,groups,newgr

/etc/group文件结构

1、组名

2、用户组密码

3、GID

4、此用户组支持的账号名称

有效用户组(effective group)与初始用户组(initial group)

groups:有效与支持用户组的观察 

 newgrp:有效用户组的切换

/etc/gshadow


用户标识符:UID与GID

其实Linux主机并不会直接认识你的账号名称,它仅认识ID(ID就是一组号码)。由于计算机智认知0和1,所以主机对于数字比较有概念,而账号只是为了让人们容易记忆而已,我们的ID与账号的对应就在/etc/passwd中

我们知道,一个文件的属性中有拥有人与拥有人组这两个属性,所以每个登录的用户至少会获取两个ID,一个是用户ID(UID),一个是用户组ID(GID)

所以文件判断拥有者与用户组就是依据这两个ID来进行判断的,当我们要显示文件属性时,系统会根据/etc/passwd与/etc/group的内容来找到UID与GID对应的账号与组名再显示出来

下述例子仅说明UID与账号的对应性

系统中redhat的UID与GID都是1000,它们的关系就是redhat对应的UID为1000

 

此时我们将/etc/passwd中将用户的UID改为2000

你会发现该文件的拥有者就变成了数字

在正常运行的Linux主机环境下,上面的操作不可以随意进行,因为系统上面已经有很多的数据被建立存在了,随意修改系统上某些账号的UID会导致某些程序无法运行,甚至导致系统无法顺利运行——因为权限的问题。上述例子中,我们如果没有将2000改回来会导致redhat下次登录时将没有办法进入自己的家目录,因为它的UID已经改为2000,但是它的家目录却记录的是1000,由于权限为700,因此它将无法进入原本的家目录

用户账号

你输入账号密码后,系统做了哪些处理?

1、先查找/etc/passwd里面是否有你输入的账号,没有则退出,有则将该账号对应的UID与GID(/etc/group)读出来,另外该账号的家目录与shell设置也一并读出

2、再核对密码表,这是Linux会进入/etc/shadow中找出对应账号与UID,然后核对一下你输入的密码是否相符

3、上面一切OK则进入shell管理的阶段

跟用户账号有关的有两个非常重要的文件,一个是管理用户UID与GID重要参数的/etc/passwd,另一个则是专门管理密码相关数据的/etc/shadow

很多程序的运行都与权限有关,而权限与UID和GID有关。因此各程序都需要读取/etc/passwd来了解不同账号的权限,因此我们/etc/passwd的权限需设置为-rw-r--r--这样

/etc/passwd文件结构

文件内容构造:每一行代表一个账号,有几行则代表几个账号在你的系统中,但是里面很多账号本来就是系统正常运行所需要的,我们简称它为系统账号,例如bin、daemon、adm等,这些账号不可随意删除

查看:vim /etc/passwd

 root为系统管理员,我们可以看出每一行中都有:来相互分隔开,因此一行中共有七个东西

1、账号名称

就是账号,提供给对数字不敏感的我们用来登录系统的,需要用来对应UID

2、密码

早期UNIX系统的密码就放于此字段上,后来由于这个文件的特性是所有程序都能读取导致容易造成密码数据被窃取,所以就将这个字段的密码数据改放到/etc/shadow中去了,因此我们在这里只能看到一个【x】

3、UID

用户标识符,通常Linux对于UID有几个限制,我们可以了解一下

4、GID

这个与/etc/group有关,其实/etc/group的概念与/etc/shadow差不多,只是它是用来规范组名与GID的对应而已

5、用户信息说明栏

用来解释这个账号的意义而已,如果你使用finger的功能时,这个字段可以提供很多信息(可以了解一下chfn命令)

6、家目录

这就是用户的家目录,我们可以看到每个账号的家目录位置,所以我们使用各个用户登录时,会立刻跑到每个用户的家目录里面。所以当我们想要把家目录进行移动时,就可以在这个字段进行修改,默认的用户家目录在/home/yourIDname

7、shell

当用户登录后会获取一个shell来与系统的内核沟通以进行用户的操作任务,那为何默认shell会使用bash呢?就是在这个字段指定的,这里比较需要注意的是,有一个shell可以使账号在登录时无法获取shell环境,那就是/sbin/nologin这个东西。这也可以用来制作纯pop邮件账号的数据

/etc/shadow文件结构 

基本上shadow同样以:来作为分隔符,所以每一行共有九个字段,这九个字段的用途是这样的

1、账号名称

密码也需要与账号对应,所以第一栏为账号且必须与/etc/passwd相同才行

2、密码

这个字段内的数据才是密码,而且是经过编码的密码,这些密码很难破解,但不代表不会,所以它的权限为-rw-------或----------,即只有root才可以读写,所以我们得注意,不要随意修改这个权限

由于固定的摘要算法产生的密码是特定的,因此当修改这个字段后,该密码就会失效(算不出来)。很多软件通过这个功能,在此字段前加上!或*修改密码字段,就会让密码暂时失效

3、最近修改密码的日期

记录了密码修改那一天的日期,我们可以看到bin那栏中的日期为18849呢?这是因为计算Linux是以1970年1月1日作为1而累加的日期,1971年1月1日就是366

4、密码不可被修改的天数(与第三字段相比)

记录了账号的密码在最近一次修改后需要经过几天才能再次修改,如果是0则表示可以随时修改

5、密码需要重新修改的天数(与第三字段相比)

经常修改密码是个好习惯,为了强制修改密码,这个字段可以指定最近一次更改密码后需要在多少天数内再次修改才行。你必须在这个天数内重新设置你的密码,否则这个密码将会变为过期特性,如果是99999(计算为273年)的话,那就表示密码的修改没有强制性

6、密码需要修改期限前的警告天数(与第五字段相比)

当账号密码有效期限快要到的时候(第五字段),系统会根据这个字段的设置,发出警告信息给这个账号,提醒它再过n天你的密码就要过期

7、密码过期后的账号宽限时间(密码失效日)(与第五字段相比)

密码有效期为更新日期+重新修改日期,过了该期限后用户依旧没有更新密码,那该密码就过期了,虽然密码过期了,但是该账号还是可以用来执行其他任务,包括重新登录系统获取bash。不过如果密码过期了,那当你登录系统时,系统会强制你必须重新设置你的密码才能继续登录使用,这就是密码过期特性

8、账号失效日期

这个日期与第三字段相同,都是采用1970年以来的天数的总天数,这个字段表示这个账号在此字段规定的日期之后无法再使用,这个字段通常都是在收费服务系统中

9、保留

最后一个字段为保留,看以后有没有新功能加入

关于用户组:有效与初始用户组,groups,newgr

/etc/group文件结构

 该文件也是以:来作为分隔符,共分为四栏

1、组名

用来供人使用,基本上与第三字段的GID对应

2、用户组密码

通常不需要设置,这个设置一般是给用户组管理员用的,目前很少有机会设置用户组管理员。同样密码以及移动到了/etc/shadow中,所以我们只能看到【x】

3、GID

用户组ID,我们/etc/passwd第四个字段使用的GID对应的用户组名,就是由这里对应出来的

4、此用户组支持的账号名称

一个账号可以加入多个用户组中,如果某个账号想要加入此用户组时,将该账户填入这个字段即可(账号之间用逗号隔开,不要有空格),如果一个账号的初始用户组为此用户组,则此账号不写入此字段,例如root的初始用户组为root用户组并且root用户组中只有root用户,所以此字段没有数据

有效用户组(effective group)与初始用户组(initial group)

每个用户在它的/etc/passwd中都有一个GID,这个GID就是所谓的初始用户组,也就是说,用户一登录系统就会立刻拥有这个用户组的相关权限

我么给redhat用户新增加一个次要用户组

此时我们redhat账号同时支持redhat与users这两个用户组,但当我创建一个新目录或文件时,新文件的用户组为哪个?所以这时候就需要理解有效用户组了

groups:有效与支持用户组的观察 

我们以redhat用户身份登录后,就可以用groups命令来查看我们所有支持的用户组了

第一个输出的用户组即为有效用户组,所以我此时去建立一个新文件的话,拥有者与用户组都为redhat

 newgrp:有效用户组的切换

我们可以使用newgrp来修改有效用户组,但是newgrp是有限制的,即切换的用户组必须是已有支持的用户组

需要注意的是,记得退出newgrp的环境,因为这个命令是以一个shell来提供这个功能,就是说redhat目前是以另一个shell登录的,并且这个shell中redhat的有效用户组为users,虽然用户的环境设置不会有影响,但是用户的用户组权限将会重新计算,所以我们需要使用完newgrp后需要退出到原来的shell环境(有效用户组会改回redhat) 

加入用户组有两种方式:一种是系统管理员利用usermod帮你加入;另一种是用户组管理员以gpasswd帮你加入他所管理的用户组中

/etc/gshadow

 四个字段的意义为:

  1. 组名
  2. 密码栏,同样的,开头为!表示无合法密码,所以无用户组管理员
  3. 用户组管理员的账号
  4. 有加入该用户组支持的所属账号(与/etc/group内容相同)

以系统管理员来说,gshadow最大的功能就是建立用户组管理员,该用户组管理员可以将其他账号加入到自己管理的用户组中来减轻root用户的任务(这个功能已经很少使用了)

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

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

相关文章

Git | 在IDEA中使用Git

目录 一、在IDEA中配置Git 1.1 配置Git 1.2 获取Git仓库 1.3 将本地项目推送到远程仓库 1.4 .gitignore文件的作用 二、本地仓库操作 2.1 将文件加入暂存区 2.2 将暂存区的文件提交到版本库 2.3 查看日志 三、远程仓库操作 3.1 查看和添加远程仓库 3.2 推送至远程仓…

fastcgi未授权访问漏洞(php-fpm fast-cgi未授权访问漏洞)

本文参考《Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写》进行该漏洞的复现以及分析。 1.前置基础 1.1 nginx中的fastcgi 先来看先前用过的一张图,其是nginx解析用户请求的过程。 图中的几个定义: CGI:CGI是一种…

1628_MIT 6.828 xv6_chapter0操作系统接口

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这本书最初看名字以为是对早期unix的一个解读,但是看了开篇发现 不完全是,只是针对JOS教学OS系统来做的一些讲解。 Xv6是对UNIX v6的重新实…

【Java 面试合集】Java中修饰符有哪些,有什么应用场景

Java中修饰符有哪些,有什么应用场景 1. 概述 首先我们要知道Java的三大特性:封装,继承,多态。 而我们今天要分析的修饰符就跟封装有着密切的联系。因为权限修饰符可以控制变量以及方法的作用范围。 废话不多说,上图…

Python推导式

列表&#xff08;list&#xff09;推导式 [remove for source in xx_list]或者[remove for source in xx_list if condition] 实例&#xff1a; names[Bob,Mark,Mausk,Johndan,Wendy] new_names[name.upper() for name in names if len(name)<5] print(new_names)即迭代列…

PC端开发GUI

PC端开发GUI PC端环境搭建1、Python2、PycharmPC端环境搭建 1、Python 注意Python版本不能超过3.9,因为pyqt-tools只维护到python对应的该版本 1.1、查找是否安装python:win+R,输入cmd回车,输入python或python -V或python --version 1.2、若1.1没有,则下载安装下载链接…

天津菲图尼克科技携洁净及无菌防护服解决方案与您相约2023生物发酵展

BIO CHINA 生物发酵产业一年一度行业盛会&#xff0c;由中国生物发酵产业协会主办&#xff0c;上海信世展览服务有限公司承办&#xff0c;2023第10届国际生物发酵产品与技术装备展览会&#xff08;济南&#xff09;于2023年3月30-4月1日在山东国际会展中心&#xff08;济南市槐…

亿级高并发电商项目-- 实战篇 --万达商城项目 二(Zookeeper、Docker、Dubbo-Admin等搭建工作

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域新星创作者 &#x1f4d5;系列专栏&#xff1a;前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

第二章-进程(2)

进程一、进程的引入二、进程的状态及组成三、进程控制一、进程的引入 &#xff08;1&#xff09;程序的顺序执行: P1:axy P2:ba-5 P3:cb1 程序总是按照P1→P2→P3的顺序执行。 特点&#xff1a; 顺序性&#xff1a;处理机的操作严格按规定顺序执行。封闭性&#xff1a;程序执…

python(8):使用conda update更新conda后,anaconda所有环境崩溃----问题没有解决,不要轻易更新conda

文章目录0. 教训1. 问题:使用conda update更新conda后&#xff0c;anaconda所有环境崩溃1.1 问题描述1.2 我搜索到的全网最相关的问题----也没有解决3 尝试流程记录3.1 重新安装pip3.2 解决anaconda编译问题----没成功0. 教训 (1) 不要轻易使用conda update更新conda----我遇到…

[OpenMMLab]AI实战营第六节课

语义分割算法基础 任务&#xff1a;图像按照物体的类别分隔成不同区域&#xff0c;即将每个像素进行分类 应用&#xff1a;无人驾驶、医疗、人像、智能遥感 思路 基本思路&#xff1a;按照颜色区分 --> 逐像素分类&#xff08;滑动窗口&#xff0c;用CNN分类&#xff0c…

微搭低代码从入门到精通11-数据模型

学习微搭低代码&#xff0c;先学习基本操作&#xff0c;然后学习组件的基本使用。解决了前端的问题&#xff0c;我们就需要深入学习后端的功能。后端一般包括两部分&#xff0c;第一部分是常规的数据库的操作&#xff0c;包括增删改查。第二部分是业务逻辑的编写&#xff0c;在…

QT基础入门

学习视频&#xff1a;QT开发概述_哔哩哔哩_bilibili 1.QT开发概述 1.什么是QT QT是一个1991年由Qt Company开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序&#xff0c;也可用于开发非GUI程序&#xff0c;比如控制台工具和服务器。Qt是面向对象的框架&#…

STC15单片机软串口的使用

STC15软串口的使用&#x1f4d6;在没有使用定时器资源的情况下&#xff0c;根据波特率位传输时间&#xff0c;利用STC-ISP工具自动计算出位延时函数。 ✨在官方所提供的库函数中位传输时间函数,仅适用于使用波特率为&#xff1a;9600的串口数据传输&#xff1a; void BitTime(…

Grafana 系列文章(十四):Helm 安装Loki

前言 写或者翻译这么多篇 Loki 相关的文章了, 发现还没写怎么安装 &#x1f613; 现在开始介绍如何使用 Helm 安装 Loki. 前提 有 Helm, 并且添加 Grafana 的官方源: helm repo add grafana https://grafana.github.io/helm-charts helm repo update &#x1f43e;Warning…

nacos的单机模式和集群模式

文章目录 目录 文章目录 前言 一、nacos数据库配置 二、单机模式 三、集群模式 四、使用nginx集群模式的负载均衡 总结 前言 一、nacos数据库配置 在数据库中创建nacos_config 编码格式utf8-mb4的数据库 把上面的数据库文件导入数据库 在 配置文件中添加如下 spring.datasour…

LINUX之链接命令

链接命令学习目标能够说出软链接的创建方式能够说出硬链接的创建方式1. 链接命令的介绍链接命令是创建链接文件&#xff0c;链接文件分为:软链接硬链接命令说明ln -s创建软链接ln创建硬链接2. 软链接类似于Windows下的快捷方式&#xff0c;当一个源文件的目录层级比较深&#x…

Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

目录 1、Apache Shiro简介 2、漏洞原理 关键因素&#xff1a; 漏洞分析&#xff1a; 漏洞特征&#xff1a; 3、影响版本 4、漏洞复现 任意命令执行 GETSHELL 防御措施 1、Apache Shiro简介 Apache Shiro是一个Java安全框架&#xff0c;执行身份验证、授权、密码和会话…

深入解读.NET MAUI音乐播放器项目(一):概述与架构

系列文章将分步解读音乐播放器核心业务及代码&#xff1a; 深入解读.NET MAUI音乐播放器项目&#xff08;一&#xff09;&#xff1a;概述与架构深入解读.NET MAUI音乐播放器项目&#xff08;二&#xff09;&#xff1a;播放内核深入解读.NET MAUI音乐播放器项目&#xff08;三…

部门新来了个软件测试工程师,一副毛头小子的样儿,哪想到是新一代卷王...

内卷&#xff0c;是现在热度非常高的一个词汇&#xff0c;随着热度不断攀升&#xff0c;隐隐到了“万物皆可卷”的程度。 在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不…