【Linux】Linux中用户信息相关的配置文件:/etc/passwd、/etc/group、/etc/shadow、/etc/sudoers

1 用户信息

1.1 /etc/passwd

linux上用户的信息保存在/etc/passwd中,看文件名会以为这里保存的是用户密码,但实际上用户密码保存在另一个文件中。

/etc/passwd文件中每行保存一个用户的信息,例如:

root:x:0:0:root:/root:/bin/bash

一个用户的信息由7个字段构成,字段之间以分号分割,每个字段的含义依次是:

  • 用户名:root
  • 用户密码:x
  • 用户ID:0
  • 用户组ID:0
  • 描述信息:root
  • 家目录:/root
  • 默认shell:/bin/bash

这里的用户密码并不是真正的密码,而只是个占位符。用户ID和用户组ID表明当前用户在某个用户组中。默认shell是该用户登录当前系统的shell。

1.2 /etc/shadow

真正的用户密码保存在/etc/shadow中,该文件同样是以分号分割保存每个用户的密码信息,例如:

feng:$1$oVHGoMfI$CNgwZ9QtQrwLRbFad.yGN1:20047:0:99999:7:::
  • 用户名:此处就是feng
  • 加密密码:保存的是单向不可逆的密码,此处就是 1 1 1oVHGoMfI$CNgwZ9QtQrwLRbFad.yGN1
  • 最后一次修改密码的时间:此处就是20047,含义是从1970年1月1日到最后一次修改密码的天数,可以用命令date -d "1970-01-01 20047 days"换算为实际的日期
  • 最小修改时间间隔:表示从变更密码的日期算起,多少天内无法再次修改密码,此处是0,表示没有限制
  • 密码有效期:表示密码被修改后多少天之内必须再次修改,默认值为99999,也就是273年
  • 密码需要变更前的警告天数:密码在快过期时,系统会给出警告,默认值为7,表示密码在过期前7天会给出警告
  • 密码过期后的宽限天数:密码过期后可以留一定的宽限天数,如果再过了宽限天数,系统将不再允许此账号登录
  • 账号失效时间:表示从1970年1月1日过多少天后账号失效
  • 保留字段:留空

所以,/etc/shadow文件除了保存密码,其次就是密码相关的一些策略。

对于密码,开头三个字符表示使用的散列算法:

  • 1 1 1:MD5-based
  • 2 2 2:Blowfish
  • 5 5 5:SHA-256
  • 6 6 6:SHA-512

另外,当密码字段是双感叹号时表示未设置。

密码相关的一些策略可以使用passwd命令完成。

passwd命令常用的选项:

  • -S:输出某个用户的状态,其实就是从/etc/shadow读取某个用户的信息,然后将部分字段翻译为可读的内容
  • -n:密码的最短生命周期,其实就是设置最小修改时间间隔
  • -x:密码的最长生命周期,其实就是设置密码有效期
  • -w:密码失效前发送警告的天数,其实就是设置密码需要变更前的警告天数
  • -i:设置密码过期后的宽限天数

2 用户组信息

2.1 /etc/group

用户组信息保存在/etc/group中,该文件的字段较少:

  • 用户组名称
  • 密码,与/etc/passwd一样,是个占位符
  • 用户组ID
  • 该组中除了默认用户以外的其他用户
2.2 /etc/gshadow

同样的,与/etc/shadow一样,/etc/gshadow保存的是用户组的密码:

  • 用户组名称
  • 组密码,如果为!表示没有设置组密码
  • 组管理员用户名,较少使用
  • 该组中除了默认用户以外的其他用户

3 用户sudo信息

sudo是Linux中允许非root用户运行需要超级用户权限的命令的一种机制,而sudo的配置文件记录的就是允许非root用户执行什么操作。

Linux中sudo的配置文件分为两个部分:一个是全局配置文件/etc/sudoers,另一个是配置目录/etc/sudoers.d/。作为管理的角度来说,通常建议直接是在/etc/sudoers.d/目录下新增配置文件,然后开启/etc/sudoers配置文件中的加载/etc/sudoers.d的配置。

3.1 用户sudo信息的修改

为了安全,/etc/sudoers配置文件的权限是440,也就是说,只允许root用户和root用户组的用户查看,难道说,该文件不允许修改?

从权限的角度来说,确实是这样,但是,由于root用户是超级用户,拥有对所有文件的完全访问权限,换句话说,即便文件权限是000,root用户依然可以查看和修改。

/etc/sudoers文件的错误修改可能造成系统崩溃,建议使用visudo命令修改/etc/sudoers文件。

3.2 /etc/sudoers配置文件格式

/etc/sudoers配置文件主要包含三个部分:

  • 别名配置:定义一些别名,用于简化后续的配置,别名配置包含几种类型,Host_Alias(主机别名)、User_Alias(用户别名)、Cmnd_Alias(命令别名)
  • 默认配置:用Defaults关键字定义的一些默认配置,例如,Defaults secure_path=/bin表示sudo命令搜索可执行文件的路径
  • 规则配置:定义哪些用户可以执行哪些命令。

因此,一般只需要配置规则就行。

通常,规则配置部分会包含默认两条规则:

  • root ALL=(ALL) ALL:root用户可以执行所有命令
  • %wheel ALL=(ALL) ALL:wheel用户组可以执行所有命令

wheel前面%表示wheel是用户组名。

规则配置的格式为user host = (runas) command,包含4个部分:

  • user:用户名、用户组名或者用户别名
  • host:主机名、主机别名或者ALL
  • runas:ALL、用户别名或者具体的用户名
  • command:命令、命令别名或者ALL

所以,user host = (runas) command的含义是:允许用户(user)在主机(host)上以用户(runas)的名义执行命令(command)。

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

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

相关文章

TiDB 的MPP架构概述

MPP架构介绍: 如图,TiDB Server 作为协调者,首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换,让表连接在一个TiFlash上。另外 TiFlash会作为计算节点,每个TiFlash都负责数据交换,表连接…

Elasticsearch-索引的批量操作

索引的批量操作 批量查询和批量增删改 批量查询 #批量查询 GET product/_search GET /_mget {"docs": [{"_index": "product","_id": 2},{"_index": "product","_id": 3}] }GET product/_mget {"…

渗透Vulnhub-Solidstate靶机

本篇文章旨在为网络安全渗透测试行业靶机教学。通过阅读本文,读者将能够对渗透Vulnhub系列Solidstate靶机有定的了解 一、信息收集阶段 靶机官网:https://www.vulnhub.com/entry/solidstate-1%2C261/ 因为靶机为本地部署虚拟机网段,查看dhcp…

YOLOv9-0.1部分代码阅读笔记-anchor_generator.py

anchor_generator.py utils\tal\anchor_generator.py 目录 anchor_generator.py 1.所需的库和模块 2.def make_anchors(feats, strides, grid_cell_offset0.5): 3.def dist2bbox(distance, anchor_points, xywhTrue, dim-1): 4.def bbox2dist(anchor_points, bbox, re…

【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。

【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。 【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。 文章目录 【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。1. 错…

ElasticSearch - 深入解析 Elasticsearch Composite Aggregation 的分页与去重机制

文章目录 Pre概述什么是 composite aggregation?基本结构after 参数的作用问题背景:传统分页的重复问题after 的设计理念响应示例 after 如何确保数据不重复核心机制Example步骤 1: 创建测试数据创建索引插入测试数据 步骤 2: 查询第一页结果查询第一页返…

使用 Scrapy 抓取网页数据

1. Scrapy 简介 Scrapy 是一个流行的 Python 爬虫框架,提供了强大的工具和灵活的扩展机制,用于高效抓取和处理网页数据。它支持异步 I/O,速度快且资源消耗低,非常适合大规模爬取任务。 2. 安装 Scrapy 确保你的 Python 环境版本…

如何训练Stable Diffusion 模型

训练Stable Diffusion模型是一个复杂且资源密集的过程,通常需要大量的计算资源(如GPU或TPU)和时间。Stable Diffusion是一种基于扩散模型的生成式AI,能够根据文本提示生成高质量的图像。它的训练过程涉及多个步骤,包括…

Kafka常用集群配置参数

Broker log.dirs 这是非常重要的参数,指定了 Broker 需要使用的若干个文件目录路径。比如/home/kafka1,/home/kafka2,/home/kafka3这样 log.dirs /home/kafka1,/home/kafka2,/home/kafka3如果有条件的话你最好保证这些目录挂载到不同的物理磁盘上。 1、可以提升…

两分钟掌握 TDengine 全部写入方式

1. 背景 TDengine 写入过程会涉及很多概念,这些概念目前你是不是还一团乱,参数绑定写入、无模式写入、websocket 写入、RESTFUL 写入 、各种连接器写入等等一堆的写入,都是做什么的,不明白,这里花两分钟时间给你彻底整…

使用 Docker 在 Ubuntu 下部署 Cloudflared Tunnel 服务器

在现代互联网中,安全和隐私是至关重要的。Cloudflared Tunnel 是 Cloudflare 提供的一种安全隧道解决方案,可以帮助你安全地将本地服务暴露到互联网,而无需暴露你的服务器 IP 地址。通过 Docker 部署 Cloudflared Tunnel,不仅简化…

快速理解24种设计模式

简单工厂模式 建立产品接口类,规定好要实现方法。 建立工厂类,根据传入的参数,实例化所需的类,实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例,并提供一个访问他它的全局…

数据可视化echarts学习笔记

目录,介绍 知识储备 一端操作,多端联动的效果(开启了多个网页,操作一端,多个网页的效果会跟着改变) cmd命令控制面板返回上一级或上上级 在当前目录打开文件: cd 文件名 在Windows命令提示符&am…

OpenCV相机标定与3D重建(30)过滤二值图像中的小斑点函数filterSpeckles()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在视差图中过滤掉小的噪声斑点(speckles)。 cv::filterSpeckles 是 OpenCV 库中的一个函数,用于过滤图像或视…

C语言期末复习笔记(中)

目录 五、选择控制结构 1.算法中的概念及描述方法 2.关系运算符和逻辑表达式 3.条件运算符和条件表达式 4.两种多分支if 5.switch语句 6.逻辑运算符和逻辑表达式 六、循环控制结构 1.控制循环的方式 2.控制非法输入 3.选择三种循环的一般原则 4.猜数游戏 5.嵌套循环…

android jetpack compose Model对象更新变量 UI不更新、不刷新问题

以前是搞老本行Android原生开发的,因为工作原因,一直在用vue小程序;因为一些工作需要,又需要用到Android原生开发,建了个项目,打开源码一看,天塌了!!!我以前的…

Python的Pandas--Series的创建和实现

1.Series函数的格式: pandas.Series(data,index,dtype,name,copy) data:一组数据(ndarray类型、list、dict等类)或标量值 index:数据索引标签。如果不指定,默认为整数,从0开始 dtype&#x…

python通过正则匹配SQL

pattern r"(?:[^;]|(?:\\.|[^])*);" sql_list [match.group().strip() for match in re.finditer(pattern, execute_sql) if match.group().strip()]for sql in sql_list:print(sql)(?:[^;]|(?:\\.|[^])*); 匹配 连续的非分号内容 或 单引号包裹的字符串&#…

利用Gurobi追溯模型不可行原因的四种方案及详细案例

文章目录 1. 引言2. 追溯不可行集的四种方法2.1 通过约束增减进行判断2.2 通过computeIIS函数获得冲突集2.3 利用 feasRelaxS() 或 feasRelax() 函数辅助排查2.4 利用 IIS Force 属性1. 引言 模型不可行是一个让工程师头疼的问题,对于复杂模型而言,导致模型不可行的原因可能…

算法工程化工程师

算法工程化工程师是一种结合算法研究与工程开发能力的技术职位,主要职责是将算法从理论研究到实际落地,应用到各种工业或商业场景中。以下是关于这个职位的一些核心内容: 核心职责: 算法实现与优化: 将数学模型或算法…