鸟哥的Linux私房菜快速阅读笔记(二) 多用户系统的目录结构

第五章、使用者与群组

5.1 使用者与群组

Linux 是一个多用户操作系统,为了保障系统安全与数据隐私,引入了严格的文件权限管理机制。在 Linux 中,每个文件都与三个特定的身份相关联:拥有者 (User/Owner)群组 (Group)其他人 (Others)

文件拥有者

  • 定义:创建文件的用户即为该文件的拥有者。

  • 权限:拥有者对该文件拥有最高的控制权(读、写、执行)。

  • 隐私性

    • 默认情况下,其他用户无法修改拥有者的文件。
    • 即使其他用户拥有"读取"权限,通常也无法"写入"或"修改"文件内容(除非拥有特殊权限)。
    • 这是 Linux 安全机制的第一道防线,确保个人数据(如电子邮件、配置文件)不被他人篡改。

群组

为了解决多用户环境下的资源共享问题,Linux 引入了群组机制。

  • 目的:让特定的一群用户能够共享某些文件或目录,而无需将权限开放给所有人。

  • 机制

    • 主要群组 (Primary Group) :用户登录时默认所属的群组。用户创建的新文件默认归属于此群组。

    • 支持群组 (Supplementary Groups) :一个用户可以同时属于多个群组。

      • 案例 :账号 teacher 可以同时属于 projectaprojectb 两个群组,从而能够访问这两个项目组共享的资源。
  • 权限逻辑

    • 若文件所属群组为 class1,则 class1 内的成员(非拥有者)可以依据"群组权限"访问该文件。
    • 不属于该群组的用户,只能依据"其他人 (Others)"的权限访问。

其他人

  • 定义:既不是文件拥有者,也不在文件所属群组内的用户。
  • 权限:通常被视为"外部人员",权限限制最严格。

超级管理员:Root

在 Linux 权限体系中,有一个特殊的账号拥有至高无上的权力。

  • 账号名称root

  • 身份代号:UID 为 0。

  • 能力

    • 无限权限 :可以读取、修改、删除系统中的任何文件,无视文件本身的权限设置(rwx)。
    • 系统管理:可以管理所有用户账号、安装软件、修改系统配置。
  • 由于权限过大,使用 root 操作时需极度谨慎,误操作可能导致系统崩溃。

身份与群组的记录文件

Linux 系统通过以下三个关键文件来管理用户和群组信息。切勿随意删除或修改这些文件,否则可能导致系统无法登录。

文件路径 作用 关键内容
/etc/passwd 用户账号信息 记录用户名、UID、GID、家目录、默认 Shell 等。所有用户可见。
/etc/shadow 用户密码信息 记录加密后的密码、密码过期策略等。仅 root 可读,保障安全。
/etc/group 群组信息 记录群组名称、GID、以及该群组包含的成员列表。

5.2 Linux 文件权限概念

5.2.1 Linux 文件属性

查看指令:ls -al
ruby 复制代码
[dmtsai@study ~]$ ls -al
  • -a (all) :列出所有文件,包含以 . 开头的隐藏文件
  • -l (long) :以长格式列出文件的详细属性。

执行 ls -al 后,输出的一行数据包含了 7 个主要字段。以 -rw-r--r-- 1 root root 1864 May 4 18:01 initial-setup-ks.cfg 为例:

内容示例 含义 详细说明
-rw-r--r-- 权限与类型 最重要的字段,共 10 个字符。
1 链接数 指向该文件 i-node 的硬链接数量。
root 拥有者 该文件的归属用户账号。
root 所属群组 (Group) 该文件的归属群组账号。
1864 文件大小 默认为 Bytes
May 4 18:01 修改时间 文件内容最后一次被修改的时间。若时间过久(如超过半年),年份会替代时间显示。
initial-setup... 文件名 若文件名以 . 开头(如 .config),则为隐藏文件

第一栏的 10 个字符(如 -rw-r--r--)是 Linux 权限管理的核心,分为四部分解读:

A. 文件类型 (第 1 个字符)

  • -:普通文件 (File)。
  • d:目录 (Directory)。
  • l:链接文件 (Link file)。
  • b:块设备文件 (Block device),如硬盘。
  • c:字符设备文件 (Character device),如键盘、鼠标。

B. 权限组合 (第 2-10 个字符)

剩余 9 个字符每 3 个为一组,分别代表 拥有者 (User)所属群组 (Group)其他人 (Others) 的权限。

权限组 字符位置 含义 权限说明
拥有者权限 2-4 (rwx) 文件创建者的权限 r (Read, 4): 读取内容 w (Write, 2): 修改/写入 x (Execute, 1): 执行 (若是目录则表示可进入 cd)
群组权限 5-7 (r-x) 同群组成员的权限 同上。若无权限则显示 -
其他人权限 8-10 (r--) 既非拥有者也非同群组的用户 同上。

C. 数字表示法 (Octal Mode)

权限可以用数字相加来表示(r=4, w=2, x=1):

  • rwx = 4+2+1 = 7
  • rw- = 4+2+0 = 6
  • r-x = 4+0+1 = 5
  • r-- = 4+0+0 = 4
  • --- = 0
  • 对于文件x 代表可执行(如脚本、二进制程序)。
  • 对于目录x 代表可进入(作为路径访问);w 代表可修改目录结构(增删文件)

5.2.2 如何改变文件属性与权限

改变所属群组:chgrp
  • 功能:修改文件的所属群组。

  • 语法

    bash 复制代码
    chgrp [-R] dirname/filename ...
  • 参数

    • -R:递归 (recursive),连同子目录下的所有文件/目录一并修改。
  • 前置条件

    • 目标群组名称必须存在/etc/group 文件中,否则会报错 invalid group

案例演示

csharp 复制代码
# 尝试将文件群组改为存在的 'users' 群组
[root@study ~]# chgrp users initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg
​
# 尝试将文件群组改为不存在的 'testing' 群组 -> 报错
[root@study ~]# chgrp testing initial-setup-ks.cfg
chgrp: invalid group: 'testing'
改变文件拥有者:chown
  • 功能:修改文件的拥有者(也可以顺便修改所属群组)。

  • 语法

    bash 复制代码
    chown [-R] 账号名称 文件或目录
    chown [-R] 账号名称:群组名称 文件或目录
  • 前置条件

    • 目标账号名称必须存在/etc/passwd 中。

常见场景:复制文件后的权限修正 使用 cp 复制文件时,新文件会保留原文件的属性(拥有者/群组)。如果你将 root 的文件复制给普通用户使用,必须用 chown 修改拥有者,否则普通用户无法修改该文件。

csharp 复制代码
# 1. 复制文件 (以 root 身份执行)
[root@study ~]# cp .bashrc .bashrc_test
[root@study ~]# ls -al .bashrc*
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Jun 3 08:04 .bashrc_test
# 注意:.bashrc_test 的拥有者仍然是 root
​
# 2. 修改拥有者为 bin
[root@study ~]# chown bin initial-setup-ks.cfg
​
# 3. 同时修改拥有者和群组 (使用冒号 : 或小数点 . 分隔)
[root@study ~]# chown root:root initial-setup-ks.cfg
# 或者
[root@study ~]# chown root.root initial-setup-ks.cfg

Tips : chown 支持 user.group (小数点) 或 user:group (冒号) 的格式来同时修改拥有者和群组。

改变文件权限:chmod

修改权限有两种方法:数字类型符号类型

方法一:数字类型改变权限

Linux 权限由 9 个字符组成,分为三组(Owner / Group / Others),每组包含 r, w, x。 我们可以将 r, w, x 转换为数字进行累加:

权限 数字 含义
r (read) 4 读取
w (write) 2 写入
x (execute) 1 执行
- (无权限) 0

计算逻辑

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-x = 4 + 0 + 1 = 5
  • r-- = 4 + 0 + 0 = 4

语法

bash 复制代码
chmod [-R] xyz 文件或目录

(xyz 为三个数字,分别代表 拥有者/群组/其他人)

案例演示

csharp 复制代码
# 案例 1: 将所有权限都打开 (rwxrwxrwx)
# 7 (4+2+1) | 7 (4+2+1) | 7 (4+2+1)
[root@study ~]# chmod 777 .bashrc
​
# 案例 2: 设置权限为 rwxr-xr-x (常见于脚本)
# 7 (4+2+1) | 5 (4+0+1) | 5 (4+0+1)
[root@study ~]# chmod 755 test.sh
​
# 案例 3: 恢复 .bashrc 的默认权限 (rw-r--r--)
# 6 (4+2+0) | 4 (4+0+0) | 4 (4+0+0)
[root@study ~]# chmod 644 .bashrc

方法二:符号类型改变权限

语法结构

css 复制代码
chmod [ugoa] [+-=] [rwx] 文件或目录

参数说明

类别 参数 说明
身份 u 拥有者 (user)
g 所属群组 (group)
o 其他人 (others)
a 所有人 (all,默认值)
动作 + 加入权限
- 除去权限
= 设置权限 (直接指定,覆盖原有)
权限 rwx 读、写、执行

案例演示

  1. 设置特定权限 (=) : 将 .bashrc 设置为 rwxr-xr-x (拥有者 rwx,群组 rx,其他人 rx)。

    csharp 复制代码
    [root@study ~]# chmod u=rwx,go=rx .bashrc
    # 或者写全
    [root@study ~]# chmod u=rwx,g=rx,o=rx .bashrc
  2. 增加权限 (+) : 让所有人 (a) 增加 (w) 权限。

    csharp 复制代码
    [root@study ~]# chmod a+w .bashrc
  3. 移除权限 (-) : 移除所有人 (a) 的 执行 (x) 权限。

    csharp 复制代码
    [root@study ~]# chmod a-x .bashrc

技巧

  • 使用 +- 时,未指定的权限保持不变。
  • 使用 = 时,未指定的权限会被移除(变为 -)。
  • 如果你不知道文件原本的权限,只想给脚本增加执行权限,最安全的方法是使用 chmod a+x filename

5.2.3 目录与文件之权限意义

对于普通文件(文本、数据、二进制程序),权限直接作用于文件内容

权限 符号 含义 详细说明
r 读取内容 可以查看文件的实际数据(如 cat, less)。
w 修改内容 可以编辑、新增或修改文件内容。注意:这不包含删除文件本身的能力。
执行 x 执行文件 文件可以被运行(如脚本、二进制程序)。

注意 :对于文件而言,w 权限允许修改内容,但删除文件 的操作实际上是由目录的权限控制的。

目录在 Linux 中本质上是存储文件名i-node 对应关系的列表。因此,目录的权限作用于目录结构(文件名列表)

权限 符号 含义 详细说明
r 读取列表 可以读取目录结构清单(即文件名列表)。 例如:可以使用 ls 查看该目录下有哪些文件。
w 修改列表 可以修改目录结构清单。 具体包括: 1. 创建 新文件/目录。 2. 删除 已存在的文件/目录(不论该文件本身的权限为何! )。 3. 重命名(移动)文件。 4. 搬迁目录内文件的位置。
执行 x 进入目录 可以进入该目录(cd)。 这是将目录作为工作目录 (work directory) 的前提。
权限 文件 (File) 目录 (Directory)
r 读取文件内容 读取文件名 列表 (ls)
w 修改文件内容 修改文件名列表 (增/删/改/移)
x 执行文件 进入 目录 (cd)

案例分析

案例一:只有 r 没有 x 的目录

  • 场景 :目录 .ssh 权限为 drwxr--r-- (744),拥有者为 root

  • 用户 :普通用户 vbird (属于 others)。

  • 现象

    • vbird 拥有 r 权限:可以使用 ls 看到目录下有文件。
    • vbird 缺乏 x 权限:无法 cd 进入该目录,也无法读取目录内文件的内容(因为无法访问路径)。
  • 结论 :对于目录,x 是访问内部资源的"钥匙"。

案例二:删除文件的权限判定 (重点)

  • 场景

    • 目录 /home/dmtsai 权限为 rwx (拥有者 dmtsai)。
    • 文件 /home/dmtsai/_the_root.data 权限为 -rwx------ (拥有者 root)。
  • 问题 :用户 dmtsai 能删除 _the_root.data 吗?

  • 答案

  • 原理 :删除文件实际上是修改目录的列表 (将文件名从目录中移除)。因为 dmtsai目录 拥有 w (写) 权限,所以他可以删除该目录下的任何文件,无论该文件本身的权限设置如何

若要完成特定操作,用户需要对路径上的目录目标文件具备相应的组合权限:

操作动作 /dir1 (父目录) /dir1/file1 (文件) /dir2 (目标目录) 重点解析
读取 file1 内容 x r - 需进入父目录 (x) 并读取文件内容 (r)。
修改 file1 内容 x rw - 需进入父目录 (x) 并写入文件 (w)。
执行 file1 x rx - 需进入父目录 (x) 并执行文件 (x)。
删除 file1 wx - - 关键 :只需父目录的写权限 (w) 和进入权限 (x)。与文件本身权限无关。
复制 file1 到 /dir2 x r wx 需读取源文件 (r),进入源目录 (x),并在目标目录写入新文件 (wx)。
  • 通常开放的目录至少需要具备 rx 权限,否则用户无法进入也无法查看内容。
  • 若目录仅有 r 而无 x,用户只能看到文件名列表(ls),但无法访问任何文件(cd 失败,cat 失败)。
  • 若目录仅有 x 而无 r,用户可以进入目录并访问已知文件名的文件,但无法列出目录内容(ls 失败)。这在某些安全场景下很有用。

5.2.4 Linux 文件种类与扩展名

文件类型

根据 ls -l 输出的第一个字符,Linux 文件主要分为以下几类:

类型标识 名称 说明
- 正规文件 (Regular File) 最常见的文件类型,用于数据存储。根据内容可细分为: 1. 纯文本文件 (ASCII) :人类可直接阅读的数据(如数字、字母)。例如配置文件、源代码。使用 cat 可查看内容。 2. 二进制文件 (Binary) :系统可执行的程序。例如 cat, ls 等指令本身。直接 cat 会显示乱码。 3. 数据格式文件 (Data) :程序运行时读取的特定格式数据。例如 /var/log/wtmp(登录记录)。
d 目录 (Directory) 即文件夹,用于管理文件列表。
l 链接文件 (Link) 类似 Windows 的快捷方式。指向另一个文件。
b 块设备文件 (Block) 存储数据的周边设备,支持随机存取 (Random Access)。例如硬盘 (/dev/sda)。
c 字符设备文件 (Character) 串行端口设备,支持一次性读取(Sequential)。例如键盘、鼠标、串口。
s 套接字文件 (Sockets) 用于网络数据接口。常位于 /run/tmp,用于进程间通信或网络服务监听。
p 管道文件 (FIFO/Pipe) First-In-First-Out。用于解决多进程同时存取文件的问题,常用于进程间数据传输。
执行机制

与 Windows 不同,Linux 系统不依赖扩展名来判断文件是否可执行。

  • 执行机制 :文件能否执行取决于权限位 中是否包含 x (execute)。

    • 即使文件名为 script.sh,若无 x 权限,也无法直接执行。
    • 即使文件名为 text.txt,若赋予 x 权限且内容符合脚本格式,也可以被执行。
  • 扩展名的作用 :主要用于人类识别文件用途或关联的软件。

常见扩展名约定:

扩展名 含义
.sh Shell 脚本文件 (Shell script)。
.Z, .tar, .tar.gz, .zip, .tgz 压缩或打包文件(对应 compress, tar, gzip 等工具)。
.html, .php 网页文件(HTML 源码或 PHP 脚本)。
.conf 配置文件 (configuration)。
命名规范

在 Linux 命令行下,文件名命名需遵循以下限制:

  1. 长度限制

    • 最大长度为 255 Bytes
    • 若使用 ASCII 编码,约为 255 个字符。
    • 若使用 UTF-8 中文(通常占 3 Bytes),约为 80 个中文字;若占 2 Bytes(旧编码),约为 128 个中文字。
  2. 特殊字符限制

    • 应避免使用 Shell 中的特殊符号,以免干扰指令解析: ? > < ; & ! [ ] | \ " ' ( ) { }
    • 空格 :虽然可以使用,但处理麻烦(需转义或加引号),建议用下划线 _ 或连字符 - 代替。
  3. 隐藏文件

    • 文件名以 . (点) 开头(如 .bashrc)的文件为隐藏文件
    • 使用 ls 默认不显示,需加 -a 参数。
  4. 避免开头符号

    • 避免以 - (减号) 或 + (加号) 开头,因为这在命令行中常被解析为指令选项(options)。

5.3 Linux 目录配置

5.3.1 Linux 目录配置的依据--FHS

基本目录结构

由于 Linux 发行版众多,为了规范配置文件、可执行文件及数据目录的放置位置,避免管理混乱,Linux 社区制定了 FHS (Filesystem Hierarchy Standard,文件系统层次结构标准) 。FHS 的核心目的是定义根目录 (/) 及其子目录下应放置的数据类型,使系统架构在保持"目录架构不变"的前提下,允许开发者发挥独特风格。

FHS 根据数据是否可分享 以及数据是否变动,将目录分为四种交互作用的形态:

可分享的 (shareable) 不可分享的 (unshareable)
不变的 (static) /usr (软件放置处) /opt (第三方协力软件) /boot (开机与核心档) /etc (配置文件)
可变动的 (variable) /var/mail (使用者邮件信箱) /var/spool/news (新闻群组) /var/run (程序相关) /var/lock (程序相关)
  • 可分享的 (shareable) :可以分享给其他系统挂载使用的目录(如通过网络挂载 NFS),包含可执行文件与使用者的邮件等数据。
  • 不可分享的 (unshareable) :与自身机器有关的设备文件或程序相关的 socket 文件,不适合分享给其他主机。
  • 不变的 (static) :数据不会经常变动,随 Linux distribution 而定(如函数库、文件说明文档、系统管理员所管理的主机服务配置文件)。
  • 可变动的 (variable) :经常改变的数据(如登录文件、一般用户可自行收发的新闻群组等)。

FHS 针对根目录架构定义了三个主要层级:

  1. / (root, 根目录) :与开机系统有关。
  2. /usr (unix software resource) :与软件安装/执行有关。
  3. /var (variable) :与系统运行过程有关。

根目录是整个系统最重要的目录,所有目录皆由其衍生。它包含了开机、还原系统修复等动作所需的关键文件。

FHS 建议 :根目录 (/) 所在分区应越小越好。应用程序安装的软件最好不要与根目录放在同一个分区内。

根目录下必须存在的目录

目录 应放置文件内容 / 说明
/bin 单人维护模式下 还能够被操作的指令。主要为一般账号使用的常用指令(如 cat, chmod, bash 等)。
/boot 放置开机 会使用到的文件,包括 Linux 核心文件 (vmlinuz) 以及开机菜单与开机所需配置文件(如 grub)。
/dev 设备文件 。Linux 下任何设备与周边设备都以文件型态存在(如 /dev/sda, /dev/null)。
/etc 系统配置文件 。如账号密码档 (/etc/passwd)、开机设定档 (/etc/fstab)、网络配置等。
/lib 函数库 。系统在开机时会用到的函数库,以及 /bin/sbin 下面的指令会调用的函数库。 (注:CentOS 7 中已链接至 /usr/lib)
/media 可移除设备的挂载点。如软盘、光盘、DVD 等设备暂时挂载于此。
/mnt 临时挂载其他额外设备的目录。通常给系统管理员临时挂载使用。
/opt 第三方协力软件放置的目录。
/run 系统开机后所产生的各项临时信息 存放目录。使用 /run 可内存仿真,性能较好。 (注:早期规范在 /var/run)
/sbin 系统设置指令 。主要由 root 使用的指令(如 fdisk, ifconfig)。 (注:CentOS 7 中已链接至 /usr/sbin)
/srv Service (服务) 相关数据。网络服务启动后需要取用的数据目录(如 WWW, FTP)。
/tmp 临时文件。任何人都能够存取,需定期清理。重要数据不可放在此目录。

根目录下建议存在或其他重要目录

目录 应放置文件内容 / 说明
/home 用户主目录 (home directory) 。默认使用者主文件类都会规划到这里。
/root 系统管理员 (root) 的主文件类。
/proc 虚拟文件系统 。数据都在内存中(如系统核心、行程信息 process)。不占硬盘空间。
/sys 虚拟文件系统。记录系统核心与系统硬件信息较相关的信息。同样不占硬盘容量。
/lost+found 使用 ext2/ext3/ext4 文件系统才会产生的目录。当文件系统发生错误时,将遗失的片段放置到这里。

/usr 目录详解
  • 定义usrUnix Software Resource 的缩写,而非 User。它是"Unix 操作系统软件资源"所放置的目录,不是使用者的数据。
  • 属性 :属于 可分享的 (shareable)不变的 (static)
  • 类比 :类似 Windows 系统的 C:\WindowsC:\Program Files 的综合体。
  • 容量:系统刚安装完毕时,这个目录会占用最多的硬盘容量。

/usr 下必须存在的目录

目录 应放置文件内容
/usr/bin/ 所有一般用户 能够使用的指令都放在这里。 (注:CentOS 7 已将全部使用者指令放置于此,/bin 链接至此)
/usr/lib/ 系统上,与 /lib 功能相同。/lib 就是链接到此目录中。
/usr/local/ 系统管理员在本机自行安装 自己下载的软件(非 distribution 默认提供者)。 建议安装到此目录,方便管理且不影响原版软件。该目录下也有 bin, etc, include, lib 等次目录。
/usr/sbin/ 非系统正常运行时所需要的系统指令。最常见的是某些网络服务器软件的指令 (daemon)。 (注:CentOS 7 中 /sbin 链接至此)
/usr/share/ 主要放置只读架构的数据文件 ,当然也包括共享文件。常见的次目录: • /usr/share/man:线上说明文档 • /usr/share/doc:软件杂项的文件说明 • /usr/share/zoneinfo:与时区有关的时区文件

/usr 下建议存在的目录

目录 应放置文件内容
/usr/games/ 与游戏比较相关的数据放置处。
/usr/include/ C/C++ 等程序语言的文件开始 (header ) 与包含档 (include) 放置处。
/usr/libexec/ 某些不被一般使用者惯用的可执行文件或脚本 (script) 等。例如大部分的 X 窗口下面的操作指令。
/usr/lib<qual>/ /lib<qual>/ 功能相同,因此目前 /lib<qual> 就是链接到此目录中(如 /usr/lib64)。
/usr/src/ 一般源代码建议放置到这里,src 有 source 的意思。核心源代码建议放置到 /usr/src/linux/ 目录下。

/var 目录详解
  • 定义 :如果 /usr 是安装时会占用较大硬盘容量的目录,那么 /var 就是在系统运行后才会渐渐占用硬盘容量的目录。
  • 属性 :主要针对常变动性的文件。
  • 内容 :包括高速缓存 (cache)、登录文件 (log file)、程序文件 (lock file, run file)、数据库文件等。

/var 下必须存在的目录

目录 应放置文件内容
/var/cache/ 应用程序本身运行过程中会产生的一些暂存盘
/var/lib/ 程序本身执行的过程中,需要使用到的数据文件 放置的目录。 例如:MySQL 的数据库放置到 /var/lib/mysql/,rpm 的数据库放置到 /var/lib/rpm/
/var/lock/ 锁文件 。当某些设备或文件资源一次只能被一个应用程序使用时,如果同时有两个程序使用该设备,就可能产生错误。系统会将设备上锁 (lock),以确保该设备只会给单一软件所使用。
/var/log/ 登录文件 。这是登录文件放置的目录!里面比较重要的文件如 /var/log/messages (核心登录信息), /var/log/wtmp (记录登录者的信息) 等。
/var/mail/ 放置个人电子邮件信箱的目录。通常这个目录也被链接到 /var/spool/mail/ 目录中。
/var/run/ 某些程序或者是服务启动后,会将他们的 PID 放置在这个目录下。 (注:与 /run 相同,这个目录链接到 /run 去了)
/var/spool/ 队列数据 。所谓的"队列"就是排队等待其他程序使用的数据。例如系统收到的新信会放置到 /var/spool/mail/ 中;工作调度数据 (crontab) 会被放置到 /var/spool/cron/ 目录中。
相关推荐
止语Lab1 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活1 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
程序员天天困1 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn1 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
用户298698530141 小时前
Python 实现 Excel 与 Markdown 互转的实用指南
后端·python·excel
用户77283104908401 小时前
krono-job:零侵入、单二进制交付的分布式任务调度平台(开源)
后端
Conan在掘金1 小时前
鸿蒙报错速查:Function lacks ending return statement,返回路径漏 return 就炸,根因 + 真解法
后端
人间凡尔赛2 小时前
AI-Native 云原生架构:2026 年从容器编排到智能体编排的范式革命
后端·云原生·架构
IT_陈寒2 小时前
Vue的响应式让我加班到凌晨3点,原来问题出在这
前端·人工智能·后端
卷无止境2 小时前
提升 Python 代码健壮性的方法大盘点
后端·python