TOC

VSCode Launch Failed Due to AppArmor Restriction

点击 vscode 图标,运行不起来。
执行 journalctl -f 观察到每次点击 vscode 图标,就会有如下信息:

9月 22 20:22:54 EQR6 code.desktop[6081]: [6081:0922/202254.176581:FATAL:sandbox/linux/services/credentials.cc:134] Check failed: . : 权限不够 (13)
9月 22 20:22:54 EQR6 kernel: audit: type=1400 audit(1758543774.174:91): apparmor="DENIED" operation="userns_create" class="namespace" info="Userns create restricted - failed to find unprivileged_userns profile" error=-13 profile="unconfined" pid=6081 comm="code" requested="userns_create" denied="userns_create" target="unprivileged_userns"
9月 22 20:22:54 EQR6 kernel: traps: code[6081] trap int3 ip:60b199c4044e sp:7ffc4231b6f0 error:0 in code[695744e,60b1957ef000+8dd1000]
9月 22 20:22:54 EQR6 systemd[2848]: Started app-gnome-code-6081.scope - Application launched by gnome-shell.

DeepSeek 指导下尝试启动 AppArmor 服务:

sudo systemctl start apparmor

然后再次点击 vscode 图标,启动正常。

根据您提供的日志信息,问题似乎与 AppArmor 安全模块的限制有关,它阻止了 VSCode 创建用户命名空间(userns_create),导致权限不足而无法启动。

为了帮助您快速理解和解决问题,下面的表格汇总了可能的原因和解决方案:

问题原因 解决方案 备注
AppArmor 限制 启用并启动 apparmorsnapd.apparmor 服务 适用于通过 Snap 安装的 VSCode
系统内核参数限制 临时调整内核参数 kernel.apparmor_restrict_unprivileged_userns0 临时解决方案
AppArmor 服务未运行 检查并确保 AppArmor 服务处于活动状态 基础运行环境要求

AppArmor 是个简易版 SELinux

AppArmor(Application Armor)是 Linux 内核的一个安全模块,通过为应用程序配置访问控制策略来增强系统安全性。
它基于路径限制程序对文件、网络端口等资源的访问,遵循最小权限原则,能有效遏制恶意攻击和漏洞利用。

AppArmor 和 SELinux 都是 Linux 的强制访问控制(MAC)安全模块,用于限制程序权限以增强系统安全。AppArmor 基于路径配置,更简单易用;SELinux 基于标签,提供更细粒度的系统级控制,但配置也更复杂。

如果你有魔法,你可以看到一个评论框~