Linux 用户、用户组 useradd、groupadd等详解

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》 🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

1、Linux的起源与发展

2、Linux在现代计算机领域的重要性 

二、用户管理 

1、Linux用户类型

2、用户ID

3、用户的创建(useradd)

4、用户的删除(userdel)

5、用户密码管理

passwd命令的使用

密码的复杂性要求与安全性 

6、用户信息的查看

三、用户组管理

1、用户组的概念与作用

2、用户组的创建(groupadd)

3、用户组的删除(groupdel)

四、用户与用户组的关联

1、用户和用户组之间的关系

2、修改用户所属组(usermod)

3、用户组信息的查看(groups) 

4、用户组信息的查看(/etc/group) 


一、前言

1、Linux的起源与发展


1991年,芬兰赫尔辛基大学的学生林纳斯·托瓦兹(Linus Torvalds)开始编写一个新的操作系统内核,这个内核最初被称为“Freax”。他的初衷只是想学习操作系统内核的开发,并为自己的个人计算机编写一个操作系统。然而,当他将这个内核发布在Internet上并开放源代码后,全球各地的程序员开始参与到这个项目中来,共同完善这个内核。最终,这个内核被命名为Linux,这个名字是由Linus Torvalds的名字和Unix操作系统的名字组合而成的。

Linux从一开始就坚持源代码的公开和免费使用,任何人都可以对其进行修改和分发。这种开放性和自由性吸引了大量的开发者和用户,使得Linux逐渐成长并成熟起来。如今,Linux已经发展成为一个性能稳定、功能强大的多用户网络操作系统,支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。同时,Linux也有上百种不同的发行版,如基于社区开发的Debian、ArchLinux,以及基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

2、Linux在现代计算机领域的重要性 


Linux在现代计算机领域的重要性不言而喻,它已经成为各行各业中广泛应用的操作系统之一。

首先,Linux以其高度的稳定性、安全性和灵活性受到广泛认可。这使得它成为服务器领域的首选操作系统,许多大型企业都选择Linux作为他们的服务器操作系统。此外,Linux系统也在开发环境、科学计算、嵌入式系统以及虚拟化等方面有着广泛的应用。

其次,Linux是一种开源的操作系统,这意味着任何人都可以查看、使用和修改它的源代码。这种开放性不仅降低了软件成本,而且吸引了全球众多开发者为其贡献代码和功能,从而推动了软件的创新速度和质量提升。通过共同努力,Linux的源代码得到了不断的优化和完善,进一步提高了其稳定性和可靠性。

再者,Linux在云计算领域也发挥着关键作用。凭借其出色的稳定性和安全性,以及良好的可扩展性,Linux能够支持大规模的云基础设施和服务。许多云服务提供商都选择Linux作为他们的基础架构,以满足日益增长的计算需求。

二、用户管理 

Linux用户是Linux系统中的一个重要概念,指的是在Linux系统中登录和使用系统的个体。每个用户都拥有自己的用户名和密码,以及特定的权限和角色,这决定了他们在系统中的操作范围和能力。

1、Linux用户类型

  1. 普通用户:也被称为非特权用户或标准用户。这类用户在系统中拥有有限的权限,只能对自己的主目录和文件进行操作,不能对系统文件进行修改。普通用户主要用于日常工作和文件操作,无法执行系统级命令或访问受限制的资源。
  2. 超级用户(root用户):在Linux系统中,root用户拥有最高的权限,可以执行任何命令和操作任何文件。root用户相当于Windows系统中的Administrator用户,具有管理系统的全部权限。然而,由于root用户的权限过大,一旦操作失误可能导致系统崩溃或数据丢失,因此通常建议仅在必要时使用root用户,并尽量避免在root用户下执行日常任务。
  3. 系统用户:系统用户是为了满足系统的某种特定功能而创建的用户,例如运行某个服务或进程。这类用户通常没有登录系统的权限,主要用于后台任务的执行。

 在Linux系统中,用户的管理是通过用户账户和组账户来实现的。每个用户账户都关联到一个或多个组账户,而组账户则用于控制对文件和目录的访问权限。通过这种方式,Linux系统实现了对用户权限的精细控制和管理。 

  

2、用户ID

在Linux系统中,用户的ID(User ID,简称UID)是用于唯一标识不同用户的数字。不同类型的用户通常会有不同的UID范围或约定。

1. 超级用户(root用户):

  • UID通常是0。这是Linux系统中权限最高的用户,拥有对系统的完全控制。

2. 系统用户:

  • UID通常在1-999之间,具体范围可能因不同的Linux发行版而异。这些用户通常用于运行系统服务或进程,没有登录系统的权限。

3. 普通用户:

  • UID通常在1000及以上。这个范围内的UID通常是由系统管理员为普通用户创建的,用户具有有限的权限,只能对自己的文件和目录进行操作。

   

3、用户的创建(useradd)

useradd是Linux系统中用于创建新用户账户的命令。它通常需要超级用户(root)权限来执行,因为创建用户账户涉及到系统级别的更改。使用useradd命令时,可以指定各种选项来定制新用户的设置。

语法格式:

useradd [选项] 用户名

参数:

  • -c <备注>:为新用户账户添加备注信息,这些信息通常会保存在/etc/passwd文件的备注栏位中。
  • -d <登入目录>:指定新用户的主目录,即用户登录时默认的起始目录。
  • -e <有效期限>:设置用户账户的有效期限,过期后账户可能会被禁用。
  • -f <缓冲天数>:指定在密码过期后,账户被禁用之前的缓冲天数。
  • -g <群组>:指定用户所属的主组(初始登录组)。
  • -G <群组>:指定用户所属的附加组,即除了主组之外的其他组。
  • -m:创建用户账户时,自动创建用户的主目录。
  • -M:创建用户账户时,不自动创建用户的主目录。
  • -s <shell>:指定用户登录后使用的shell程序。
  • -u <uid>:为新用户指定一个特定的用户ID(UID)。

示例:创建一个名为newuser的新用户,并自动创建其主目录

[root@lmt ~]# useradd -m newuser

执行这个命令后,系统会在/etc/passwd文件中添加新用户的信息,并根据-m选项创建用户的主目录(通常位于/home/newuser)。

   

4、用户的删除(userdel)

在Linux系统中,userdel命令用于删除用户账户。这个命令可以帮助管理员在系统中移除不再需要的用户账户。

语法格式:

userdel [选项] 用户名

当执行userdel命令时,用户账户将被标记为已删除。但默认情况下,用户的主目录和相关的文件并不会被自动删除。

参数:

  • -r:这个选项会同时删除用户账户及其相关的所有文件,比如用户的主目录和邮件池。使用此选项时,务必小心,因为它会删除用户的所有文件和目录。如果用户的目录下有重要文件,在删除前请确保已经备份。
  • -f:强制删除用户账户,即使用户当前已登录。

示例:删除用户账户但不删除其家目录及文件

[root@lmt ~]# userdel newuser

5、用户密码管理

passwd命令的使用

passwd命令在Linux系统中用于设置或更改用户的密码。

语法格式:

passwd 用户名

这条命令会提示输入并确认新密码,以设置指定用户的密码。如果以普通用户的身份运行此命令,则只能更改自己的密码。如果以root用户身份运行,则可以更改任何用户的密码。

参数:

  • -d:删除用户密码。这个选项会删除指定用户的密码,使其账户变得不可用。只有root用户才能使用这个选项。
  • -l:锁定用户账户。这个选项会锁定指定用户的账户,使其无法登录。锁定后,即使密码正确也无法登录。只有root用户才能使用这个选项。
  • -u:解锁用户账户。这个选项会解锁之前被锁定的用户账户,使其可以重新登录。只有root用户才能使用这个选项。
  • -e:强制用户在下次登录时更改密码。这个选项可以设置用户的密码为过期状态,使其在下次登录时必须更改密码。
  • -k:保留非过期身份验证令牌。这个选项与身份验证令牌相关,用于在密码过期后保留某些认证信息。
  • -f:强制执行操作。这个选项在某些情况下可以强制执行密码更改或其他操作。

示例:修改刚刚创建的用户的密码

  

密码的复杂性要求与安全性 

密码的复杂性要求和安全性是密切相关的。密码的复杂性主要涉及到密码的组成元素和结构,而安全性则是指密码在防止未经授权访问方面的有效性。

复杂性要求密码由多个字符组成,包括数字、字母(大写和小写)、符号等,并且长度较长。这种密码不易被猜测或破解,因为它包含了多种类型的字符,并且长度越长,破解的难度就越大。复杂性要求有助于提高密码的强度和安全性。

密码的安全性还与其使用频率和变换周期有关。为了保障账户的安全,用户应该定期更改密码,避免使用相同的密码或者过于简单的密码。这可以防止黑客利用已知的密码或模式进行攻击。

6、用户信息的查看

使用/etc/passwd文件:
/etc/passwd是一个文本文件,其中包含了登录Linux系统所必需的每个用户的信息。你可以使用任何文本编辑器或命令行工具(如cat、more、less)来查看这个文件。这个文件保存了用户的有用信息,如用户名、密码(通常是以加密形式存在)、用户ID、群组ID、用户ID信息、用户的家目录和默认的Shell。

示例: 

[root@lmt ~]# cat /etc/passwd

   

上面的输出结果包含了系统上所有用户的基本信息。每一行代表一个用户账户,各个字段之间使用冒号 : 分隔。

每行的字段解释如下:

  • 用户名:例如 root、bin、daemon 等。这是用户登录系统时所使用的名称。
  • 密码占位符:通常是一个 x,表示加密的密码实际存储在 /etc/shadow 文件中,而不是 /etc/passwd 文件中。
  • 用户ID (UID):一个唯一的数值,用来标识系统中的每个用户。例如,root 用户的 UID 是 0,通常保留给系统管理员。
  • 组ID (GID):一个唯一的数值,用来标识用户的主组。用户的默认组ID,通常与某些系统文件和目录的权限关联。
  • 用户全名或描述:描述用户的字段,可以是全名、房间号、电话号码或其他任何描述性文本。
  • 家目录:用户登录后的默认工作目录。例如,root 用户的家目录是 /root。
  • 默认shell:用户登录后使用的命令解释器。例如,/bin/bash 是最常用的 shell。

三、用户组管理

1、用户组的概念与作用

概念:

在Linux中,用户组是具有相同特性用户的逻辑集合,也是系统对同一类对象进行统一管理的一种手段。用户组可以将同一类用户封装成一个更大的整体,这种组织方式有利于按照用户特性进行管理和操作。用户组在Linux系统中分为初始组和附加组,一个用户只能有一个初始组,但可以有多个附加组。

作用:

  • 管理文件和目录的权限:用户组可以用来设定文件和目录的访问权限,使得具有相同权限需求的用户可以被归入同一个用户组,从而简化权限管理过程。
  • 共享和管理系统资源:用户组提供了一种机制,使得多个用户可以共享某些系统资源或执行某些特定的任务。例如,允许多个用户访问某一个文件时,可以将所有需要访问该文件的用户放入一个用户组里,并给这个用户组授权,这样组中所有用户也就拥有了相同的权限。
  • 简化用户和权限的管理:通过将一组用户归为同一个用户组,管理员可以更加便捷地进行用户和权限的管理,而无需对每个用户单独设置权限。

   

2、用户组的创建(groupadd)

在Linux系统中,用户组的创建可以通过groupadd命令来完成。groupadd命令用于创建一个新的用户组。

具体操作步骤如下:

使用root账号登录Linux系统。因为创建用户组通常需要系统超级用户(root)的权限。

输入groupadd命令,并紧跟上想要创建的用户组的名称。例如,要创建一个名为newgroup的用户组,可以输入以下命令:

[root@lmt ~]# groupadd newgroup

创建用户组时,系统会根据需要自动分配一个唯一的GID给用户组。如果需要指定特定的GID,可以使用groupadd命令的-g选项,后面跟上想要的GID值。例如:

[root@lmt ~]# groupadd -g 1005 newgroup

   

3、用户组的删除(groupdel)

在Linux系统中,删除用户组可以通过groupdel命令来完成。groupdel命令用于删除一个已存在的用户组。

删除用户组的详细步骤:

1. 检查用户组信息:在删除用户组之前,首先确保该用户组确实存在。可以使用grep命令来检查/etc/group文件,确认用户组的信息。例如,如果要删除名为examplegroup的用户组,可以运行以下命令:

grep 'examplegroup' /etc/group

如果该命令返回有关examplegroup的信息,表示该用户组存在。

2. 删除用户组:使用groupdel命令删除用户组。确保有足够的权限(通常需要root权限)来执行此操作。以删除examplegroup用户组为例:

groupdel examplegroup

这将删除用户组并将其从系统中移除。

3. 验证操作:再次运行grep命令来验证用户组是否已成功删除:

grep 'examplegroup' /etc/group

如果用户组已成功删除,该命令将不返回任何关于examplegroup的信息。

四、用户与用户组的关联

1、用户和用户组之间的关系

在Linux系统中,用户与用户组之间存在着紧密的关联。每个用户都可以属于一个或多个用户组,这种关联关系决定了用户对于文件和目录的访问权限。

具体来说,一个用户可以存在于一个或多个用户组中。如果一个用户存在于多个用户组中,那么该用户将具有这些组的共同权限。同时,多个用户也可以存在于同一个用户组中,这些用户将具有与该组相同的权限。这种一对多、多对一以及多对多的关系,使得用户和用户组之间的关联变得非常灵活和强大。

用户组的创建和删除对于管理用户权限和系统资源至关重要。通过创建用户组,管理员可以将具有相同权限需求的用户归类到一起,从而简化权限管理过程。而删除用户组则需要在确保该组的所有成员都已经被转移到其他组中,并且不会影响到系统的正常运行。

2、修改用户所属组(usermod)

在Linux系统中,修改用户所属组可以通过usermod命令来完成。usermod命令用于修改用户的各种属性,包括所属的用户组。

使用usermod命令修改用户所属组的详细步骤:

1. 检查当前用户组:首先,使用groups命令或查看/etc/passwd文件来确认用户的当前所属组。例如,要查看用户username的所属组,可以执行:

groups username

或者查看/etc/passwd文件中该用户的记录。

2. 使用usermod命令修改所属组:使用usermod命令的-g选项来修改用户的主组(primary group)。例如,要将用户username的主组更改为newgroup,可以执行:

usermod -g newgroup username

在这里,newgroup是想要设置的新用户组的名称,而username则是想要修改其所属组的用户的名称。执行这个命令后,用户username的主组就会被更改为newgroup。

3. 验证更改:再次使用groups命令或查看/etc/passwd文件来验证用户的所属组是否已成功更改。
如果想将用户添加到一个附加组(secondary group),而不是更改其主组,可以使用-aG选项。例如:

usermod -aG additionalgroup username

这会将用户username添加到additionalgroup这个附加组中,而不会更改其主组。

3、用户组信息的查看(groups) 

在Linux系统中,可以使用多种方法来查看用户组的信息,其中groups命令是一个常用的工具,用于查看当前用户所属的用户组。


当执行groups命令时(不带任何参数),它会显示当前登录用户所属的所有用户组。这些用户组包括该用户的主组(primary group)以及任何附加组(secondary groups)。

groups username

输出可能是:

user1 : user1 secondarygroup1 secondarygroup2

user1是当前登录用户的用户名,user1是主组,而secondarygroup1和secondarygroup2是附加组。

4、用户组信息的查看(/etc/group) 


除了使用groups命令,还可以直接查看/etc/group文件来获取系统上所有用户组的列表。这个文件包含了系统上每个用户组的信息,每行对应一个用户组。

cat /etc/group

输出将包括每个用户组的名称、密码字段(通常为x表示密码存储在/etc/gshadow中)、GID(组ID)以及组成员列表(如果有的话)。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio gradle-8.4 配置 GreenDao

1.配置项目下的build buildscript {repositories {mavenCentral()}dependencies {classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0")classpath ("org.greenrobot:greendao-gradle-plugin:3.3.1") // 使用最新版本} } 2.配置app下的build i…

书生浦语训练营2期-第二节课笔记作业

目录 一、前置准备 1.1 电脑操作系统&#xff1a;windows 11 1.2 前置服务安装&#xff08;避免访问127.0.0.1被拒绝&#xff09; 1.2.1 iis安装并重启 1.2.2 openssh安装 1.2.3 openssh服务更改为自动模式 1.2.4 书生浦语平台 ssh配置 1.3 补充&#xff08;前置服务ok…

JavaScript中堆栈内存管理机制及其在深拷贝与浅拷贝场景中的应用与解析

一.堆栈的定义 1.栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。 结论&#xff1a;后进先出&#xff08;Last In First Out&#xff09;&#xff0c;简称为LIFO线性表。 栈的应用有&#xff1a;数制转换&#xff0c;语法词法分析&…

VGA 时序与实现

1. VGA 时序标准 小梅哥视频链接&#xff1a;23A VGA成像原理与时序详解_哔哩哔哩_bilibili 行扫描时序图 场扫描时序图具体参数自己查表 2. 640*480 分辨率 VGA 控制器时序分析 2.1 行扫描区间构成 H Sync Time H Bach PorchH Left BorderH Data TimeH Right BorderH…

分类预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小支持向量机数据分类预测

分类预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小支持向量机数据分类预测 目录 分类预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现CPO-LSSVM冠豪猪算法优化最小支持向量机数据分类预…

国内20家公司大模型岗位面试经验汇总

面试情况&#xff1a; 投过的公司&#xff1a;淘天&#xff0c;字节&#xff0c;蚂蚁&#xff0c;商汤&#xff0c;美团&#xff0c;夸克&#xff0c;腾讯&#xff0c;minimax&#xff0c;零一万物&#xff0c;阿里控股&#xff0c;潞晨科技&#xff0c;阿里巴巴国际&#xff…

吴恩达2022机器学习专项课程(一) 5.2 向量化(1) 5.3 向量化(2)

问题预览/关键词 什么是向量化&#xff1f;向量化的好处是&#xff1f;如何向量化多元线性回归函数的参数&#xff1f;如何在Python中向量化参数&#xff1f;计算机底层是如何计算向量化的&#xff1f;向量化示例 笔记 1.向量化 一种在数学和计算中广泛使用的概念&#xff…

ROS 2边学边练(13)-- 创建一个功能包

前言 功能包是啥 简单理解&#xff0c;功能包就是一个文件夹&#xff0c;一个具备一定功能的文件夹&#xff0c;一个有组织有结构的文件夹&#xff0c;一个能方便分享给其他人使用的文件夹&#xff0c;比如我们的小海龟功能包&#xff0c;它就是一个文件夹&#xff0c;名字叫t…

番外篇 | 利用YOLOv5实现视频划定区域目标统计计数

前言:Hello大家好,我是小哥谈。视频划定区域目标统计计数是指在一个给定的视频中,通过划定一个特定的区域,对该区域内的目标进行统计计数的过程。这个过程通常涉及到目标检测和跟踪的技术。本篇文章就以YOLOv5算法为基础,实现视频划定区域目标统计计数!~🌈 目录…

3.6k star, 免费开源跨平台的数据库管理工具 dbgate

3.6k star, 免费开源跨平台的数据库管理工具 dbgate 分类 开源分享 项目名: dbgate -- 免费开源跨平台的数据库管理工具 Github 开源地址&#xff1a; GitHub - dbgate/dbgate: Database manager for MySQL, PostgreSQL, SQL Server, MongoDB, SQLite and others. Runs under…

汇编语言作业(二)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、实验总结 一、实验目的 1、巩固debug命令 2、使用 debug 来进行寄存器、内存中内容的查看和修改 3、使用 debug 来进行程序的调试 二、实验内容 上图是一段指令代码 &#xff0c;机器码和汇编…

JS详解-手写Promise!!!

前言&#xff1a; 针对js的深入理解&#xff0c;作者学习并撰写以下文章&#xff0c;由于理解认知有限难免存在偏差&#xff0c;请大家指正&#xff01;所有定义来自mdn。 Promise介绍&#xff1a; 对象表示异步操作最终的完成&#xff08;或失败&#xff09;以及其结果值. 描…

vue3表单参数校验+正则表达式

这里我们要实现在form表单中对表单项添加参数校验。 校验要求 我们的表单中有用户名、密码、电话号码、邮箱这四个项。 我们设置用户名为3到20位的非空字符 密码为3到25位非空字符 电话号码就用目前用的电话号码正则表达式&#xff0c;要求手机号码以 1 开头&#xff0c;第…

Unity框架,ET框架8.1版本的打包流程记录

目录 打包代码前置1.必须要安装Visusal Studio 2022的组件&#xff0c;如下图&#xff0c;必须都要进行安装&#xff0c;不然会在代码重构的时候报错&#xff0c;丢失SDK。Rider的版本必须2023及以上 步骤一、使用Rider编辑器打开项目后进行重构项目步骤二、使用HybirdCLR生成A…

UTONMOS:AI+Web3+元宇宙数字化“三位一体”将触发经济新爆点

人工智能、元宇宙、Web3&#xff0c;被称为数字化的“三位一体”&#xff0c;如何看待这三大技术所扮演的角色&#xff1f; 3月24日&#xff0c;2024全球开发者先锋大会“数字化的三位一体——人工智能、元宇宙、Web3.0”论坛在上海漕河泾开发区举行&#xff0c;首次提出&…

设计模式——原型模式05

原型模式核心复制&#xff0c;每次new出来的对象完全不一样&#xff0c;实现对象之间的隔离。 学习前最好先掌握jAVA值传递和深浅拷贝 设计模式&#xff0c;一定要敲代码理解 浅拷贝 克隆出对象&#xff0c;其中两者的引用类型属性是同一个对象。 对象信息 /*** author ggb…

Ps:合并到 HDR Pro

Ps菜单&#xff1a;文件/自动/合并到 HDR Pro Automate/Merge to HDR Pro 合并到 HDR Pro Merge to HDR Pro命令可以将同一场景的具有不同曝光度的多个图像合并起来&#xff0c;从而捕获单个 HDR 图像中的全部动态范围。 合并到 HDR Pro 命令分两步进行。 首先&#xff0c;需要…

Kubernetes(k8s):精通 Pod 操作的关键命令

Kubernetes&#xff08;k8s&#xff09;&#xff1a;精通 Pod 操作的关键命令 1、查看 Pod 列表2、 查看 Pod 的详细信息3、创建 Pod4、删除 Pod5、获取 Pod 日志6、进入 Pod 执行命令7、暂停和启动 Pod8、改变 Pod 副本数量9、查看当前部署中使用的镜像版本10、滚动更新 Pod11…

车载电子电器架构 —— 软件下载

车载电子电器架构 —— 软件下载 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无…