点击 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 限制 启用并启动 apparmor和snapd.apparmor服务适用于通过 Snap 安装的 VSCode 系统内核参数限制 临时调整内核参数 kernel.apparmor_restrict_unprivileged_userns为0临时解决方案 AppArmor 服务未运行 检查并确保 AppArmor 服务处于活动状态 基础运行环境要求
AppArmor 是个简易版 SELinux
AppArmor(Application Armor)是 Linux 内核的一个安全模块,通过为应用程序配置访问控制策略来增强系统安全性。
它基于路径限制程序对文件、网络端口等资源的访问,遵循最小权限原则,能有效遏制恶意攻击和漏洞利用。
AppArmor 和 SELinux 都是 Linux 的强制访问控制(MAC)安全模块,用于限制程序权限以增强系统安全。AppArmor 基于路径配置,更简单易用;SELinux 基于标签,提供更细粒度的系统级控制,但配置也更复杂。