Linux用户、用户组
用户管理命令:
首先要先知道两个配置文件:
/etc/group 用户组配置文件
/etc/passwd 保存了所有用户的用于读取的必要信息
**/etc/shadow **是 Linux 系统中用于存储用户密码信息的文件。这个文件也被称为“影子文件”,因为它包含了 /etc/passwd 文件中用户账号的加密密码。与 /etc/passwd 文件不同,/etc/shadow 文件通常只有 root 用户和具有特殊权限的用户才能访问,从而增强了系统的安全性。
在添加用户之前,应该先查看一下当前系统下已经存在的用户情况。Linux系统的所有用户都在系统文件/etc/passwd文件中存放,在命令行窗口中运行如下命令
cat /etc/passwd 查看用户列表下面是一些用户(一行表示一个用户,每个字段之间用“:”分隔)
/etc/passwd配置文件字段及说明:
举例:root:x:0:0:root:/root:/bin/bashcg:x:1000:1000:vm1:/home/cg:/bin/bash
| 字段1 | 用户名 |
|---|---|
| 字段2 | 密码占位符(早先时间真的保存了用户密码,后来随着安全提升,就放到/etc/shadow,但是字段保留了。) |
| 字段3 | 用户的UID 0表示超级用户,500 60000普通用户,(换句话说,如果把某个普通用户的UID修改为0,则该用户就变成了管理员账户。)UID从1到499是系统预留的系统用户,也称伪用户,不能用于登录。可以看到在CentOS 7中,普通用户的UID是从1000开始进行分配的。 1-499程序用户(启动一个程序的时候需要依托一个用户的权限来启动,如果没有这些程序用户的话,比如说用root份启动了一个apache服务。如果这个服务有漏洞,或者说被注入恶意代码,那么恶意代码就会以root身份运行,因此启动不同程序的时候使用的都是程序用户的身份,这种用户是不允许登陆系统的,这是程序用户的特点,为了系统安全(在Liunx中,系统不认识用户名,只认UID,相当于身份证) |
| 字段4 | 基本组的 GID ,概念:先有组才有用户【用户必须存在于一个组】 |
| 字段5 | 用户信息记录字段【比如用户在公司的工号是多少,联系方式,家庭地址,现在已经很少了,基本废弃了】 |
| 字段6 | 用户的家目录 |
| 字段7 | shell脚本:用户登录系统后使用的命令解释器(默认是bash) |
/etc/shadow配置文件字段及说明cat /etc/shadow** **展示出如下数据:

| 序号 | 字段 | ** 说明** |
|---|---|---|
| 字段1 | 用户名 | 登录用户名 |
| 字段2 | 密码 | 加密后的密码(默认使用sha-512这种加密方式,同时过于简单的密码加密完了的信息完全相同,还混合了salt值,salt值不能被别人看到,若看到可利用字典进行密码暴力破解) |
| 字段3 | 最后一次修密码的时间 | (从1970年1月1日到最后一次修改密码的天数 |
| 字段4 | 最小间隔时间 | 两次修改密码之间最少间隔的天数 |
| 字段5 | 最大间隔时间 | 密码有效的最大天数, 99999表示永不过期 |
| 字段6 | 警告时间 | 密码有效期前多少天开始向用户发出警告信息 |
| 字段7 | 不活动天数 | 密码过期后多少天内允许用户登录 |
| 字段8 | 失效时间 | 整数,是从1970年1月1日到用户禁止登录时间 |
| 字段9 | 标认位 | 保留,未使用 |
为什么Linux要分别使用两个文件来管理用户信息和密码信息呢?查看两个文件的权限,运行如下命令并查看结果:ls -l /etc/passwd /etc/shadow
可以看到,passwd 文件所有人都可以读,shadow文件无人有权限,除了root用户(linux机制规定)
创建用户:
每创建一个用户都会新建/home/用户名 ,并作为该用户的家目录,用户对家目录拥有控制权,这也是将用户文件进行分隔的有效措施
useradd [-g -d] 用户名 :
- 下面可以看到/etc/passwd中已经包含了用户cg2的信息

- 可以看到已经包含了同名的cg2目录,并将其作为cg2用户的家目录

图形化展示:
useradd命令只能root用户使用,或者root用户组使用
我们可以验证一下:whereis useradd得到useradd所在的文件
查看权限:发现其他没有任何权限。得证
刚才我们只是创建了用户,但是还没有设置密码,cat /etc/shadow | grep cg2
可以看到第二个字段是!! 说明还没有设置密码
locate查找cg2,发现原来还创建了cg2的邮件目录
**综上所述,**当使用useradd命令新建一个用户后,将在/etc/passwd文件中写入一行新建用户信息,在/etc/shadow文件中写入一行用户密码信息,在/home目录中新建和用户名相同的家目录,在/var/spool/mail目录下新建与用户名相同的邮件目录。
useradd命令的选项
- 把新建用户cg3放入指定用户组cg2中
useradd -g cg2 cg3
检查一下
cat /etc/passwd可以看到cg3的组号是1001
或者我们还可以使用id命令检验
- -d :创建用户时指定家目录 ,若不指定 ,家目录默认在:/home/用户名

用户组:
默认无密码:
root模式下:
passwd 用户名
添加密码
批量添加用户:
newusers命令可以批量添加用户
步骤:
- 首先新建一个文本文档user.txt(内容是要添加用户,格式要和/etc/passwd相同)
/etc/passwd
user.txt
- 新建密码文档pwds.txt(内容是)
上面我们介绍了创建一个用户,
创建完用户后,家目录中没有任何文件(但是其实有隐藏文件)
若需要在新建用户的同时就在其家目录中放入一些文件,如本服务器的使用说明文档或注意事项文档等,则可以通过修改/etc/skel目录中的内容来达到目的。
/etc/skel目录在Linux系统中扮演着重要的角色。它主要用于存放新建用户时需要拷贝到其家目录下的文件。当系统管理员使用useradd命令添加新用户时,/etc/skel目录下的所有文件都会自动地复制到新用户的家目录下。

passwd命令设置密码
一般的用法有两种:一是使用root用户来为普通用户设置密码,二是普通用户使用passwd命令为自己设置密码。使用普通用户登录并为自己设置密码时必须知道原密码(正常的流程应该是使用root账户来新建用户并为其设置初始密码。)
要点:
- 使用root用户为普通用户设置密码
passwd 用户名(不加用户名是为自己设置密码) - root用户下设置密码不受密码格式限制,普通用户受密码格式限制
拓展:
passwd命令除了设置用户密码外,还可以完成显示用户密码状态和锁定(解锁)用户的功能,这两个功能须在root用户登录下进行,如下所示:

锁定用户passwd -l 用户名,如下:锁定了cg2,但是root用户可以强制进入
普通用户cg3就无法进入cg2了
解锁用户(root下使用):passwd -u 用户名如下:
chage修改帐号、密码的有效期
chage -d 999999999999 jack表示从1970年1月1日起,密码的有效期是999999999天
选项:
删除用户
userdel [-r] 用户名
- 选项:-r ,删除用户HOME目录,
- 不使用 - r ,保留HOME目录,
用户组管理命令
之前我们已经创建好了几个用户,现在我们可以再了解一个文件–组文件 /etc/group cat /etc/group 
可以发现新建一个用户,都会在group中新增一条记录,每一条记录都包含四个字段。
除了/etc/group文件外,还有另外一个与组相关的配置文件/etc/gshadowcat /etc/gshadow
第一字段:用户组
第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
第四字段:组成员,如果有多个成员,用,号分割;
创建用户组:
groupadd group1创建用户组group1cat /etc/group | grep group1查看group文件
cat /etc/gshadow | grep group1查看 gshadow文件
可以看到group1已经创建好了,但是组内还没有文件
修改组id和组名等信息
使用groupmod命令 注意谨慎修改
删除组
groupdel命令 注意谨慎,防止该组内用户集体失去某些文件的权限
如:
但是这里报错了,不可删除初始组,也就是说要先要先删除同名的用户cg3后该用户组也会随之被删除
为了便于群组的管理,有时需要为组设置组管理员,组管理员管理哪些用户可以被添加或被移除。
groupadd majorgroup 1添加组
gpasswd majorgroup 2给组添加密码
gpasswd -A cg majorgroup 3将用户cg设置为组管理员

可以在,gshadow文件中加密的密码,还有管理员cg (并没有被添加进组)
接着,添加cg和cg2进majorgroup
gpasswd -a cg majorgroup
gpasswd -a cg2 majorgroup
成功添加进去
如果这两个用户需要在不同的所属组之间切换,则可以使用newgrp命令。
组成员共享目录
在实际工作中,会出现如下场景:3个普通用户在同一个项目组内,他们各自都有自己的家目录和初始私有组,而他们同时要在同一个目录下进行项目开发。这时就需要共享成员目录来协同工作
上述命令运行后,work组已经创建,并且加入了jim,tom,bob(管理员)
下面将通过命令来讲项目专属目录的所属组变为working组
chgrp work /project/working
chmod 2770 /project/working
chgrp working /project/working的意思是将 /project/working文件或目录的组所有权更改为 working 组。
其中 2 代表 “set group ID”(SGID)位。当设置了这个位时,对于目录,新创建的文件或子目录将继承其父目录的组,而不是继承创建者的主组。
结果显示working目录的权限情况是创建者root拥有读、写和执行权限,而working组成员的权限为rws,其中s为特殊权限。
组外成员想进入组共享目录:不允许
拓展:
执行权限对于目录和文件来说是不同的。对于目录来说,执行权限是指是否可以进入某个目录,而对于文件来说,执行权限是指该文件中的内容是否可以被执行
查看用户所属组:
id [用户名]
uid是用户id
gid是用户所属组id
直接输入id命令,没有用户参数的话,会直接输出当前用户的用户信息
修改用户所属组
usermod -aG 用户组 用户名,
将指定用户加入指定用户组
注意:用户和用户组都得提前存在
getent
使用getent命令,可以查看当前系统中有哪些用户
语法:getent passwd

…中间还有很多用户
cat /etc/passwd效果一样
相关文章:
Linux用户、用户组
用户管理命令: 首先要先知道两个配置文件:/etc/group 用户组配置文件/etc/passwd 保存了所有用户的用于读取的必要信息**/etc/shadow **是 Linux 系统中用于存储用户密码信息的文件。这个文件也被称为“影子文件”,因为它包含了 /etc/passwd…...
操作系统系列学习——信号量的代码实现
文章目录 前言信号量的代码实现 前言 一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油! 本文总结自B站【哈工大】操作系统 李治军(全32讲) 老师课程讲的非常好,感谢 【哈…...
【Python操作基础】——变量操作
🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享 擅长Python、Matlab、R等主流编程软件 累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…...
滑模控制算法(SMC)讲解-案例(附C代码)
目录 一、滑模控制算法的基本原理 1)滑模面(Sliding Surface)的设计 2)达到条件(Reaching Condition)...
Redis数据结构对象之集合对象和有序集合对象
集合对象 集合对象的编码可以是intset或者hashtable. 概述 intset编码的集合对象使用整数集合作为底层实现,集合对象包含的所有元素都被保存在整数集合里面。 另一方面,hashtable编码的集合对象使用字典作为底层实现,字典的每个键都是一个…...
不要百花齐放
javascript中数组的遍历有如下方法: 1、for (var i 0; i < arr.length; i) 2、for(var item of arr) 3、for(var item in arr) 4、arr.forEach 5、arr.map 6、arr.filter 7、arr.find 8、arr.findIndex 9、arr.indexOf arr.lastIndexOf 10、arr.every…...
使用Java JDBC连接数据库
在Java应用程序中,与数据库交互是一个常见的任务。Java数据库连接(JDBC)是一种用于在Java应用程序和数据库之间建立连接并执行SQL查询的标准API。通过JDBC,您可以轻松地执行各种数据库操作,如插入、更新、删除和查询数…...
阿里云2核4G4M轻量应用服务器价格165元一年
阿里云优惠活动,2核4G4M轻量应用服务器价格165元一年,4Mbps带宽下载速度峰值可达512KB/秒,系统盘是60GB高效云盘,不限制月流量,2核2G3M带宽轻量服务器一年87元12个月,在阿里云CLUB中心查看 aliyun.club 当前…...
连续纯合片段(runs of homozygosity, ROH)的原理
连续纯合片段(Runs of Homozygosity, ROH)的原理及其结果查看方式包含以下几个方面: 原理 定义和识别: ROH是指基因组中由相同祖先遗传下来的连续纯合等位基因组成的片段。它们可以通过比较个体基因组上的等位基因序列来识别。当…...
UCORE 清华大学os实验 lab0 环境配置
打卡 lab 0 : 环境配置 : 首先在ubt 上的环境,可以用虚拟机或者直接在windows 上面配置 然后需要很多工具 如 qemu gdb cmake git 就是中间犯了错误,误以为下载的安装包,一直解压不掉,结果用gpt 检查 结…...
linux 安装常用软件
文件传输工具 sudo yum install –y lrzsz vim编辑器 sudo yum install -y vimDNS 查询 sudo yum install bind-utils用法可以参考文章 《掌握 DNS 查询技巧,dig 命令基本用法》 net-tools包 yum install net-tools -y简单用法: # 查看端口占用情况…...
OpenMP使用教程:入门到精通
在并行编程的领域中,OpenMP无疑是一个强大而又便捷的工具,它让程序员能够以最少的努力实现程序的并行化。本文将详细介绍OpenMP的基本概念、环境配置、核心指令以及实际代码示例,旨在帮助读者从入门到精通OpenMP的使用。 什么是OpenMP&#…...
华为组网:核心交换机旁挂防火墙,基于ACL重定向配置实验
如图所示,由于业务需要,用户有访问Internet的需求。 用户通过接入层交换机SwitchB和核心层交换机SwitchA以及接入网关Router与Internet进行通信。为了保证数据和网络的安全性,用户希望保证Internet到服务器全部流量的安全性,配置重…...
HarmonyOS NEXT应用开发—投票动效实现案例
介绍 本示例介绍使用绘制组件中的Polygon组件配合使用显式动画以及borderRadius实现投票pk组件。 效果预览图 使用说明 加载完成后会有一个胶囊块被切割成两个等大的图形来作为投票的两个选项,中间由PK两字分隔开点击左边选项,两个图形会随着选择人数…...
服务器端(Debian 12)配置jupyter与R 语言的融合
融合前: 服务器端Debian 12,域名:www.leyuxy.online 1.安装r-base #apt install r-base 2.进入R并安装IRkernel #R >install.packages(“IRkernel”) 3.通过jupyter notebook的Terminal执行: R >IRkernel::installspec() 报错 解决办…...
C语言---指针的两个运算符:点和箭头
目录 点(.)运算符箭头(->)运算符需要注意实际例子 C语言中的指针是一种特殊的变量,它存储了一个内存地址。点(.)和箭头(->)是用于访问结构体和联合体成员的运算符。…...
Linux 发布项目到OpenEuler虚拟机
后端:SpringBoot 前端:VUE3 操作系统:Linux 虚拟机:OpenEuler 发布项目是需要先关闭虚拟机上的防火墙 systemctl stop firewalld 一、运行后端项目到虚拟机 1、安装JDK软件包 查询Jdk是否已安装 dnf list installed | grep jd…...
相机与相机模型(针孔/鱼眼/全景相机)
0. 摘要 本文旨在较为直观地介绍相机成像背后的数学模型,主要的章节组织如下: 第1章用最简单的针孔投影模型为例讲解一个三维点是如何映射到图像中的一个像素 第2章介绍除了针孔投影模型外其他一些经典投影模型,旨在让读者建立不同投影模型…...
ARM32day4
1.思维导图 2.实现三个LED灯亮灭 .text .global _start _start: 使能GPIO外设时钟 LDR R0,0x50000A28 LDR R1,[R0]使能GPIOE ORR R1,R1,#(0X1<<4)使能GPIOF ORR R1,R1,#(0X1<<5) STR R1,[R0]设置引脚状态 LDR R0,0X50006000 LDR R1,[R0] 设置PE10为输出 BIC…...
从零开始写 Docker(六)---实现 mydocker run -v 支持数据卷挂载
本文为从零开始写 Docker 系列第六篇,实现类似 docker -v 的功能,通过挂载数据卷将容器中部分数据持久化到宿主机。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: …...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...









