在 Ubuntu 上安装 Microsoft Edge 后无法正常启动,命令行执行 microsoft-edge 之后可以看到报错:
[xxxx:FATAL:sandbox/linux/services/credentials.cc:131] Check failed: . : 权限不够 (13)
通过 --no-sandbox 可临时启动,但浏览器界面上会有红色文字提示存在安全风险。
在 AI 的提示下进行了一两个小时的探索,最后发现改了一个系统参数之后问题消失。
原因诊断
问题核心在于 Chromium sandbox 机制被系统安全策略限制。
Edge(基于 Chromium)在 Linux 上依赖三层隔离能力:
- user namespace(userns)
- credentials delegation
- setuid sandbox(兜底)
当前环境中:
- sandbox 二进制权限正常(排除文件权限问题)
- AppArmor 处于 enforce 模式
- 内核参数
kernel.apparmor_restrict_unprivileged_userns=1
sysctl kernel.unprivileged_userns_clone
kernel.unprivileged_userns_clone = 1
sysctl kernel.apparmor_restrict_unprivileged_userns
kernel.apparmor_restrict_unprivileged_userns = 0
sysctl kernel.apparmor_restrict_unprivileged_userns
kernel.apparmor_restrict_unprivileged_userns = 1
该参数会禁止非特权用户创建 user namespace,直接导致 Chromium sandbox 初始化失败(触发 credentials.cc:131 EPERM)。
本质是:
OS 安全基线策略(AppArmor)与 Chromium sandbox 运行机制冲突
解决方案(已验证有效):放开 user namespace 限制
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
建议持久化:
cat /etc/sysctl.d/99-edge.conf
# cat: /etc/sysctl.d/99-edge.conf: No such file or directory (os error 2)
echo "kernel.apparmor_restrict_unprivileged_userns=0" | sudo tee /etc/sysctl.d/99-edge.conf
sudo sysctl --system