从0开始学习Linux——用户管理

 往期目录:

从0开始学习Linux——简介&安装

从0开始学习Linux——搭建属于自己的Linux虚拟机

从0开始学习Linux——文本编辑器

从0开始学习Linux——Yum工具

从0开始学习Linux——远程连接工具

从0开始学习Linux——文件目录

从0开始学习Linux——网络配置

从0开始学习Linux——防火墙配置

从0开始学习Linux——系统服务管理

从0开始学习Linxu——系统常用命令

从0开始学习Linux——进程管理

 上节教程中我们学习了进程的管理,这节教程我们来学习用户管理。

一、基本概念

用户管理是系统管理员必备的技能之一。它包括添加、修改、删除用户以及管理用户组、权限等方面。

1、用户(User):

  • 用户名(Username):用来标识用户的名称。
  • UID(User ID):每个用户都有一个唯一的数字标识符。
  • 主目录(Home Directory):用户登录后的默认目录。
  • Shell:用户登录时启动的命令行界面或程序。

2、用户组(group):

  • 主用户组(Primary Group):每个用户默认会有一个主组,主组通常与用户名相同。
  • 附加用户组(Secondary Groups):用户可以属于多个附加组,通常用于管理权限。

3、权限(Permisssion):

Linux 使用文件权限来控制哪些用户和组可以访问特定的文件或目录:

  • 读(r):可以查看文件内容。
  • 写(w):可以修改文件内容。
  • 执行(x):可以执行文件(如果文件是脚本或程序)。

二、用户管理

2.1 创建用户

我们可以使用useradd命令去创建用户。

useradd 用户名

上述命令会创建一个名为tom的用户。

 当然useradd命令可以结合其它参数去创建更为详细的用户信息,常见参数如下所示:

  • -d:指定用户的主目录
  • -m:如果用户主目录不存在则自动创建
  • -s:指定用户登录的shell
  • -g:指定用户的主用户组
  • -G:指定用户的附加用户组

上图中的命令执行以后就会去创建一个jeffrey的用户,并且指定/home/jeffrey/目录为jeffery用户的主目录,若我们不去指定,系统也会自动创建,只是目录名称和用户名保持一致,对于用户组我们没有指定的话默认用户组和用户名同名,同时我们给jeffery登录的shell指定为bash,当然我们不去指定系统分配的默认值也是bash。

补充:

在 CentOS 7 中,shell 是一个用户与操作系统之间的交互界面,它充当了命令行解释器。用户通过shell输入命令,shell 将命令解析、执行并返回输出。CentOS 7 是基于 Red Hat Enterprise Linux (RHEL) 的 Linux 发行版,因此其shell也遵循了常见的 Linux 系统约定。

1、shell的功能

  • 命令解释器:用户输入的命令通过 shell 进行解析,并将其传递给操作系统内核进行执行。
  • 脚本编程:用户可以编写 shell 脚本来自动化执行任务。
  • 管道与重定向:shell 支持管道 (|) 和重定向 (><) 来控制输入输出流的流向。
  • 环境管理:Shell 能够设置和管理环境变量,如 PATHHOMEUSER 等。

2、常见的shell类型

  • Bash (Bourne Again Shell):CentOS 7 默认的 shell,几乎所有的 Linux 系统都会使用它。它是基于传统的 Bourne Shell (sh) 的增强版,增加了许多功能,如命令补全、历史记录、变量支持、流程控制结构等。
  • sh (Bourne Shell):最早的 Unix shell 之一,CentOS 7 中通常通过符号链接指向 bash。
  • zsh (Z Shell):一个功能强大的 shell,提供了更多的功能,支持强大的自动补全和插件系统。
  • tcsh (TENEX C Shell):一种基于 C shell 的增强版 shell,适合喜欢 C 语言风格语法的用户。

3、shell启动文件

在 CentOS 7 中,bash 会在启动时读取一系列配置文件来初始化环境和设置。常见的启动文件包括:

  • /etc/profile:全局配置文件,为所有用户提供初始化环境设置。
  • ~/.bash.profile:用户级别的配置文件,通常用于设置用户特定的环境变量和启动程序。
  • ~/.bashrc:每次启动一个新的 shell 会话时读取的配置文件,常用于设置别名、函数和 shell 选项。
  • /etc/bashrc:系统级别的 bashrc 文件,影响所有用户。

2.2 设置用户密码

我们在创建好用户以后需要给用户设置密码。

对于密码的设置我们可以使用passwd命令。

passwd 用户名

 上述命令在执行的时候说我们输入的密码过于简单,因为我设置的密码是”123456“不符合字典要求。

当然我们也可以不去管它,继续输入刚才我们输入的密码,也是可以成功的。

注意:我们在修改密码时要输入两次,第一次输入密码,第二次重复第一次输入的密码。

这里我们无视系统的提示密码也是可以修改成功的,到此为止jeffery用户的密码就是”123456“。 

密码修改成功以后我们可以使用ssh命令去检查一下或者使用XSHELL工具用jeffery账户去登录Linux系统,看是否能够登录成功。

补充:

Linux启用了密码强度检查,以确保密码的复杂性足够强。

Linux 系统可能会要求密码至少包含以下内容:

  • 大写字母(A-Z)
  • 小写字母(a-z)
  • 数字(0-9)
  • 特殊字符(例如 !, @, #, $

当然我们也可以去更改密码策略文件。

系统密码策略通常由/etc/security/pwquality.conf文件进行控制。

 该文件中一些常见的选项如下所示:

  • minlen:设置最小密码长度。
  • minclass:设置密码必须包含多少种不同类型的字符(大写字母、小写字母、数字、特殊字符)。
  • maxrepeat:允许的最大重复字符数。

2.3 查看用户信息

id 用户名

 2.4 修改用户属性

我们可以使用usermod命令来修改用户的属性,包括用户名、主目录、默认 shell 等。

usermod命令常见参数如下所示:

  • -d:新的用户主目录
  • -e:新的过期日期
  • -f:指定日期后密码失效
  • -g:指定新的主用户组
  • -G:指定新的附加用户组
  • -l:新的登录名称
  • -L:锁定用户账号
  • -U:解锁用户账号
  • -u:新的用户uid
  • -p:修改密码
  • -s:新的用户登录shell类型

修改用户信息除了用usermod命令也可以用其它命令。

修改用户主目录

usermod -d 新的用户主目录 -m 用户名

 配置用户的默认shell

chsh或usermod -s shell路径 用户名

 查看用户账户的密码过期信息

chage -l username

 设置用户账户的过期日期

chage -E YYYY-MM-DD 用户名

2.5 删除用户

对于用户的删除我们可以使用userdel命令来完成。

当然如果我们要强制删除一个用户可以加上-r参数。

userdel 用户名
userdel -r 用户名

三、用户组管理

上述我们在创建和修改用户信息的时候提到了用户组这个概念,那么什么是用户组呢?

3.1 概念

用户组 是 Linux 系统中的一种重要的权限管理机制,它可以将多个用户组织到一起,从而允许对这些用户进行统一的管理。每个用户可以属于一个或多个用户组,而每个用户组通常用于控制用户对文件和资源的访问权限。

用户组的几个概念如下所示:

  • 组名:每个用户组有一个名称,用来标识该组。
  • 组ID(GID):每个用户组有一个唯一的组ID(Group ID),类似于用户ID(UID)。该ID用于系统内部标识该组。
  • 用户与组的关系:每个用户至少属于一个用户组,用户可以通过用户组来管理访问权限。一个用户也可以是多个用户组的成员。

3.2 用户组的必要性

简化权限管理

用户组可以帮助系统管理员以更高效的方式管理权限。例如,如果有一组用户都需要访问同一个资源,管理员可以将这些用户放入同一个用户组,并为该组设置访问权限。这样就不需要单独为每个用户配置权限,从而简化了管理工作。例如,假设有三个用户user1、user2和user3需要访问一个特定的文件夹,那么可以将这三个用户都加入同一个用户组(比如group1),然后设置该组对文件夹的读写权限,所有组内用户都能继承该权限。

增强安全性

通过合理使用用户组,系统管理员能够更容易地控制谁可以访问哪些资源。每个用户组可以有不同的访问权限,确保只有授权的用户可以访问敏感信息。例如,某些文件或目录可以设置只允许特定用户组(如管理员组)访问,而其他用户组则无法访问。

便于管理和维护

当用户人数较多时,逐个管理用户的权限非常繁琐。使用用户组可以将相同权限需求的用户集中管理。例如,某些用户可能只需要读取文件,而另一些用户则需要修改文件。通过创建不同的用户组(如只读组和读写组),管理员可以根据不同的工作需求将用户分配到相应的组中,从而使权限管理更加高效。

方便软件与服务的权限控制

许多软件和服务(如Web服务器、数据库、应用程序等)在运行时会用到用户组权限。例如,Apache HTTP 服务器可能会以某个特定用户组运行,为了让该服务能够访问指定的文件,管理员可以将该服务的运行用户添加到相关的用户组中,进而授权访问相应的资源。

防止资源冲突

通过合理的用户组管理,管理员可以防止不同用户之间对同一资源的访问冲突。如果用户之间的权限和访问控制设计不当,可能会导致一些问题,比如多个用户同时修改同一个文件。通过将具有相似访问需求的用户组织到一个用户组内,可以减少这类问题的发生。

3.3 创建用户组

groupadd命令可以用于创建一个新的用户组。

groupadd 用户组名称

我们使用groupadd命令创建好用户组以后就会在/etc/group文件里面创建添加对应的值。

 上述文件中存储的用户组的格式是group_name:x:GID:user1,user2,user3,它的含义为:

  • group_name:组名
  • x:密码字段,通常不使用
  • GID:用户组id
  • user:属于该用户组的用户

3.4 用户添加到用户组

如果我们想要将某个用户添加到指定的用户组,我们可以使用usermod命令,这个命令前面我们已经了解过了。

usermod -aG 用户组名 用户

上述命令中的两个参数-a和-G的含义如下所示:

  • -a:表示追加(附加)到组,而不会将用户从其他组中移除。
  • -G:表示指定要添加的组名。

3.5 删除用户组

如果我们想要删除某个用户组,可以使用groupdel命令。

groupdel 用户组名

3.6 查看用户组信息

查看某个用户所属的用户组

groups 用户名

查看某个用户组有哪些用户

getent group 用户组名

 四、sudo命令

4.1 简介

sudo是 SuperUser Do 的缩写,它是一种用于以管理员权限执行命令的工具。通过sudo,用户能够执行需要 root 权限的操作,而不需要切换到 root 用户。使用sudo可以减少误操作的风险,因为普通用户仅能执行被授权的命令。

4.2 sudo工作原理

  • 用户验证: 每次使用sudo时,系统会要求用户输入自己的密码,而不是 root 用户的密码。系统会验证该用户是否有权限使用sudo执行指定的命令。

  • 权限配置: sudo的权限配置通常存储在/etc/sudoers文件中。该文件定义了哪些用户或用户组可以使用sudo,以及他们可以执行哪些命令。

  • 执行命令: 如果用户有权限,sudo会以 root 用户的身份执行命令。命令执行完成后,用户返回到原始权限状态。

4.3 sudo操作

【sudo安装】

在Centos7系统上一般默认是安装了sudo命令。

如果没有安装可以使用下述命令进行安装。

su -c "yum install sudo"

【sudo命令】

sudo 其它命令

【sudo常见权限】

sudo命令常见选项如下所示:

  • -u:以其他用户身份运行命令
  • -i:以交互模式运行一个新的 shell(模拟登录)
  • -s:执行指定的命令并启动一个 shell
  • -l:列出当前用户的sudo权限
  • -k:清除缓存的时间戳
  • -v:延长密码的有效时间

这里我们简单举两个例子:

4.4 sudo权限配置

前面的教程我都是使用的是root账号进行操作,现在我切换为上述创建的tom用户。

假设现在我们以tom的身份要去关闭防火墙服务。

上述命令执行以后,说权限不够需要认证,因此我们先要输入root账号的密码。

 既然权限不够那么我们就使用sudo命令去执行。

 上述命令执行完成以后,我们需要输入tom账户的命令,然后提示tom用户没有在sudoer文件里面。

那么这到底是怎么回事呢?

这是因为sudo的权限配置通常存储在/etc/sudo​​​​​​​ers文件中。该文件定义了哪些用户或用户组可以使用sudo​​​​​​​,以及他们可以执行哪些命令。

因此我们需要先用root账户去修改/etc/sudoers文件。

注意:为了安全起见,应该使用visudo命令编辑/etc/sudo​​​​​​​ers文件。visudo会自动检查语法错误,并且在编辑时锁定文件,以防止多用户同时编辑,当然你想要用文本编辑工具去编辑/etc/sudoers文件也可以。

这里为了安全我们直接在root账户下使用visudo命令去执行编辑。 

visudo

 注意:这里直接输入visudo命令即可,执行后就会帮我们打开/etc/sudo​​​​​​​ers文件,具体操作和前面学习的vi/vim文本编辑器类似。

 /etc/sudo​​​​​​​ers文件中的每一行的格式通常如下所示:

<user> <hostname> = (<runas_user>) <commands>

上述命令中的各个参数含义如下所示:

  • user:用户名,指明要配置权限的用户名。
  • hostname:此规则所适用的主机。
  • runas_user:指定user用户可以使用sudo以哪些身份运行命令。
  • commands:指明user用户使用sudo可以执行的命令。

假设这里我们要给tom配置sudo权限。

 上述配置表示tom使用sudo时拥有和root相同的权限。

当然我们也可以只给tom配置指定的sudo权限,例如只允许tom用户以sudo去执行yum和ls命令。

tom    ALL=(ALL)       /usr/bin/yum, /bin/ls

配置完成以后我们就可以保存退出。

注意:我们在保存退出的时候一定要强制保存退出即在命令行模式下执行wq!命令。

接下来我们就来检验一下tom用户是否拥有sudo权限以及拥有哪些权限。

sudo -l -U tom

现在我们切换为tom账户,然后看下能不能使用sudo去操作防火墙服务。

现在我们可以看出此时tom用户可以去执行防火墙服务了。

我们在执行上述sudo命令的时候我们可以发现,执行sudo命令需要输入用户的密码,那么能不能不输入密码直接执行sudo命令呢?

答案是当然可以的,我们只需要去修改/etc/sudo​​​​​​​ers文件即可。

tom    ALL=(ALL)       NOPASSWD: ALL

修改以后我们再来以tom身份去操作防火墙服务。

修改以后我们就可以发现,此时执行sudo命令就不需要输入tom用户的密码了。

 注意:我们在给用户配置sudo权限和免密的时候一定要慎重要根据业务需求来,一定要确保账户和系统的安全,如果可能的话,使用最小权限原则,即只授予 tom 必需的命令权限。

五、su命令

我们在日常操作过程中可能会出现一个场景:同时操作几个账户,按照前面教程的做法,我们需要重新开个系统登录账户或者使用XSHELL重新构建一个会话。这样操作就很麻烦,那么能不能再一个会话或者一个系统中进行账号的自由切换呢?答案当然是可以的。

su(substitute user)是一个允许你以不同用户身份登录系统的命令。它通常用于切换到 root 用户或者其他普通用户。

su - 用户名

注意:当我们不去指明用户名的时候默认切换到root账号。

su 用户名

当我们使用"su 用户名"的时候,若用户名是root,那么就需要输入密码,若不是root则不需要输入密码。

“su - 用户名”命令和“su 用户名”命令都可以切换用户,那么它们之间有啥区别呢?

特性su 用户名su - 用户名
切换用户身份
切换工作目录保持当前目录(原用户目录)切换到指定用户的家目录(/home/用户名)
加载环境变量
加载用户配置文件否(不会加载.bash_profile)是(会加载.bash_profile​​​​​​​ 或.bashrc)
行为模拟不完全模拟登录完全模拟登录,类似登录到用户的 shell

 su命令常见选项如下所示:

  • -:加载目标用户的环境。

  • -c:执行一条命令后退出。例如,我们要以 root 身份执行某个命令而不切换整个用户。

su -c 'ls /root'

这个命令会以 root 用户身份执行ls /root,并显示 /root 目录下的内容,然后退出 root 用户。

上述我们讲解sudo命令的时候,讲解过sudo -u命令可以实现以某个身份执行命令,那么它们之间的区别如何呢?

  • su:直接切换到目标用户,通常需要输入目标用户的密码(尤其是 root)。如果使用 su -,会加载目标用户的环境。
  • sudo:允许你以特定用户(通常是 root)的身份执行命令,而不需要切换用户。你只需要输入自己的密码,而不是目标用户的密码。

但是更多的时候我们可以选择使用sudo命令,理由如下:

  1. 安全性:sudo只授权执行特定的命令,而不是完全切换用户。这可以减少潜在的安全风险。
  2. 日志记录:sudo会记录执行的命令和操作,而su通常不会。管理员可以通过查看 sudo/var/log/auth.log来了解用户的活动。
  3. 灵活性:通过sudo,你可以精确控制哪些用户能够执行哪些命令,这为系统管理提供了更高的灵活性和可控制性。

本节教程内容就到这里,更多内容在后续教程中讲解。

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

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

相关文章

Docker 安装Immich教程

Immich 是一个开源的自托管照片和视频管理平台,专为帮助用户存储、管理、和分享个人媒体库而设计。Immich 的目标是提供一个类似 Google Photos 的替代方案,但不依赖于第三方服务,用户可以完全控制自己的数据。 本章教程,记录如何用Docker部署安装Immich,使用的操作系统的…

回首遥望-C++内存对齐的思考

这一章节主要巩固一下学习C/C时内存对齐相关的内容&#xff01; 文章目录 什么是内存对齐&#xff1f;为什么要有内存对齐&#xff1f;如何进行内存对齐&#xff1f;致谢&#xff1a; 什么是内存对齐&#xff1f; 这里不提及一堆啰嗦概念&#xff0c;就结合实际出发&#xff0…

从代码到云端:使用PyCharm打包Python项目并部署至服务器的完整指南

从代码到云端&#xff1a;使用PyCharm打包Python项目并部署至服务器的完整指南 引言 随着云计算技术的发展&#xff0c;越来越多的开发者选择将自己的应用部署到云服务器上。对于Python开发人员来说&#xff0c;如何高效地将本地开发完成的应用程序迁移到远程服务器成为了一个…

【ComfyUI +BrushNet+PowerPaint】图像修复(根据题词填充目标)——ComfyUI-BrushNet

运行代码&#xff1a;https://github.com/nullquant/ComfyUI-BrushNet 源码1&#xff1a;https://github.com/TencentARC/BrushNet 源码2&#xff1a;https://github.com/open-mmlab/PowerPaint 上图&#xff0c;中间未 random_mask.safetensors结果&#xff0c;最右边图未segm…

(时序论文阅读)TimeMixer: Decomposable Multiscale Mixing for Time Series Forecasting

来源论文iclr2024 论文地址&#xff1a;https://arxiv.org/abs/2405.14616 源码地址&#xff1a; https://github.com/kwuking/TimeMixer 背景 数据是有连续性&#xff0c;周期性&#xff0c;趋势性的。我们这篇文章主要围绕的是用MLP结构来预测数据的周期性具体为&#xff…

大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

3196. I’m stuck!-13年12月CCF计算机软件能力认证

关键词 图通路&#xff0c;DFS/BFS 题目 思路 几点想说明的&#xff1a; 为什么要两个DFS&#xff1b;dfs1表示的是求从S出发能到达的所有的点&#xff1b;dfs2是考虑从T出发回溯&#xff0c;能到达的所有点&#xff0c;回溯去走&#xff0c;相当于此时T才是起点check函数&…

若依笔记(九):商城系统apk打包与调试

目录 env修改 nginx修改 apk打包 按照前文所述app版本保持2.2&#xff0c;使用uniapp作为生成工具&#xff0c;因为app版本涉及到登录、商品、支付&#xff0c;微信小程序打包需要企业主权限&#xff0c;所以使用apk打包&#xff0c;使用uniapp自带的云打包&#xff0c;本地…

算法练习记录

dp&#xff08;完全&#xff0c;线性&#xff0c;树状&#xff0c;状压&#xff0c;数位&#xff09;> 搜索 基础算法&#xff08;二分&#xff0c;前缀和&#xff0c;高精度&#xff0c;公约数&#xff0c;公倍数&#xff0c;质数&#xff0c;排序&#xff09; > 数据结…

深入浅出 ChatGPT 底层原理:Transformer

Transformer 在人工智能和自然语言处理领域,Transformer架构的出现无疑是一个里程碑式的突破。它不仅推动了GPT(Generative Pre-trained Transformer)等大型语言模型的发展,还彻底改变了我们处理和理解自然语言的方式。 GPT与Transformer GPT 近几年&#xff0c;人工智能技…

【C语言】js写一个冒泡顺序

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xff0c;直接返回 } //…

Leetcode3345. 最小可整除数位乘积 I

Every day a Leetcode 题目来源&#xff1a;3345. 最小可整除数位乘积 I 解法1&#xff1a;枚举 至多循环 10 次&#xff0c;一定会遇到个位数为 0 的数字&#xff0c;数位乘积是 0&#xff0c;一定是 t 的倍数。 所以暴力枚举即可。 代码&#xff1a; /** lc appleetcod…

element的from表单校验问题 —— 校验内容正确、但触发错误提示

问题&#xff1a;二次封装了el-radio&#xff0c;在选择后触发了form的校验&#xff0c;并提示了错误。 分析&#xff1a;输出radio选择后的value值是正确&#xff0c;但还是触发了错误校验提示&#xff0c;可能纯在以下几个问题 1. v-model 绑定的form参数和rules不一致 2. e…

工业相机选取

1.相机分类&#xff1a; 1.1 在相机曝光方式中&#xff0c;全局曝光和卷帘曝光是两种主流技术。CCD相机通常采用全局曝光方式&#xff0c;而CMOS相机则可能采用卷帘曝光。 面阵相机与全局曝光关联与区别 关联&#xff1a;面阵相机可以使用全局曝光作为曝光方式&#xff0c;但…

使用Windows自带的IIS搭建FTP服务端

1、启用IIS功能 2、打开IIS 3、将默认的站点删除 4、创建FTP服务端 &#xff08;1&#xff09;选中站点&#xff0c;然后点击鼠标邮件&#xff0c;点击添加FTP站点 &#xff08;2&#xff09;指定站点名称和物理路径 物理路径&#xff1a;FTP服务端数据的路径&#xff0c;F…

研界的福尔摩斯——扩增子+qPCR

微生物在生物地球化学循环、动植物健康等多种领域发挥作用&#xff0c;因此&#xff0c;精确测量微生物绝对丰度对理解其与人类健康、植物生长等的关系至关重要。 常规扩增子测序分析只能解析样本中的物种组成和其相对丰度信息&#xff0c;并不能反映样本每种微生物的真实数量…

期权懂|期权到期了,可以不行权吗?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 期权到期了&#xff0c;可以不行权吗&#xff1f; 期权到期后&#xff0c;投资者并非必须行权。如果行权无利可图或不符合预期收益&#xff0c;可以选择放弃行权&#xff0c;让期…

SL1571B 输入5V2A或单节锂电池,升压12V 10W 升压恒压芯片

一、概述 SL1571B是一款高功率密度的异步升压转换器&#xff0c;专为便携式系统提供高效且小尺寸的解决方案。它内置MOS管&#xff0c;具有120mΩ功率开关&#xff0c;支持宽输入电压范围&#xff0c;并具备多种保护功能。 二、主要特性 输入电压范围&#xff1a;SL1571B的输…

接口测试vs功能测试

接口测试和功能测试的区别&#xff1a; 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什…

ubuntu20.04_从零LOD-3DGS的复现

环境要求 创建环境 conda create -n lod-3dgs python3.71. 安装CUDA11.6和相应cuDNN。 1.1 CUDA CUDA安装参考CUDA1&#xff1b;CUDA11.6&#xff0c;安装过程相似。 1.2 cuDNN 参考&#xff0c;下载对应版本后复制到对应CUDA里面。 cp cuda/lib64/* /usr/local/cuda-11…