运维系列.Linux下的用户管理

运维系列
Linux下的用户管理

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/139262803
HuaWei:https://bbs.huaweicloud.com/blogs/428280

本文介绍Linux中创建、删除、修改用户和用户组,查看用户相关进程、查询用户历史操作等内容。

在这里插入图片描述


1. 用户和用户组的概念

1.1 Linux中的用户

Linux系统中,用户是指能够登录系统并使用资源的个体。每个用户都有一个唯一的用户名和对应的数字型用户IDUID)。用户可以属于一个或多个用户组。Linux系统使用用户和用户组来管理对系统资源的访问权限,以确保系统的安全性和稳定性。

用户可以分为以下几类:

用户可以分为以下几类:

  1. 超级用户root):拥有系统的最高权限,可以执行任何操作。
  2. 系统用户:由系统创建的用户,通常用于运行特定的服务或程序,如www-dataWeb服务器用户)、mysqlMySQL数据库用户)等。
  3. **普通用户:**由管理员创建的用户,用于日常工作和管理。
    用户的信息存储在以下两个文件中:
文件名描述
/etc/passwd存储用户的基本信息,如用户名、UID、主目录、默认Shell等
/etc/shadow存储用户的密码信息(加密后的密码)

/etc/passwd如:

在这里插入图片描述
可以看出,在Linux系统中,/etc/passwd文件列出的用户不仅包括实际的人类用户,还包括许多系统用户。这些系统用户主要用于运行和管理系统服务,而不是用于常规的登录和交互。这里是一些关键点来帮助你理解这些用户的存在和目的:

  1. 系统用户:

这些用户通常用于特定的系统服务和守护进程(如web服务器、数据库服务等)。

系统用户通常不允许登录系统(即它们的shell通常设置为/usr/sbin/nologin或/bin/false),这是为了安全性,防止这些用户被用于普通的登录。

例如,www-data是web服务器(如ApacheNginx)的默认用户,syslog用于系统日志服务,messagebus用于D-Bus消息总线系统。

  1. 实际用户:

实际用户是指那些可以登录系统并进行交互的用户账户。这些用户的shell通常设置为/bin/bash或其他有效的shell。

在你提供的列表中,jclee95看起来像是一个实际的用户,因为它的shell设置为/bin/bash,并且有一个指向家目录的路径/home/jclee95。

1.1 用户组的概念

用户组是 具有相似 属性 或 权限 的用户的集合。每个用户组也有一个 唯一的组名 和 对应的 数字型组ID(GID)。 用户组的存在简化了对用户的管理,可以方便地对一组用户进行权限控制。

用户组可以分为以下两类:

  1. 主要组(Primary Group):用户的默认组,在创建用户时指定。用户创建的文件的所属组默认为该用户的主要组。
  2. 附属组(Secondary Group):用户可以属于多个附属组,以获得对应组的权限。
    用户组的信息存储在以下文件中:
文件名描述
/etc/group存储用户组的基本信息,如组名、GID等

通过合理地规划和管理用户及用户组,可以有效地控制用户对系统资源的访问,提高系统的安全性和可管理性。

你可以使用vim打开/etc/group文件(也可以用cat命令简单查看):

vim /etc/group

其内容结构如:
在这里插入图片描述

2. 用户信息查询

Linux 系统中,可以使用id命令查询用户的信息。该命令可以显示指定用户或当前用户的 用户IDUID)、组IDGID)以及所属的用户组信息。

2.1 id命令的用法简介

id命令的基本语法如下:

id [OPTION]... [USER]...

以下是id命令的常用选项:

选项描述
-a忽略此选项,仅用于与其他版本兼容
-Z, --context仅打印进程的安全上下文
-g, --group仅打印有效的组ID
-G, --groups打印所有的组ID
-n, --name配合-ugG选项使用,打印名称而不是数字ID
-r, --real配合-ugG选项使用,打印真实ID而不是有效ID
-u, --user仅打印有效的用户ID
-z, --zero使用NUL字符而不是空格分隔条目,在默认格式中不允许使用
–help显示帮助信息并退出
–version显示版本信息并退出

如果不指定任何选项,id 命令会打印一组有用的用户信息。

2.1 id命令的用法示例

示例1:查看当前用户的信息:

id

输出形如:

uid=1000(jclee95) gid=1000(jclee95) groups=1000(jclee95),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),116(netdev),1001(docker)

在这里插入图片描述

示例2:查看指定用户的信息

$ id root

输出:

uid=0(root) gid=0(root) groups=0(root)

在这里插入图片描述

示例3:仅显示当前用户的UID

$ id -u
1000

示例4:显示当前用户所属的所有组的名称

$ id -Gn
john adm cdrom sudo dip plugdev lpadmin sambashare

2.1 getent命令

2.1.1 getent用法解析

getent 命令是一个用于查询系统数据库的工具,它可以从不同的系统数据库中获取条目,如用户账户、组、主机名等。这个命令非常有用,因为它不仅可以访问传统的 /etc/passwd/etc/group 文件,还可以查询由 nsswitch.conf 配置的其他数据源,例如 LDAP

基本的 getent 命令格式如下:

getent [options] database [key ...]

其中:

  • database:指定要查询的数据库名称;

  • key:指定要查询的键值,例如用户名、组名等。

getent 支持多种数据库,这些数据库包括但不限于:

  • passwd:用于获取用户账户信息。
  • group:用于获取用户组信息。
  • hosts:用于获取主机名和IP地址映射。
  • services:用于服务和它们对应的端口号及协议。
  • networks:网络名称和网络号。
  • protocols:网络协议信息。
  • shadow:用户密码信息(通常需要超级用户权限)。
  • netgroup:网络组信息。

getent 提供了几个选项来修改其行为:

  • -i, --no-idn:禁用国际化域名编码。
  • -s, --service=CONFIG:指定服务配置。
  • -?, --help:显示帮助信息。
  • --usage:显示简短的使用信息。
  • -V, --version:打印程序版本。

2.1.2 示例:查询用户

getent命令可以用来获取条目的数据库,如密码或组数据库。要列出所有用户,可以使用:

getent passwd

这将列出/etc/passwd文件的内容,其中包含了系统上每个用户的信息:

在这里插入图片描述

也可以指定用户组名以查询特定用户组,如:

getent passwd root

在这里插入图片描述

2.1.2 示例:查询用户组

下面的命令将显示指定用户名的用户信息。

getent group

在这里插入图片描述
也可以指定用户组名以查询特定用户组,如:

getent group utmp

在这里插入图片描述

当然,该命令还可以查询其它的信息如查询特定服务可以用getent services ssh,这将显示SSH服务的端口和协议信息,感兴趣的读者可以自己试一试,这不是本文介绍的要点,因此不做展开。

getent 命令非常适合在多种数据源环境中工作,例如在使用 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)或其他网络服务进行用户和组管理的系统中。它提供了一种统一的方法来查询这些信息,无论它们实际存储在何处。

3. /etc下的 passwd、group、shadow文件

在前面的例子中,我们已经初步在各种零散的命令中接触了/etc/passwd/etc/group文件。/etc/passwd/etc/group/etc/shadow等文件共同构成了Linux系统中用户和组管理的基础。

系统管理员可以通过修改这些文件来添加、删除、修改用户和组的信息,但通常建议使用专门的命令(如useraddusermodgroupadd等)来进行这些操作,以确保数据的一致性和完整性。

3.1 三大用户文件简介

在Linux系统中,/etc/目录下有几个重要的文件用于存储用户和组的信息。这些文件包括:

文件名作用
passwd存储用户账户信息,包括用户名、UID、GID、主目录、登录Shell等。
shadow存储用户密码的加密哈希值以及密码策略信息。
group存储用户组信息,包括组名、GID和属于该组的用户列表。

这些文件共同构成了Linux系统的用户和权限管理的基础。

3.2 passwd文件

3.2.1 passwd文件的结构

/etc/passwd文件是Linux系统中的一个重要文件,它包含了系统中所有用户账户的信息。每一行代表一个用户,每行有7个字段,字段之间用冒号(:)分隔。例如:
在这里插入图片描述
其格式可以归纳为:

username:password:UID:GID:GECOS:directory:shell

这些字段的含义如下:

  1. username:用户名。
  2. password:密码字段,在现代Linux系统中通常为x,实际的密码哈希存储在/etc/shadow文件中。
  3. UID:用户ID(User Identifier)。
  4. GID:用户的主组ID(Group Identifier)。
  5. GECOS:用户的全名或注释字段。
  6. directory:用户的主目录。
  7. shell:用户的默认登录Shell。

比如:

root:x:0:0:root:/root:/bin/bash

3.2.2 UID(User Identifier)

UID(用户标识符)是一个非负整数,用于在系统内部标识每个用户。在Linux系统中,UID为0的用户是超级用户(root),拥有最高权限。普通用户的UID通常从1000开始分配(在某些系统中可能从500开始)。

3.2.3 GID(Group Identifier)

GID(用户组标识符)是一个非负整数,用于在系统内部标识每个用户组。在/etc/passwd文件中,GID字段表示用户的主组ID。用户可以属于多个组,但只能有一个主组。

3.2 group文件

/etc/group文件存储了系统中所有用户组的信息。每行代表一个组,字段之间用冒号(:)分隔,主要字段包括:

groupname:password:GID:user_list
  1. groupname:组名。
  2. password:组密码字段,通常为x,表示使用/etc/gshadow文件中的密码。
  3. GID:组ID(Group Identifier)。
  4. user_list:属于该组的用户列表,用户名之间用逗号(,)分隔。

3.3 shadow文件

/etc/shadow文件存储了用户密码的加密哈希值以及密码策略信息。这个文件的权限通常比较严格(只有root可读写),以保护用户密码的安全。每行代表一个用户,字段之间用冒号(:)分隔,例如:

在这里插入图片描述

可以看到一个用户行中,主要字段包括:

username:encrypted_password:last_change:min_days:max_days:warn_days:inactive_days:expiration_date

其中:

  1. username:用户名。
  2. encrypted_password:加密后的密码哈希值。
  3. last_change:上次修改密码的日期(从1970年1月1日开始的天数)。
  4. min_days:两次修改密码之间所需的最小天数。
  5. max_days:密码的最长有效期(天数)。
  6. warn_days:密码过期前多少天开始警告用户。
  7. inactive_days:密码过期后多少天禁用账户。
  8. expiration_date:账户的过期日期(从1970年1月1日开始的天数)。

4. 用户的创建、切换、删除

在Linux系统中,用户的创建和删除是日常管理任务的一部分。这些操作通常通过命令行工具进行,以确保系统的用户管理是适当和安全的。

4.1 用户的创建

4.1.1 创建用户

在Linux中,创建新用户通常使用useradd命令。这个命令允许管理员添加新用户并设置用户的初始配置,如用户的主目录、登录Shell等。其基本命令格式为:

sudo useradd [options] username

常用选项:

  • -m, --create-home:创建用户的主目录。
  • -d, --home-dir HOME_DIR:指定用户的主目录。
  • -s, --shell SHELL:指定用户的登录Shell。
  • -g, --gid GROUP:指定用户的初始登录组。
  • -G, --groups GROUPS:指定用户的附加组。
  • -u, --uid UID:为用户指定UID。

最简单的新增用户如:

sudo useradd test1

使用cat /etc/passwd命令可以查看到新增的一个名为test1的用户:

在这里插入图片描述

例如创建一个名为test2的用户,并通过-m选项为其创建主目录,通过-s选项指定bash(/bin/bash)为登录的Shell

sudo useradd -m -s /bin/bash test2

在这里插入图片描述

通过指定-m参数,在home下新增了用户主目录:
在这里插入图片描述

4.1.2 设置密码(passwd)

在Linux系统中,创建用户后,通常需要为新用户设置密码以确保账户的安全性。密码可以通过passwd命令来设置。基本命令格式:

sudo passwd [username]

当运行此命令时,系统会提示你输入新密码,并要求再次输入以确认。
现在为为新创建的用户test1test2设置密码:

在这里插入图片描述
可见,当运行此命令时,系统会提示你输入新密码,并要求再次输入以确认。

4.1.2 创建时指定用户组(-g、-G)

在创建用户时,可以指定用户的初始登录组(主组)和附加组。这可以通过useradd命令的-g(指定主组)和-G(指定附加组)选项来实现。

sudo useradd -g [主组] -G [附加组1,附加组2,...] [username]
  • -g 选项后跟用户的主组ID或名称。

  • -G 选项后跟一个或多个附加组ID或名称,用逗号分隔。

例如,先创建一个名为wheel的用户组,再创建一个名为test3的用户,将其主组设置为users,并将其添加到wheelaudio两个附加组:

sudo groupadd wheel
sudo useradd -m -s /bin/bash -g users -G wheel,audio test3

4.2 用户的切换

在Linux系统中,切换用户是一个常见的操作,特别是当你需要以不同用户的权限执行任务时。这可以通过使用su(substitute user或switch user)命令来实现。其基本命令格式为:

su [options] [username]

其中常用选项:

  • --l--login:以登录shell启动,这意味着会切换到用户的主目录,加载用户的环境变量等。
  • -c--command:作为指定用户运行单个命令,命令执行完毕后返回原用户。

如果不指定用户名,su命令默认切换到超级用户(root)。当执行su命令时,系统通常会要求输入目标用户的密码。

如切换到root用户:

su

切换到普通用户(例如test2):

su - test2

这将切换到用户test2,并加载test2的用户环境。如果设置了密码,则需要输入

4.3 用户的删除

删除用户在Linux中通常使用userdel命令。这个命令允许管理员从系统中删除用户账户。其基本命令格式为:

sudo userdel [options] username

其中常用选项:

  • -r, --remove:表示删除用户的同时,删除用户的主目录和邮件目录。

对于test1用户,可以直接删除它:

sudo userdel test1

在这里插入图片描述
可以看到用户test1被正常删除了。

如果删除刚刚创建的名为test1的用户及其主目录时使用 -r 选项:

sudo userdel -r test1

将有错误提示:

  • userdel: test1 mail spool (/var/mail/test1) not found
  • userdel: test1 home directory (/home/test1) not found

这是因为,创建 test1 用户时没有使用 -m 选项(或者相应的配置没有设置为自动创建主目录),则不会为该用户创建主目录。同样,邮件系统没有为该用户配置或创建邮件目录,该目录也不会存在。因此有上面的错误信息。
不过这不会妨碍用户的正常删除。

由于创建用户test2时使用了-m选项,如果我们希望删除用户时将对应的用户目录也一块删除,则删除用户时需要增加一个 -r 选项:

sudo userdel -r test2

在这里插入图片描述

这里使用 cat /etc/passwd | grep test2 过滤掉了其它用户行。可见删除后test2用户目录也删除了。(另外,/var/mail/test2 在test2用户创建时没有对应建立,这不影响。)

5. 用户信息修改

有时候,管理员可能需要修改现有用户的信息,如更改用户名、用户组、登录Shell或主目录等。这些操作通常通过命令行工具 usermod 来完成。该命令的基本命令格式为:

sudo usermod [options] username

其中选项有:

  • -l, --login NEW_LOGIN:更改用户的登录名。

  • -d, --home HOME_DIR:更改用户的主目录。

  • -m, --move-home:移动用户的主目录内容到新位置。

  • -s, --shell SHELL:更改用户的登录Shell。

  • -g, --gid GROUP:更改用户的主组。

  • -G, --groups GROUPS:更改用户的附加组。

  • -a, --append:将用户添加到补充组,而不移除其它组。

  • -u, --uid UID:更改用户的UID。

  1. 更改用户名
    将用户名从 oldname 更改为 newname:
sudo usermod -l newname oldname
  1. 更改用户主目录:

更改用户 username 的主目录到 /new/home/dir 并移动现有内容:

sudo usermod -d /new/home/dir -m username
  1. 更改登录Shell

更改用户 username 的登录Shell为 /bin/zsh

sudo usermod -s /bin/zsh username
  1. 更改用户的主组和附加组

更改用户 username 的主组为 newgroup,并设置附加组为 group1group2

sudo usermod -g newgroup -G group1,group2 username
  1. 添加用户到附加组而不移除现有组

将用户 username 添加到 additionalgroup 组,同时保留其在其他组的成员资格:

sudo usermod -aG additionalgroup username

6. 用户相关进程

管理和查询特定用户的进程是常见的系统管理任务,比如当你删除一个用户时,就需要关闭这个用户跑起来的进程。管理和查询特定用户的进程还可以帮助管理员监控资源使用情况、终止不需要的进程或调试用户级的应用问题。

6.1 查询指定用户的所有进程

使用 ps 命令结合适当的选项可以列出特定用户的所有进程:

ps -u username

例如查看当前用户test1对应的所有进程:

ps -u test1

在这里插入图片描述
可看到,输出将包括进程ID、终端、运行时间和命令名称等信息。

6.2 终止指定用户的所有进程

如果需要终止某个用户的所有进程,可以使用 pkillkillall 命令。

使用 pkill

sudo pkill -u username

这个命令将发送SIGTERM信号到所有属于指定用户的进程,请求它们正常退出。

默认情况下,pkill 发送的是 SIGTERM 信号,这是一个“温和”的终止信号,允许进程进行清理操作后再退出。然而,并非所有进程都会响应 SIGTERM 信号,比如:。
在这里插入图片描述
可以使用kill进一步删除,如:

kill -s 9 7913

使用 killall

sudo killall -u username

这个命令的作用类似于 pkill,也是发送SIGTERM信号来终止用户的所有进程。

默认情况下,pkillkillall 发送的是SIGTERM信号,该信号允许进程进行清理操作后再退出。如果进程没有响应,你可能需要发送更强制的信号,如SIGKILL(使用 -9 选项),例如 sudo pkill -9 -u username

7. 用户操作

在Linux系统中,查询用户的历史操作通常涉及到查看用户的命令行历史记录。这可以帮助系统管理员了解用户在系统上执行了哪些命令,对于审计、监控或故障排查等场景非常有用。

7.1 查看命令历史

Linux系统通常使用.bash_history文件来存储用户的命令行历史。这个文件位于用户的主目录下。

查看当前用户的命令历史可以使用下面的方法:

cat ~/.bash_history

在这里插入图片描述

或者者使用history命令:

history

在这里插入图片描述

可见,它们都将列出当前用户会话中执行的命令历史。

7.2 审计日志

对于更详细的用户活动跟踪,可以使用Linux的审计系统(auditd)。auditd是一个强大的工具,可以配置来记录更详细的用户活动,包括文件访问、系统调用等。

7.1 安装审计守护进程

sudo apt-get install auditd    # Debian/Ubuntu
# 或者
sudo yum install audit         # CentOS/RHEL

配置审计规则:
例如,要审计所有用户对特定文件的访问:

sudo auditctl -w /path/to/file -p war -k keyname

这里-w指定要监控的文件路径,-p指定要监控的操作(写入w、读取r、属性更改a),-k是一个标签,用于在报告中识别这条规则。

7.2 配置审计规则

例如,要审计所有用户对特定文件的访问:

sudo auditctl -w /path/to/file -p war -k keyname

这里-w指定要监控的文件路径,-p指定要监控的操作(写入w、读取r、属性更改a),-k是一个标签,用于在报告中识别这条规则。

7.3 查看审计日志

sudo ausearch -k keyname

这将显示所有标记为keyname的相关活动。

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

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

相关文章

c# 输出二进制字符串

参考链接 C#二进制输出数据_c# 输出二进制 123.5的方法-CSDN博客https://blog.csdn.net/a497785609/article/details/4572112标准数字格式字符串 - .NET | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/standard/base-types/standard-numeric-format-strings#BFo…

大规模团队的数据库开发,如何用OceanBase工具快速建立企业级账号体系

前言 为了让数据库开发的安全性与可靠性得以充分保障,数据库开发工具的管控能力显得尤为关键。构建一个健全的账号体系,能够协助开发团队实现对数据库开发工具的全方位管控,从而有效防范各类数据安全隐患,确保数据库开发的顺利进…

软件测试、测试模型、测试用例

软件开发的五个模型 瀑布模型(Waterfall Model) 瀑布模型是所有其他模型的基础框架,瀑布模型的每个阶段都只执行一次,因此是线性顺序进行的开发模式优点:强调开发的阶段性; 强调早期计划及需求调查&#…

01Linux以及操作系统概述

课程目标 1.了解现代操作系统的整体构成及发展历史 2.了解Linux操作系统及其分支版本 3.直观上理解服务器端与桌面端版本的区别 课程实验 1.通过对CentOS和Ubuntu的演示,直观理解Linux与Windows的异同 课堂引入 本章内容主要为大家详细讲解Linux操作系统(以下简…

ABB机器人碰撞检测灵敏度设置

机器人的碰撞灵敏度是指机器人对碰撞事件的识别和反应能力。碰撞灵敏度取决于机器人的感知和控制系统以及其硬件结构。控制系统则负责根据感知系统的反馈信息,对机器人进行相应的控制和调整,以减少或避免碰撞。控制系统可以根据碰撞的严重程度来判断机器…

计算机毕业设计Hadoop+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据

2024 届本科毕业论文(设计) 基于Hadoop的地震预测的 分析与可视化研究 姓 名:____田伟情_________ 系 别:____信息技术学院___ 专 业:数据科学与大数据技术 学 号:__2011103094________ 指导…

微信小程序 自定义 tabBar

自定义 tabBar | 微信开放文档 本文案例使用的Taro 非原生微信小程序 使用流程 1. 配置信息 在 app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局…

【Qt秘籍】[001]-从入门到成神-前言

一、Qt是什么?[概念] Qt是一个跨平台的应用程序开发框架,简单来说,它是一套工具和库,帮助软件开发者编写可以在多种操作系统上运行的图形用户界面(GUI)应用程序。比如,你用Qt写了一个软件&#…

Visual Studio 2022 17.10.0 版 std::mutex报错问题解决方案

因为一时手欠点击了更新,把visual studio 2022从17.09版本升级到了17.10.0版本,俗话说尝鲜是要付出代价的,运行之前正常的程序后直接报错崩溃,通过windbg分析dmp文件定位报错位置,发现竟然是std::mutex报错&#xff0c…

在IDEA中使用Git在将多次commit合并为一次commit

案例: 我想要将master分支中的 测试一、测试二、测试三三次commit合并为一次commit 1. 点击Git 2. 双击点击commit所在的分支 3. 右键要合并的多个commit中的第一次提交的commit 4. 点击右键后弹出的菜单中的Interactively Rebase From Here选项 5. 点击测试二…

【全开源】简单商城系统源码(h5+app)

轻松打造专属电商平台的秘密武器 🚀 一、引言:为什么选择简单商城系统源码? 在数字化时代,电子商务已成为各行各业的标配。但是,对于许多初创企业和小型商家来说,开发一个功能完善的电商平台往往意味着高…

代码随想录算法训练营第四十四天 | 01背包问题 二维、 01背包问题 一维、416. 分割等和子集

01背包问题 二维 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili 1.dp数组定义 dp[i][j] 下标为[0,i]之间的物品&…

C# try catch异常捕获

异常捕获 执行过程:try中的代码没有出现异常,则catch里面不会自行,如果try中代码出现异常,则后面的代码都不执行,直接跳到catch中的代码执行。 // try catch 可以捕获多个错误, try...catch...catch.... …

01 - Maven入门安装

目录 1、软件下载地址 2、安装的版本 3、安装的条件 4、软件的结构 5、Maven环境配置 5.1、配置MAVEN_HOME 5.2、配置Path 5.3、命令测试(cmd窗口) 6、Maven的功能配置 6.1、配置本地仓库地址 6.2、配置国内阿里镜像 6.3、配置jdk8版本项目构…

ChaosBlade混沌测试实践

ChaosBlade: 一个简单易用且功能强大的混沌实验实施工具 官方仓库:https://github.com/chaosblade-io/chaosblade 1. 项目介绍 ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力&…

【HTML】通过焦点,获取部分上下文内容

【HTML】通过焦点,获取部分上下文内容 需求 用户从页面中选择部分文字描述,获取这段选中文字,并获取该文字、上两段、下两段内容,作为上下文输入 效果说明 选中绿色框内文字,将黄色框内文字作为上下文传递 代码实…

网络安全岗秋招面试题及面试经验分享

Hello,各位小伙伴,我作为一名网络安全工程师曾经在秋招中斩获🔟个offer🌼,并在国内知名互联网公司任职过的职场老油条,希望可以将我的面试的网络安全大厂面试题和好运分享给大家~ 转眼2024年秋招又快到了金…

【传知代码】MonoCon解读与复现(论文复现)

前言:在快速发展的计算机视觉领域,单目视觉(Monocular Vision)技术凭借其独特的优势和广泛的应用前景,逐渐成为了研究的热点。MonoCon作为单目视觉领域的一项重要技术,其独特的算法设计和高效的性能表现&am…

《Kubernetes部署篇:基于麒麟V10+ARM64架构部署harbor v2.4.0镜像仓库》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:企业级K8s集群运维实战 一、环境信息 K8S版本 操作系统 CPU架构 服务版本 1.26.15 Kylin Linux Advanced Server V10 ARM64 harbor v2.4.0 二、部…

Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整代码)

文章目录 专栏导读背景结果预览1、爬取页面分析2、通过返回数据发现适合利用lxmlxpath3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】4、完整代码总结 专栏导读 🔥🔥本文已收录于《Python基础篇爬虫》 🉑🉑本专栏专门…