云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....)

这篇具有很好参考价值的文章主要介绍了云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

云计算基础大课笔记-云计算工程师系列

第三章 权限管理

简介:本章讲述了Linux系统CentOS7中关于权限的相关概念。以及用户和组的管理方法。

目标:熟悉并掌握权限的相关概念,以及用户和组的管理方法。

第一节,权限UGO

(1)概述

赋于某个用户或组能够以何种方式访问某个文件(图片文件,视频文件,普通文件)

(2)权限对象

01.属主(u):一般是创造的 不一定都归于root
02.属组(g):分组
03.其他人(o):除主/组外的用户
04.所有人(a:u+g+o)

(3)权限类型

01.读:r=4
02.写:w=2
03.执行:x=1

创造的文件一般都有rw 但是一般没有x 如果有x则该文件就会变成程序 里面的代码都会被当作指令执行 使用4,2,1是因为使用的8进制

(4)如何查看权限

01.使用 ls -l+/路径/文件名 (不加路径与文件名则显示当前目录下的所有文件的权限)
02.使用 ll+文件 也可以查看文件权限

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

03.ls -l 后 显示内容的解释:
01.第一个符号-是文件类型(普通文件)
02.前三个(rw-)代表属主的权限 → 代表有读写权限
03.中三个(r--)代表属组的权限 → 代表有读权限
04.后三个(r--)代表其他人的权限 → 代表有读权限
05.符号 . 代表权限的扩展
06.数字 1 代表文件连接
07.第一个 root 代表文件的属主
08.第二个 root 代表文件的属组
09.数字 0 代表文件的大小(本文件是空的 所有没有大小)
10. 1月  19  06:24代表文件最后修改的时间
11. /root/zyb.txt代表文件的名和路径

(5)如何更改权限

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

 在使用chmod chown chgrp命令时 都可以在命令后面加上 -R 本参数可以以递归的方式将目录内的所有文件都更改为你所输入的想要的权限/属主/属组(包括文件夹本身)
01.使用符号:u用户 g组 o其他 r读 w写 x执行
02.语法:chmod(change mode)+对象(u/g/o/a)赋值符(+加/-减/=覆盖)权限类型(r/w/x)这三个在一起!!+ 文件/目录

(5.Practice)权限管理的实验

01.ls -l -d + 目录 本命令的-d代表仅看目录

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

02.ll命令也可以查看文件权限

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

03.echo表示回响 让程序说话 但是他是一种命令
04.read -p 代表收集用户所输入的内容 并将用户输入的内容放在一边等待使用
05.$name $符号是调用内容的方法

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

06.以上是对file1 写入 赋权 和内容的演示 以下是运行演示(运行程序使用bash+文件)

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

07.赋权演示

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

08.使用 ./文件名 符号. 代表当前目录 符号/ 代表路径 这种方式也可以运行文件

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

(6)设置权限的方法

01.数字授权 4读 2写 1执行 例:chmod 644 file1 第一个数是属主 第二个数是属组 第三个数是其他

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

02.符号授权 u用户 g组 o其他 r读 w写 x执行 chmod(change mode)+对象(u/g/o/a)赋值符(+加/-减/=覆盖)权限类型(r/w/x)这三个在一起!!+ 文件/目录 例chmod u=rw

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

03.更改属主 chown(change owner)命令
01.chown:设置一个文件属于谁,属主
02.语法:chown 用户名.组名 文件 注意命令中的符号 .
03.实例 (useradd 添加用户 groupadd 添加组)

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

01.第一个 更改属主和属组
02.第二个 改属主
03.第三个 改属组 注意符号 .

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

04.更改属组 chgrp (change group)命令
01.语法:chgrp 组名 文件 -R是递归的意思
02.实例 chgrp hr file1

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

05.案例需求

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

第二节,权限ACL(访问控制列表)

是一种补充设计,可以针对更多的用户,更多的基本权限,同样可以配置UGO部分

(1)区别

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

01.ACL文件权限管理:设置不同用户 设置不同的基本权限(r,w,x)对象数量不同
02.UGO设置基本权限:只能设置一个用户,一个组和其他人的特定权限

(2)语法

01.setfacl/getfacl(set/get file access control list 设置/获得文件的访问控制列表 ) -m(参数m:more/-x 删除/-b) u/g(用户/组):用户(alice)/组(hr):权限(rwx) + 文件/目录 (符号 : 代表分隔符)
02.上述结构简化后为: 命令+设置+用户或组:用户名:权限+文件对象

(3)用法

01.设置ACL
01.查看哪些文件有acl权限

命令:getfacl(get file access control list 获得文件的访问控制列表 )+文件对象

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

02.实例

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

03.当权限的扩展变为 +  时,则代表该文件的权限并没那么简单
04.jack后面的  -  代表了禁止了该用户的所有权限,因为在原始的UGO里面 jack为O类用户是拥有r权限的 通过添加  -  后 则该用户的所有权限全部禁用

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

05.这样写(用户/组的位置是空的)则代表设置所有的O用户都拥有rw权限 不过因为该命令较长,效率不如直接使用chmod

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

06.增加hr组对test.txt文件读取的权限

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

02.查看ACL

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

mask:是一种通配符,对已经授权的权限取交集

03.删除ACL
01.删除部分(自己添加的某一条)setfacl -x g:hr home/test.txt 只能是后来附加的 注意一定不要在用户名/组名后加 : 权限 否则报错
02.删除所有(不包括UGO部分) setfacl -b /home/test.txt

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

04.setfacl的默认权限 继承权限

默认权限(Default Permissions)是在目录上设置的 ACL 条目,这些条目作用于该目录内新创建的任何文件或子目录。当在一个目录上设置了默认权限时,这些权限会自动被继承到该目录下新创建的文件和子目录,它们的 ACL 会包含与父目录的默认权限匹配的条目。

可以使用 setfacl 设置这些默认权限,例如:

setfacl -m d:u:username:rwx /path/to/directory

注意:d:u:username:rwx中的 d:这代表 “default”,意味着接下来的规则应该作为默认 ACL 条目设置。默认 ACL 值仅用于目录,并且它们指定了在此目录下创建的任何新文件或目录应该继承的权限。

上面的命令会设置指定目录上的默认权限,使得用户 username 对目录中新创建的文件和子目录有读写执行(rwx)的权限。

此外,需要注意的是,虽然设置了默认ACL,但这些ACL不会自动应用于已经存在的文件和子目录。默认ACL只影响之后创建的文件和目录。如果你需要更改现有文件和目录的ACL,你需要单独对它们使用 setfacl 命令。

继承的权限不一定会使文件和目录的实际权限与父目录的 ACL 完全匹配,因为文件和目录的实际权限还受到 umask(用户文件模式创建屏蔽)的影响。umask 决定了新创建的文件和目录的默认权限位,这些权限位可能进一步限制了由默认ACL所提供的权限。

05.UGO和ACL的区别

01.UGO:简单方便 但是所实现的对象很少

02.ACL:是UGO的补充,可以同时可以实现UGO的命令 但是设置的内容类型功能多 但是查看较为复杂,指令较UGO多

第三节,特别权限(了解)/属性

(1)特殊位SUID

01.高级权限的类型
01.suid (那个u就是user 属主) 针对文件/程序时,具备临时获得属主的权限(一般不要设置)
02.sgid (那个g就是group 属组)针对文件/程序时,具备临时获得属组的权限(一般也不要设置)于suid类似滴
03.sticky bit

Sticky bit是一种特殊的权限标志,用于目录。当这个位被设置在一个目录上时,它会产生特殊的行为:

在具有Sticky bit标志的目录上,任何用户都可以创建文件或目录,但只有文件的属主、目录的属主或者root才能删除或重命名这些文件。这就防止了一个用户删除或移动另一个用户的文件,这在诸如/tmp这样的公共目录中特别有用,每个用户都需要读写访问权限,但应防止用户相互干扰。

要设置目录的Sticky bit,可以使用chmod命令的+t选项。例如,要给/some/directory设置Sticky bit,你可以使用如下命令:

chmod +t /some/directory

要移除Sticky bit,可以使用-t选项 同样覆盖也可以使用=:

chmod -t /some/directory

使用ls -ld命令查看目录的权限时,Sticky bit被设置的目录在权限字符串的最后一位显示一个t字符(如果同时具有执行权限)或者T字符(如果没有执行权限)。例如:

drwxrwxrwt  10 root root 4096 Jan 20 10:00 /tmp

在上例中,/tmp目录的权限字符串最后的t指示了Sticky bit已被设置。

02.思考

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

分析: root运行是超管的权限,普通用户运行时是普通用户的权限。

root /usr/bin/cat (root) /root/file1.txt OK

alice /usr/bin/cat (alice) /root/file1.txt NO

对文件赋上suid chmod(change mode)+对象(u/g/o/a)赋值符(+加/-减/=覆盖)s 这三个在一起!!+ 文件/目录 例:chmod u+s 文件对象

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

03.示例1
01.设置suid,使普通用户通过suid临时提权,查看超管root用户的文件
02.为cat程序添加suid权限
03.使用普通用户运行cat 暂时获得root权限

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

(2)文件属性chattr

01.用途 常用于锁定某个文件,拒绝修改 让超管root也汗流浃背(删不了)
02.分类
  1. A 访问时间 (noatime)
    1. +a: 当文件被设置为 a 属性时,它只能被追加数据,不能被删除或修改。
    2. -a: 移除 a 属性,文件可以正常被修改。
  2. S 同步属性 (synchronous updates)
    1. +S: 修改操作会导致直接写入磁盘的同步更新。
    2. -S: 移除 S 属性,文件更新使用正常的缓存策略。
  3. D 写时更新 (no dump)
    1. +d: 文件将不会被 dump 程序备份。
    2. -d: 移除 d 属性,文件可以被 dump 程序备份。
  4. I 不可修改 (immutable)
    1. +i: 设置后,文件内容变为不可修改,不可删除,不可重命名,无法添加新链接。
    2. -i: 移除 i 属性,恢复文件的可修改性。
  5. A 不更新访问时间 (no atime updates)
    1. +A: 文件访问时间不会有更新。
    2. -A: 移除 A 属性,文件访问时会更新访问时间。
  6. j 数据日志 (data journalling)
    1. +j: 在ext4文件系统上,对文件启用数据日志,每次更新文件时,数据先写入日志。
    2. -j: 移除 j 属性,文件不再进行数据日志。
  7. C 压缩 (compressed)
    1. +C: 在支持此属性的文件系统上,文件可以被自动压缩。
    2. -C: 移除 C 属性,文件不会被自动压缩。
  8. s 安全删除 (secure deletion)
    1. +s: 文件内容在删除时会被立即清空并覆盖,确保无法恢复。
    2. -s: 移除 s 属性,文件删除时不会被特别处理。
  9. u 未删除 (undeletable)
    1. +u: 文件内容在删除后依然可以恢复。
    2. -u: 移除 u 属性,正常删除文件。
  10. T 系统的 top directory (top of directory hierarchy)
  1. +T: 用于ext4文件系统,明确该目录是文件系统顶层的目录。
  2. -T: 移除 T 属性,目录不被视作顶层目录。

chattr 命令通常需要超级用户权限来运行,因为修改文件的这些属性可能会影响系统的安全和完整性。这个命令的一般语法格式如下:

chattr [选项] [属性设置] 文件或目录名

使用 + 号给文件添加属性,使用 - 号移除文件的属性,使用 = 号设置成指定的属性。查看这些属性,可以使用 lsattr 命令

03.案例

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

04.注意 即使是拥有 root 权限的用户,也会受到 chattr 设置的属性的影响。某些属性,如不可修改(immutable)属性 +i 或者不可删除(undeletable)属性 +u,会阻止所有用户(包括 root 用户)对文件进行修改、删除或重命名。

(3)进程掩码umask

01.概述:新建文件 目录的默认权限会受到umask的影响 umask表示要减掉的权限
02.观察系统默认掩码(掩码掩码 掩盖了一些号码)

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

01.我们在根目录下使用umask 我们可以看到进程掩码的值为0022

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

02.在创建文件file和dir后 我们可以看到dir的权限是0755 file的权限是0644 这是因为文件夹的起始权限是0777 那么掩码掩码 就是掩盖了最高默认权限(0777)的0022 所以才有了 0755的权限 同理 file的起始权限是0666 那么掩码掩码 就是掩盖了最高默认权限(0666)的0022 所以才有了 0644的权限
03.实例

云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....),Linux,云计算,linux,服务器

第三章总结:

在本章中,我们学习了Linux系统(以CentOS 7为例)中用户和文件权限管理的基础知识。通过掌握UGO权限模型,学会了如何管理文件和目录的权限,明白了rwx权限对应于数值4、2、1,以及如何使用ls -lll命令查看这些权限。

我们了解到权限可以通过用户(u)、组(g)、其他人(o)以及所有人(a)来赋予,并掌握了如何用chmodchownchgrp命令来更改文件和目录的权限和所有权。我们还学习了如何设置默认权限和递归地应用权限更改。

此外,我们接触了较为进阶的权限管理方法:ACL(访问控制列表)。它允许我们为不同的用户和组设置详细的访问权限,从而解决了传统UGO权限模型的限制。

本章还涉及到特殊的权限类型,比如SUID、SGID和Sticky bit,以及如何使用文件属性(通过chattrlsattr命令)和进程掩码(umask)来对文件系统的安全性和灵活性进行进一步的管理。

课后思考:

在Linux系统中,如何给一个用户只赋予某个文件的写权限而不是读权限?请给出相应的命令。

假设文件名为

example.txt,要给username用户只赋予写权限可以使用:

setfacl -m u:username:w example.txt

或者,如果不利用ACL,且该文件不属于任何其他用户的组,可以使用:

chmod o=w example.txt

如果我们想要设置一个目录,使得该目录下新创建的文件或目录自动继承父目录的权限,我们应该如何操作?
  1. 可以通过设置目录的默认ACL来实现这一需求,命令可能如下:

setfacl -m d:u::rwx,d:g::rwx,d:o::rx /path/to/directory

该命令会给目录设置默认权限,使得属主(u)和属组(g)拥有读写执行权限,其他用户(o)拥有读执行权限。

阐述SUID、SGID和Sticky bit各自在权限管理中的作用是什么?

SUID:设置在可执行文件上,当运行该程序时,程序会临时获得文件属主的权限。

SGID:对于目录,设置此标志会使该目录下所有新创建的文件继承该目录的属组;对于可执行文件,与SUID类似,运行程序时,程序会临时获得文件属组的权限。

Sticky bit:设置在目录上,任何用户都可以在此目录下创建文件,但只有文件的属主和目录的属主(以及root用户)可以删除和修改文件。

umask值为0022时,新创建的文件和目录的默认权限分别是什么?

当umask值为0022时,新创建的文件默认权限是644(rw-r–r–),新创建的目录默认权限是755(rwxr-xr-x)。这是因为文件的起始权限通常是666(rw-rw-rw-),目录的起始权限通常是777(rwxrwxrwx),umask值指定了应当“掩盖”的权限位。文章来源地址https://www.toymoban.com/news/detail-811483.html

到了这里,关于云计算工程师系列 Day03 第三章 权限管理(超详细 持续更新中....)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【区块链-智能合约工程师】第三篇:Solidity进阶(一)

    学习资料地址:WTF学院 库合约一般都是一些好用的函数合集(库函数),为了提升solidity代码的复用性和减少gas而存在。他和普通合约主要有以下几点不同: 不能存在状态变量 不能够继承或被继承 不能接收以太币 不可以被销毁 String库 String库合约是将uint256(大正整数)类型

    2024年02月06日
    浏览(54)
  • 每日一练 | 网络工程师软考真题Day41

    1、包过滤防火墙对通过防火墙的数据包进行检查,只有满足条件的数据包才能通过,对数据包的检查内容一般不包括   。 A.源地址 B.目的地址 C.协议 D.有效载荷 2、下面关于ARP木马的描述中,错误的选项是   。 A.ARP木马利用ARP协议漏洞实施破坏 B.ARP木马发作时可导

    2024年02月07日
    浏览(40)
  • 每日一练 | 网络工程师软考真题 Day2

    1、某工程制定的开发方案中定义了3个任务,其中任务A首先开始,且需要3周完成,任务周完B必须在任务A启动1周后开始,且需要2周完成,任务C必须在任务A后才能开始,且需要完成2周完成。该工程的进度安排可用下面的甘特图         来描述。  A. B.   C.   D.     2、以下表

    2024年02月05日
    浏览(54)
  • 机器人应用工程师的入职思考day3

    [1]学习高级弧焊内容,了解机器人在导轨与变位机等设备的配合下进行弧焊的方式 [2]了解专家焊内容,学会如何用两个机器人进行同步焊接 [3]场景应用 1、高级弧焊的运动学相关操作 2、两个或多个机器人之间进行同步焊接的方法 3、之前的疑惑点答疑 周二 2024/4/2 上午9:3

    2024年04月28日
    浏览(39)
  • 小白到运维工程师自学之路 第三十九集 (HAproxy 负载均衡) 一、概述

            HAProxy是一款高性能的负载均衡软件,可以将来自客户端的请求分发到多个服务器上,以提高系统的可用性和性能。HAProxy支持多种负载均衡算法,包括轮询、加权轮询、最少连接数等。同时,HAProxy还支持会话保持、健康检查、SSL终止等功能,可以满足不同场景下的

    2024年02月09日
    浏览(57)
  • 计算机视觉工程师学习路线

    学习Python语言,掌握基础语法、函数、面向对象编程等概念 学习Numpy库,用于科学计算和多维数组 学习OpenCV库,包含了许多图像处理和计算机视觉算法 学习TensorFlow/PyTorch,主要的深度学习框架 图像的表示方式(像素、灰度、二值化等) 彩色空间转换(RGB、HSV等) 滤波操作(均值滤波、

    2024年02月10日
    浏览(43)
  • 云计算工程师个人简历(精选篇)

    对于这样一群云计算工程师精英而言,如何将自己的专业技能与丰富经验准确地呈现在简历上,就显得尤为重要。以下是小编精选的云计算工程师个人简历参考,同时,幻主简历网还提供精美简历模板以及简历在线制作工具,欢迎大家阅读收藏。 幻主简历huanzhucv.com案例: 求

    2024年04月25日
    浏览(46)
  • 【阿里云云计算工程师 ACP 认证】01、弹性计算 ECS

    目录 一、什么是 ECS 1.1 什么是弹性计算 ECS 1.2 弹性计算 ECS 的定位 1.2.1 弹性的伸缩能力 1.2.2 计算的基础运行环境 二、ECS 的基本概念 2.1 ECS 相关概念、地域与可用区 2.2 实例规格 2.2.1 在官网上创建之后会有各种各样的规格集,规格集的命名规则是怎样的? 2.2.2 上图有两大块

    2024年02月15日
    浏览(73)
  • ACP云计算工程师考试知识点

    ECS 安全组 伸缩组 SLB VPC OSS RDS CDN DNS DTS 云安全 云监控 一、ECS实例 ECS组件:在ECS中,是由CPU、内存、磁盘(ECS中没有硬盘概念)、网络配置、操作系统构成 ECS使用限制:①不支持安装虚拟化软件和二次虚拟化;②不支持声卡应用;③不支持直接加载外接硬件设备 ECS状态:分

    2024年02月13日
    浏览(48)
  • 阿里云计算工程师ACP考题归类解析

    重点学习ECS、VPC、OSS三部分。 战略是先做简单后做难度高的。 一、 简化 做题问三个问题,按回答三个问题即可找到答案,其余干扰因素不要看。 题型 单选还是多选 考点 是ECS知识还是SLB,或者是综合的。 采用正选作答容易,还是反选容易。 类型1:[多选题] 阿里云的云服

    2023年04月25日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包