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/bash
cg: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 基本实现有一个大致认识: …...
网站引用图片但它域名被墙了或者它有防盗链,我们想引用但又不能显示,本文附详细的解决方案非常简单!
最好的办法就是直接读取图片文件,用到php中一个常用的函数file_get_contents(图片地址),意思是读取远程的一张图片,在输出就完事。非常简单~话不多说,直接上代码 <?php header("Content-type: image/jpeg&quo…...
Java八股文(RabbitMQ)
Java八股文のRabbitMQ RabbitMQ RabbitMQ RabbitMQ 是什么?它解决了哪些问题? RabbitMQ 是一个开源的消息代理中间件,用于在应用程序之间进行可靠的异步消息传递。 它解决了应用程序间解耦、消息传递、负载均衡、故障恢复等问题。 RabbitMQ …...
科研学习|论文解读——一种用于短文本消息中的释义检测的深度网络模型(IPM, 2018)
论文原标题 A deep network model for paraphrase detection in short text messages 摘要 本文研究释义检测,即识别语义相同的句子。检测用自然语言编写的相似句子的能力对一些应用程序至关重要,如文本挖掘、文本摘要、剽窃检测、作者身份认证和问题回答。认识到这一…...
鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)下篇
onRequestSelected onRequestSelected(callback: () > void) 当Web组件获得焦点时触发该回调。 示例: // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webv…...
3月19日做题
[NPUCTF2020]验证🐎 if (first && second && first.length second.length && first!second && md5(firstkeys[0]) md5(secondkeys[0]))用数组绕过first1&second[1] 这里正则规律过滤位(Math.) (?:Math(?:\.\w)?) : 匹配 …...
Java8中Stream流API最佳实践Lambda表达式使用示例
文章目录 一、创建流二、中间操作和收集操作筛选 filter去重distinct截取跳过映射合并多个流是否匹配任一元素:anyMatch是否匹配所有元素:allMatch是否未匹配所有元素:noneMatch获取任一元素findAny获取第一个元素findFirst归约数值流的使用中…...
构建Helm chart和chart使用管道与函数简介
目录 一.创建helm chart(以nginx为例) 1.通过create去创建模板 2.查看模板下的文件 3.用chart模版安装nginx 二.版本更新和回滚问题 1.使用upgrade -f values.yaml或者命令行--set来设置 2.查看历史版本并回滚 三.helm模板内管道和函数 1.defau…...
深入理解OnCalculate函数的运行机制
文章目录 一、学习 OnCalculate 函数的运行原理的意义二、OnCalculate 函数原型三、OnCalculate 函数在MT4与MT5区别四、OnCalculate 函数的运行原理 一、学习 OnCalculate 函数的运行原理的意义 OnCalculate函数是MQL语言中的一个重要函数,它用于计算技术指标的值。…...
快速从0-1完成聊天室开发——环信ChatroomUIKit功能详解
聊天室是当下泛娱乐社交应用中最经典的玩法,通过调用环信的 IM SDK 接口,可以快速创建聊天室。如果想根据自己业务需求对聊天室应用的 UI界面、弹幕消息、礼物打赏系统等进行自定义设计,最高效的方式则是使用环信的 ChatroomUIKit 。 文档地址…...
nginx实现多个域名和集群
要通过Nginx实现多个域名和集群,你需要配置Nginx作为反向代理服务器,将来自不同域名的请求转发到集群中的相应后端服务器。下面是一个基本的配置示例,你可以根据自己的需求进行修改和扩展。 首先,确保你已经安装了Nginxÿ…...
2024年1月流感情况/seo和点击付费的区别
这款VR一体机内置了与主流智能手机相当的配置。 在昨日拉开帷幕的IFA 2016展会上,香港TCL旗下通讯品牌阿尔卡特(Alcatel)推出了一款名为Alcatel Vision的VR头显。这款VR头显不需要手机或电脑的驱动,是一款真正意义上的VR一体机。 …...
wordpress小工具开发/免费快速网站
APP是进入移动互联网的重要载体,故得到越来越多开发者的关注。打造APP,无论是开发、产品、运营、推广等任意一个环节都离不开海量数据的支持。这样一来,怎样采集,存储,整理,分析,挖掘海量数据成…...
淘宝客网站一般用什么做的/求几个微信推广平台
2019独角兽企业重金招聘Python工程师标准>>> Zerorpc是一个基于ZeroMQ和MessagePack开发的远程过程调用协议(RPC)实现。 和 Zerorpc 一起使用的 Service API 被称为 zeroservice。Zerorpc 可以通过编程或命令行方式调用。 它允许你࿱…...
绍兴网站建设公司哪家专业/软文模板
虽然微软官方资料不建议在生产环境下使用动态扩展或差异磁盘,但是在一些特定的环境中我们即使这样做了,也不会有太大的性能差异。这两天我在制作一个定制版的 Windows 7 安装镜像,其中需要使用 WDS 服务器,以方便我的测试。但是在…...
深圳网站制作与建设公司/产品优化是什么意思
####定义AOP,面向领域编程,是在不修改源代码的情况下,通过编译时或者运行时的代码修改来实现改变程序功能的目的。####问题和实现例如如何在c#中实现类似于python的方法装饰器的功能呢?fody这个库,通过修改编译好的dll…...