Linux用户信息查看全攻略:从whoami到getent的实用命令解析
1. 项目概述为什么需要查看Linux用户信息在Linux世界里无论是系统管理员排查登录异常还是开发者调试权限问题甚至是普通用户想确认自己当前的操作身份“查看用户信息”都是一项基础得不能再基础却又至关重要的操作。这就像你进入一栋大楼总得先搞清楚自己是访客、员工还是管理员能去哪些楼层能开哪些门。Linux系统通过一套严密的用户和组Group机制来管理权限和资源每一个进程、每一个文件都归属于特定的用户和组。因此准确地获取用户信息是理解系统行为、进行安全审计和故障诊断的第一步。你可能遇到过这些场景运行一个脚本报“Permission denied”权限拒绝你需要知道当前用户是谁以及它属于哪些组服务器上发现一个可疑进程你需要追溯是哪个用户启动的或者在多用户环境中你需要确认某个文件或目录的归属。这些问题的答案都藏在用户信息里。简单来说用户信息就是你在Linux系统中的“数字身份证”它包含了你的身份标识UID、所属组标识GID、用户名、家目录路径和默认的Shell等信息。本文将深入拆解几种最核心、最实用的查看用户信息的方法从最简单的命令到更深入的配置文件解析并结合大量实际案例和避坑经验让你不仅能“知其然”更能“知其所以然”在复杂的系统管理中游刃有余。2. 核心命令详解从快速查询到深度解析Linux提供了丰富的命令行工具来查看用户信息它们各有侧重适用于不同场景。掌握它们就像拥有了不同倍率的放大镜。2.1whoami我是谁—— 最直接的当前身份确认whoami命令大概是所有Linux命令中最直白的一个。它的功能单一而纯粹打印出当前登录用户的用户名。命令格式与输出$ whoami alice输出就是当前有效用户Effective User的用户名。这个命令在脚本中特别有用可以用于判断执行上下文。核心原理与场景whoami本质上是查询进程的“有效用户ID”EUID然后将其转换为对应的用户名。它不考虑你是否通过sudo或su切换了用户它只告诉你当前进程“实际上”是以哪个用户的权限在运行。注意一个常见的误解是在sudo执行命令后whoami会显示root。这并不完全准确。如果你执行sudo whoami那么whoami这个进程是以root权限启动的所以它会打印root。但如果你先执行sudo -i或sudo su -切换到了root的交互式Shell那么在这个Shell里运行whoami才会一直显示root。理解这个细微差别对于权限调试至关重要。实操心得在编写需要检查执行权限的Shell脚本时我习惯在脚本开头用whoami来快速记录执行者身份或者用于条件判断。例如#!/bin/bash CURRENT_USER$(whoami) if [ $CURRENT_USER ! appuser ]; then echo 错误本脚本应由 appuser 用户执行当前用户是 $CURRENT_USER。 exit 1 fi # 后续脚本逻辑...2.2id我的完整身份档案—— 最全面的信息查询如果说whoami是只看了身份证上的名字那么id命令就是把身份证正反面、包括关联的居住证、工作证都给你列出来。它是查看用户和组信息的瑞士军刀。基本用法不加任何参数时id会显示当前用户的所有身份信息。$ id uid1001(alice) gid1001(alice) groups1001(alice),27(sudo),113(docker)输出解析uid1001(alice): 用户IDUID和用户名。UID是系统识别用户的唯一数字用户名是其可读标签。gid1001(alice): 主组IDGID和主组名。每个用户必须属于一个主组。groups...: 用户所属的所有附加组。这里用户alice除了主组alice外还属于sudo和docker组这赋予了她执行管理员命令和管理Docker容器的潜在权限。常用参数解析id -u 仅显示当前用户的UID数字。在脚本中判断用户身份时使用数字UID比用户名更可靠因为用户名可能被修改。$ id -u 1001id -un 仅显示当前用户的用户名。效果类似whoami但它是id命令的一部分。id -g/id -gn 仅显示主组的GID或组名。id -G 显示用户所属的所有组的GID数字列表。$ id -G 1001 27 113id -Gn 显示用户所属的所有组的组名。id [用户名] 查询指定用户的信息而不是当前用户。这需要你有权限读取目标用户的信息。$ id root uid0(root) gid0(root) groups0(root)深度排查案例权限问题诊断假设用户bob无法访问某个共享目录/shared/data。你可以通过以下步骤排查查看目录权限ls -ld /shared/data。假设输出是drwxrwx--- 2 alice devs 4096 ...。这意味着目录属于用户alice和组devs且组 (devs) 有读写执行权限。查看bob的组信息id bob。如果输出中不包含devs组那么问题就找到了——bob不属于devs组。解决方案由root用户执行usermod -aG devs bob将bob加入devs组。之后bob需要重新登录或启动新的Shell会话以使组生效因为组信息在登录时被缓存。2.3who,w,last谁在系统里—— 登录会话与历史查询这些命令用于查看当前谁登录在系统上以及过去的登录历史。在管理多用户服务器、进行安全审计时非常有用。who命令显示当前已登录系统的用户列表。$ who alice pts/0 2024-05-27 10:15 (192.168.1.100) bob tty1 2024-05-27 09:30输出列依次为用户名、终端类型tty表示物理终端或虚拟控制台pts表示伪终端通常来自SSH或图形终端、登录时间、登录来源IP如果是远程登录。w命令who命令的增强版信息更丰富。$ w 10:20:15 up 1 day, 2:30, 2 users, load average: 0.08, 0.03, 0.01 USER TTY FROM LOGIN IDLE JCPU PCPU WHAT alice pts/0 192.168.1.100 10:15 5.00s 0.05s 0.00s sshd: alice [priv] bob tty1 09:30 50:00 0.10s 0.10s -bash除了who的信息外w还显示了系统运行时间、负载、用户空闲时间IDLE、总CPU时间JCPU、当前进程CPU时间PCPU以及用户当前正在执行的命令WHAT。这对于监控系统负载和用户活动极其直观。last命令查看系统的登录历史记录数据来源于/var/log/wtmp文件。$ last -n 5 alice pts/0 192.168.1.100 Mon May 27 10:15 still logged in bob tty1 Mon May 27 09:30 still logged in reboot system boot 5.15.0-91-generi Mon May 27 08:00 still running alice pts/0 192.168.1.105 Sun May 26 14:20 - 18:05 (03:45) ...last可以用于安全排查例如检查是否有异常时间或来源的登录。常用参数-n [数字]指定显示最近几条记录。重要提示/var/log/wtmp文件可能被轮转logrotate或清理。历史记录的完整性取决于系统的日志配置。对于关键的安全审计建议将日志发送到远程的集中式日志服务器。3. 系统配置文件解析信息的源头命令行工具的数据并非凭空产生它们都来源于系统底层的配置文件。理解这些文件是进阶Linux系统管理的必修课。3.1/etc/passwd用户账户数据库这是最核心的用户信息文件所有本地用户账户都定义在这里。每一行代表一个用户由冒号:分隔成7个字段。查看文件内容$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin alice:x:1001:1001:Alice Smith,,,:/home/alice:/bin/bash字段详解以alice:x:1001:1001:Alice Smith,,,:/home/alice:/bin/bash为例用户名 (alice): 用户登录名。密码占位符 (x): 历史上这里存放加密后的密码现在密码已移至更安全的/etc/shadow文件。x表示密码已启用 shadow 机制。用户ID (UID) (1001): 用户的数字ID。0是root1-999通常为系统用户1000及以上为普通用户。主组ID (GID) (1001): 用户主组的数字ID。GECOS 字段 (Alice Smith,,,): 一个注释字段通常包含用户全名、房间号、电话等用逗号分隔。可以为空。家目录 (/home/alice): 用户登录后的初始工作目录。登录Shell (/bin/bash): 用户登录后启动的Shell程序。如果设置为/usr/sbin/nologin或/bin/false则该用户无法登录系统常用于系统服务账户。实操技巧查找特定用户你可以使用grep快速查找用户$ grep ^alice: /etc/passwd alice:x:1001:1001:Alice Smith,,,:/home/alice:/bin/bash3.2/etc/group组信息数据库这个文件定义了所有的组。每一行代表一个组由冒号:分隔成4个字段。查看文件内容$ cat /etc/group root:x:0: sudo:x:27:alice,bob alice:x:1001: devs:x:1002:alice,carol字段详解以sudo:x:27:alice,bob为例组名 (sudo): 组的名称。组密码占位符 (x): 类似/etc/passwd组密码已移至/etc/gshadow这里通常是x。组ID (GID) (27): 组的数字ID。组成员列表 (alice,bob): 属于该组的用户列表用户名之间用逗号分隔。注意这里列出的是将该组作为附加组的用户。用户的主组关系是在/etc/passwd文件的GID字段定义的不会出现在这里。例如用户alice的主组是alice (GID 1001)所以/etc/group中alice:x:1001:这一行的成员列表是空的。理解用户与组的关系一个用户可以属于多个组。其关系由两个地方共同决定主组 (Primary Group) 在/etc/passwd中由GID字段指定。创建文件时文件的默认属组就是用户的主组。附加组 (Supplementary Groups) 在/etc/group文件中各组的成员列表中列出。用户拥有其所有附加组的权限。3.3/etc/shadow与权限管理/etc/shadow文件存储用户的加密密码和密码策略信息权限为-r--------(400)只有root用户可以读取。这是系统安全的关键。$ sudo cat /etc/shadow alice:$y$j9T$8x7gC...加密字符串:19677:0:99999:7:::字段包括用户名、加密密码、上次修改密码的天数从1970-1-1起、密码最短有效期、最长有效期、警告期、失效宽限期等。普通用户无法查看此文件。4. 高级查询工具getent与finger4.1getent统一的名字服务切换工具getent(get entries) 命令是一个更通用的工具它通过系统配置的“名字服务切换”Name Service Switch, NSS来获取数据库信息。这意味着它不仅能查询本地文件/etc/passwd,/etc/group如果系统配置了LDAP、NIS等集中式用户目录它也能透明地查询。基本用法getent passwd [用户名]: 查询用户信息功能类似cat /etc/passwd | grep但支持NSS。$ getent passwd alice alice:x:1001:1001:Alice Smith,,,:/home/alice:/bin/bash $ getent passwd # 列出所有用户包括可能来自LDAP的getent group [组名]: 查询组信息。$ getent group sudo sudo:x:27:alice,bob为什么用getent在企业环境中用户信息可能存储在LDAP服务器上。直接查看/etc/passwd文件只能看到本地用户而getent passwd会返回所有通过NSS配置可用的用户包括LDAP中的用户。这使得脚本和命令在混合环境中更具可移植性。4.2finger获取用户的详细信息已较少使用finger命令可以显示用户的详细信息包括全名、家目录、Shell、登录时间、邮件状态等。它查询的信息主要来自/etc/passwd的GECOS字段和用户的计划文件~/.plan,~/.project。$ finger alice Login: alice Name: Alice Smith Directory: /home/alice Shell: /bin/bash On since Mon May 27 10:15 (CST) on pts/0 from 192.168.1.100 10 minutes 25 seconds idle No mail. No Plan.由于安全和隐私考虑且其功能大部分可被id,w,last等命令替代finger服务在大多数现代Linux发行版上默认不安装或不启用。5. 综合实战与疑难排查掌握了这些工具我们来看几个综合性的实战案例和常见问题。5.1 实战案例自动化用户权限检查脚本假设我们需要定期检查一批服务器上的关键用户如appadmin,backupuser是否存在以及其UID、主组和是否在sudo组中。#!/bin/bash # check_users.sh USERS_TO_CHECK(appadmin backupuser nobody) for USER in ${USERS_TO_CHECK[]}; do echo 检查用户: $USER # 使用 getent 兼容本地/LDAP用户 if USER_INFO$(getent passwd $USER 2/dev/null); then # 提取UID和GID USER_UID$(echo $USER_INFO | cut -d: -f3) USER_GID$(echo $USER_INFO | cut -d: -f4) USER_PRIMARY_GROUP$(getent group $USER_GID | cut -d: -f1) echo - 状态: 存在 echo - UID: $USER_UID echo - 主组: $USER_PRIMARY_GROUP (GID: $USER_GID) # 检查是否在sudo组 if id -nG $USER | grep -qw sudo; then echo - 权限: 拥有sudo权限 else echo - 权限: 无sudo权限 fi else echo - 状态: 用户不存在 fi echo --- done这个脚本结合了getent,id,cut,grep等命令并考虑了用户可能来自LDAP的情况比单纯检查/etc/passwd更健壮。5.2 常见问题排查实录问题1id命令显示的用户组和groups命令显示的不一样groups命令是id -Gn的一个别名它们显示的内容应该是一致的都是当前用户的附加组列表。如果不一致请检查是否在两次命令之间切换了用户例如使用了su或newgrp或者是否有不同的Shell环境如通过sudo执行。确保你在同一个终端会话中进行比较。问题2用户加入了新组但权限没有立即生效这是一个非常经典的“坑”。当你使用usermod -aG newgroup username将用户加入一个新组后这个变更不会立即反映到当前已经登录的Shell会话中。因为组信息在用户登录时被读取并缓存。用户需要重新登录退出SSH会话再重新连接。或者在当前Shell中启动一个新的子Shell直接输入bash或su - $USER。或者使用newgrp newgroup命令临时切换主组到新组这只对新创建的文件有效。问题3/etc/passwd文件中的Shell字段被改成了/sbin/nologin用户无法登录怎么办这通常是有意为之用于创建“系统账户”或“服务账户”如mysql,nginx。如果你需要恢复该用户的登录能力需要以root身份将其Shell改回有效的登录Shell如/bin/bash。sudo usermod -s /bin/bash username然后该用户就可以正常登录了。问题4如何查看所有拥有sudo权限的用户不是所有在sudo组的用户都一定有sudo权限这取决于/etc/sudoers文件的配置。但通常查看sudo组的成员是一个快速方法getent group sudo | cut -d: -f4更准确的方法是直接查看/etc/sudoers文件及其包含的目录/etc/sudoers.d/但必须使用visudo命令或sudo cat来查看因为直接编辑有语法错误的风险。sudo grep -r ^[^#].*ALL /etc/sudoers /etc/sudoers.d/ 2/dev/null这个命令会搜索所有授予任意用户任意主机上所有命令(ALL)的配置行。问题5who am i和whoami有什么区别whoami: 如前所述打印当前进程的有效用户EUID对应的用户名。who am i: 打印的是最初登录到当前终端会话的用户名。即使你使用su切换了用户who am i仍然显示最初登录的用户。它查询的是/var/run/utmp中记录的登录会话信息。$ ssh aliceserver aliceserver$ whoami alice aliceserver$ who am i alice pts/0 2024-05-27 10:15 (192.168.1.100) aliceserver$ sudo su - bob bobserver$ whoami bob bobserver$ who am i alice pts/0 2024-05-27 10:15 (192.168.1.100) # 仍然显示最初的alice这在审计“谁通过什么方式登录然后又切换成了谁”时非常有用。6. 安全与最佳实践查看用户信息本身是低风险操作但在管理和使用这些信息时需要遵循一些安全最佳实践。保护敏感文件确保/etc/passwd对所有用户可读权限644但/etc/shadow必须仅对root可读权限400或600。定期检查这些文件的权限是否被意外更改ls -l /etc/passwd /etc/shadow。谨慎使用sudo和su在脚本中避免硬编码密码。使用sudo时尽量限制命令范围而不是赋予无限制的ALL权限。记录sudo的使用日志默认在/var/log/auth.log或/var/log/secure。审计登录历史定期查看/var/log/wtmp通过last命令、/var/log/btmp记录失败登录通过lastb命令查看和/var/log/auth.log寻找异常登录模式如非工作时间的登录、来自未知IP的登录、大量的失败尝试等。使用集中式身份管理对于拥有多台服务器的环境考虑使用LDAP如OpenLDAP、FreeIPA或Active Directory通过SSSD进行集中式的用户和组管理。这不仅能提高管理效率也增强了安全策略的一致性。在这种情况下getent命令是你的好朋友。最小权限原则在创建用户或分配组时始终遵循最小权限原则。用户只应拥有完成其任务所必需的最低权限。例如运行Web服务的用户不应该有sudo权限也不应该被加入无关的组。我个人在管理生产服务器时养成了一个习惯任何用户权限的变更增、删、改组都会在变更后立即用id [用户名]命令验证结果并记录在变更管理系统中。同时对于关键的服务账户我会定期检查其Shell是否为/sbin/nologin以及其家目录和文件权限是否被意外修改这能有效降低安全风险。理解并熟练运用这些查看用户信息的方法是构建安全、稳定、可维护的Linux系统环境的基石。

相关新闻

YAML与JSON深度对比:从设计哲学到应用场景的全面解析

YAML与JSON深度对比:从设计哲学到应用场景的全面解析

1. 项目概述:从日常困惑到清晰认知 在日常开发、运维配置或者学习新技术栈时,我们总会遇到两种看似相似却又不同的数据格式:Yaml 和 Json。你可能在写一个 Spring Boot 的 application.yml 配置文件,或者在调用某个 RESTful API…

2026/8/7 15:48:50 阅读更多 →
库早报|换帅!这家3D打印上市公司寻找新CEO;深圳3D打印设备出口占全国86%;海目星成立增材制造子公司

库早报|换帅!这家3D打印上市公司寻找新CEO;深圳3D打印设备出口占全国86%;海目星成立增材制造子公司

2026年8月7日 星期五01全球3D打印巨头3D Systems启动CEO换帅8月4日,3D Systems宣布领导层交接计划,现任CEO Jeffrey Graves博士将辞任并退出董事会,此前已担任该职位6年。Graves将在新CEO确定前继续任职,之后以顾问身份协助完成交…

2026/8/7 15:47:50 阅读更多 →
3分钟零基础教程:如何用Nullboard搭建你的第一个极简看板

3分钟零基础教程:如何用Nullboard搭建你的第一个极简看板

3分钟零基础教程:如何用Nullboard搭建你的第一个极简看板 【免费下载链接】nullboard Nullboard is a minimalist kanban board, focused on compactness and readability. 项目地址: https://gitcode.com/GitHub_Trending/nu/nullboard Nullboard是一款专注…

2026/8/7 15:47:50 阅读更多 →

最新新闻

酒吧物料管理软件 vs 传统Excel记账:哪种更适合中小酒吧?

酒吧物料管理软件 vs 传统Excel记账:哪种更适合中小酒吧?

中小酒吧老板、店长、财务及库管人员常在月末面临库存核对的难题。月底酒水盘点耗时、损耗率难以追踪、账实不符等日常经营痛点,直接影响门店实际利润。 盘点耗费大量人工时间隐性损耗难以查明原因采购与库存数据常常对不上 客观对比传统表格与专业酒吧物料管理软件…

2026/8/8 0:08:15 阅读更多 →
Grok Build 开源:当构建工具成为 AI 原生的试验场

Grok Build 开源:当构建工具成为 AI 原生的试验场

🌊 专注 AI 大模型与前沿科技深度解析,习惯从工程师视角拆解技术热点。 📚 欢迎 点赞、收藏、关注,一起在技术浪潮中保持清醒与好奇 🚀Grok Build 开源:当构建工具成为 AI 原生的试验场 开源社区最近又迎来…

2026/8/8 0:08:15 阅读更多 →
Mem Reduct:3MB超轻量级Windows内存清理工具的终极指南 [特殊字符]

Mem Reduct:3MB超轻量级Windows内存清理工具的终极指南 [特殊字符]

Mem Reduct:3MB超轻量级Windows内存清理工具的终极指南 🚀 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/me…

2026/8/8 0:07:14 阅读更多 →
Blender UV网格重塑终极指南:UvSquares插件快速上手教程

Blender UV网格重塑终极指南:UvSquares插件快速上手教程

Blender UV网格重塑终极指南:UvSquares插件快速上手教程 【免费下载链接】UvSquares Blender addon for reshaping UV quad selection into a grid. 项目地址: https://gitcode.com/gh_mirrors/uv/UvSquares 想告别繁琐的手动UV调整吗?UvSquares插…

2026/8/8 0:07:14 阅读更多 →
Unity横版跑酷游戏开发实战:从核心模块到性能优化

Unity横版跑酷游戏开发实战:从核心模块到性能优化

1. 项目概述:从零到一,打造你的第一款横版跑酷游戏 如果你对Unity引擎感兴趣,想亲手做出一个能跑能跳、有模有样的游戏,那么横版跑酷绝对是一个绝佳的起点。它不像开放世界RPG那样庞大复杂,也不像策略游戏那样烧脑&…

2026/8/8 0:06:13 阅读更多 →
别再给全公司乱买大模型账号了。聊句心里话:企业究竟需要什么样的 AI?

别再给全公司乱买大模型账号了。聊句心里话:企业究竟需要什么样的 AI?

前两天,我和一位做传统制造的老板喝茶。他满脸苦笑地跟我吐槽:“去年底我脑子一热,给全公司买了几十个主流大模型的企业版账号。刚开始那一个星期,大家图新鲜,天天跟 AI 聊天。现在你猜怎么着?后台一看&…

2026/8/8 0:05:12 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →