【Linux】用户与用户组,用户账号系统文件

目录

一 用户与用户组

1.1 含义

1.2 用户相关语法

1.2.1 useradd(添加用户账号)

1.2.2 userdel(删除用户账号)

1.2.3 usermod(修改用户账号)

1.2.4 passwd(用户口令的管理)

1.2.5 su(切换用户)

1.2.6 退出登入方式

1.3 用户组相关语法

1.3.1 groupadd(增加用户组)

1.3.2 groupdel (删除用户组)

1.3.3 groupmod (修改用户组)

1.3.4 newgrp (切换用户组)

二 用户账户系统文件

2.1 /etc/passwd

2.2 /etc/shadow

2.3 /etc/group


一 用户与用户组

1.1 含义

  1. 用户 (User):

    • 用户是系统的使用者。每个用户都有一个唯一的用户名和密码。
    • 当用户在Linux系统上执行命令或访问文件时,系统会检查该用户是否有相应的权限。
    • 用户的主要目的是确保只有授权的用户可以访问系统的特定部分。
    • 可以通过id命令查看当前用户的ID和其他相关信息

UID为用户ID

  1. 用户组 (User Group):

    • 用户组是一组用户的集合。它是为了方便管理和分配权限而创建的。
    • 一个用户可以是一个或多个用户组的成员。
    • 当为一个文件或目录设置权限时,可以指定哪些用户组可以访问它。
    • 例如,sudo命令通常只允许root组的成员执行。
    • 可以通过groups命令查看当前用户所属的所有用户组

GID为用户组ID

用户账户分类:

1 超级用户root (0):

root ,其 UID GID 0
在每台 unix/linux 操作系 中都是唯一且真 存在的,通 它可以登 ,可以操作系 中任何文件和命令, 有最高的管理 限。
在生 产环 境,一般禁止 root 程登 SSH 接服 器,以加 安全

2.程序用户(1~499): 
与真 区分开来, 这类 的最大特点是安装系 后默 就会存在的,且默 情况不能登
是系 正常运行必不可少的,他 的存在主要是方便系 管理, 足相 的系 统进 程都文件属主的要求。
例如系 bin adm nodoby mail 等。由于服 器角色的不同,有部分用不到的系 被禁止开机 行,
因此,在做系 安全 ,被禁止开机启 了的服 务对应 的虚 也是可以 理掉的 ( 除或注 )


3 普通用户(500~65535):

这类 一般是由具 管理 root 限的运 添加的

1.2 用户相关语法

1.2.1 useradd(添加用户账号)

useradd  选项  用户名
参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
- G 用户组指定用户所属的附加组
-s Shell文件指定用户的登录Shell
- u 用户号指定用户的用户号,如果同时有-选项,则可以重复使用其他用户的标识号
用户名:指定新账号的登录名
 ------------------------------------------------------------------------------------------------
示例1:
useradd -d home/sam -m sam2
此命令创建了一个用户san ,其中-d和-m选项用来为登录名sam2产生一个主目录
/home/sam (/home为默认的用户主目录所在的父目录)

--------------------------------------------------------------------------------------------------------

示例2:
此命令新建了一个用户gem,该用户的登录Shell是bin/sh,它属于group用户组,同
useradd-s/bin/ sh-g group -G adm, root gem
其中group用户组是其主组。这里可能新建组:#groupadd group及groupadd adm

注1:增加用户账号就是在/etc/passwd文件中为新用户增加一条记录
同时更新其他系统文件如/etc/shadow,/etc/group等
注2:Linux提供了集成的系统管理工具usercorf,它可以用来对用户账号进行统一管理

1.2.2 userdel(删除用户账号)

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录
 -----------------------------------------------------------------------------------------------

userdel选项用户名
常用的选项是-r,它的作用是把用户的主目录一起删除

--------------------------------------------------------------------------------------------

示例1:
userdel -r sam
此命用在系经文件中(主要是/etc/passd,/ect/shadow/,/ect/group)等记录,同时删除用户的主目录

1.2.3 usermod(修改用户账号)

`usermod` 用于修改用户的属性和配置。通过 `usermod` 命令,可以对用户的各种属性进行修改,如用户的用户名、用户ID、用户组ID、用户主目录、用户登录shell等。

-----------------------------------------------------------------------------------------------------

然而,需要注意的是,`usermod` 命令不允许改变正在线上的使用者帐号名称。当使用 `usermod` 命令来改变用户ID(user ID)时,必须确保该用户没有在电脑上执行任何程序。此外,还需要手动更改使用者的 crontab 文件和 at 工作档。如果系统采用 NIS server,还需要在 server 上更改相关的 NIS 设定。
 -----------------------------------------------------------------------------------------------------
`usermod` 命令的语法是 `usermod [选项] [参数]`。其中,选项包括:
* `-c<备注>`:修改用户帐号的备注文字。
* `-d<登入目录>`:修改用户登入时的目录。
* `-e<有效期限>`:修改帐号的有效期限。
* `-f<缓冲天数>`:修改在密码过期后多少天即关闭该帐号。
* `-g<群组>`:修改用户所属的群组。
* `-G<群组>`:修改用户所属的附加群组。
* `-l<帐号名称>`:修改用户帐号名称。
* `-L`:锁定用户密码,使密码无效。
* `-s<shell>`:修改用户登入后所使用的shell。
* `-u<uid>`:修改用户ID。
* `-U`:解除密码锁定。
 参数 `登录名` 指定了要修改信息的用户登录名。
 -----------------------------------------------------------------------------------------------------

1.2.4 passwd(用户口令的管理)

passwd  选项  用户名

可使用的选项:

-l 锁定口令,即禁用账号

-u 口令解锁。

-d 使账号无效

-f 强迫用户下次登入时修改密码。如果是默认用户名,则修改当前用户的口令

--------------------------------------------------------------------------------------------------------
示例1:修改密码

假设当前用户是sam,则下面的命令修改该用户自己的口令

pass

Old password: *******
New password:********

Re-enter new password: ************

超级用户,可以用下列形式指定任何用户的口令

pass sam 

New password: *********

Re-enter new password: ***********

注1:普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两边新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户输入口令,就不需要知道原口令
--------------------------------------------------------------------------------------------------------
示例2:用户指定空口令时

passwd -d sam

此命令将用户sam的口令删除,这样用户sam下一次登陆时,系统就不再允许该用户登入了

--------------------------------------------------------------------------------------------------------
示例3:passwd命令还可以用 -l(lock)选项锁定某一用户,使其不能登入

解锁用-u passwd -l sam

1.2.5 su(切换用户)

su username

1.2.6 退出登入方式

exit

    这是最常用的方法。只需在命令行界面输入exit,然后按下回车键即可退出当前用户。exit命令会立即退出当前用户,并返回到上一级用户或登录界面。 

logout

注意:在某些情况下,logoutexit命令可能具有相同的效果,特别是在shell提示符下使用时 

ctrl+d

在大多数shell中,按下Ctrl+D组合键也可以退出当前用户的登录会话。这通常与logout命令有相同的效果。 

1.3 用户组相关语法

1.3.1 groupadd(增加用户组)

groupadd  选项  用户组
选项有:
-g GID指定新用户组的组标识号(GD)
#一般与-选项同时使用,表示新用户组的GD可以与系统已有用户组的GID相同。

-----------------------------------------------------------------------------------------------------------------

示例1:
groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的
基础上加1

-----------------------------------------------------------------------------------------------------------------
示例2:
groupadd -g 101 group2
此命令向系统中增加了一个新组group2同时指定新组的组标识号是101

1.3.2 groupdel (删除用户组)

如果删除一个已有的用户组,使用 groupdel命令

groupdel  用户组

示例:

groupdel  group1

1.3.3 groupmod (修改用户组)

修改用户组的属性
groupmod  选项  用户组
常用的选项有:
-g GID为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组将用户组的名字改为新名字

-----------------------------------------------------------------------------------------------------------------
示例1:
groupmod -g 102 group2
此命令将组group2的组标识号修改为102

-----------------------------------------------------------------------------------------------------------------
示例2:
groupmod -g 10000-n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3

1.3.4 newgrp (切换用户组)

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组

-----------------------------------------------------------------------------------------------------------------
示例1:
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附
加组

二 用户账户系统文件

2.1 /etc/passwd

/etc/passwd文件是用户管理工作涉及的最重要的一个文件

root:x:0:0:Superuser:/:

daemon:x:1:1:System daemons:/etc:

bin:x:2:2:0wner of system commands:/bin:

sys:x:3:3:0wner of system files:/usr/sys:

adm:x:4:4: System accounting:/usr/adm:

uucp:x:5:5:UUCP administrator:/usr/lib/uucp:

auth:x:7:21: Authentication administrator:/tcb/files/auth:

cron:x:9:16:Cron daemon:/usr/spool/cron:

listen:x:37:4:Network daemon:/usr/net/nls:

lp:x:71:18:Printer administrator:/usr/spool/lp:

sam:x:200:50: Sam san:/home/sam:/bin/sh

从上面的列子可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号:分隔为7个字段,格式如下

用户:口令:用户标识号:组标识号:注释性描述:主目录:登陆Shell

-------------------------------------------------------------------------------------------------------

1、“用户名”是代表用户账号的字符串。
通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。
头。
为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

-------------------------------------------------------------------------------------------------------

2、“口令”一些系统中,存放着加密后的用户口令字。
虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Limx 系统(如SWR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或“*”。

-------------------------------------------------------------------------------------------------------

3、“用户标识号”是一个整数,系统内部用它来标识用户。
一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

-------------------------------------------------------------------------------------------------------
4、“组标识号”字段记录的是用户所属的用户组。

它对应着/etc/group文件中的一条记录。

-------------------------------------------------------------------------------------------------------
5、“注释性描述”字段记录用户的一些个人情况。
造个全愤舜。例如用户的真实姓名、电话、地址等,系统中,这个字段的格式并没有什么实际的用途。在不同的Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

-------------------------------------------------------------------------------------------------------
6、“主目录”,也就是用户的起始工作目录。
它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

-------------------------------------------------------------------------------------------------------
7、用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即she11°She11是用户与Limux系统之间的接口。Limux的She11有许多种,每种都有不同的特点。

常用的有sh(Boume Shell),csh(C Shell),ksh(Kom Shell),tcsh(TENEX/TOPS-20 type CShell),bash(Bourne Again Shell)等。

-------------------------------------------------------------------------------------------------------
利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中.

-------------------------------------------------------------------------------------------------------
8、系统中有一类用户称为伪用户(rseudo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求

2.2 /etc/shadow

/etc/shadow中的记录行与/etc/passwd中的一 一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用”:“隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
----------------------------------------------------------------------------------------------------------------

上方格式说明:

"登录名”:是与/etc/passwd文件中的登录名相一致的用户账号
"口令":字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{ ./0-9A-Za-z }中的字符,则对应的用户不能登录
"最后一次修改时间":表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
"最小时间间隔":指的是两次修改口令之间所需的最小天数。
"最大时间间隔":指的是口令保持有效的最大天数。
"警告时间":字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
"不活动时间":表示的是用户没有登录活动但账号仍能保持有效的最大天数。
"失效时间":字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了

2.3 /etc/group

该/etc/group主要存储用户组的信息

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员

格式:组名:口令:组标识号:组内用户列表

格式说明:

"组名":是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令":字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是 * 。
"组标识号":与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表":是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

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

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

相关文章

Git面试题整理(对比)

1.拉取请求pull和分支branch有什么区别 拉取请求(Pull Request) 定义:拉取请求是在代码协作平台上发起的一种通知&#xff0c;它告诉其他团队成员:“我完成了一段代码的工作&#xff0c;请审查并合并到主分支中去”。它不仅是请求合并代码的方式&#xff0c;也是代码审查、讨论…

使用Lombok @Data 出现java: 找不到符号 的问题

第一种&#xff1a;pom依赖最好如下方式 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope> </dependency>第二种&#xff1…

【Azure 架构师学习笔记】- Azure Databricks (10) -- UC 使用

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (9) – UC权限 在前面的文章&#xff1a;【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog中演示了如何配置一个UC。 本文…

excel数据导入到数据库的方法

背景&#xff1a;最近在做和HW对接的某项目&#xff0c;需要将第三方接口提供的数据进行展示&#xff1b;在对方提供了详细的excel后&#xff0c;觉得也挺简单的就是将excel数据导入到数据库中。 方案一&#xff1a; 普通的初学者肯定会想&#xff0c;那我读取excel数据&…

人工智能的理解

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一种模拟人类智能思维过程的计算机系统。它通过模仿、学习和应用人类的思维方式和行为模式来完成各种任务&#xff0c;包括但不限于感知、推理、学习、规划、决策等。人工智能的发展已经取得了巨大的进…

UE5 骨骼重定向

1.通过 VRoidStudio 1.26.0 软件创建模型 导出 2.下载ue插件 https://github.com/ruyo/VRM4U/releases 安装 重启 3.拖入创建的模型 到指定文件夹 4.为模型创建 IK绑定&#xff0c;重定向骨骼根 新增链条 5.创建IK 重定向&#xff0c;指定源 和 目标 IK绑定 6.

【More Effective C++】条款6:区分前置++和后置++

前置&#xff1a;返回引用原因&#xff1a; 保证和内建类型一致&#xff0c;i&#xff0c;是合法的 后置&#xff1a;返回一个const值的原因 避免连加操作&#xff0c;因为i是不合法的&#xff0c;和内建类型不一致&#xff1b;避免混淆&#xff0c;因为第二个是对第一个返回…

基于MPPT最大功率跟踪算法的涡轮机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT最大功率跟踪算法的涡轮机控制系统simulink建模与仿真.mppt采用爬山法实现&#xff0c;仿真输出MPPT控制效果&#xff0c;功率&#xff0c;转速等。 2.系统仿真结果 …

Thymeleaf无法显示模板视图,加载页面显示404状态问题的解决方法

本篇文章主要讲解&#xff1a;Thymeleaf无法显示模板视图&#xff0c;加载页面显示404状态问题的解决方法 日期&#xff1a;2024年2月23日 作者&#xff1a;任聪聪 现象说明&#xff1a; 1.只返回输出模板的名称&#xff0c;如图&#xff1a; 2.显示报错信息&#xff1a; Whi…

左右互博。

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 讨厌鬼在和小甜妹在玩石头游戏。 游戏一开始有 nnn 堆石子&#xff0c;第 iii 堆石子&#xff0c;有 aia_iai​ 个石子。两人轮流进行游戏。 轮到某个人时&#xff0c;这个人先选数量为 x(x&…

64-JQuery动画

1.隐藏正在显示的元素.hide(速度,函数) 显示正在隐藏的元素.show(速度,函数) 元素可见切换为隐藏,元素隐藏切换为可见.toggle(速度,函数) 速度单位是毫秒 <script>$("button").eq(0).click(function(){//隐藏$("div").hide();})$("butt…

C#WinForm窗体TableLayout控件布局

Winform界面TablLayout是常用的控件之一 可以实现界面任意位置布局&#xff0c;在表格中添加其他控件默认只能占用一个单元格&#xff0c;如果想跨任意数量行列需要使用两个函数设置&#xff0c;下面举例 新建Tab表 设置插入按钮布局 // // button1 // this.tableLayoutPanel…

sqlserver 三范式

在关系数据库设计中&#xff0c;三范式是一种用于规范化数据库结构的理论模型&#xff0c;旨在消除数据冗余和提高数据存储的效率。三范式分为以下三个级别&#xff1a; 第一范式&#xff08;1NF&#xff09;&#xff1a;确保每个表中的每个字段都是原子的&#xff0c;即不可再…

React htmlfor

注意&#xff0c;在添加属性时&#xff0c; class 属性需要写成 className &#xff0c;for 属性需要写成 htmlFor &#xff0c;这是因为 class 和 for 是 JavaScript 的保留字。 在React中&#xff0c;当我们需要为一个表单元素设置标签时&#xff0c;可以使用htmlFor属性。它…

第三百六十三回

文章目录 1. 概念介绍2. 实现方法2.1 环绕效果2.2 立体效果 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义SlideImageSwitch组件"相关的内容&#xff0c;本章回中将介绍两种阴影效果.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

Python作图

图效果 import numpy as np import matplotlib.pyplot as plt# 定义函数 def sigmoid(x):return 1 / (1 np.exp(-x))def tanh(x):return np.tanh(x)def relu(x):return np.maximum(0, x)def leaky_relu(x, alpha0.01):return np.where(x > 0, x, alpha*x)# 生成数据 x np…

Android Jetpack Compose 沉浸式状态栏的实现

目录 概述效果展示代码实现总结 概述 说到沉浸式状态栏&#xff0c;很多小伙伴可能不太熟悉&#xff0c;其实让Android的状态栏的颜色和APP的主题颜色相同&#xff0c;给人感觉状态栏和APP就是一体的。沉浸式的状态栏让页面看起来更舒服&#xff0c;实现沉浸式状态栏也很简单&…

Zookeeper未授权访问漏洞

Zookeeper漏洞介绍 Zookeeper支持某些特定的四字查询命令&#xff0c;可以未授权访问&#xff0c;从而泄露zookeeper服务的相关信息&#xff0c;这些信息可能作为进一步入侵其他系统和服务的跳板&#xff0c;利用这些信息实现权限提升并逐渐扩大攻击范围。 常见的四字命令有 e…

MyBatisPlus条件构造器和常用接口

前置配置文章 一、wapper介绍 wrapper的继承体系&#xff1a; Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 QueryWrapper &#xff1a; 查询条件封装UpdateWrapper &#x…

【Java万花筒】表单验证与数据校验库:拓展你的Java应用

表单验证与数据校验库&#xff1a;为你的Java应用增添安全护盾 前言 在开发Java应用的过程中&#xff0c;表单验证和数据校验是非常重要的一部分。确保用户输入的数据符合预期的规则和格式&#xff0c;可以增加系统的稳定性和安全性。为了简化表单验证和数据校验的过程&#…