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

news2024/12/27 12:10:11

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.coloradmin.cn/o/2266381.html

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

相关文章

Windows Subsystem for Linux——设置默认登录用户名

大纲 问题解法 问题 在《Windows Subsystem for Linux——安装多个相同的操作系统》一文中,我们实现了子系统的导出和导入,但是也带来了一个问题:登录到系统时,会使用root用户。在一些场景下,这并不符合我们的使用场景…

【编译原理】往年题汇总(山东大学软件学院用)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀编译原理_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

智慧农业物联网传感器:开启农业新时代

在当今科技飞速发展的时代,农业领域正经历着一场前所未有的变革,而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”,悄然渗透到农业生产的各个环节,为传统农业注入了全新的活力,让农业生产…

观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用?

大家好,我是锋哥。今天分享关于【观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用?】面试题。希望对大家有帮助; 观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用? 1000道 …

C# OpenCvSharp DNN 卡证检测矫正

目录 说明 效果 模型 项目 代码 下载 参考 说明 源码地址:https://modelscope.cn/models/iic/cv_resnet_carddetection_scrfd34gkps 在实人认证、文档电子化等场景中需要自动化提取卡证的信息,以便进一步做录入处理。这类场景通常存在两类问题&…

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总…

要查询 `user` 表中 `we_chat_subscribe` 和 `we_chat_union_id` 列不为空的用户数量

文章目录 1、we_chat_subscribe2、we_chat_union_id 1、we_chat_subscribe 要查询 user 表中 we_chat_subscribe 列不为空的用户数量,你可以使用以下 SQL 查询语句: SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释: …

RocketMQ的集群架构是怎样的?

大家好,我是锋哥。今天分享关于【RocketMQ的集群架构是怎样的?】面试题。希望对大家有帮助; RocketMQ的集群架构是怎样的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 是阿里巴巴开源的分布式消息中间件,广泛用于处…

使用DynadotAPI查看域名清仓中的过期域名列表

前言 Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮箱&…

uni-app 中使用微信小程序第三方 SDK 及资源汇总

🎀🎀🎀uni-app 跨端开发系列 🎀🎀🎀 一、uni-app 组成和跨端原理 二、uni-app 各端差异注意事项 三、uni-app 离线本地存储方案 四、uni-app UI库、框架、组件选型指南 五、uni-app 蓝牙开发 六、uni-app …

探索 Pencils Swap 的叙事:为 DeFi 的再次爆发蓄力

Pencils Protocol 最初是 Scroll 生态上一个综合性的 DeFi 平台,以 Farming、Vaults 以及 Auction 等系列产品板块为基础,其不仅成为了 Scroll 上重要的流动性、收益枢纽,同时也是重要的 LaunchPad 市场以及流量池,为 Scroll 生态…

基于STM32单片机矿井矿工作业安全监测设计

基于STM32单片机矿井矿工作业安全监测设计 目录 项目开发背景设计实现的功能项目硬件模块组成设计思路系统功能总结使用的模块技术详情介绍总结 1. 项目开发背景 随着矿井矿工作业环境的复杂性和危险性逐渐增加,矿井作业安全问题引起了社会各界的广泛关注。传统的…

数学建模与数学建模竞赛

什么是数学建模? 数学建模是通过数学的方法和工具,对现实世界的一个特定对象,依据其内在规律,做出一些必要的简化假设,从而建立一个数学结构的过程。数学建模的历史和数学的起源几乎同步开始,2000多年前&a…

stm32四联七段数码管,LED8*8点阵

一、七段数码管的整体代码和仿真 1)代码 seg74.c #include "stm32f10x.h" // Device headervoid seg74_init(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(…

SpringCloudAlibaba技术栈-Dubbo

1、什么是Dubbo? 简单来说,dubbo就像是个看不见的手,负责专门从注册中心nacos调用注册到nacos上面的服务的,因为在微服务环境下不同的功能模块可能在不同的服务器上。dubbo调用服务就像是在调用本地的服务一样。 分布式调用与高并发处理 Du…

“AI智能安全管理系统:让安全无处不在

嘿,大家好!今天咱们来聊聊一个超级酷炫又至关重要的东西——AI智能安全管理系统。想象一下,如果有一个系统可以像私人保镖一样24小时不间断地保护你和你的财产,是不是感觉特别安心?这就是AI智能安全管理系统带给我们的…

【hackmyvm】soul靶机wp

tags: HMVrbash绕过图片隐写PHP配置解析 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. 图片解密3.1. 爆破用户名3.2. 绕过rbash3.3. 提权检测 4. 获取webshell4.1. 修改php配置 5. www-data提权gabriel6. gabriel提取到Peter7. Peter提权root 靶机链接 https://ha…

PaddleOCR训练自己的私有数据集(包括标注、制作数据集、训练及应用)

目录 一、制作数据集 1、进入到PaddleOCR-releas-2.7目录 2、首先启用PPOCRLabel:在终端激活环境 3、接着点击左下角的自动标注 4、确认完成后点击左上角 5、新建gen_ocr_train_val_test.py 二、训练文字检测模型 1、模型下载 2.、配置ppocr检测模型文件 …

网络层协议--ip协议

目录 引言 IP协议 协议头格式 16位标识与3位标志与13位片偏移讲解 网段划分(重要) DHCP技术 CIDR技术 特殊的IP地址 广播主机 IP地址的数量限制 私有IP地址和公网IP地址 路由:在复杂的网络结构中, 找出一条通往终点的路线 简单认识路由器 路由表生成算…

区块链期末复习3.2:比特币脚本

目录 一、输入输出脚本的执行 二、简单脚本实例及压栈过程 1.P2PK(pay to public key hash) 2、P2PH(pay to public key hash) 3.多重签名 4.比特币脚本的应用: 三、其他常见指令 1.OP_EQUAL与OP_EQ…