TOC

Microsoft Edge 浏览器在 Ubuntu 上无法启动:权限不够

在 Ubuntu 上安装 Microsoft Edge 后无法正常启动,命令行执行 microsoft-edge 之后可以看到报错:

[xxxx:FATAL:sandbox/linux/services/credentials.cc:131] Check failed: . : 权限不够 (13)

通过 --no-sandbox 可临时启动,但浏览器界面上会有红色文字提示存在安全风险。
在 AI 的提示下进行了一两个小时的探索,最后发现改了一个系统参数之后问题消失。

原因诊断

问题核心在于 Chromium sandbox 机制被系统安全策略限制
Edge(基于 Chromium)在 Linux 上依赖三层隔离能力:

  1. user namespace(userns)
  2. credentials delegation
  3. 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
如果你有魔法,你可以看到一个评论框~