【Linux操作系统】简学深悟启示录:Linux权限

从Dirty COW看Linux内核安全:为什么一个竞态条件漏洞能潜伏近十年? 本文深入分析了Dirty COW漏洞的技术原理及其在Linux内核中潜伏近十年的原因,揭示了竞态条件漏洞的严重性。通过剖析写时复制机制与竞态条件的组合漏洞,探讨了Linux内核安全开发的盲区与改进方向,为当代内核安全防御提供了重要启示。 阅读详情
AI摘要

本文围绕Linux权限展开,介绍了shell运行原理,将用户分为超级用户和普通用户并说明切换方法。阐述了权限访问属性,包括不同身份的权限含义。还讲解了权限修改命令chmod、chown、chgrp,最后探讨了umask掩码作用、防止文件删除及目录权限区分等常见问题。

Linux 权限是系统通过对文件 / 目录设置读(r)、写(w)、执行(x)权限,分别管控文件所有者、所属组及其他用户对其的访问操作,以保障系统安全

1.shell的运行原理

在这里插入图片描述

对于 Linux 来说,我们输入的命令行本质上就是在输入字符串,指令的本质就是调用在特定路径下存放的可执行文件,所有的指令最终都要在 OS(操作系统)内执行,但是 OS 的使用难度比较高,用户一般很难直接使用 OS 和他打交道,所以在用户输入的指令和 OS 之间设置了一层命令行解释器

命令行解释器会将命令翻译给核心(kernel)处理,同时将翻译后的结果给到使用者

存在的意义:

  • 进行命令行解释
  • 保护 OS,对于用户的非法请求直接拦截,起到过滤器的效果

2.用户的分类

在这里插入图片描述

用户一般分为:

  • root:超级用户
  • 普通用户:我们新建的用户,即 adduser

由于某些情况下,比如下载依赖的时候就需要切换到 root 账号才能下载,可以使用 su 指令进行切换

超级用户的命令提示符是 #,普通用户的命令提示符是 $

3.用户的切换

  • root用户切换普通用户
[root@hcss-ecs-6aa4 ~]# su zzh_test
[zzh_test@hcss-ecs-6aa4 root]$

su user 表示切换到普通用户,也可以使用exit 或 ctrl+d 退出 root 账号,普通用户切换普通用户同理

  • 普通用户切换root用户
[zzh_test@hcss-ecs-6aa4 ~]$ su -
Password: 
Last login: Wed Jul  9 09:07:24 CST 2025 from IP on pts/0
Last failed login: Wed Jul  9 22:23:47 CST 2025 from IP on ssh:notty
There were 4128 failed login attempts since the last successful login.
[root@hcss-ecs-6aa4 ~]#

或

[zzh_test@hcss-ecs-6aa4 ~]$ su
Password: 
[root@hcss-ecs-6aa4 zzh_test]#

su 后面不加 user 默认表示切换到 root 用户,su - 也是切换到 root 用户,但是会显示登录时的时间、IP 等信息

在这里插入图片描述

关键差异对比

特性su(无 -)su -(带 -)
环境变量保留当前用户的环境变量加载目标用户的环境变量
工作目录保持当前目录切换到目标用户的主目录
用户体验部分命令可能因环境变量不匹配而无法正常工作(如找不到命令)完全进入目标用户的环境,命令路径正常
使用场景临时执行特定命令,无需完整环境需要以目标用户身份进行完整操作

例如,若要以root身份执行单个命令,可直接用 su -c "command" root;若要完整登录root环境,则用 su -

🔥值得注意的是:

[zzh_test@hcss-ecs-6aa4 ~]$ sudo whoami
[sudo] password for zzh_test:
root

我们如果想要对特定指令进行 root 身份运行又不想登录那么麻烦的话,可以用 sudo 进行提权,那么以后就可以使用 sudo command 的方式在 root 身份下快速执行命令

但是这种使用方式就会有疑问,因为输入的是普通账户的密码就能使用 root 的权限,那么这样岂不是显得 su 很没用,人人都可以用 root 了?

其实不是这样的,目前我们用 adduser 新建的用户,没有办法执行 sudo,系统不信任你,除非你添加到系统信任的白名单里才能执行以上操作

关于这部分知识到了后面会做介绍

4.权限的访问属性

在这里插入图片描述

一件事是否允许被执行,取决于权限的属性,相当于一个人的身份

-rwxrw-r-- 1 zzh_test zzh_test 44 Jun 29 20:41 text1

看一个例子,该代码展示的是一个文件的详细信息

  • r表示可读
  • w 表示可写
  • x 表示可执行
  • - 对应权限位置,表示没有权限

对于文件和目录来说,rwx 的意思稍微有些区别:

  • r 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • w 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • x 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

但是这么一长串表示什么意思呢?

在这里插入图片描述

在 Linux 里分为三种身份:拥有者,所属组,其他人(即除了拥有者,所属组以外的)

举个例子讲解下所属组的具体作用:

假设有甲和乙分别在同一家公司的 A 和 B 组,他们虽然在不同组但是负责同一项目,由于公司竞争机制,所以他们并不想所做的成果被互相看到,比如甲刚做好一个部分不想给乙看到,那么他可以直接设置该文件的其他人权限为 --- ,但是这就无法给老板看成果了,因此就需要所属组,可以理解为白名单,把老板拉到这个所属组里,让老板有权限进行操作

回到这个例子上:

-rwxrw-r-- 1 zzh_test zzh_test 44 Jun 29 20:41 text1
  • 第一位表示文件类型,之前讲过,- 表示文件,d 表示文件夹
  • 2-4 位表示拥有者的权限,对于该例子表示拥有者可读可写可执行
  • 5-7 位表示所属组的权限,对于该例子表示所属组成员可读可写
  • 8-10 位表示其他人的权限,对于该例子表示其他人可读

再往后看,第一个 zzh_test 表示文件所属用户,第二个 zzh_test 表示文件所属用户组

🔥值得注意的是:

  1. Linux 系统中,文件名都是我们自己取的,例如 test.c,加上 .c 是为了方便我们知道这是个 C 语言文件,对于 Linux 系统来说这个文件名后缀没有直接意义,系统识别类型主要还是通过第一位的符号
  2. 创建用户时会默认创建一个同名的基本组,用户所属组的名字和用户名相同,默认情况下该用户会被包含在这个所属组中,即 zzh_test 用户默认是包含在 zzh_test 所属组的

5.权限的修改

5.1 chmod

[zzh_test@hcss-ecs-6aa4 ~]$ ll text1
---------- 1 zzh_test zzh_test 44 Jun 29 20:41 text1
[zzh_test@hcss-ecs-6aa4 ~]$ chmod u+rwx,g+rw,o+r text1
[zzh_test@hcss-ecs-6aa4 ~]$ ll text1
-rwxrw-r-- 1 zzh_test zzh_test 44 Jun 29 20:41 text1

chmod 用于设置文件的访问权限,只有文件的拥有者和 root 才可以改变文件的权限,-R 递归修改目录文件的权限

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户符号:

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

🔥值得注意的是:

也可以通过 chmod 000 text1 的方式来修改权限,即将所有角色的权限取消,但一般修改不同角色的权限时用八进制,比如 chmod 420 text1

在这里插入图片描述

5.2 chown

[root@hcss-ecs-6aa4 zzh_test]# ll text1
-rwxrw-r-- 1 zzh_test zzh_test 44 Jun 29 20:41 text1
[root@hcss-ecs-6aa4 zzh_test]# chown root text1
[root@hcss-ecs-6aa4 zzh_test]# ll text1
-rwxrw-r-- 1 root zzh_test 44 Jun 29 20:41 text1

chown 用于修改文件的拥有者,此命令只能由 root 使用,-R 递归修改文件或目录的所有者

5.3 chgrp

[zzh_test@hcss-ecs-6aa4 ~]$ charge other_group text1

修改文件或目录的所属组,-R 递归修改文件或目录的所属组

假设你是用户 zzh_test,属于 zzh_group 和 dev_group 两个组,你有一个自己的文件 text1(所有者是 zzh_test)。你可以把 text1 的所属组改成 zzh_group 或 dev_group(因为你是这两个组的成员),但不能改成 root 组或 other_group(如果你不在这些组里),会提示权限不足

6.常见问题

6.1 umask掩码的作用?

在这里插入图片描述

系统会为新文件默认分配权限(通常文件是 666,目录是 777),而 umask 会 “屏蔽” 掉其中某些权限,最终权限 = 默认权限 - umask 权限

在这里插入图片描述
其实实际权限的计算是通过位运算实现的,但是为了计算简便直接相减也是可以的

例如:若 umask 为 022,则新文件权限为 666 - 022 = 644(即 -rw-r--r--),新目录权限为 777 - 022 = 755(即 drwxr-xr-x)

  • 默认情况下,系统创建文件和目录的权限可能过于宽松(如文件 666、目录 777),这会导致所有用户都能读写甚至执行文件,存在安全风险。通过 umask 屏蔽不必要的权限,确保文件和目录仅拥有完成任务所需的最低权限。例如,日志文件通常只需所有者可写,其他用户只读(644),此时 umask 可设为 022

  • 每次创建文件时手动指定权限(如 chmod)繁琐且易出错,umask 提供了自动化的默认权限设置机制。团队协作规范:团队环境中,统一的 umask 配置可确保所有成员创建的文件权限一致,避免因权限混乱导致的协作问题

6.2 如何防止文件被删除?

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

我们知道对于一个目录来说,other 只要具有 w 权限就可以对文件进行修改删除,但是常常我们只希望别人写入,而不是删除,为了实现只可写的权限,可以使用粘滞位 chmod +t,即 x 的位置被替换成 t

此时该目录下的文件只能由

  • root 删除
  • 该目录的所有者删除
  • 该文件的所有者删除

🔥值得注意的是: 一个文件能否被删除,并不由文件本身决定的,是由文件所处的目录权限决定的。因此粘滞位是给目录设置的,目录设置了粘滞位,文件除了上述所说的角色,其他人就无法删除了

6.3 目录权限的区分

目录的可执行权限是表示你可否在目录下执行命令:

  • 如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目,即使目录仍然有 -r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档(可以执行和可以实现是两码事)

希望读者们多多三连支持

小编会继续更新

你们的鼓励就是我前进的动力!

请添加图片描述

Linux系统调用深度解析:从strace实战到文件I/O性能优化 系统调用是用户程序与操作系统内核交互的核心接口,它构成了应用程序访问硬件资源的基础桥梁。理解系统调用的工作原理,对于掌握操作系统运行机制、进行程序调试和性能优化至关重要。通过strace等工具跟踪分析系统调用,可以直观地观察数据在用户态与内核态之间的流动路径,包括权限验证、缓冲区管理和上下文切换等底层细节。这种技术手段在排查文件访问失败、分析I/O性能瓶颈、优化资源使用效率等工程实践中具有重要价值。本文以文件访问类系统调用为切入点,结合strace工具链的实战应用,深入剖析open、read、write等关 阅读详情

相关推荐

第10篇 | 安全操作系统:从内核到配置,加固你的数字地基

操作系统安全不是仅靠厂商提供的出厂设置或事后打补丁就能高枕无忧的,而是需要从内核的主动免疫机制到日常的最小权限配置,全方位夯实“数字地基”。它是防御体系中最易被忽视却最关键的底座,决定了上层应用的安危。

maqh_csdn的博客 88

【Linux操作系统】简学深悟启示录:进程控制

本文主要介绍了Linux进程管理的三个关键方面:进程终止、进程等待及相关系统调用。首先补充了进程创建时的写时拷贝机制,当子进程修改共享数据时系统会触发只读保护并分配新空间。其次详细讲解了进程退出的三种情况及查看方法,对比了exit和_exit函数的区别。重点阐述了进程等待的必要性,通过wait和waitpid函数回收子进程资源并获取退出状态,其中waitpid可解析子进程退出码和信号信息。文章通过代码示例展示了如何正确使用这些系统调用来处理进程终止和等待,避免僵尸进程的产生。

Zero_VPN的博客 2432

关键发现:Linux内核升级中的「等待哲学」——当耐心本身就是解决方案

在Linux系统管理中,我们常被教导要主动解决问题。。本文将揭示一次未做任何修复的内核升级如何仅凭等待顺利完成,并分析背后的自动化恢复机制。

数字人生 256

【Linux操作系统】简学深悟启示录:Linux基本指令

本篇将开启Linux操作系统的全面学习,默认使用的是CentOS操作系统,使用Xshell进行远程登录服务器进行操作测试

Zero_VPN的博客 1777

EEGLAB合辑 | 第一节 往EEGLAB导入数据

1、学习Matlab EEGLAB图形界面建立在强大的Matlab脚本语言之上。要使用EEGLAB构建宏命令和执行自定义和自动化处理的全部功能,就需要能够在Matlab中操纵EEGLAB数据结构。由于时间限制,这个wiki没有提供关于Matlab脚本语言的介绍。相反,用户需要在开始研究之前熟悉Matlab。 2、安装EEGLAB和教程文件 首先下载包含教程数据集的EEGLAB(30MB),附下载地址。 (https://sccn.ucsd.edu/eeglab/downloadtoolbox.php) 解压

nvsirgn的博客 5134

【UG/NX二次开发】记录在二次开发中遇到的坑

【UG/NX二次开发】记录在二次开发中遇到的坑

Trust_MJ的博客 2708

【Linux操作系统】简学深悟启示录:文件fd

本文回顾了文件系统的基本概念和C语言文件操作接口。首先解释了文件的组成(内容+属性)和两种状态(打开/未打开),重点分析了打开文件与进程的关系。接着通过代码示例演示了fopen、fwrite等C文件函数的使用,以及如何修改默认文件路径。文章还介绍了标准输入输出流(stdin/stdout/stderr)及其文件描述符(0/1/2)。随后详细讲解了系统调用open和write函数的使用方法,包括flags参数的各种选项组合原理。最后深入探讨了文件描述符的本质,指出它是进程文件描述符表中的索引,并解释了FILE

Zero_VPN的博客 3808

硬核入门!Python爬虫实战:爬取豆瓣读书TOP250,书名+评分+简介,一键生成精美Excel书单(2026避坑版)

通过这个实战,你不仅获得了一份珍贵的豆瓣TOP250书单HTTP请求与响应的本质。HTML解析的核心技巧。反爬虫的基本应对策略。数据清洗与存储的完整流程。爬虫是通往数据世界的一把钥匙。现在,钥匙在你手中,去探索更多有趣的数据吧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 545

【Linux操作系统】简学深悟启示录:进程间通信

本文主要介绍了进程地址空间和进程间通信的相关知识。第一部分补充了进程地址空间的内容,解释了程序加载到内存前的逻辑地址分布、动态库的加载机制以及CPU执行指令的流程。第二部分重点讲解了匿名管道的原理和应用,包括管道的创建、单向通信特性、实现代码以及管道的5种属性,最后展示了管道在进程池中的应用实例。文章通过示意图和代码示例,系统性地阐述了操作系统如何管理进程地址空间以及进程间通过管道通信的具体实现方式。

Zero_VPN的博客 1670

[SV]SystemVerilog学习笔记之struct & union

SystemVerilog学习笔记(四) 一、结构体(struct) 1.1、结构体(struct) 结构体声明:结构体默认是变量,也可以声明为线网 var struct{ //通过var进行结构体变量声明 logic [31:0] a, b; logic [ 7:0] opcode; } Instruction_Word_var; wire struct{ //结构体线网声明,定义为线网类型时,结构体的所有成员必须...

元直的博客 1万+

《信息化项目文档模板十二——业务需求新增/变更审批确认表 》

系列文章目录 《信息化项目文档模板一——项目需求说明书》 《信息化项目文档模板二——项目启动会文档模板》 《信息化项目文档模板三——会议纪要模板》 《信息化项目文档模板四——系统项目蓝图设计模板》 《信息化项目文档模板五——系统详细设计模板》 《信息化项目文档模板六——系统详细设计模板》 《信息化项目文档模板七——系统开发计划模板》 《信息化项目文档模板八——系统功能测试模板》 《信息化项目文档模板九——系统压力测试模板》 《信息化项目文档模板十——系统推广上线计划模板》 《信息化项目文档模板十一——系统用

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1712

间谍启示录 1

拿到一个iso文件,使用winhex查找flag字符串,发现有一个flag.exe 尝试把隐藏的文件拖出来 使用binwalk无效 那就使用strings命令硬来 查找所有字符,再看flag ,还是只有flag.exe 使用foremost命令,解出来了一些文件,所以说这个找出隐藏文件的方法就挺迷的。 拖到windows里面,linux里面运行不了。 双击flag.exe,出现隐藏文件 把这个选项打开是一个好习惯 ...

brightendavid的博客 933

【2026年华为暑期实习(AI)-4月22日-第三题- 网络异常流量传播链路溯源】(题目+思路+Java&C++&Python解析+在线测试)

本文提出了一种基于空间距离和流量负载的网络异常传播链检测方法。首先通过曼哈顿距离建立基站间的直接关联关系,形成无向图;然后计算各连通块的总负载,筛选出关键节点;最后在关键节点构成的有向无环图(DAG)中寻找用户数最大的传播路径。算法采用DFS/BFS识别连通块,并通过动态规划求解最长路径,时间复杂度为O(N^2)。该方法适用于监控网络中异常流量的定向传播分析,能有效识别高负载区域和最大影响路径。

m0_73659489的博客 187

从Dirty COW到内核攻防:竞态条件漏洞的现代启示录

本文以经典Linux内核漏洞Dirty COW为例,深入剖析了竞态条件漏洞的原理与利用方式。该漏洞利用写时复制机制中的时间窗口,允许普通用户提权并修改只读文件,揭示了内核并发安全的核心挑战。文章通过实战复现与代码分析,探讨了此类漏洞的现代防御机制与攻防演变趋势,为系统安全开发提供了深刻启示。

http9protocoller的博客 454

OpenCASCADE完整教程专栏完整目录

OpenCASCADE完整教程专栏完整目录

希望我的博客,能帮上你解决学习中工作中所遇到的问题 9703

把 SAP GUI 做成可维护的应用:Module Pool 基础与 Table Control 深入实战

SAP Module Pool 与 Table Control 开发要点 摘要:Module Pool 作为 SAP GUI 交互的核心技术,由程序、屏幕(Dynpro)和流逻辑(Flow Logic)组成,通过 PBO/PAI 事件驱动数据流。Table Control 是其中处理多行数据的核心控件,其开发关键在于: 正确理解 PBO/PAI 数据流机制 掌握 CXTAB_CONTROL 结构的关键属性(LINES、TOP_LINE 等) 合理设置列控制属性(CXTAB_COLUMN) 采用 LOOP W

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 242

像黑客一样使用Linux

http://talk.linuxtoy.org/using-cli/#1  非常实用且实用的Linuxqish

hainandao710的专栏 483

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AutoGPT陨落启示录:从CLI玩具到可维护Agent平台的演进逻辑

自主代理(Autonomous Agent)是大模型应用的核心范式,其本质是LLM与工具链协同决策的系统工程,而非单点Prompt优化。它依赖稳定的状态管理、鲁棒的指令解析、标准化的Agent Protocol通信机制,以及容器化、可观测性等生产级基础设施支撑。技术价值在于将非结构化推理转化为可编排、可监控、可扩展的服务单元,广泛应用于智能工作流自动化、多步骤RAG增强、跨系统任务编排等场景。AutoGPT作为早期标志性CLI实现,以极简方式具象化了Agent概念,却因内存泄漏、强格式依赖、环境不可控等工程

weixin_33901926的博客 374

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

《另一个伊甸》角色资料站停更启示录:个人项目维护的 3 个核心挑战与应对

本文探讨了《另一个伊甸》角色资料站停更背后的核心挑战,揭示了个人项目维护者在时间管理、技术债务和动力枯竭三重困境中的应对策略。通过自动化工具、可持续架构设计和社区共建模式,帮助独立开发者平衡热情与现实压力,实现项目的长期可持续性。

weixin_33730836的博客 357

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

RHEL9 root用户无法登陆cockpit服务

系统版本:RHEL9.5打开cockpit服务后,打开浏览器,访问地址IP:9090,无法使用root账户登陆,显示无权限,如下图所示。

2401_86968032的博客 766

Linux内核6.13惊现微软代码危机:安全功能遭破坏始末

微软的代码改动涉及可执行内存的只读权限设置,但未经x86维护团队审核就直接进入代码库。近期Linux内核6.13版本开发过程中出现了一个值得警惕的技术事件。微软工程师提交的ARCH_HAS_EXECMEM_ROX配置改动,本意是提升64位处理器的内存执行性能,却因流程疏漏险些导致重大安全隐患。平台提供的一键部署功能特别适合需要持续展示的交互式系统,无需操心服务器配置,就能让技术分享变得直观易懂。我在测试安全演示项目时,发现从生成到上线的整个过程非常流畅,这对需要快速验证想法的开发者来说确实很方便。

SilvermistOwl67的博客 351

Cataclysm末日生存游戏:从零部署到深度体验

Cataclysm: Dark Days Ahead(简称CDDA)是一款基于回合制的开源末日生存游戏,以其深度的角色定制、复杂的生存机制和程序生成的世界而闻名。在这个后启示录世界中,你需要管理角色的饥饿、口渴、疲劳等状态,同时面对各种生存挑战。 ## 环境准备:系统要求与依赖配置 ### 基础运行环境 在开始安装前,请确保您的系统满足以下要求: - **操作系统**:支持Linux、Win

gitblog_00768的博客 1300

Wing FTP Server路径遍历漏洞分析:从原理到防御的完整指南

文件传输协议(FTP)作为企业文件共享的基础服务,其安全性常被忽视。路径遍历漏洞是一种经典的Web安全漏洞,攻击者通过构造特殊路径参数(如../)绕过目录限制,将恶意文件上传到非预期位置。结合文件上传功能,这类漏洞可导致远程代码执行,对服务器造成严重威胁。在安全工程实践中,理解漏洞原理有助于构建有效的防御体系。本文以Wing FTP Server为例,深入剖析路径遍历与文件上传逻辑缺陷的组合利用,演示攻击者如何通过构造dest_folder参数实现WebShell上传,最终在服务器上执行任意命令。通过分析漏

a359798678的博客 392

Linux 文件系统 Hash 结构实现:6个核心 API 与 3 种冲突处理策略对比

本文深入解析Linux文件系统中Hash结构的实现,详细介绍了6个核心API的工程实现细节,并对比了线性探查、链地址法和再哈希三种冲突处理策略的性能差异。通过分析Ext4文件系统的目录哈希实现,揭示了用户空间模拟与内核级实现的差异,为开发者提供了优化文件系统性能的实用技巧。

weixin_34367257的博客 478
上一篇: 【Linux操作系统】简学深悟启示录:Linux基本指令
下一篇: 智能文档处理平台的全面测评:Textin深度对比与API调用
澪贰
澪贰 优质创作者: C/C++技术领域 优质创作者: C/C++技术领域
博客等级 码龄2年 1万+粉丝 222原创
评论 56
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值